Why are russians so good at programming?

What are some good resources for learning about functional programming? Why?

  • Follow-up on Erik Meijer’s suggestions for further reading in Functional Programming http://kanak.kshetri.com/camping/?p=94 and http://news.ycombinator.com/item?id=2368783

  • Answer:

    The best introduction is only half written: How to Design Programs, Second Edition (http://www.ccs.neu.edu/home/matthias/HtDP2e/). Right now, I would recommend following HTDP/2e until the text runs out, and then switching to the first edition (http://htdp.org/, http://www.amazon.com/How-Design-Programs-Introduction-Programming/dp/0262062186). How to Design Programs is about learning to program, and it uses functional programming to teach programming because that allows it to focus on basic skills and techniques. But that doesn’t mean it’s only for programming novices. We use it for freshmen, but we also use it for M.S. students (who already have undergrad degrees in computer science), so it’s certainly appropriate for programmers and non-programmers alike. Compared to other approaches to teaching programming and functional programming that I’ve been involved with, both as teacher and as student, it consistently works the best. Students quickly become comfortable with fundamental functional programming techniques including recursion of various flavors and higher-order functions. The center of the HTDP approach is the concept of a “Design Recipe,” which is a step-by-step process for designing programs or parts of programs. The idea is to provide a rational approach to design, eliminating trial-and-error and random thrashing, which is common when learning programming or learning a new paradigm. The only way to learn this stuff is to do the exercises, and I strongly recommend following the recipe when doing the exercises, no matter how silly it may seem at first, because it will pay off later.

Jesse Tov at Quora Visit the source

Was this solution helpful to you?

Other answers

I enjoyed "The Haskell School of Expression", http://plucky.cs.yale.edu/soe/.  It has a non-traditional set of problems and did a good job of showing the uniqueness of the language.  I admit though that I already knew a bit of the language and other functional languages like ML so I can't say if it's great for a complete beginner.

Adam Hupp

I highly recommend learning Haskell as a first functional language, and one of the best introductions is online http://learnyouahaskell.com/ Or, if you prefer Erlang, then http://learnyousomeerlang.com/ is also great. Paraphrasing Matt: just get stuck in, you'll not regret it.

Keith Lomax

I'd start with the many excellent answers here: To reiterate what I said there, SICP (both the book and the video lectures) are still the gold standard in my mind. When you watch the videos, take notes.  Treat it like a real lecture.  Make sure you absorb the material rather than letting it flash in front of your eyes.  It's dense and old.  If you have questions, ask on the various reddits, stack exchanges or of course, here on Quora.

Matt Nunogawa

Robert Harper's Programming in Standard ML is fantastic, and SML makes functional programming concepts very clear: http://www.cs.cmu.edu/~rwh/smlbook/book.pdf

Omer Zach

http://www.manning.com/khan/ by Aslam Khan for Manning Publications is a good resource. It contains examples in Scala, it's written for beginners and is rich with graphics that makes learning easy.

Aleksandar Dragosavljevic

Structure and interpretation of Computer Programs (SICP book) the video lectures by the authors are awesome

Arvind Devaraj

The Structure and Interpretation of Computer Programs is often cited and is a text I am personally following. http://mitpress.mit.edu/sicp/

Toby Thain

Related Q & A:

Just Added Q & A:

Find solution

For every problem there is a solution! Proved by Solucija.

  • Got an issue and looking for advice?

  • Ask Solucija to search every corner of the Web for help.

  • Get workable solutions and helpful tips in a moment.

Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.