Random thoughts on programming languages…
It’s funny how one can find one language a joy to program in, another tolerable, and another quite distasteful. Here’s just a few thoughts on a few of the ones I’ve worked with over the years that have left some sort of impression on me!
Assembly: While others hate the quirkiness of the 16-bit segmented x86 world, I always found it a joy to work in. Where another may see a limit, I see safety and order! Knowing the execution times (or at least a high probability of what they will work out to) while coding just adds a bit of exotic fun. The 32-bit world kept much of that fun when run in real mode, but suffered a loss in protected mode. No longer was the world one’s playground, in protected mode there was more freedom in theory, but it’s just an illusion. AMD64 joined SPARC and Motorola assembly in taking out even the last bit of the excitement and leaving us with a functional, but dull world. And let’s not even discuss the hideous Linux and Windows call interfaces!
BASIC: This is where I started, as did many others! A safe place to explore, making those first few tentative attempts at forcing one’s will onto the computer. Quickly became a place that felt limiting though. Perhaps not a fault of the language specification, but of the implementation available. A little more time in that environment was had by extending it with RatBAS, but in the end it was left behind as a chick leaves the safety of the egg to go explore the world.
C/C++/Java/C#: C was the promised land for all those beginning programmers that were tired of BASIC! Many new things to explore and many, MANY ways to crash the machine. Now one starts to believe that one is a REAL PROGRAMMER! At least until the scope of the new abilities is fully realized. I never got to fully be immersed in C as C++ came out fairly soon afterwards. It took my beloved C and made it look all ugly. Struggles were had with it, only to be disappointed. Perhaps my projects simply weren’t large enough for it to matter? It certainly made things harder, often taking longer to code and ending up with larger and slower executables. What’s happening to my world!? Well, all will be well once Java comes along promises those who speak of the next generation. C++ was just a stepping stone to this better world perhaps? Indeed, much of that was true. We welcome code that (usually) runs fine on multiple platforms. The syntax is friendlier than C++ while maintaining much of the power. But wait, what’s that? Where’d our unsigned ints go? How could they? Oh no, execution times are slow too! Time may not heal all wounds, but at least it brought improved JVMs and our execution speeds are now what they should be. Unsigned ints are still missing, but Java has truly become a reasonable language to live in day in, day out. C# has also become a good work partner. Sometimes called “hey you, almost Java”. Pleasant enough, nice enough, better than Java in some ways, worse in others. A true “nice guy” of languages. Unfortunately, the “nice guy” doesn’t always have the same amount of soul as the battered warrior… This is the part where Objective-C people are looking for mention, so I’ll just say that Objective-C is effective, but downright ugly, having seemingly taken all the worst parts of C and C++ while leaving the best parts behind. I was hoping you would have stayed in the past, but unfortunately Apple resurrected you so we’ll have to continue to deal with you in the future.
Lisp(s): A bit standoffish in syntax, but beautiful on concept! Wonderful to work with, right up until the point at which one can only think of a very procedural way to do something. You force us to take our thinking in another direction and provide much fun on the journey. However, you’re really hard to take to work. Playing nice with others is a MUST in the work environment, but you make that harder than it should be. This saddens me.
Ada/Modula-2/Pascal/Delphi: Close enough to C in appearance to trick the unwary, and make the wary comfortable. Ada, your constraints are elegant, but your HUGE executables are a bit discouraging. I’d like to use you more, but that’s quite the turn-off. Pascal, you were a good friend in school. I was able to knock out assignments in no-time flat. Luckily you were limiting enough that the prof couldn’t make us do anything too complicated! Modula-2, I miss you. The perfect balance between Pascal’s ease of use and Ada’s strict requirements. There’s things you do for scalability and safety that just aren’t captured in the current crop of first-tier languages. This is a bad thing. Delphi, you may not have all the features of Modula-2, but you’ve taken Pascal and extended it in a very business friendly way! In fact, I used you first, before Java, so Java objects always make me thing of you! Oh, and you’re so much more than just a language though! An entire system for doing RAD (Rapid Application Development) that others can only dream of! Together we built large complex apps back in the late 90’s faster than other so-called RADs can do even today! If you’re doing RAD and not using Delphi, well, you’re not REALLY doing RAD. Keep calling it RAD if you must, but Delphi and I know the truth! 😉
OCaml: Hi, I’m a language that would like to be Lisp, but I’m not. Please don’t hurt me… Hordes of the faithful (well, think *small* hordes) love you. I actually do respect you, but the whole ML group seem to not solve any problems I have at this time. Perhaps if I go into something more scientific in the future.
COBOL: My first 16-bit protected mode programming experience! In OS/2 of all things! Even supporting dual boot 16bit PM/DOS apps! Yeah, all I ever did constructive was process big linear files, but it seemed cool at the time. Glad you’re still around old friend. Of course, you do such dry tasks these days that I’m also happy we’re not spending any time together…
Prolog/Forth: I sure hope the logicians out there understand you two. I consider you both read-only at this point, and that only barely. ‘Nuff said!
Ruby (specifically on Rails): I like concise. To a point. Concise plus hiding everything where it’s hard to find is bad. Stop doing that. Easy to write, annoyingly challenging to debug. Scalability is a struggle.
Perl/PHP: Putting you two together probably violates all standards of decency. Too bad. You’re both living in the world of the web now, and you’ve picked up a lot of bad habits there. Not sure why so much web programming has to be done in ugly languages that become exponentially harder to debug during a linear scale-out. Is the web all about pain? Does it really have to be this way? Surely we can do better!