CoffeeScript or JavaScript (2011)
Good article i agree on:
- A Case Against Using CoffeeScript
- By Ryan Florence.
http://ryanflorence.com/2011/2012/case-against-coffeescript/
Every point he mentioned i agree. Here's a summary of his points:
Here is some elaborations on some syntax aspects:
- Don't be a smartass and create a layer of lang on top of a lang and think that you improved it. It introduces complexity.
- The grammar of syntax should be simple, and each symbol should ideally have one and only one meaning. It should never be context dependent. Syntax should be free-flow of sequence of symbols so it can be automatically formatted.
- Don't faak with whitespace like Python and Haskell. Using whitespace for code block makes the semantics of whitespace symbols extremely complicated.
- If you like whitespace indentation for readability, proper solution is to create a layer of format language (For example, HTML) instead, like in Mathematica. (For example, When in a special reader or editor, you have headers, sub-headers, inclusion of images or illustrations, audio, and expressions can be renders as “2-dimensional” math expression.)
- The brackets ()[]{} and other matching pairs 【】〈〉「」 etc are the most important classes of symbols in syntax. They have the property of demarcation at the syntax level. That is, you do not need complex parser or implicit operator precedence rule to know how the code is nested.
- Don't faak with symbols. Don't replace
&& ||byand or. Or replacing{}bybegin end(Ruby commit this idiocy) and think you improved readability. Math uses symbols for a reason. If you can, incorporate Unicode symbols in your lang. - Don't be a smartass and start to use complex things such as the idiotic lisp macros, or Python's “List Comprehension”, or “closures”. The perl idiots are the group that loves to diddle code at syntax level (For example, the one-liner faak). Stick with basic code, and even avoid idioms. [see Coding Style: Why Idioms Are Bad (2012)] Use these only when the it is natural in the language and really appropriate. Most of time you probably should leave your code verbose.
Moral: Don't use CoffeeScript, also, don't use Google's Dart. Stick with JavaScript .
For general understanding of syntax and formatting, see:
- Concepts and Confusions of Prefix, Infix, Postfix and Lisp Notations (2006)
- Fundamental Problems of Lisp, Syntax Irregularity (2008)
- What is Point-free Programing? (point-free function syntax) (2010)
- Tab vs Space in Source Code (2006)
- The Harm of Hard-Wrapping Lines (80-Characters Per Line) (2005)
For essays on use of symbols in syntax, see:
- What is Function, What is Operator. (2010)
- Logical Operators, Truth Table, Unicode (2010)
- Programing Language: ASCII Char Jam vs Unicode (2011)
- The use of Unicode Brackets 〈〉《》【】〖〗「」〔〕 (2011)
- HTML6, JSON SXML Simplified (2010)
For some semantic issues, see:
- Object Oriented Programing Jargons and Complexities (Explained as Functional Programing)
- Python: Why List Comprehension is Bad (2010)
- What is Currying in Programing Language (2007)
- Perl One-Liner Screw (2000)
CoffeeScript Redux
Addendum.
Dropbox switched to CoffeeScript, and wrote a detailed blog about it:
- Dropbox dives into CoffeeScript
- By Dan W, Ziga M, Chris V.
https://tech.dropbox.com/?p=361
Also the guy who wrote the criticism against CoffeeScript, now loves CoffeeScript.
JavaScript history
- History of JavaScript, 1995 to 2025.
- The Ugly JavaScript. 2010 to 2026
- the History of JavaScript, by Brendan Eich. 2008
- HTML History Timeline. 1993 to 2011
- Netscape Browser Sucks (2002)
- JS: Version History. 1995 to 2025
- JavaScript history, prototype.js (2005 to 2010)
- JS: ECMAScript New Features. 2015 to 2026
- History of the HTML Script Tag (JavaScript) (2011)
- JavaScript History. Sharp Variable for Circular Reference (via Common Lisp Reader Macro Syntax)
- JavaScript the Good Parts, Douglas Crockford. 2008
- JavaScript The Definitive Guide by David Flanagan. 2011, 2020.
- History of Node.js by Ryan Dahl 2011 📺
- Apache vs Node.js vs NGINX 📺. (2013 humor)
- History of Angular.js (2018)
- CoffeeScript or JavaScript (2011)
- TypeScript Will Kill CoffeeScript and Dart (2012)
- Microsoft Apple Mozilla Dismiss Dart (2011)
- Stackoverflow dolts on JavaScript Compiler ES2015 to ES5. (Babel.js) (2014)
- JavaScript Brendan Eich on Fixing String Methods on Emoji (2019)
- JavaScript. Why not create a directive “use new js” to fix warts? (2019)
- JS: CommonJS Module System. 2009 to 2026
- JS: AMD Module System and history (2009 to 2016)
- npm Disease (2021)