In case anybody is interested, the free online Coursera "Programming Languages" course is starting on 14 January and runs for 10 weeks. The course website is already open, so you can register now and start installing the recommended software etc. The course is aimed at people with some programming experience, but you don't have to be an expert in functional programming, and it will cover a range of topics that are especially relevant for FP:
Coursera Programming Languages wrote:
Learn many of the concepts that underlie all programming languages. Develop a programming style known as functional programming and contrast it with object-oriented programming. Through experience writing programs and studying three different languages, learn the key issues in designing and using programming languages, such as modularity and the complementary benefits of static and dynamic typing. This course is neither particularly theoretical nor just about programming specifics -- it will give you a framework for understanding how to use language constructs effectively and how to design correct and elegant programs. By using different languages, you learn to think more deeply than in terms of the particular syntax of one language. The emphasis on functional programming is essential for learning how to write robust, reusable, composable, and elegant programs – in any language.
Sounds interesting, so why not sign up now and watch the introductory videos to see if it looks like something you'd like to do as well?
I'm looking forward to this course, but not EMACS. I got the software installed this weekend and I already hate EMACS. I've used Wordstar key mappings for 3 decades and now I'm supposed to learn an entirely new set of key mappings? I don't think so.
This seems like the same reason we tell newbies not to use an IDE; it just gets in the way of learning the language. I'll try EMACS for the first week or so, but if I feel like it's just getting in the way I'll ditch it and use Notepad++.
"There is no reason for any individual to have a computer in his home" ~ Ken Olson, Co-founder of DEC, 1977
I used to use Emacs back in the version 17 / 18 / 19 days, i.e., about 20 years ago, then gradually drifted off into "IDE land" but after picking up Clojure in 2010 and seeing the vast majority of Clojurians using Emacs, I switched back to it in October 2011 and, after a week of cursing and pain in my hands, really haven't looked back. I'd already begun to move away from bloated IDEs anyway and back to lightweight text editors. For working with scripting languages, especially those that have a REPL (like ML and Ruby - and Clojure), Emacs is both very powerful and still very lightweight.
Since you're used to Wordstar bindings, you'll probably want wordstar-mode (built-in, so just use M-x wordstar-mode to enable it). That should make you pretty comfortable in Emacs.
I was tempted to use custom bindings at first, especially to restore the familiar cut / copy / paste shortcuts, but decided to stick with Emacs native bindings and got used to them pretty quickly - but then my plan was to stay with Emacs long-term!
As for learning an IDE and a language at the same time, I sympathize. A lot of people in the Clojure world caution against throwing newbies into Emacs as well as having to learn Clojure but the other school of thought is that Emacs provides the slickest Clojure workflow with the REPL, built-in code evaluation and instant testing so it's worth learning both together. I fall on the side of learning Clojure first, then adding Emacs as soon as you find the workflow of your chosen editor wanting (which you will).
I mostly develop on Mac / Linux but recently bought a Windows 8 "convertible" (touch screen tablet / ultralight notebook combination) and will be taking the course on that so I'm also learning Windows quirks as well as three new languages - fortunately Emacs behaves (almost) identically on Windows 8 to Mac / Linux so at least that will be a constant...
Sean Corfield wrote:How many folks here are signed up for this? How are you finding it?
I think there's a couple of us from JavaRanch doing this course. I'm really enjoying it so far, despite the brisk pace and the workload, which is fairly time-consuming - to work through the videos (making notes as I go along) and do the homework, plus the peer review. Admittedly, I ditched Emacs after a few days as it was just taking too long to get anything done - Sublime Text 2 with an SML REPL works for me, and we'll be shifting to DrRacket soon anyway. At the moment, the course is taking me about 12 hours a week, i.e. just within the 8-12 hours they estimate, but right now I have the benefit of having done the Scala course already, so most of the concepts so far are at least vaguely familiar. When we move into Lisp-country with Racket and encounter less familiar concepts then I suspect I may slow down a bit. I was at the "slow learners" end of the graph for the Scala course too, but I got a good grade and learned a lot on that, so no worries so far.
The course material is fascinating (for a non-CS grad like me) and very well-presented and the homeworks are reasonably challenging. I think this course is at broadly the same level as the Scala one, and it's interesting how they complement each other. I think you can benefit from doing them either way around e.g. the Scala course is helping me here, but equally I reckon learning some SML and especially the concepts in this course would make the Scala one much easier too.
Meanwhile, I'm definitely sold on the benefits of functional programming. Just wish I could land myself a job doing it.
I'm loving it. I'm enjoying the pace, which makes it feel like it's a step on from the Scala course even though (so far) it's covering similar ground. Just finished the third assignment (though I want to revisit the last few questions to see if I can streamline it at all).
I've been coping OK with emacs (it's years since I've used it) but it is making me pine for my IDE.
My only worry at the moment is that I'm probably going to be out of the country for the last week of the course, so I'm hoping that they release the material early enough for me to finish it before I go.