Penso che la domanda dovrebbe essere riscritta sulla falsariga di "in che modo i punti di forza / debolezza di internet / browser Web / ecc. influenzano la progettazione e l'implementazione di Javascript?" - In tal caso, cancellerò il mio post - perché la maggior parte della domanda è irrilevante / errata / selezionata / esempi superficiali che in realtà non indicano nulla sul design di Javascript.
Imparando di più su Javascript - specialmente usandolo per implementare alcune applicazioni - scoprirai che i tuoi punti sono in realtà solo trappole per gli sprovveduti, ma diventano non-problemi per gli sviluppatori di Javascript più esperti. Comprendendo e sfruttando i punti di forza di Javascript, tra cui this
, scope lessicale, chiusure, funzioni di ordine superiore, i letterali delle funzioni risultano essere più importanti di essere inciampati in uno dei punti deboli che hai citato. OTOH, un problema reale che deve essere affrontato è la mancanza di un sistema di moduli standard.
L'unica sotto-domanda interessante è:
JavaScript has a prototype-based OOP system; most other modern languages have an inheritance-based one
Sospetto che questo abbia qualcosa a che fare con i limiti di memoria, ma non riesco a trovare un riferimento per questo. Inoltre, come menzionato da @jozefg, ci sono altri linguaggi con i sistemi prototipo; ha diversi punti di forza / debolezza rispetto all'eredità "mainstream". I sistemi di oggetti basati su prototipi hanno una propria ricca storia che dovresti conoscere prima di eliminarli come errori.
However, many tasks that are easy to accomplish in other modern languages are difficult or puzzling in JavaScript
Scegli una lingua e poni la domanda inversa: quanti compiti facili da realizzare in Javascript sono difficili o sconcertanti in altre lingue? Che cosa dice la risposta di queste altre lingue? (IMHO, non molto: è sempre facile cogliere esempi, ma molto più difficile mostrare come quegli esempi impediscono alle persone di ottenere lavoro)
JavaScript has such a weird typing system that it doesn't fall into any of the standard categories (plenty of examples on WTFJS)
Che cosa c'è di strano in questo? Non è sicuramente l'unico linguaggio digitato dinamicamente; non è nemmeno l'unico che consente la coercizione. Forse il numero di coercizioni e qualche comportamento inaspettato in alcuni casi angolari ti distrae.
JavaScript is extremely lenient in how it parses the syntax (semicolons are optional etc.)
In che modo? Avete altri esempi di clemenza? FWIW, i punti e virgola sono facoltativi a volte ; in realtà è ben specificato e quindi non è quello che definirei "clemente".
Se questo è un problema per te, usa un linter .
From a developer's point of view, most of these design decisions make developing in JavaScript harder.
In che modo? Puoi fornire esempi? Questo è molto soggettivo.
Conceptually, the JavaScript language seems one step behind Java, and two steps behind Python and Ruby.
In che modo? Puoi fornire esempi? Questo è molto soggettivo.
What reasoning is behind those seemingly random design decisions?
Perché sembrano casuali?