JavaScript NON è Java

English version

Quando dico che JavaScript non ha niente a che vedere con Java, la gente pensa che io esageri. E forse pensano che io stia conducendo una qualche strana guerra di religione. Ma cerco semplicemente di mettere in evidenza un problema. Se programmi in Lisp, e qualcuno riesce a convincerti che stai usando Java… beh, produrrai dei programmi indecenti. Per almeno due motivi: non stai usando le peculiarità di Lisp, e per quanto ti sforzi non puoi usare quelle di Java.

Ecco alcuni fatti oggettivi:

  • Java ha le classi e le interfacce, JavaScript no. Questo perché Java è Orientato agli Oggetti e JavaScript no (anche se ha il tipo object).
  • JavaScript ha il tipo function e la lazy evaluation, Java no. Questo perché JavaScript è un linguaggio funzionale e Java no.
  • In JavaScript puoi aggiungere proprietà agli oggetti a runtime, o perfino cambiare l’oggetto-padre; in Java no. Questo perché JavaScript è dinamico e Java è statico.
  • In JavaScript, non c’è motivo di usare l’operatore new. E di solito c’è un buon motivo per non usarlo. In Java non puoi nemmeno dire “Hello World” senza new.
  • In JavaScript bisognerebbe sempre avere le funzioni annidate. In Java non puoi farlo, e (se hai una vaga idea di cosa sia Java) non ti è mai passato per la mente.
  • Java ha le proprietà/metodi private e protected. In JavaScript i dati si incapsulano in un altro modo.
  • Sì, in JavaScript si può emulare l’eredità delle classi. Ma è meglio usare i prototipi. Non fingere di usare le classi, perché JavaScript non le possiede.
  • a[“b”] è un array in Java, ma è un oggetto in JavaScript.

Lo so: questo breve elenco non è una spiegazione di JavaScript. Ma spero di aver chiarito che questo linguaggio NON è simile a Java.
Allora JavaScript è un sottoinsieme di Java? No. Un linguaggio funzionale e dinamico non può essere un sottoinsieme di un linguaggio statico orientato agli oggetti. A meno di non sostenere che Haskell è un sottoinsieme di C++.
Le loro sintassi sono simili? No. La sintassi di JavaScript è uno sporco imbroglio, perché ti fa credere che stai instanziando una classe o stai accedendo a un elemento di un array associativo, quando in realtà stai facendo altro.

JavaScript è simile a Lisp, non a Java. E programmare in Java usando Lisp è una delle cose più (difficili + stupide + inutili) che un programmatore può tentare di fare. Ma non è colpa tua. E’ colpa di ECMA. Chiedegli perché ti hanno imbrogliato.

A presto!

Un pensiero su “JavaScript NON è Java

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...