In this semester I’d took an optional course titled «Declarative programming». I was so thrilled about it because of two reasons :
First of all, I’d already been enchanted by the whole idea of functional and declarative programming since I was fooling around languages like Erlang, Haskell and Prolog (Although the last one is technically a logic programming language); Secondly, I was long to experience the presence in class of one of our well-known instructors, Dr. Towhidi.The reference book for this class was also notable, the renown Structure and Interpretation of Computer Programs ( or better known as SICP ).
Norvig is his famous must-read article, Learn programming in ten years, recommended this book for those who wants to choose computers as a life career.
«SICP is probably the best introduction to computer science, and it does teach programming as a way of understanding the computer science … The book is challenging and will weed out some people who perhaps could be successful with another approach.»
This book may not make a almighty coder who can do some fancy stuff with just a couple of lines of codes (although in some chapters, it will), but it can teach you something far more valuable, Good habits in thinking and coding. It reminds me of a statement that one the pioneers in software engineering, Kent Beck says about himself : «I’m not a great programmer; I’m just a good programmer with great habits.»
The programming language used in this book is Scheme. It’s some how old and incredibly small ( Parans, Blanks and lexemes are all the elements you have and a pair of data is the only data structure); Despite that it will amaze you when you see how complex tasks can be accomplished with such simple elements.
All these cool stuff can best accompanied with this fact that Coursera presented a course in functional programming that it’s syllabus is based on this book; The only difference is that this course has chosen Scala programming language over Scheme, which is much more sophisticated and has a rise in usage. (It supports OO programming )
Final word : Don’t miss the chance if you have this opportunity to attend a class that teaches this book, or if you have enough time and and know yourself as a guy with iron determination, try to take the course on Coursera. Unfortunately in my opinion it’s not a book that you can get the best of it by reading by yourself.