I must've been 13 when my dad gave me my first programming book. I was overjoyed to find that under the hood, computers were not a tangled mess of wires and clockwork, no, the code was clear as day. I felt like I knew it all along, and in a big way I did. After all, what is code but a formalization of rational human thought?
- No compilation
- Ubiquitous platform
- No advanced language features
- Oh, almost forgot: View Source!
Why would a great language like that be so hated?
- No standard library. Copying functions from forums and pasting them into your code. Not fun.
- No module system. Constant scouting for download links and ridiculously long source files.
- No language resources. No high-quality resources (and hardly a single decent book) meant your best reference was misguided blog posts and newbie forum questions.
Back in Vogue
Then Node.js came out with some wanky benchmarks and, more importantly, a promise for code reuse on the client and server, a promise not really capitalized on until recently, with the likes of Meteor and Derby. Things started to change for the better:
- Download buttons got BIGGER
- Node.js kind of sort of standardized an import system
- People started writing pretty good libraries
- Good resources started popping up
- Still no OOP
- Documentation, even for high profile projects, is lousy at best
- It makes the code more concise.
- It helps communicate the *meaning* behind your code rather than the algorithm. I already know the array iteration algorithm, thank you very much. Stop repeating it and just tell me what you are trying to do.
On a more serious note, as programmers we should be looking for automation. Don't you wish you could automate JSLint? Oh wait, you can! CoffeeScript generates perfectly linted code, which I find quite hilarious. Props to Jeremy for that one.
What Are the Options?
And, finally, the viable options:
- CoffeeScript. The syntax is very nice and it supports classes. I think CoffeeScript is not the end, but it is a spectacular start.