What first programming language should learn a wannabe programmer?
When I was a beginner, we were supposed to build our computers ourselves: layout and make the board, buy the chips, solder them on the board, test and debug the hardware, organize a ROM with some operating system… When we were ready, we could turn on the PC and have two possibilities to develop anything on it: either entering machine codes, or use the built-in BASIC. So, these were the two programming languages I’ve learned first, in parallel.
My first commercial software was a teaching aid for physics lessons and was written on BASIC. I’ve sold it 20 years ago, in 1992, for 50 roubles. The very cool aspect of BASIC was the ability to program something in a reasonable time frame, and immediately see how the program works line after line of typing, which has a reinforcing effect on the motivation of a beginner programmer. On the other side, the cool aspect of machine codes was the fun of working with electronics. I can’t explain it reasonably, but at that times I had enormous fun manipulating bytes and bits in some CPU registers, and observing some effect (such as lightning of a LED) in the hardware. This was something magical. The advanced high technology, staying directly here, on my old table in an otherwise very low-tech room. There was an understanding gap though: I didn’t know how the BASIC statements exactly relate to the machine codes. I know BASIC eventually ends up being machine codes, but didn’t exactly know how and believed it is so complicated I can’t learn it in a reasonable time.
@ row, col SAY "FirstName:" GET firstname VALID !empty(firstname)
You won’t get it shorter and prettier with any modern mainstream UI language. Clipper also had statements to work with a NoSQL database as first-class concept, and supported multiple styles of programming (ala Perl and Python), so that it is pity it is so completely dead today. In fact, I’m very lucky that this was my third language, because it has gently introduced me to structural programming, to functional programming (code blocks!) and basics of OOP, without looking like “rocket science”. Unlike the modern functional languages who hit you with a hammer by speaking about type systems, monads and other
useless academic stuff, Clipper was able to introduce me practical advantages of using these approaches.
Clipper has died, because it didn’t support the new graphical user interface Windows 95 has introduced at those times to the wide public. I had to switch, and my next language was Delphi. For some reason beyond of understanding, at those times I had enormous fun dragging and dropping UI components such as buttons and text boxes onto forms and so visually programming the modern GUIs. I didn’t understand much about user experience at that time, so that wasn’t the joy I feel today when creating a new wireframe or mock-up. The very notion of visual programming was fun. It was so high-level, so rapid software development comparing with the manual coding of forms on Clipper, that it felt as if I were on a roller-coaster. Delphi has introduced me to basic Windows concepts, and because this time that was a slightly more complicated enterprise information system, I’ve used a SQL database, so I could learn the world of relational databases and SQL in particular.
I was fortunate to find a job on Smalltalk, and learn from a Smalltalk guru and coincidentally one of the best programmers I’ve ever met, and this experience has changed me forever. Not only I grasped OOP (which was almost destroyed in me by its C++ version), I also understood how OOP fits in the landscape, and what software architecture is all about. Smalltalk is the only programming language I know that is so fun to use and to type. It is like hearing a song that gives you creeps. Or meeting with a guru.
Currently, when I program, I use pure C in an embedded environment. This is fun on its own. My typical task is to understand, how exactly
var mystring = "abc";
Learning. This is what you are going to do as computer programmer. Like, not learning two or three languages and be happy forever. This won’t happen to you. Well, I mean, hopefully not. You want to be more than just a computer programmer, don’t you?