take a shotgun and shoot your teacher. nobody in his right mind would tell somebody else to start programming with qbasic, unless he was very sadistic. i only know qbasic from DOS and i'm not sure where else to find it. should find it i beg you not to start out with it... please !

Pascal is nice, C is even nicer. The two most popular programming languages in the industry are C++ and Java. C is the perfect step-up for both. But don't stick with C for too long, just use it to get started and understand how programming really works (it's quite close to directly programming the processor).

Agreed with the most but pascal is by far not only a 'learning' language. It was created in the late \~1970 by Mr. Wirth with the intention to be powerful language and it really is! Just consider all those stuff like TI-pascal, FreePascal, Delphi, Symbian-pascal and etc.

So my advice is to go with pascal for a short time till you learn what's going on and then move to the 'C' type languages(C, C++, C#, Java, D, etc.)

And I'd have to disagree with Nick. Don't start with C, as it is imho, one of the ugliest and less esthetically pleasing languages out there. When you start off, you don't want to go too "low level".

It's just as "esthetical" as C++. The implementation part of C++ is still totally C. And if you refer to the habit they had to use short variable names, many underscores and meaningless abbreviations, that has nothing to do with the language. You can perfectly write elegant C code.

And I believe you absolutely have to start as 'low level' as possible. At my university, the primary programming language is Java. It's a good language, but not for beginners. They understand absolutely nothing about programming after their first few lessons. I've known students who, after a full semester, still didn't fully understand execution flow. Syntax errors were their worst nightmare.

In my opinion, the first programming lesson should be in assembly. This sounds crazy, but really isn't. Teaching someone how add, mov, jmp, etc. works isn't harder than using a pocket calculator. They will instantly understand execution flow and even pointers. You don't have to teach anything about advanced instructions or complex addressing. Just one or two hours (practical excercises) is sufficient. Give the students a simplified list of what the basic instructions do.

Stepping to C is really easy then, it's just like using the basic assembly instructions, but with expressions that look like mathematical formulas, that are executed one operation at a time. They will appreciate C's features, and understand syntax requirements. It's also the perfect time to let them look at the (debug) assembly output. They will instantly understand what a compiler really is, and how to debug an expression if the C debugger doesn't give them enough information.

Then you can step to C++. Execution flow is harder to understand here, but you can teach them how it saves you from some tasks, and how to organize data and functions in classes. Again they will appreciate every new feature, and won't fear the syntax. They will instantly understand that constructors/destructors are just like regular C functions, but implicitely called by the compiler, they will understand that virtual functions are just function pointers.

They would simply know how things work, instead of thinking of Java as some magical language spoken by all processors. Working bottom-to-top will keep them excited to learn new things, and they'll never ask how something can be broken up into simpler steps they can understand, they'll already know. Trust me, everybody I know who became a good C++/Java programmer in a short time, started with a very 'low level' language.

If only things worked like that. Friends of mine (one of whom just finished uni, the other is just starting this year) are/will be Java people. I certainly agree that Java is not a beginner's language, and that C++ would be more useful in the end. But the uni's like it because they don't have to pay for Visual Studio - yes, I know that you don't have to have VS to code in C++, but there's that whole belief thing involved, and it does make it nicer

Thankfully I get to learn C++ as part of my course. I did C last year, and would have gotten a Distinction if not for slightly misreading some of the instructions for my assignment It just makes logical sense to me. Most of the rest of the class were struggling with even the basics though. And by and large, those were the people who'd done Visual Basic the previous year (owing to the fact that I'd previously passed a few modules, I was learning VB, C, and Perl at the same time ). I guess once you've had your hand held for a bit, it's hard to understand when you're left on your own.

There's nothing wrong with QB =) It was the first language I ever played with. Very fun, easy, and you can easily design some classic games like Ultima 1 -> Ultima 3. Of course you can use a more popular language, but you'll be missing out on the BEEP command!

No matter the language used, it's easy for any programmer to be lazy and not give much thought into their design / programming. I've downloaded and used quite a few API's to date and I haven't been pleased with any of them. Too few people look at the big picture and to many look at the low level details.

I agree with Nick on learning lower level stuff first. When I learnt about memory (RAM, stacks, heaps, cache, etc…) it improved my understanding and use of pointers/references, function stacks, and memory heaps so much better. Knowledge like that comes in handy.

No matter the language used, it's easy for any programmer to be lazy and not give much thought into their design / programming. I've downloaded and used quite a few API's to date and I haven't been pleased with any of them. Too few people look at the big picture and to many look at the low level details. I agree with Nick on learning lower level stuff first. When I learnt about memory (RAM, stacks, heaps, cache, etc…) it improved my understanding and use of pointers/references, function stacks, and memory heaps so much better. Knowledge like that comes in handy.

Exactly! People who learned a high-level language first, always seem to have trouble doing something simple. Either that, or they try to perfectionate the high-level design so much that they end up overcomplicating things and miss the actual goal of an elegant and functional design. People who learned a low-level language first realize that programming languages are nothing more than a tool to write assembly code in a more readable and structured form, and they will use this tool more correctly.

i started short with vb, moved over to c++, ran down to asm, and now back up to c#. with some java and stuff inbetween.

going down to asm helped me HELL OF A LOT to understand how it all goes on.

i don't think it's that nececary to really learn much asm. a pseudo-asm in a virtual pc could be enough (a small pc, where you can visualise registers and all, would'be fun). then, you can move upwards..

but the other side is, i too often have the feeling of writing code that doesn't fit well to asm when coding in c++, knowing too many of it's language pitfalls. i'm quite happy with c# now to not need to care about that anymore.. still, the design from lowlevel is in the background. and it helps..

still, it's more than 5 years now since i started programming.. it takes time to learn, espencially understand. the chess-rule.. you can learn the language/logic fast. but really understanding, mastering it, can take long.

Sorry, Nick, but I have known people who start with C for a year, do C++ for another year, and then do Java for a semester at my college STILL not understand execution flow. I would actually have to say that those people are the majority. In Computer Science most people just get by. It is not about the language you start with, it is about your own drive to learn and of course your own mental ability.

But the uni's like it because they don't have to pay for Visual Studio

yes, I know that you don't have to have VS to code in C++, but there's that whole belief thing involved, and it does make it nicer

funny... my university has no windows machines at all for the students... maybe a few with NT4.0 ? nobody uses them anyway

at my university we only learn java because we share the first two semesters of comp.sci with the more media orriented computer courses (probably web designers or something along those lines ). it's exactly how nick describes it. most of the people have no clue at all what they are doing. it's like they don't grasp what's happening behind the curtain of java. i think starting out with C and running a little assembler course on the side would be great. in my courses we covered assembler briefly (on a virtual MIPS processor) but we only had to come up with one program

no mather where you are and what you learn, most surrounding you don't have a clue, and just learn because.. they don't know bether.

i have this in my it business, others have it while learning how to plant flowers, and others again while operating on your heart, lungs, or what ever. just be sure YOUR doctor CARED about what he learned!

edit: though fortunately in many other proffessions it doesnt matter that much and the end user has an easier time to be discerning. When I am buying tomatoes, it is easy for me to pick out the bad ones even though I do not grow them regularly.

it doesn't mather as much in this business as well. they are just ****ing students. who cares about them? they will not make it far in the end. they will not even TRY to. they'll find something else, bether suited to them.