So on to the ignorance. The three most common reasons I believe some developers still rail against JS are:
- Functional Languages are Painful
- Concern that Language X is More Elegant
First off, the language is now based on standards and ECMAScript has been actively making improvements to the language for the last 15 years. ECMAScript 6 and other standards like CommonJS are making JS suitable for larger scale software development.
The tooling has vastly improved. There are first class developer tools available in the browser and also for JS outside of the browser. Microsoft has made JS a first class citizen for it’s the most strategic platform to build native mobile apps. There are many nice IDE’s to choose from like WebStorm. Collaborative debugging and protyping is excellent due to tools like Plunker and JSFiddle.
Perhaps most importantly, the ecosystem of frameworks, libraries, and components available for JS in 2013 is incredibly rich. Ecosystem directly drives productivity.
Functional Languages are Painful for People Experienced with Imperative Languages
There are other comfort issues, such as static vs. dynamic typing that may seem like a philosophical schism, but are actually more about time in the saddle. After you’ve written a certain number of lines of JS code the discomfort will simply disappear, believe it or not.
Concern that Language X is More Elegant
Being concerned about what is the absolute most elegant programming language is valid and critically important for language designers. If you’re not a theoretician, you’re an engineer, and we know good engineering is the art of compromise. This doesn’t mean engineering isn’t or can’t be elegant. It means we don’t think about the elegance of one component in a vacuum. It’s our job to weigh many factors and optimize for the big picture.