The pragmatic programmer say it, and last year I heard a talk by Jared Richardson who also said it: Learn a new programming language every year. Since I’m always keen on learning something new I thought “why not?”. The only problem is: Which language to choose?
This post lists some of the candidates with pros and cons, and hopefully, when finished writing this, I’ll know which language to start looking at. But without further ado, let’s have a look at contester number one.
Ruby
Ruby has been around for quite some time, but as far as I can tell, it wasn’t until the release of Ruby on Rails that Ruby really took of.
Reasons to learn Ruby:
- It’s used for Ruby on Rails which I’ve been foolin’ around with, but sometimes without knowing exactly what I did. For instance, why did I had to type what I just typed like that
- It’s 100% OO
- It can be used for scripting, something I’d like to look more into as I think it could help me automate things and thereby make everyday tasks easier
JavaScript
Now, there are some people out there, especially “real” programmers who don’t like JavaScript and I think that this is a shame, because JavaScript is really a great language, it just got at stupid name, meaning that people think that JavaScript == Java….which it certainly isn’t!
I know a bit of JavaScript (who doesn’t?), but when we start talking
- Closures
- OO in JavaScript
- Anonymous functions
- …and so on
I’m nowhere near safe ground. Therefore advanced JavaScript would be great to learn. I’m really looking forward to this book by John Resig.
Clojure
To tell you the truth, I don’t know that much about Clojure. People say functional programming and Lisp and that is enough to wake my attention.
Groovy
Groovy is, and I quote: “a flexible, highly productive, agile, dynamic language that runs on the rich framework of the Java platform”….wow eh!
Reasons to learn Groovy
- Groovy is close to Java, meaning that the learning curve is not so steep.
- It is possible to use Groovy for scripting
- As with Ruby on Rails, there exists Grails, a web framework based on Groovy. This means that one could create web applications in Java land, but with the ease of Ruby on Rails (at least that’s what I think)
And the winner is…
I think I’m gonna go with Groovy for now. It sounds really cool and easy to get a hang of.
Furthermore afterwords one could go on to learn Grails and experiment with web applications in Java without using JSF, just to try something else than what I spend my entire day doing 🙂
How about JavaFX, Scala?
Thank you for your post.
To be honest I hadn’t thought of JavaFX and Scala when I made my list. Maybe I should add them as well…that’ll also mean that I don’t have to make a list for the next five years or so if I decide to learn all the languages one by one 🙂
I’m starting to learn JavaFX at the moment as well. The main advantages for me are that I can learn about skinning applications, designing my own icons and other graphics and learn something about developing GUIs for mobile phones at the same time. I’m also planning on using JavaFX as my prototyping language for some large touchscreen interface concepts I want to try out.
Great post!
I think you should go for JS.
Its a hell of a language, lots of things funny and challenging, but also because its a layer that you can use on top of almos everything, RoR, Grails, even mix it with JSF. You can go much farther with Prototype, JQuery, etc than with ajax4jsf.
First of all thanks for your posts, sorry it took so long to approve them but I’ve been on vacation with the children and the missus for a week without internet access and I like to approve the comments manually, just to try to keep this blog free from spam.
@chris:
I’ve heard about JavaFX, but to be honest, I don’t know that much about it so if you could enlighten me I’d really appreciate it.
My understanding of JavaFX is probably wrong, but as I see it, it is a scripting language, primarily intended for rich web applications. But isn’t this what JavaScript allready does (and does well?). Does JavaFX give you something more? Please note, I’m not dissing JavaFX, I’m just curious (and probably misinformed :-))
@pedro
I agree. JavaScript is one hell of a language with lots of quirks and odd things when you’re used to…say Java.
And with the rise of Ajax enabled web applications it has become even more important to know at least a little JavaScript if you wan’t to spice up your application.
So why didn’t I jump the JavaScript wagon right away? As I said in my post, I know a little JavaScript, I know enough to write my own JavaScript classes and functions, use the XMLHttpRequest object and perform DOM updating and manipulation. I’m avare of the prototype inheritance and how to extend existing objects. It’s when things start to drift away from “normal” OO programming with anonymous functions, closures and so on that I start to get confused. This I’d love to learn, but at the moment I felt that I’d benefit more from learning a language in which I can create scripts/tools that I can use for automating tasks in my daily works as a Java/Framework developer, and here Groovy fits perfectly.
I intend to return to JavaScript sometime soon, as I (as you) like the language. And as I said in my post, I’m really looking forward to John Resigs upcoming book as it looks to be just what I’m looking for.
Once again, thanks for your posts. Who’d thought that anybody actually read this blog but me 🙂
JavaFX can be used to build anything from a desktop application to one that runs on a mobile phone. It can certainly be used to develop rich web clients, but has the advantage that applications can be dragged out of the browser and placed (and subsequently run) from the desktop. It’s like the old concept of the Java applet but done properly. Used this way it is similar to things like Silverlight and Flex.
JavaFX is not quite ‘there’ yet, but it’s improving in leaps and bounds with each version. It’s almost ready to replace Swing for desktop Java development I think. All that’s really needed now is a good visual design tool. At the moment GUIs have to be hand coded, which is fine by me as I’ve always developed GUIs that way, but a lot of people prefer a visual design tool. The main worry with JavaFX is whether Oracle will continue to fund and support it when it buys Sun.
I know it’s almost heresy to say it, but I don’t really like this trend towards trying to use Ajax for everything. Browsers are great for documents and things like blogs, but I find developing proper applications in them takes much longer and is much more complicated than it is with a decent desktop GUI toolkit. The main benefit of Ajax is the delivery of the application to user, which makes up for the poorer interface possibilities to some extent. It’s just a shame that the delivery mechanism can’t be sorted and then we can get away from these clunky browsers.
Of course, browsers are getting less clunky by the year and JavaScript performance is getting better as well, so perhaps I’ll end up having to join the rest of the herd and go with JS in the end. It just seems like a case of jumping on a bandwagon to run everything through the browser.
See, turns out my understanding was wrong. Thank you so much for your explanation. I’ll keep an eye out for JavaFX, I think it is pretty well supported in NetBeans isn’t it?
About your Ajax comments. I tend to agree with you. Browsers and the Internet are, as you say great for blogs, documents and information in general. But that does not necessarily mean that it is also the right platform for all kinds of applications. Often you’ll end up spending quite some time on session management and back/forward button issues (been there!). The right tool for the right job eh 🙂
I can’t comment on the Secrets of the JavaScript ninja but consider JavaScript: The Definitive Guide, 5th Edition
by David Flanagan (http://my.safaribooksonline.com/0596101996). It’s a quality book.
BTW, for Groovy I recommend Programming Groovy: Dynamic Productivity for the Java Developer by Venkat Subramaniam
(http://www.pragprog.com/titles/vslg/programming-groovy).
Thank you very much for your recommendations/suggestions. Actually, I own them both already 🙂
Having said that, I must contine saying that I agree with you, JavaScript the definitive guide is…well…the definitive guide, always handy when you need to look something up or recapture some “weird” (as in: seen from a Java developers perspective :-)) JavaScript feature.
As for the Programming Groovy book, I’m working my way through it at the moment and so far it’s a great read. I like the “here’s how it would look in Java and here’s how it looks in Groovy” approach, it makes the transition…at least if you’re used to looking at Java code 🙂