
Exercises from Seven Languages In Seven Weeks
Details
As I work through the exercises in the book Seven Languages in Seven Weeks by Bruce Tate, I will keep this page updated with my progress. Each day will be represented by a separate blog post.
Why am I doing this? Many reasons! I want to widen my horizons, to generalize before I specialize. I want to learn how to learn and practice getting good at it. I want to separate the essence of programming from the notation. I want to live with the masters and learn from them. Also, it’s a ton of fun!
Week 1: Ruby
Impressions from Day 1 post:
Out of the seven languages in this book, Ruby is the one I was most familiar with previously. It made for an easy start, and gave me a bit of momentum before I started to tackle languages like Prolog.
- Day 1 - string manipulation, looping
- Day 2 - collections, closures, classes, modules
- Day 3 - open classes, method_missing, mixins
Week 2: Io
Impressions from Day 1 post:
Syntactically, Io is a very very lightweight language, evocative of lisps in its regularity and minimalism. It provides a nice contrast with the previous chapter on Ruby. Ruby’s definition of simple code is something like “The more an expression reads like a (succinct) explanation of its intent, the better” whereas Io’s definition of simple code is something like “The less extraneous syntax that is needed to represent an expression, the better”.
-
Day 1 - syntax, slots, prototypes
-
Day 2 - conditionals, loops, operators, messages, reflection
- Transposing a matrix in Io - deconstruction of a pretty solution
-
Day 3 - metaprogramming, internal DSLs, concurrency
Week 3: Prolog
Impressions from Day 1 post:
Despite all this, during the course of Week 3 I have been convinced that logic programming can be extremely powerful. If you know how to define a problem in terms that Prolog understands, then you can write a program that solves a problem without having the slightest idea of how to actually solve it (a good example is Sudoku, which shows up in Day 3). Logic languages are the closest I have seen to the unattainable ideal of ‘writing a program that will look at the problem and write a program to solve it for you’.
- Day 1 - facts, rules, queries
- Day 2 - lists and pattern matching with them, contrasting logic programming with other paradigms
- Day 3 - datalog, constraint programming, other logic languages, logic libraries
Week 4: Scala
Impressions from Day 1 post:
The beauty of Scala (in my eyes) is its flexibility and practicality. It pushes you towards immutability and is capable of very succinct functional code, but it also has that mutable imperative escape hatch, and a good set of tools for working with problems that suit code like that. It will let you write in the style that is most appropriate for the problem you are trying to solve.