I took every computer course available to me through high school and graduating in the 90's that didn't give me much choice. The teachers were not that knowledgeable so I ended up doing Apple BASIC and QBASIC lessons out of books. Honestly didn't learn much.
I took a introduction to programming course in college which was in C. Most of the time I was fighting syntax errors to perform the most basic operations. I didn't learn much.
I eventually switched my major to computer science and took another 101 course, this time taught with C++. Still I fought segfaults and syntax but I actually learned the basics.
No moral to this story, just I wish I had python as a choice when I was learning.
I'd have a couple problems with VB as a teaching language. First, there's the business of building GUI's and navigating the project structure. These are not the basics of programming, and are layers of abstraction that obscure the underlying code.
Second, even if there's a free version, it's an enormous bloated download, and only runs on Windows. Python can run on any reasonably modern computer, including the Raspberry Pi and its ilk.
Third, Python is more "cool" right now, meaning that there is a lot more interesting code and projects being shared and discussed online. I actually consider this to be an advantage for my own use of Python at my day job.
Now I think both groups of students will come away with a decent grounding. Those who get into programming will learn more than one language, and I'll bet that there's little correlation between who's a good programmer and what language they started with.
VB6 is... old, and feels old. It barely allows object oriented programming and doesn't have first-class functions, so you're pretty limited to a procedural sort of paradigm. The IDE is clunky. For example: error handling is done with explicit GOTOs (ugh) and "On Error Resume Next" lets you simply skip past errors(!!!).
VB.NET is basically a friendlier-looking version of C# and is therefore not nearly as bad as VB6, has a real modern IDE, etc.
Python feels like a playground where you can explore; VB6 feels more like you're on a rail and the moment you fall off everything will break.
Yeah, but my feeling has always been that, if you drew a line called "complexity" with VB6 on one end and C# on the other, VB.Net would be much closer to the C# end. Which sort of calls into question what the benefit of learning VB.Net is; for nearly the same amount of effort, you could just learn C# and benefit from all the additional tooling and support options that C# offers.
The big draw of VB through version 6 was precisely that it wasn't a "real" language -- it was much, much simpler than a "real" language, and therefore so easy to learn that practically anybody could do it. VB.Net on the other hand always felt more like they just put C# into a T-shirt that says "I'M WITH STUPID."
Is that very differently from "except: pass" in Python, though? Most languages allow you to skip past errors, the problem with VB was the culture of the users who didn't treat that as a red flag, not the language feature itself.
And since you don't need to indent the block that comes after On Error, it's easy to miss that line...
I think Python is a very good choice as a first programming language; although, if it were me, I would also segue into a bit of C so that the learners can appreciate the difference between static and dynamic typing. What Python (and C) lacks is an idiot-proof GUI designer like VB has. (I know there are obviously things like PyGTK+ with Glade, but it's not nearly as easy as VB's form designer.) Like I said in my previous paragraph, the near-instant gratification of creating a working -- albeit trivial -- program with a visual component really encourages learners to delve deeper. A Python console application will come across as boring, at best.
As for your A/B testing: I believe the VB group will not really understand what it means to program, whereas the Python group -- while harder to encourage -- will have a much more solid foundation on which to build.
Another reason I'd discourage it, is because the language is tied to the IDE/editor and is very difficult to do something without it. Also there is not opensource community around vb6 and there is not much code to look at or to contribute in github. Even if the 'new project' dialog offers you several types of applications the language is very limited to desktop applications and com components.
VB.Net is very good and modern language and it has some interesting features.
I'd rather introduce programming in a nix environment using the unix way, write a shebang here and pick the language you would like to use. Learn file descriptors, stdin stdout stderr, process exit status, pipes, etc. Learn to write small libraries and programs that solve very specifics problems.
My questions:
- Do you have any thoughts about people being introduced to Visual Basic as their first programming language?
- If one group of students are taught Visual Basic well, and another group is taught Python well, will all students come away with a decent grounding in programming?
I don't ask that as a language flame war, I'm honestly curious about how programming in the VB environment compares to languages I'm more familiar with such as Python, Java, C etc, especially for students who have no previous background in programming.