Installed PLT Scheme, starting from scratch
I installed PLT Scheme this morning. I've been reading The Little Schemer and wanted an environment to play in. I tried to install mzscheme via MacPorts, but unfortunately that package is currently broken.
Why am I learning Scheme? I'm re-teaching myself programming from the ground up with a focus on functional programming. I learned a bit of Haskell this term, loved every second of it, but I want to go back to the roots of the paradigm (Lisp - which Scheme is a derivative of) to get the full experience. Then I'll go back to Haskell.
What I really want to learn, right now, is Erlang! Erlang Erlang Errrrrlannnnngggg! But I'm taking it one step at a time.
I strongly believe that the future of programming is functional. Python and Ruby have functional programming features, C# and Java are adding more at every release, validating the paradigm hugely. For those who haven't read up on functional programming, one of the great things about it is it makes concurrency so much easier. Even functional languages that don't bill themselves as concurrent can parallelize themselves more easily because of the lack of side effects.
Concurrency is hugely important. You think that 8-core Mac Pro is faster than the 4-core Mac Pro? It certainly can be, but unless software explicitly tries to use those cores, or properly takes advantage of the ways the OS can schedule tasks on multiple processors, there won't be much advantage.
This article about Erlang is worth a read.
I have much more to say about all of this, and I will soon.
Update: I forgot to include a link to a interview I watched recently which does a great job of introducing functional programming to imperative (C/C#/Java) programmers.
Charlie Calvert's Community Blog: Anders Hejlsberg on LINQ and Functional Programming
Anders Hejlsberg is the chief architect of C#, and created Turbo Pascal (bought by Borland) and led the Delphi (Object Oriented/Visual Pascal) team at Borland. This video is worth watching from start to finish if you haven't heard much about functional programming yet... note that it's about functional programming in an imperative environment, but he still explains functional programming concepts very well.