I’ve been reading some interviews recently (Coders at Work) and one interviewee (I can’t remember who, but I think it was Fran Allen) suggested that in the last 20 years programming languages have not progressed leaps and bounds as they appeared to in the early days. Are they right?
Personally, I think this might be a good call. How different are the currently programming languages from C? OK, today’s popular duo, Java and C#, have garbage collection and thus we don’t have to deal with those troublesome pointers. Then again, both LISP and Smalltalk have had garbage collection for a long long time. C# has lambda expressions, and other higher-level functions, but then again this stuff was around in LISP since day dot. It’s almost as if the “C-style” languages are battling to catch up with things like LISP – which is a language I’ve never used other than for some emacs hacking. However, LISP has been around since 1959, so why has it taken so long for people to realise that many of its features are incredibly useful? Have we been held back by the fact that most academics don’t really care too much about this kind of stuff, and so don’t push it, and industry is too busy telling us something needs to be done last week?
First, I know that there are academics who do care about this stuff but I don’t think there are enough. And by virtue of being an academic, they are not exposed to many of the problems that are faced by your every-day software developer, and as such, maybe they don’t see the future so well. Thus is it up to industry to innovate at this level? If it is, I don’t see us moving too far forward from our current situation in the next few years. Why?
Well, most small to medium sized software houses are not exactly making money in significantly large quantities to warrant throwing it away on research that some other company making similar software will use to create a similar/better product. So instead of spending money pushing forward the state of the art, you would be insane not to spend that money on making a better product. This combined with crazy schedules, does not leave much in the way of time for forward thinking.
So it appears that we need to rest our hopes on the large enterprises like Microsoft, Google, et al. It’s fair to say that these companies invest a significant amount on money in research, some of which goes toward trying to make programming languages better (F# and Go for example). However taking these two languages as examples we see that F# doesn’t appear to push that many boundaries, and I can’t comment too much on Go, as I’ve not looked at it closely, but it also doesn’t seem to include too many radical switches. Maybe radical does not sit well with shareholders, I dunno.
The thing is, I’m not professing to contain much insight on this either, and I’m not even sure I know what I mean by a radical switch. I just know it doesn’t appear that academia or industry are moving this forward quick enough – if the last 20 years is anything to go by. The only remaining vehicle for change is the programming “community” as a whole, but how much traction we can have is debatable. That said, we do need to move in a different direction, I’m sure of that, and maybe things like multi-core processors may force us kicking and screaming in that new direction. However maybe the problem is even deeper than this, and a switch away from the whole Von Neumann architecture is required. Who knows? Well, I hope someone does!
We’ve seen a rise in dynamic languages like Python and Ruby over the last 10 years. We’ve got much better version control systems too.
I’m not sure if language evolution is really that important when compared to the availability and proliferation of libraries.
A lot of people are annoyed that we are still using RDBMS.
Hi Joe, thanks for the comment, some good points.
True, we have seen a rise in dynamic languages over the last 10 years however dynamic typing was also present in Lisp. What we can definitely say is that it has now become easier to use such technologies in industry without too much stigma.
I did put some thought in about the availability of frameworks and how much they are pushing us forward. For sure, they now make it far easier for people to create apps quickly and, possibly, produce more reliable applications. However, are we missing the bigger picture somehow? If not, are we saying that programming languages as we know them are as evolved as they are going to be. This I’m not sure about.
Aye its about time the boffins got there finger out,I thought computers and robots would be doing all the mundane stuff these days,and we would all have time to play with our Jetpacs and Time machines.
Well said Peter. Now what did I do with that Jetpac of mine……
As a Lisp developer it’s pretty depressing that ‘mainstream’ languages still haven’t caught up with what we’ve had in Common Lisp since the early 90s. I *am* excited by greater interest in functional programing languages, particularly Clojure which has many of Lisp’s features.