Originally Posted by beezle
I can't help but notice the trend of people being quickly dismissive of things they're not particularly familiar with here.
Yes, there's some areas where a fish is a fish, but judgements are being passed and opinions being made based on what people know, while disregarding what they don't.
End results are what matters, and as such it seems crazy to write off, for example, blitz, which has has been used to create pretty high quality software many times in the past.
As seducing as your argument may sound, it does not support your conclusion:
- Blitz: used to create many high quality software on the Amiga.
- C and Assembly: used to create 99% of high quality software on the Amiga.
So, yes, _some_ high quality programs were made in Blitz, but _most_ high quality programs were not.
_Some_ good games were made in Blitz (I know none but I'm sure there are), but _most_ great games were not made with Blitz or AMOS.
From a purely statistical point of view if end results matter, then not choosing Blitz seems much safer.
But from a technical point of view, if Blitz was so suitable for writing games, it would have been more used. Experienced assembly and C programmers would have had no issue to adapt to it (because frankly it's much simpler than both) if it really had made them more productive but the reason for these statistics is that BASICs are in the general case not suited to build more than moderately complex programs. The "many" you are talking about are exceptions, not the norm.
I might sound quickly dismissive, but my opinion of BASIC was forged over years of coding experience, about 30 total, of which 17 professionally, in about 15 languages, I did not come to think bad of BASIC overnight.
As for familiarity, I breathed BASIC from 13 to 18 on different computers (with brief incursions into assembly). I was a great GFA Basic fan which I bought along with its compiler and used it extensively to prototype a lot of ideas on my Amiga. Before I knew better, I used to love BASIC.
BASICs are great to learn the rudiments of code, but that's where it ends as well. They do not provide abstractions which are absolutely necessary for programming any moderately complex program. And any interesting game is necessarily a moderately complex program.
It says a lot that even though assembly language provides even less abstractions than BASIC and requires way more effort, it is still more suitable to create games on the Amiga. The few advantages that BASIC has over assembly are not enough to compensate for its structural deficiencies or its bad implementation.
Regarding the GOSUB issue, let me explain why I made the hypothesis that the Blitz team was smoking weird animal substances:
In computing theory, GOSUB and functions are fundamentally the same abstraction: there are no practical and theoretical reasons to treat them differently, regardless of whether they have variables or not, and a compiler will produce the same assembly code for both. This is the 101 of compiler engineering and is taught in computing science classes at the university and the only explanation for a difference is that Blitz is badly implemented, really badly because frankly this is a long solved issue in computing science.
The fact that variables cause a speed difference also smells strongly of bad design. Local variables are handled using the processor stack and they do not cause any sensible additional cost in both cases. Incrementing the stack pointer is really cheap and would make a difference only for extremely short functions.
Now, maybe I was wrong about the type of animal they used for the smoking but I'm sure that they were not as lucid as they should have been when they designed the compiler.
But more importantly, what do you think will make your program more efficient?
A better structure, better abstractions, better algorithms or choosing GOSUB over functions/procedures?
I'm sure you would say it is the former but these kinds of issues are symptomatic of BASICs: they are so deficient that they encourage local optimization over program and data structure. The speed of your program should depend on your code structure, not on using keyword X instead of keyword Y otherwise it means that the machinery of the language consumes more resources than your own code!
I am sorry if I gave you the impression that I had some irrational and impulsive dislike of Blitz but despite what you say I did give very technical explanations in my initial post, I hope nevertheless that I cleared away the impression that it was lack of familiarity with Blitz which drove my opinion. I used to think a lot of good from AMOS and Blitz but that was before I learned better.
BASIC is like sugar: approachable, easy and sweet. But if you have any long term plans you should get away from it.
May a million kittens hug you tenderly!
(Not at the same time preferably.)