Need a new Programming Language

I need to learn a new Programming Language.

This is for two reasons.

In my time as a programmer I’ve learned and used; Basic, Ada, C, C++, VB, Perl and Java.

So that’s 7 (5 if you merge Basic with VB and C with C++).

It’s a reasonable amount, a little on the small side.

But that list is only half the truth; most of those languages I’ve not touched in years, some I’m definitely never going to touch again (Ada!).

The only ones I now use in any form now are Java and Perl.

I use Java in my day job and to write things like this site, and I use Perl for the odd scripting task.

My first reason for needing a new language is a pragmatic one. I need to learn a new scripting language.

I need a new scripting language because every time I go to do something in Perl I find I have forgotten how to do one of:

a, list the files in a directory.

b, pass an array to a function.

c, iterate over an array.

d. all of the above.

This is because I find Perl’s syntax to be on the whole inconsistent and unintuitive.

So, I’ve had enough of Perl’s kooky ways and would like to learn something a little bit more “sane” (definition: consistent and intuitive syntax).

My second reason goes a little deeper.

I’ve been reading a few articles and blogs of late that in some way or another point out some problems with Java.

A Quick Tour of Ruby

Java doesn’t provide a utility method for opening a text file, reading or processing its lines, and closing the file. This is something you do pretty frequently.

— Steve Yegge

Can Your Programming Language Do This?

Java required you to create a whole object with a single method called a functor if you wanted to treat a function like a first class object.

— Joel Spolsky

What was interesting was that once I was over my initial denial of such heresy, I found myself mostly agreeing with what they had said.

The surprising part for me was that I had not consciously noticed these things myself – even though I now realise such things had annoyed me at the time.

The reason that they had not bubbled up to the level of consciousness was that I could not see beyond the Java language itself.

Something was awkward to do in Java (ever tried reading a file?) – well, that’s just the way Java is.

I couldn’t question it, because I was so deeply ingrained in the ways of Java, I could see no alternatives.

This worried me somewhat, what other concepts and ideas was I ignorant of due to my Java mindset?

Sometimes you need to take a step back and get a fresh perspective on things.

And what better way than to learn a new programming language.

I’m a busy guy though.

I can’t simply afford to take two weeks off just to learn a new language.

So, to be pragmatic (I’m a pragmatic guy too) I’m going to try to solve both of these problems with a single language.

So, I want a general purpose language that’s also good for scripting work.

My shortlist of languages is not long:

Python.

I’ve dabbled with Python.

It’s fun, quick, easy etc.

I’ve not done enough to know if it’s “sane” as defined above, it doesn’t seem as freaky as Perl though.

Ruby.

Ummm, everyone’s talking about it.

A friend of mine is learning it and he’s not swearing about it too much yet.

Apparently it’s mostly “sane”.

I’ve not completely decided yet, I’m leaning towards Ruby at the moment mind.

Anyone care to convince me either way, or suggest other languages I should be looking at?

10 thoughts on “Need a new Programming Language”

  1. Need you ask what I’d advise?

    Python is definitly sane, as defined above, and as per any other definition. Any *sane* definition, that is. 😉

    Ruby has the hype at the moment, but there’s not much to choose between it an Python in terms of pure language. Python’s been around a long time, there’s a good community and plenty of libraries around, and you know it a bit, so I’d go with that if I were you.

    But spare the time to look at both. Two or three evenings’ should be sufficient to get a flavour of either.

  2. I have played around with both languages, though most of my Python exp is actually with Jython (another good way to go, as you get all of the JDK libraries… very handy).

    I would recommend as Simon did that you look at both, but I would say that spending more time on Ruby would be well worth the time.

    From my (albiet limited) experience with Python/Jython, it has a lot more -not insane- but weird practices. I do enjoy using it though, and that should count.

    Ruby on the other hand seems to do things in an intuitive way most of the time.

  3. I’m with Simon. Python, Python, Python. Well, OK, look at Ruby if you must. A couple of nights’ poking around will give you the flavour of both. After you’ve done that, you might also like to look at the (700Mb!) Rails vs Django presentation by DHH and Adrian Holovaty – http://www.djangoproject.com/snakesandrubies/ (Watch out for my favourite line, “We have Welsh.”)

    While it is true the Ruby and Rails scene is rapidly expanding at the moment, it seems to me that this bubble is largely powered by an influx of refugees from two other camps: disillusioned Java programmers that know a bit of Perl, and disillusioned PHP programmers that know a bit of Perl.

    I wonder where it will all end up. A lot depends on whether the Sun engineers blink and allow some serious scripting features to be added to the JVM.

    Finally, whether you go Ruby or Python, you’ll end up with a bunch of useful skills and a healthy dislike of Java.

  4. I’ve been dipping in and out of Ruby for a few months now and have generally found it to be a worthwhile exercise. Yes there is a lot of hype around and it was after reading Bruce Tate’s ‘Beyond Java’ that I took a serious look at it. I took the view that with several years of writing stuff with Java it would be good to look at programming from a different angle – and I would recommend it for this reason. However I was amused by a comment on JavaPosse.org that when you encounter one serious programming problem with Ruby you’ll realise you’re working with the “Fisher Price” of languages!

    I think you’ll get a lot from either Python or Ruby as I know you do a lot on Linux, and having worked with Perl I know I’d take Ruby over it any time. Though I haven’t done any stuff with Python so I can’t comment on it and don’t want to offend the “Python heads” here!

    Just to throw something else into the mix have a look at Groovy – described as “an object-oriented programming language designed for the Java platform as an alternative to the Java programming language with features from Python, Ruby and Smalltalk”. It has a companion project in Grails which is Groovy’s answer to ‘Ruby on Rails’ (they were asked to stop calling it ‘Groovy on Rails’ – hence ‘Grails’). I personally haven’t looked at this but I reckon it could be an interesting niche language for the future.

    Some useful Ruby sites?

    Matt

  5. So you want to do something that Java and C don’t let you do? Try a brand new programming language, just out. It is revolutionary — if you don’t like the way it does things get it to rewrite itself.

    Have Perl syntax, get a language with no syntax. Want functions to be first-class objects, you can have all that.

    And this language? Lisp!

    Go for it!

  6. Try REBOL, you can thank me later. It is definately awesome stuff. It doesn’t get any easier to do things than REBOL. Definately check out its parsing capabilities and its eas of creating GUIs. It is a very high level language. It is an interpreted language which you can check out at http://www.rebol.com.

Leave a Reply

Your email address will not be published. Required fields are marked *