ECMAScript: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m →Quarta Edizione (abbandonata): eliminato refuso |
m corretto rilasciato |
||
(19 versioni intermedie di 9 utenti non mostrate) | |||
Riga 1:
{{Linguaggio di programmazione
|autore =
|data =
|utilizzo =
|paradigmi =
|tipizzazione =
}}
'''ECMAScript''' (o '''ES''') è la [[specifica tecnica]] di un [[linguaggio di scripting]], standardizzata e mantenuta da [[ECMA International]] nell''''ECMA-262''' ed ISO/IEC 16262. Le implementazioni più conosciute di questo linguaggio (spesso definite come dialetti) sono [[JavaScript]], [[JScript]] e [[ActionScript]] che sono entrati largamente in uso, inizialmente, come linguaggi [[lato client]] nello [[programmazione web|sviluppo web]].
== Storia ==
Le specifiche definite da ECMAScript sono delle specifiche standardizzate di un linguaggio sviluppato da [[Brendan Eich]] di [[Netscape]]. Inizialmente era chiamato "Mocha", più tardi LiveScript e solo in ultimo JavaScript.<ref>{{Cita web|cognome= Krill|nome= Paul|url= http://www.infoworld.com/article/2653798/application-development/javascript-creator-ponders-past--future.html|titolo= JavaScript creator ponders past, future | Developer World|editore= InfoWorld|data= 23 giugno 2008|accesso= 31 ottobre 2013}}</ref> Nel dicembre del 1995, la [[Sun Microsystems]] insieme a Netscape annunciarono JavaScript attraverso un comunicato stampa.<ref>{{Cita web|url= http://wp.netscape.com/newsref/pr/newsrelease67.html|urlarchivio= https://web.archive.org/web/20070916144913/http://wp.netscape.com/newsref/pr/newsrelease67.html|dataarchivio= 16 settembre 2007|titolo= Press Release|editore= Web.archive.org|data= |accesso= 31 ottobre 2013|urlmorto= sì}}</ref> Nel marzo del 1996, [[Netscape Navigator|Netscape Navigator 2.0]] veniva
Grazie all'enorme successo di JavaScript come linguaggio client-side, [[Microsoft]] sviluppò una versione differente ma compatibile del linguaggio chiamandolo [[JScript]] per evitare problemi di copyright. JScript implementava nuovi metodi per il calcolo della data per risolvere in parte i problemi dovuti all'anno 2000 che affliggevano JavaScript in quanto la classe Date era basata sull'omonima classe di Java.<ref>{{Cita web|url= http://weblogs.mozillazine.org/roadmap/archives/2008/04/popularity.html|urlarchivio= https://web.archive.org/web/20080517011912/http://weblogs.mozillazine.org/roadmap/archives/2008/04/popularity.html|dataarchivio= 17 maggio 2008|titolo= Brendan's Roadmap Updates: Popularity<!-- Bot generated title -->|sito= weblogs.mozillazine.org|urlmorto= sì}}</ref> JScript fu incluso quindi in [[Internet Explorer 3|Internet Explorer 3.0]],
Netscape consegnò JavaScript ad [[ECMA
Mentre sia JavaScript che JScript mirano ad essere compatibili con le specifiche ECMAScript, provvedono a fornire allo stesso tempo funzioni aggiuntive non descritte dallo standard ECMA.<ref>{{Cita web|url= http://javascript.about.com/od/reference/a/jscript.htm|titolo= JScript VS JavaScript|editore= About.com|data= 25 novembre 2015|accesso= 1 marzo 2016|dataarchivio= 26 novembre 2015|urlarchivio= https://web.archive.org/web/20151126040655/http://javascript.about.com/od/reference/a/jscript.htm|urlmorto= sì}}</ref>
=== Versioni ===
Sono state pubblicate finora
{| class="wikitable"
!Edizione
Line 21 ⟶ 27:
|-
|1
|Giugno 1997<ref>{{Cita web|titolo=ECMA-262, 2nd edition|
ECMAScript® 1999 Language Specification|sito=ecma-international.org |url=https://www.ecma-international.org/wp-content/uploads/ECMA-262_1st_edition_june_1997.pdf|accesso=15 giugno 2022}}</ref>
|
|Prima edizione
Line 27 ⟶ 34:
|-
|2
|Giugno 1998<ref>{{Cita web|titolo=ECMA-262, 2nd edition|
ECMAScript® 1999 Language Specification|sito=ecma-international.org |url=https://www.ecma-international.org/wp-content/uploads/ECMA-262_2nd_edition_august_1998.pdf|accesso=15 giugno 2022}}</ref>
|
|Cambi editoriali per mantenere le specifiche concordanti con l'ISO/IEC 16262
Line 33 ⟶ 41:
|-
|3
|Dicembre 1999<ref>{{Cita web|titolo=ECMA-262, 3th edition
ECMAScript® 1999 Language Specification|sito=ecma-international.org |url=https://www.ecma-international.org/wp-content/uploads/ECMA-262_3rd_edition_december_1999.pdf|accesso=15 giugno 2022}}</ref>
|
|Aggiunte le [[Espressione regolare|espressioni regolari]], miglior gestione delle stringhe, nuovi comandi di controllo, gestione del try/catch, formattazione per output numerici ed altri miglioramenti.
Line 97 ⟶ 106:
| vedi [[#dodicesima edizione|Dodicesima edizione - ECMAScript 2021]]
| Jordan Harband, Shu-yu Guo, Michael Ficarra, Kevin Gibbons
|-
|13
|Giugno 2022
|
|Shu-yu Guo, Michael Ficarra, Kevin Gibbons
|-
|14
|Giugno 2023
|ECMAScript 2023 (ES2023)
|
|Shu-yu Guo, Michael Ficarra, Kevin Gibbons
|-
|15
|Giugno 2024
|ECMAScript 2024 (ES2024)
|
|Shu-yu Guo, Michael Ficarra, Kevin Gibbons
|-
|16
|(in attesa)
|ECMAScript 2025 (ES2025)
|(in attesa)
|(in attesa)
|}
Nel giugno 2004,
=== Quarta Edizione (abbandonata) ===
La quarta edizione proposta di ECMA-262 (ECMAScript 4 o ES4) sarebbe stata la prima major update di ECMAScript dalla terza edizione pubblicata nel 1999. L'uscita delle specifiche (insieme alle referenze per l'implementazione) era inizialmente prevista per ottobre 2009 ed infatti un'introduzione al linguaggio fu
Ad agosto 2008, fu presa la decisione di ridimensionare la quarta edizione di ECMAScript e accorparla al progetto ECMAScript Harmony. Le novità in discussione per Harmony erano:
Line 110 ⟶ 143:
* [[assegnamento destrutturato]]
* [[Tipo di dato|tipi di dati]] algebrici
L'intento di queste caratteristiche era in parte quello di facilitare lo sviluppo di software complessi con grandi gruppi di lavoro alle spalle e di permettere di eliminare alcune caratteristiche dinamiche del linguaggio per migliorare le prestazioni. Per esempio, Tamarin (la macchina virtuale per [[ActionScript]] sviluppata e
Oltre all'introduzione di nuove features, nella quarta edizione fu proposto di correggere diversi bug dell'edizione precedente<ref>{{Cita web|autore= John Resig|url= http://ejohn.org/blog/bug-fixes-in-javascript-2/|titolo= John Resig – Bug Fixes in JavaScript 2|editore= Ejohn.org|data=|accesso= 31 ottobre 2013}}</ref><ref>{{Cita web|url= http://www.ecmascript.org/es4/spec/incompatibilities.pdf|titolo= Compatibility Between ES3 and Proposed ES4|editore= Ecmascript.org|accesso= 31 ottobre 2013|urlmorto= sì|urlarchivio= https://web.archive.org/web/20140724055116/http://www.ecmascript.org/es4/spec/incompatibilities.pdf|dataarchivio= 24 luglio 2014}}</ref>. Queste correzioni trovarono quindi posto nella quinta edizione
Line 121 ⟶ 154:
Dopo il dibattito sopra descritto, entrambi i team di ES 3.1 ed ES 4 si accordarono con un compromesso: si sarebbe lavorato sulle due edizioni in parallelo e con i due team coordinati per essere sicuri che ES 3.1 sarebbe rimasto strettamente un sottoinsieme di ES 4 (sia nella semantica che nella sintassi).
Tuttavia, le differenti filosofie di sviluppo crearono ripetutamente incompatibilità tra i lavori dei due team e sembrava chiaro che i team che non erano d'accordo con l'ECMAscript 4 non l'avrebbero mai implementato. Dopo circa un anno dalla frattura sulla visione del futuro di ECMAScript, all'Ecma Technical Committee 39<ref>{{Cita web|url=https://www.ecma-international.org/technical-committees/tc39/?tab=general|titolo= Ecma Technical committee 39|||accesso=7 giugno 2022}}</ref>, nel luglio 2008, [[Brendan Eich]] annunciò che i due team riuscirono ad accordarsi in un percorso comune, essenzialmente allineato sullo sviluppo della 3.1, successivamente rinominato Quinta Edizione.
Nell'aprile 2009 venne pubblicato la bozza finale della quinta edizione e fu finalizzata la versione definitiva nel mese di dicembre<ref>{{Cita web|titolo=ECMA-262, 5th edition
ECMAScript® 2009 Language Specification|sito=ecma-international.org |url=https://www.ecma-international.org/wp-content/uploads/ECMA-262_5th_edition_december_2009.pdf|accesso=14 giugno 2022}}</ref>.
Nel giugno 2011 venne pubblicata la revisione 5.1<ref>{{Cita web|titolo=ECMA-262, 5.1 edition
ECMAScript® 2009 Language Specification|sito=ecma-international.org |url=https://www.ecma-international.org/wp-content/uploads/ECMA-262_5th_edition_december_2009.pdf|accesso=14 giugno 2022}}</ref>.
=== Sesta Edizione - ECMAScript 2015 ===
Line 127 ⟶ 168:
=== Settima Edizione - ECMAScript 2016 ===
La settima edizione, ufficialmente ECMAScript 2016, fu
<ref name="ES2016"/><ref>{{Cita web|url=https://webkit.org/blog/6240/ecmascript-6-proper-tail-calls-in-webkit/|titolo=ECMAScript 6 Proper Tail Calls in WebKit|cognome=Saboff|nome=Michael|data=23 maggio 2016|sito=WebKit|accesso=11 aprile 2019}}</ref>
{{anchor|ottava edizione}}
Line 141 ⟶ 182:
=== Decima Edizione - ECMAScript 2019 ===
La decima edizione, chiamata ECMAScript 2019 è stata
ECMAScript® 2019 Language Specification|sito=ecma-international.org |url=https://262.ecma-international.org/10.0/|accesso=4 giugno 2022}}</ref>. Le maggiori novità riguardano i metodi <code>Array.flatMap()</code><ref>[https://2ality.com/2017/04/flatmap.html Functional pattern: flatMap]</ref> e <code>Object.fromEntries()</code><ref>[https://2ality.com/2019/01/object-from-entries.html ES proposal: `Object.fromEntries()`]</ref><ref>[http://www.ecma-international.org/ecma-262/10.0/index.html ECMAScript® 2019 Language Specification]</ref>.
{{anchor|undicesima edizione}}
Line 152 ⟶ 193:
undefined ?? "string" // -> "string"
null ?? "string" // "string"
Line 183 ⟶ 224:
! colspan="4" | Conformità
|-
! ES5<ref name="kangax5">{{Cita web|url=https://kangax.github.io/compat-table/es5|titolo=ECMAScript 5 compatibility table|sito=kangax.github.io|lingua=en|accesso=8 novembre 2018|dataarchivio=19 novembre 2018|urlarchivio=https://web.archive.org/web/20181119145151/http://kangax.github.io/compat-table/es5/|urlmorto=sì}}</ref>
! ES6<ref name="kangax6">{{Cita web|url=https://kangax.github.io/compat-table/es6|titolo=ECMAScript 6 compatibility table|sito=kangax.github.io|lingua=en|accesso=8 novembre 2018|dataarchivio=17 novembre 2018|urlarchivio=https://web.archive.org/web/20181117194027/http://kangax.github.io/compat-table/es6/|urlmorto=sì}}</ref>
! 2016+<ref name="kangax2016plus">{{Cita web|url=https://kangax.github.io/compat-table/es2016plus|titolo=ECMAScript 2016+ compatibility table|sito=kangax.github.io|lingua=en|accesso=8 novembre 2018|dataarchivio=24 novembre 2018|urlarchivio=https://web.archive.org/web/20181124112954/http://kangax.github.io/compat-table/es2016plus/|urlmorto=sì}}</ref><ref name="punteggio">Punteggio che racchiude tutti i test di conformità dalla ES2016 alla ES2019</ref>
|-
| [[V8 (motore JavaScript)|V8]]
Line 223 ⟶ 264:
<references/>
==Voci
* [[ActionScript]]
* [[Dart (programming language)|Dart (linguaggio di programmazione)]]▼
▲* [[Document Object Model]] (DOM)
▲* [[ECMAScript for XML]] (E4X)
* [[JavaScript]]
* [[JScript]]
▲* ([[QML (linguaggio di programmazione)|QML]]
* [[TypeScript]]
== Collegamenti esterni ==
* {{FOLDOC}}
* {{cita web|1=http://www.ecmascript.org/|2=Sito ufficiale - ECMAScript|lingua=en|accesso=1º marzo 2016|urlarchivio=http://arquivo.pt/wayback/20160518084505/http://www.ecmascript.org/|dataarchivio=18 maggio 2016|urlmorto=sì}}
|