10 programming languages, 10 projects, 12 months - The List
Wednesday, 2 January 2008, in categories: Programming
Here is what I finally settled on for my little project:
Languages:
- C# (Mono)
- Common Lisp (SBCL)
- Python
- Factor
- Scala
- Erlang
- Haskell
- OCaml
- Smalltalk (Squeak)
- Prolog (SWI)
I replaced Scheme with Scala, as Ashley Moran suggested in the comments to the previous post. Also, I removed J from the list, as I was afraid about not finding enough libraries or support to finish my projects in any reasonable time. I added Prolog instead, because of it’s long tradition, and some very positive opinions by excellent programmers (Joe Armstrong in particular).
Projects:
- Ray-tracer
- Unit testing framework
- HTTP server (serving a single directory)
- Blog web application (with a web framework if available)
- Arkanoid-style game
- Generating an index from a set of text files
- Hex editor
- Basic bindings to the Allegro library
- A mini-language compiled to CSS (simplifying the handling of large style sheets)
- A GUI front-end to “cdrecord”
Even through I won’t turn any of those into a full-fledged, production-ready application, I still highly doubt if I will manage to do all this in one year, especially considering the fact that I don’t have huge amounts of free time. However, I won’t stress about this too much - if it takes more than 12 months, or if I won’t complete it for any reason, so be it. It just sounds like a lot of fun, so let’s not be too serious about this.
Add to del.icio.us / Add to reddit.com / Digg it!
Comments (RSS):
hir, 3 January 2008, 11:27 pm
Why Java has been omitted from your list?
stiff, 4 January 2008, 9:37 am
Mostly because there is nothing too exciting about Java as a language. C# is pretty much the same, with some very interesting additions, so having two very similiar languages would not make much sense. Also, Scala runs on the JVM, so I will use the Java libraries with a more powerful language.
Ashley Moran, 5 January 2008, 7:01 pm
Seeing your final plan it looks very ambitious! Some of those I wouldn’t expect to complete in about month in a language I already know. But it will be interesting to see the results however long it takes.
How will you decide what language to use for each project? Many of them are completely different, eg ray-tracer and blog application. I imagine you would come away with a completely different opinion of the languages you do those in if you had swapped them around (eg Smalltalk and Scala).
It’s interesting you picked a unit-testing framework as a project. I see that pretty much as a pre-requisite to development in the first place. Just FYI, in case you don’t read it, I caught up on Ola Bini’s blog the other day and noticed he has a couple of articles about unit testing in Scala, one here: http://ola-bini.blogspot.com/2007/12/scala-unit-testing.html and a follow-up here: http://ola-bini.blogspot.com/2008/01/scala-testing-with-specs.html
Do you plan to do any of these projects TDD? That would be VERY interesting - but probably also quite hard. (I only do TDD well when I have a good idea what the implementation will look like.)
stiff, 5 January 2008, 10:25 pm
Ashley: The plan is to every project in every language, so it’s a total of 100 programs - that’s why I want to keep the implementations quite minimal. I didn’t thought of TDD when playing with the idea, maybe it would be a good idea to bootstrap a little testing framework as the first problem, and than use it for the others. We shall see, I will be happy if I get enough time to work on this seriously, for now I just started the raytracer in Lisp…
Ashley Moran, 7 January 2008, 1:06 pm
Stiff - ok, that now makes it 10 times more demanding than I thought! You’re only giving yourself a few days per project! I guess it will get easier when you have a few working implementations of each one though.