Tuesday, September 18, 2007

Languages to Learn, Books to Read

Following is a list of programming languages I intended to learn in the future, including those I'm already learning or have learned. The list is in particular order.

  • Common Lisp/Scheme
    • Implementation: SBCL/PLT-Scheme
    • Lisp is fantastic once you have started. The parenthesis syntax is simply beautiful: simple yet powerful. I started to touch upon Lisp (actually Elisp) in last year, with the intention to be able to configure Emacs in a more free way. Unfortunately I still have not finished the Elisp introduction document which accompanies Emacs distribution and I will finish it in the near future. Afterwards I was attracted by Haskell and devoted nearly half a year to learn it, with the focus on migration my C++ simulator to Haskell. Early this year, when I was browsing reddit as usual, I found this post, which proposed the analogy that hacking Lisp is like riding a bike. I was curious about such metaphor and decided to try myself. And the result is that I'm now a big fan of Lisp. I've almost translated all my Haskell code to Common Lisp, migrated many C++ files too, and added many new functionalities to my simulator. Lisp is just wonderful! It really grows into you. I have read Practical Common Lisp (although I skipped almost all the practical examples and will come back to them later), and now nearly finished On Lisp.
    • Book list for further reading
      • SICP: a must read. Free book available. The video lectures are of great help too.
      • PAIP: I'm also interested in AI and also a fan of Peter Norvig. So I may purchase this book although it is somehow expensive.
      • Object-Oriented Programming in Common Lisp: A Programmer's Guide to CLOS: I use CLOS a lot and like to be shocked by the book.
      • AMOP: A fancy text I heard of.
      • Lisp In Small Pieces: A must read for Lisp/Scheme implementation.
      • Lisp 1.5 Programmer's Manual: Definitive manual for ancient Lisp?
      • Ansi Common Lisp: This book might not be so advanced compared with books listed above, but I really like the articles/books from Paul Graham.
      • Other nice scheme books, especially the series: The Little Schemer/The Seasoned Schemer/The Reasoned Schemer, and How to Design Programs.
  • Oz
    • Implementation: Mozart
    • It seems that Oz encompasses almost all the programming paradigms therefore it would be nice to try.
    • CTM seems to be the book to try.
  • Ruby
  • Prolog
    • Implementation: swi-prolog
    • Another AI language. It seems that many Lisp books (e.g. On Lisp, PAIP) try to build a Prolog interpreter/compiler and then use it to solve problems. It might be of great fun to directly dive into Prolog.
  • Smalltalk
    • Implementation: Squeak
    • Quite shocked during the first use of Squeak 3 years ago.
  • Erlang

No comments:

Post a Comment