https://github.com/w3cj/es-explained
ECMAScript, TC39 and The Future of JavaScript. Slides/notes/links from my meetup talk at DenverScript https://www.meetup.com/DenverScript/events/233376991/
https://github.com/w3cj/es-explained
Last synced: about 2 months ago
JSON representation
ECMAScript, TC39 and The Future of JavaScript. Slides/notes/links from my meetup talk at DenverScript https://www.meetup.com/DenverScript/events/233376991/
- Host: GitHub
- URL: https://github.com/w3cj/es-explained
- Owner: w3cj
- License: mit
- Created: 2016-10-25T19:41:32.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2016-10-26T12:28:42.000Z (over 8 years ago)
- Last Synced: 2025-01-22T20:35:06.210Z (3 months ago)
- Language: JavaScript
- Homepage:
- Size: 10.7 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
#### To view this as a slide deck:
`npm install -g reveal-md`
`npm start`
---
# [es-explained]()
## ECMAScript, TC39 and The Future of JavaScript
#### [email protected]
#### CJ on Denver Devs---
## Agenda
* whoami
* The History of JavaScript
* TC39 Process
* `es-next`---
# `whoami`
----
CJ
Instructor, Sr. Full Stack Developer
at
![]()
---
# The History of JavaScript
----
## 1995: JavaScript Beginngings
* May - [Brendan Eich](https://brendaneich.com/2008/04/popularity/) is recruited by Netscape to create "Scheme in the Browser"
* Developed in 10 Days under the code name "Mocha"
* September - "LiveScript" ships with Netscape Navigator 2.0 beta
* December - Renamed to "JavaScript", ships with Netscape Navigator 2.0 beta 3
----
## Java !== JavaScript
* Netscape partnered with Sun to ride the momentum of the Java language
* [Press Release from December 4 1995](https://web.archive.org/web/20070916144913/http://wp.netscape.com/newsref/pr/newsrelease67.html)
[Comic via coderanch.com](https://coderanch.com)
----
### Early Browser Wars
![]()
#### vs----
### August 1996: Microsoft reverse engineers JavaScript for IE 3
* Named JScript to prevent lawsuit
[via Wikipedia](https://en.wikipedia.org/wiki/JScript)
----
## Standardization: ECMA-262
* November 1996: Netscape delivers JavaScript to ECMA International for standardization
* June 1997: The first edition of ECMA-262 was adopted by the ECMA General Assembly
* The name "ECMAScript" was a compromise, Brendan Eich says it "sounds like a skin disease"[via Wikipedia](https://en.wikipedia.org/wiki/ECMAScript)
[ECMAScript 1st Edition PDF](http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%201st%20edition,%20June%201997.pdf)
----
### JavaScript 1.1: Netscape Navigator 3.0
* Any JavaScript error would open a pop-up.
* The Number constructor would throw if the parameter could not be converted successfully```js
Number('some string');
```* If at least one of the operands of the equals operator was Boolean, undefined or Number it will then coerse both operands to Number.
```js
if(new Object() == false) {}
```
----
### Continued: JavaScript 1.1: Netscape Navigator 3.0
* The reference to the value `undefined` was not present.
[undefined appeard in JS 1.3](https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/1.3)
[undefined polyfill on github](https://github.com/a0viedo/undefined)
[Notes on explicit JavaScript versioning](https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript#JavaScript_versions)
----
### June 1998: ECMAScript 2nd Edition
Added 40 future reserved words (38 are also a Java keyword).
abstract
do
import
shortboolean
double
instanceof
staticbyte
enum
int
supercase
export
interface
switchcatch
extends
long
synchronizedchar
final
native
throwclass
finally
package
throwsconst
float
private
transientdebugger
goto
protected
trydefault
implements
public
volatile----
### December 1999: ECMAScript 3rd Edition
Introduced:
* try/catch
* strict comparison
* instanceof
* fn.apply
* switch
* function expressions
* Array helpers (push, pop ,slice, concat, etc)
* Regular expressions----
----
### OK.... 7 years later
----
### 2007: ECMAScript 4th Edition
* Abandoned in 2008
* There were a lot of very strong opinions about how to move JavaScript forward, many of which were incompatible, some of which had mostly assembled what they thought would be the 4th edition before things fell apart
>"ES4 was so large and so innovative that there were doubts about whether it could be successfully specified and implemented." -Douglas Crockford
----
### August 2008: Brendan Eich proposes "Harmony" Process
1. Focus work on ES3.1 with full collaboration of all parties
2. Collaborate on the next step beyond ES3.1
3. Some ES4 proposals have been deemed unsound for the Web, and are off the table for good: packages, namespaces and early binding. This conclusion is key to Harmony.
4. Other goals and ideas from ES4 are being rephrased to keep
consensus in the committee.[Brendan Eich: ES Harmony](https://mail.mozilla.org/pipermail/es-discuss/2008-August/003400.html)
----
### December 2009: ECMAScript 5th Edition
* strict mode
* getters and setters
* Higher order array methods (forEach, map, reduce, etc)
* JSON
* Object.seal and Object.freeze
* immutable undefinedBefore ES5:
```js
undefined=1;
alert(undefined == 1); // true
```----
### June 2011: ECMAScript 5.1 edition
* A revision of 5.0 that corrects some errors in the document itself.
>The ISO edition of the ES5 specification incorporates a number of editorial and technical corrections including those listed in the current ES5 errata.
>It contains no new language or library features. TC39 is continuing its longer term work on “ECMAScript Harmony” which is intended to be the next version to include any new features.
[Announcing ECMAScript 5.1](http://www.wirfs-brock.com/allen/posts/39)
----
## June 2015: ECMAScript 2015 (6th Edition)
Official goals: a better language for
* applications
* libraries
* code generators----
## June 2015: ECMAScript 2015 (6th Edition)
* Classes
* Arrow functions
* Iterators (and generators)
* Proxies
* Destructuring
* let and const
* and much much more----
## June 2016: ECMAScript 2016 (7th Edition)
----
### ECMAScript at a glance
* June 1997 - ES1
* June 1998 - ES2
* December 1999 - ES310 Years Go By
* December 2009 - ES5
* December 2011 - ES5.14 Years Go By
* June 2015 - ES2015 (6)
* June 2016 - ES2016 (7)---
TC39
----
## Technical Committee 39
[https://github.com/hemanth/tc39-members](https://github.com/hemanth/tc39-members)
[TC39 Org on Github!](https://github.com/tc39)
[TC39 Meeting Notes](https://github.com/rwaldron/tc39-notes)
[ESDiscuss](https://esdiscuss.org/)
----
# The TC39 Process
----
>The Ecma TC39 committee is responsible for evolving the ECMAScript programming language and authoring the specification. The committee operates by consensus and has discretion to alter the specification as it sees fit. However, the general process for making changes to the specification is as follows.
[https://tc39.github.io/process-document/](https://tc39.github.io/process-document/)
----
## Stage 0: Strawman
## Stage 1: Proposal
## Stage 2: Draft
## Stage 3: Candidate
## Stage 4: Finished[Stage 0 Proposals](https://github.com/tc39/proposals/blob/master/stage-0-proposals.md)
[Finished Proposals](https://github.com/tc39/proposals/blob/master/finished-proposals.md)
---
# [es-next](https://github.com/hemanth/es-next)
----
## You may be asking...
----
## How can I try these new features if browsers haven't implemented them yet??
----
# [Babel JS](https://babeljs.io/)
----
## [Kangax Compat Table](http://kangax.github.io/compat-table/es6/)
---
## Resources
* [Browser Museum](http://www.donmouth.co.uk/web_design/browsermuseum/browsermuseum.html)
* [Netscape Navigator on Wikipedia](https://en.wikipedia.org/wiki/Netscape_Navigator_2)
* [MDN: New in JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript)
* [The A-Z of Programming Languages: JavaScript](http://www.computerworld.com.au/article/255293/a-z_programming_languages_javascript/)
* [Brendan Eich: JavaScript - The High Road, The Low Road](http://cdn.oreillystatic.com/en/assets/1/event/106/JavaScript_%20Taking%20both%20the%20High%20and%20the%20Low%20Roads%20Presentation%201.pdf)
* [What's going on with JavaScript versioning?](https://benmccormick.org/2015/09/14/es5-es6-es2016-es-next-whats-going-on-with-javascript-versioning/)---
## Resources: Media
* [Brendan Eich on JavaScript at 17 - O'Reilly Fluent 2012](https://www.youtube.com/watch?v=Rj49rmc01Hs)
* [Brenda Eich on JavaScript at 18: Legal to Gamble - Fluent 2013](https://www.youtube.com/watch?v=qrf9ONmtXbM)
* [Brendan Eich on JavaScript Taking Both the High and Low Roads - O'Reilly Fluent 2014](https://www.youtube.com/watch?v=aZqhRICne_M)
* [ECMAScript Harmony: Rise of the Compilers - Brendan Eich keynote](https://www.youtube.com/watch?v=PlmsweSNhTw)
* [Alejandro Oviedo - THE !FUTURE OF JAVASCRIPT (Spanish Audio)](https://www.youtube.com/watch?v=n84fLyM_88w)
* [Nordic.js 2016 • Jem Young - Embracing The Future](https://www.youtube.com/watch?v=CRjGt0KfjzE)
* [JavaScript Jabber #124: The Origin of Javascript with Brendan Eich](https://devchat.tv/js-jabber/124-jsj-the-origin-of-javascript-with-brendan-eich)
* [JavaScript Air - The past, present and Future of Javascript](https://javascriptair.com/episodes/2015-12-09/)---
# Thanks!
## [es-explained]()
### ECMAScript, TC39 and The Future of JavaScript
##### [email protected]
##### CJ on Denver Devs