I am at a point now where I do not officially have a job. The work I do right now demands a better grasp on many programming fundamentals and on a programming language other than Python - preferably JVM based. I am not a very good programmer or exceptionally intelligent. So I have decided to invest a huge deal of time and effort to learn what I should have learned ages ago.
Learning Lisp or one of its dialects by reading SICP is something that I have tried a zillion times starting from my second year in college and have failed miserably. Another major endeavor that I failed at was trying to implement all basic and advanced data structures using that Lisp dialect I just mentioned(Haskell was the obvious choice back then because, Hey, Lambda calculus!).
I have decided to try this again this time. I got really inspired by Eli Bendersky’s notes that he made during his ‘taming SICP’ endeavor. I am going to start SICP again by solving the problems in Clojure instead of Scheme. Why I’m so caught upon a Lisp, you ask? The first thing I ever read about functional programming languages is the way, in pure functional programming, the programs are written with such abstraction that it is like a black box, doing operation without worrying or caring about the outside world, without any side effects. This sounded very appealing to me. Also, someone told me Lisp is not for me, but for real geeks(I promise, this is just a tertiary or a quaternary reason).
I think Clojure is a beautiful looking language. Fell in love with the way it binds arguments to functions using square brackets at the very first sight. It is JVM based and suits perfectly for the PeARS requirements. Also, I was mind blown by the talks given by Rich Hickey. Hands down the best programming talks I’ve ever listened to(Check it out if you haven’t yet. Please. Starting here, maybe?).
So this is me putting myself out there. The game plan is laid:
- Start reading the book, of course.
- Solve the problems using Clojure.
- Implement some algorithms and data structures in Clojure(I started learning Clojure a bit back).
- Make notes every weak and publish. Even if it is - “I am such a loser, didn’t do anything this week”.
P.S. The title might come out very pessimistic. But I love it when I rise above the expectations, even when it’s my own. :-)