I am familiar with Eric Elliott’s posts and videos. However, I disagree with him about classical OOP. The IT industry is still very solidly behind class-based inheritance. JavaScript is the only significant language with object prototypes, and even so, prototypes have been very poorly used in the JS community–no wonder TypeScript is gaining in popularity and ECMA have felt compelled to add classes to ES6. I’m a big fan of Smalltalk, which is the finest exemplar of class-based OOP we’ve seen. It’s so good that it has been successfully used to write a million lines of code in the U.S. military’s JWARS battle simulation software. Don’t count classical OOP out just yet.

My article isn’t only about front-end web development. JS is used on the server side too with Node. Not having an integer type for general purpose programming is appalling. I can’t think of another language that doesn’t have integers.

Speaking of which, JS isn’t only used for web development. It’s finding its way into other problem domains, such as desktop, mobile, graphics, video games, etc. So, of course, I’m holding JS to a higher standard.

Regarding “discipline,” I’m not referring to syntax but rather semantics. JS’s loose typing and wildly inconsistent semantics are dangerous. And it’s not because JS is a dynamic language, either. Smalltalk is also a dynamic language, but it’s strongly-typed. JS is weakly-typed. That makes all the difference in the world.

So if you want to do dynamic programming without the ceremony of C++ or Java, you should choose a language that properly supports software engineering, not a sloppy, undisciplined language like JavaScript.

Yes, 20k LOC is an arbitrary number. I chose one that I felt represented a safe threshold for JS. Some have suggested I was too generous; maybe I should’ve specified 5k or 10k.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store