I've read two and a half :) really interesting posts today (warning, they are pretty long) about computer languages:
And I thought I share some of my opinions about languages. I'm polyglot myself and have some experience with many types on languages.
- GWBasic / QBasic - this was the first language I've learnt. It was lot of fun even when I was typing programs which I didn't understand from books and magazines :)
- Logo - this was the second language (if we don't count BAT files) which I've used. I found it interesting but I went rather fast back to QBasic because it lacked the functions to interact with the external world.
- Pascal - This was my next step and for DOS Turbo Pascal (6.0 and later 7.0) was awesome. For windows not so much. I've looked at some source code for Windows and immediately got a headache (this was before I understood event driven programs and the theory behind Windows programs).
- Visual Basic 3.0 - my first experience with visual IDEs under Windows
- Delphi - this seemed to combine the best of both: visual IDE from VB and Pascal. My only complaint was the file sizes of the generated executables. Then I discovered KOL, but it wasn't as easy to use and didn't have all the third party components.
- C / C++ - I played around a little with them in Visual Studio and DevCPP, but I never fully mastered it. My suggestion to anyone looking to do this professionally would be: read the
Thinking in Cand
Thinking in C++series from Bruce Eckel and only touch code after you understood everything that is there, because these languages are very powerful but also very dangerous, like a sharp knife.
- PHP - with it I discovered the joy of scripting languages and web programming. However over the years I found that I was writing the same code over and over again. I'm planning on trying out something like CakePHP or Symfony.
- Haskell / Lisp - We cursory touched upon these languages in our university curriculum and they both seemed interesting, however my impression was that they didn't have a big enough library behind them to do actual work.
- Smalltalk - again, I was introduced to it during university and it was really interesting (we were using Squeak), but the image concept seemed to radical.
- Java - as many others I got introduced to Java through applets. It is a fine languages (garbage collection rocks!) and has a very extensive set of libraries, however I don't really use it these days because scripting languages are quicker to get work done and C / Delphi is better suited for low level OS stuff (like directly calling APIs)
- VB .NET / C# - Very nice languages and it's good to see that the size of executables is back again to normal, however this comes at the expense of the fact that everybody has to have the framework installed, and not everybody does. And it really doesn't look good when you say to people: you want to try this? Go download and install a 20+ MB framework!
- Python - It is a fine language, however it doesn't have the set of libraries Perl has (with CPAN). It is also a little more verbose than Perl.
- Perl - This is my current scripting language of choice. It has an extensive set of libraries (see CPAN), it's relatively cross-platform and has a very compact (but from time to time very cryptic) syntax. As I learn more and more of Perl I get a more stronger feeling that PHP is a stripped down Perl and really don't want to go back to PHP.
- Ruby - I didn't actually use Ruby, however I saw a couple of tutorials about Ruby on Rails and I got really interested. Two things that concern me are efficiency (if Rails always looks up the structure of the database, doesn't each request takes longer?) and security (the blending of the development and deployment environment concern me). I'm sure that there are perfectly good answers to both of my concerns, I just don't know them yet :).