BTW, I’ve had some programming languages re-direction in the past few months.
Hardcore programming for me started a while back doing a project in Java during my college days. What I mean by “hardcore” is not generating a lot of code, but instead taking a step back and evaluating a programming language for what it offers – it’s pros and cons. I really found it difficult to make sense out of Java – there was plenty of boiler plate code that needs to be written to do anything. A good example is having a class with read-only members (very very useful for things like configurations). There is no easy way to ensure that anyone using your class is prohibited from changing the members post generation. The quickest (and it’s not that quick at all) is to make your members private and use getters. Now, imagine a class with a couple of hundred members and nothing but vi/vim as an editor – see what I mean ?
Following that, I began being a big fan of PHP due to it’s dynamic typing. in fact, this was so liberating from strong type languages, I used PHP for every single thing! BTW, PHP does not solve the problem with Java mentioned above. Then I found myself in the situation where I ended up doing a lot of reflection and function of functions, and other highly dynamic structures, which is what one would do with a dynamic language. The problem was that it was very difficult to decide what a variable was holds at any one point, and I ended up going back into writing more boiler plate to check types during runtime (as PHP’s compile time checks are not so strict).
At this point I graduated and had just begun working at an Investment Bank as a full time Java developer. BTW, if anyone is wondering, the level of programming skills that you have when coming out of college is appalling compared to what is needed for building Front Office trading systems. My advice for all those students pursuing a CS/Info Sys degree: learn how to solve problems and think critically. But thats another story.
I started using a lot of Java, and I mean A LOT – to the point where I used to have nightmares about NullPointerExceptions (this is just a joke BTW – I am sad, just not that sad). And guess what ? I started falling in love with Java again. Compared to the time in college where I was complaining about boiler plate, the difference was IntelliJ (an IDE for Java). I found that IntelliJ generated all the boiler plate for you. This was an amazing step forward. Here I was happy with all the strong typing that comes with Java and an amazing tool that did all the boiler plate. For example problem with Java above, IntelliJ solves in a few keystrokes – Alt+Insert, then select “Getters” and pick all the members. Moreover, I discovered reflection and generics in Java, which is extremely powerful in getting type-safety and some essence of a dynamic language (provided you know what you’re doing, as you can shoot yourself in the foot if you don’t!).
So, I was back being an advocate of strong typed languages, but on one condition – have the right tools at your disposal. Lately, I’m back to using dynamic languages. I’ve been having some very good thoughts on Python, and how it’s such a cleaner and refreshing approach to dynamic languages compared to PHP, without the behemoth resource usage of a full virtual machine like Java.
Tags: Java, Programming, Python


Posts RSS Feed