Wednesday, August 02, 2006

Functional programming...

I just read a blog entry at Joel on Software regarding functional programming. It is a nice and simple explanation of what can be done when we can properly abstract functions.

Joel then goes on to say some silly things like Google is great because of the power of functional abstraction which may be taking things a bit too far, but he does make a very valid point about the elegance that can be gained when a programming language treats functions as first-class-citizens.

There is also a previous blog entry where Joel provides a long rant about how Universities are turning into "Java training centers", this one is quite valid and does show how much we do not show current generation IT students when we teach them programming.

We have corrected a number of these mistakes in the Professional Software Development course at Swinburne (just to be open about it, I was on the team that designed this course). We have an entire subject that deals with different programming paradigms as well as subjects that educate students in software construction, we most certainly do not want to 'train' students to build software poorly (that too in Java)....

5 comments:

Anonymous said...

Interesting read. I think that is the entry that people were complaining about on digg.

The cooking example should/could/can be solved by abstracting the idea of an interface of ICookingMethod or some ICookingProcess, then when you cook, you can pass in a list of objects that can go through some cooking process. In this small example though, the method is probably simple enough.

Saying the Google is better than MS because of this elegance is a little far as you have said. I haven't looked into it, but does he work for Google or MS? How does he know what the center of the search software is?

There is deffently a big difference between someone who can think Java and think Programming. I don't know if this is something that is ITeachable or if you are given these skills.

With practice though, one should help teach the other. I don't think they can be taught in isolation. They need to go hand in hand. As you start thinking about problems in a long term view, you need to know how to use a language to meet your needs.

Anonymous said...

That's funny, I read that yesterday, but you beat me to the blog about it ;)

It's a cute article and I agree it highlights pretty much what we designed the PSD course to fix: When all you know is a hammer, every problem looks like a nail. (I may have mangled acains quote a bit. Sorry)

Another article I saw yesterday which was interesting (but I haven't quite finished or thinking about yet) was http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html

Anonymous said...

I take it you're talking about the Languages in Software Development subject?

I'm in 3rd year Software Engineering at the moment; is it possible to do this subject as an elective?

Anonymous said...

But does the PSD cover Scheme/Lisp? :-).

Anonymous said...

But does the PSD cover Scheme/Lisp? :-).