Document not found! Please try again

Clojure: A Critical Dissection - KTH

7 downloads 3269 Views 76KB Size Report
Supervisor Alexander Baltatzis. Clojure: A Critical Dissection. Project Specification. Introduction. Lisp was one of the first high level programming languages ...
Anton Holmberg 891227-0553 [email protected] D09 DD143X Supervisor Alexander Baltatzis

Clojure: A Critical Dissection Project Specification Introduction Lisp was one of the first high level programming languages developed, but it is still the preference of some of the most skilled developers in the industry [1]. There is something about it that makes it stand out, and people that use it often describe it as beautiful and more powerful than most other languages. But despite these praises it has never really become a mainstream language. Why is that? Is it simply the overflow of parentheses that scares people of, or is the fact that there has never been one dominant dialect, or a solid standard library [2], or is it the lack of platform portability? In recent years a new interesting variant of the language has emerged, Clojure [3]. Its features are very compelling and it promises to solve the previous mentioned problems. It's focused on functional programming and concurrency, and runs on the Java Virtual Machine. Is Clojure the dialect that will finally make Lisp a good choice of language for the masses or is it just another parenthesis?

Problem statement Is Clojure as good as it's supporters claim?

Approach I will try to evaluate the Clojure language by working through the different features of the language and implement a small example program for each, which demonstrates the feature. I will implement these programs in both Clojure and Java and compare the two in respect to readability, succinctness, expressiveness, reusability, performance etc.

Time plan Mar 1 Mar 10 Mar 20 Mar 31 Apr 7 Apr 11 Apr 12

Have read the books Programming Clojure [4] and The Joy of Clojure [5] to learn the language. Be done writing the introduction and background sections of the report. Have decided what example programs should be implemented. Have implemented the programs. Be done with writing about the example programs, and comparing the implementations. Be done with the conclusions/discussion section and final adjustments. Hand in the report.

References: 1. http://www.paulgraham.com/avg.html 2. http://www.stackoverflow.com/questions/106221/why-isnt-lisp-more-widely-used 3. http://www.clojure.org/ 4. http://www.pragprog.com/book/shcloj/programming-clojure 5. http://www.fogus.me/