A few days ago, @edensh mentioned in Facebook beautiful code, and many people gave examples of assembly, while I was thinking of Python.
That got me thinking: what is beautiful code for me?
So here are my criteria for beautiful code:
- Readable (also visually pretty)
- Concise
- Does something non trivial (usually in an unexpectedly short manner)
- Good (solves the problem, efficiently)
If we consider code to be an implementation of a solution to a problem, than 3 & 4 usually apply to the solution, while 1 & 2 apply to the code itself. This brings me to why I like Python:
- Code is more readable. Specifically, I can still still easily understand code I wrote years ago. Also, Python’s zen encourages you to write readable code. For example “explicit is better than implicit” directly applies to readability.
- Python is visually appealing, although I guess that’s a matter of opinion :)
- Python almost always allows me to express my solutions easily & succinctly, whereas with other languages (C, C++, Java) I have to fight to “get my point across”.
- Python almost always has the right data structures to implement my solutions efficiently.
With that in mind, it’s clear to me now how assembly code can be beautiful.
Note that I didn’t mention C#, Ruby or Haskell. I don’t have much experience with these languages, but from what I’ve seen so far, it seems to me that these languages may help you write beautiful code. Of these, Haskell is probably going to be the first language I’ll learn – I think it will be the most educating experience, although I’m pretty sure others will argue with me regarding Haskell’s readability :)
Now, My question to you is: what do you think makes code beautiful?
Thanks for the post.
I’m a big fan of encapsulation, abstraction & multi-dimensional code.
I’ve learned to respect languages and paradigms, which provide best encapsulation primitives for the most common aspects of programming: enumeration, flow control, multi-threading, collections handling, and encouraging code reuse & abstraction.
Waiting for the next post,
Sagie.
I think I would add another criterion of a beautiful code:
*Safe and unambiguous (something like Ada, where it is pretty hard to mess it up on the programmer’s side)