When I tell people that I had already my share of Cobol and RPG in my life, they look a bit puzzled since they do not expect a cool twenty-something dude, but rather an old long-bearded pony-tailed engineer. Ok, you might question the coolness of the dude, but the twenty-something is true. I actually entered this week the second part of the twenty-something-ness :-)
I’m not telling you this to generate more birthday wishes or presents (they are welcome of course ;) ), but because I start to hear more and more techies in the blogosphere that are talking about the COBOLization of Java. Bill Snyder’s entry on InfoWorld generated quite some buzz as you can see on the amount of comments.
2007 and 2008 is all about rich internet applications, Flex, Silverlight, Ruby on Rails and other fancy Web 2.0 stuff. Java is… well so 2000. Perhaps we, we as in Java community, should take the step to completely break with the past and bring a completely redesigned language and platform, without taking the garbage and burden from the past with us. Backwards-compatibility is nice, but often limits the possibilities for the future. Microsoft did actually quite a good job with their Visual C++ to Visual C# move. Never thought that I would say it, but C# 3.0 with LINQ is a damn cool environment for a developer!
But then you can wonder whether such a complete redesign and break with the past is necessary? The article quotes Senori’s CEO Ofer Ronen who decided to move to Ruby on Rails because of the pre-built structures for developing an e-commerce site. Well let’s not forget people, Java was not designed with building a fancy e-commerce website in mind. If we put everything a bit in perspective it makes sense that we need nowadays a lot of plumbing to get things done with Java. Ruby on Rails has the advantage that is fully designed to easily build web applications. In a way you can call it a Domain Specific Language. The same that Ruby on Rails is also not suited for every job either.
I had this discussion with a colleague at my customer recently and his idea was that Java will become more and more the COBOL for financial institutions, to build large and robust systems.
So, perhaps in ten or fifteen years people will react the same to the future cool computer science dudes (I’m really trying to polish up the image of us, computer scientists.) when they say that they had their share of Java….
That brings me to another discussion that has caused some heated debates in the blogosphere: which languages should the new computer science students see in university? Java? C#? C++? A recent article in the The Journal of Defense Software Engineering pointed out two interesting things:
- Pitfalls of Java as a first programming language
- A real programmer can write in any language
It’s not limited to Java, you can easily say the same for C#. They both hide a lot of lower level complexity for the developer. While this does speed up the efficiency of developing, it causes that the future developer is merely trained in reusing the right library than actually knowing what he or she is doing. Pointers? Registers? The more you know about the basics, the easier that you can actually get into other languages and language paradigms as well. I remember that in my first year, we were challenged by our professor to solve problems and come up with algorithms in C. I heard that nowadays, the new students from my university start with Visual C#. But not only the complexity of the language, also being exposed to different language concepts is a must. Especially nowadays with the growing trend towards using Domain Specific Languages. We realize more and more that there is no one size fits them all. Sometimes a problem can be better solved with a functional language, sometimes with a object-oriented language, or sometimes just with Assembly. If you have never seen these different concepts, how can you ever make a decision?
Anyway, got to go. Erlang is waiting for me… :-) What language will you learn in 2008? (and please don't reply "French"... ;-) )