I've caught the bug to learn functional programming for real. So my next self-study project is to work through the Structure and Interpretation of Computer Programs. Unfortunately, I've never learned Lisp, as I was not a CS major in college.
While SICP does not emphasize the tools for programming, doing the exercises entails picking a Lisp-like language to use. It seems like some implementation of Scheme would be the path of least resistance. On the other hand, I hear of others who have used Common Lisp and Clojure. It seems to me that Common Lisp or Clojure would be more likely to be used in production code, and therefore slightly better for my resume. BTW, I fully get the argument that learning a language is worthwhile for its own sake, but learning a language that helps my resume is still a benefit. I'm a capitalist and an academic about my learning.
If you had to self-study SICP, which language would you pick and why? Ideally, I would like to use a language that can run on the JVM. I can certainly work with a language where REPL works with bash and emacs.
ADDITION: have any of you tried reading SICP without using Scheme? If so, what was your experience like?
You can use Common Lisp for learning with SICP without much problems. The Scheme subset that is used in the book is not very sophisticated. SICP does not use macros and it uses no continuations. There are DELAY and FORCE, which can be written in Common Lisp in a few lines.
SICP was revolutionary in many different ways. Most importantly, it dramatically raised the bar for the intellectual content of introductory computer science. Before SICP, the first CS course was almost always entirely filled with learning the details of some programming language.
Use Scheme. It is one of the simplest and easiest languages in existence, and you will spend very little time learning enough of it to understand SICP. Once you understand SICP, you will see how the concepts apply in any language.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With