AMOS' While...Wend is nothing easier than C's or Pascal's; but AMOS had commands like "Screen Open", which immediately allows the programmer to open a screen and play with it knowing nothing about Intuition.
Well, there's really not much difference between BASIC and C in terms of actual coding structure. More "advanced" versions of BASIC, like AMOS and Blitz, offer function calls and limit variable scope, things which are not part of the BASIC standard (which I believe was established in the 70's). I found C an easy language to use in my college programming classes. The worst part is initializing all your "strings" as "arrays of characters". Oh yeah, and every computer stores datatypes differently, so an integer on one machine may be different than an integer on another machine. Stupid niggling stuff like that gets in the way, but on the whole, understanding C structure is pretty easy.
When I started programming with AMOS, I was really frustrated with the concept of variable scope, and didn't understand why you'd want to write a program with anything but global variables. I found out the answer VERY quickly when I started using C. BASIC leads to a lot of NASTY coding habits that are hard to break if you want to move on to a better language later. BASIC is definately easy, but it's *too* easy and makes it VERY hard to move on to something more sophisticated. If I had started programming in C instead of AMOS, I'd probably be a computer scientist now, instead of a photo restorist. I got good grades in my C language classes, but I got very spoiled with the excellent IDE that AMOS offered. Doing everything from a UNIX shell prompt and typing out long compile commands bugged the hell out of me!
What really annoys me about C, though, is that you have to tell the compiler everything. That's great if you're looking for maximum efficiency, but it really limits freesyling. I'm sure with a bit of creativity, it would be possible to retain the efficiency of C while still letting the compiler handle all the includes. With BASIC, all your standard includes (like stdio), are already... um, included. Several hundred API calls are already in the interpreter and you don't have to load them up and initialize them one by one. Technically, you CAN use a ScreenOpen() function in C, but you have to explicitly define links to the code before you can use it. In BASIC, ScreenOpen() can be the very first line of your program. The drawback with BASIC is that you have to use what the developers give you. Adding custom APIs to BASIC is very difficult (like in AMOS), or simply not possible at all. With C, you're EXPECTED to use all kinds of custom APIs.
The one thing I REALLY hate about C is that it cannot be used as an interpreted language. The thing I really love about BASIC is that it is pretty universal. It's designed to run on an interpreter, and that makes it architecture independent. I wouldn't mind going through the trouble of reserving all my datatypes manually for performance, if I could run my programs on both a PC and a Mac without having to re-compile everything and worry about low-level conflicts and OS dependencies.
You can do that now with languages like PHP and Perl, but coding those languages is a NIGHTMARE!!! I have a BBS written in Perl, and I'm trying to make modifications to the code. Even after working with C for four years, just looking at Perl code makes my head spin! I can't understand why anyone would make such a wretched, ineffecient language!
Purists say that pre-compiling your applications is the best way to write code, because it "forces" you to proofread your code and promotes good, clean coding habits. I disagree, for the same reason I think a computer is still better than a typewriter. A typewriter forces you to rewrite your documents, but with a computer, it's your OWN responsibility to review your words and rewrite, to make sure your document is as good as can be. If you're lazy, it doesn't matter what tools you use -- your products will suck.
A person becomes a good programmer because they put in effort to make good code. Personally, I think the AMOS interpreter was a great way to test code. C programs, on the other hand, really drove me nuts, and it was an endless battle of going back into your code and setting test points. What a pain! Don't even get me started about backtracing machine code and breakpoints! I like the structure of C, but when it comes to debugging, ordinary ANSI C really drives me nuts (I haven't tried more anvanced versions of C, yet). I think programmers make application and compiler errors intentionally cryptic, just to cover their stupid mistakes!
If I were to make a new language, it would have the modularity and datatype handling of C. It would be an interpreted language that can be optionally compiled. The first line of the program would be an "environment definition", where you tell the interpreter what modules you want to use for your program. With BASIC, all the graphics stuff is always available, so you have too much overhead (on the PC, a Blitz Basic executable is 750K, no matter how small your program is). In my ideal language, you can say right away if you're making a command-line program or if you need accelerated graphics. Or, you can define everything manually, like you do in C.
As for object oriented programming, I don't know exactly how that works, and I've never needed it because my programs are not big enough.
Do keep in mind that when I mention "C", I'm really referring to the ANSI C standard. I've never used more elaborate C compilers like Visual C, Borland C, or any C++ compiler. Maybe C++ compilers are a lot more streamlined than ANSI C. I never bothered to check. I gave up programming to make photographs, and I'm perfectly happy with that career choice! :-D