A story about JavaScript History and its future. I'm talking about language design, ECMA standards, JavaScript code generation, and Virtual Machines made on JS.
2. What you know about
JavaScript language
restrictions?
Five Monkeys Experiment
A rule, a regulation, or a procedure,
is introduced for a reason.
However, after a while,
the reason for it is forgotten,
but the rule stays.
Harry Harlow
American psychologist
3. Why people
use JavaScript?
Dan, 18 years. My girl is love in JS!
My name is Mark,
I use JavaScript
to hide buttons. I’m Mario,
JavaScript is all
that I learned
in my life!
9. Created for C-like syntax, makes it
JavaScript Weakly
Web appear like an ordinary
typed
Designers procedural language
10. Created for C-like syntax, makes it
JavaScript Weakly
Web appear like an ordinary
typed
Designers procedural language
Has more in common
with functional languages
like Lisp or Scheme
than with C or Java
11. Created for C-like syntax, makes it
JavaScript Weakly
Web appear like an ordinary
typed
Designers procedural language
Has more in common
with functional languages
like Lisp or Scheme
than with C or Java
Arrays
instead of
Lists
12. Created for C-like syntax, makes it
JavaScript Weakly
Web appear like an ordinary
typed
Designers procedural language
Has more in common
with functional languages
like Lisp or Scheme
than with C or Java
Arrays Objects
instead of instead of
Lists Property Lists
13. Created for C-like syntax, makes it
JavaScript Weakly
Web appear like an ordinary
typed
Designers procedural language
Has more in common
with functional languages Lambda
like Lisp or Scheme functions
than with C or Java
Arrays Objects
instead of instead of
Lists Property Lists
14. Created for C-like syntax, makes it
JavaScript Weakly
Web appear like an ordinary
typed
Designers procedural language
Has more in common
with functional languages Lambda
like Lisp or Scheme functions
than with C or Java
Arrays Objects
Functions are
instead of instead of
First Class
Lists Property Lists
15. Created for C-like syntax, makes it
JavaScript Weakly
Web appear like an ordinary
typed
Designers procedural language
Has more in common
with functional languages Lambda Prototypal
like Lisp or Scheme functions inheritance
than with C or Java
Arrays Objects
Functions are
instead of instead of
First Class
Lists Property Lists
16. Created for C-like syntax, makes it
JavaScript Weakly
Web appear like an ordinary
typed
Designers procedural language
Has more in common
with functional languages Lambda Prototypal
Closures
like Lisp or Scheme functions inheritance
than with C or Java
Arrays Objects
Functions are
instead of instead of
First Class
Lists Property Lists
17. Created for C-like syntax, makes it
JavaScript Weakly
Web appear like an ordinary
typed
Designers procedural language
Has more in common
with functional languages Lambda Prototypal
Closures
like Lisp or Scheme functions inheritance
than with C or Java
Arrays Objects
Functions are Run-time
instead of instead of
First Class evaluation
Lists Property Lists
18. JavaScript
is very mutable, it’s very flexible.
You can rename things.
Brendan Eich
Author of JavaScript
Douglas Crockford It Is The World's Most Misunderstood
Computer Programmer Programming Language
19. 1995
Brendan Eich joined Netscape ,
to create a programming language for browser
and base it on Scheme (a Lisp dialect) 2008 Google released
V8 engine
+10 JavaScript engine
prototype (Mocha) 1997 LiveConnect 2
released
1996 Released NN2
with JS support
1998
Rhino engine
ECMA Standardization by Norris Boyd
released
LiveConnect
released
1994 1998 2010
Founded Netscape company Mozilla inherited
and created one of the first browsers Netscape’s code-base JavaScript is a trademark of
and official JavaScript Oracle Corporation
management rights
20. ≈265
standards
Ecma International
private non-profit
a standards organization
of information and communication systems
funded in 1961
to standardize computer systems
in Europe
21. ECMAScript Language Specification
ECMA-262 ISO/IEC 16262
MAJOR RELEASE 1.0 1997 Compromise between Netscape and Microsoft
EDITORIAL CHANGES 2.0 1998 Align with ISO/IEC 16262 international standard
MAJOR RELEASE 3.0 1999 Added regular expressions, try/catch exception
COMMUNITY RELEASE 3.1 Yahoo, Microsoft and Google formed group to update of ECMAScript 3
ABANDONED 4.0 Abandoned, due to political differences concerning language complexity
MAJOR RELEASE 5.0 2009 Library support for JSON, and more complete reflection
EDITORIAL CHANGES 5.1 2011 Align with 3rd version of ISO/IEC 16262:2011
MAJOR RELEASE 6.0 Support classes, semantic and syntactic innovations
72% of functionality is supported by browsers
28% have issues (IE8, FF3.5, OP10.5, Konq 4)
22. JavaScript Domain-Specific Language
Hidden low-level operations
Frameworks Open Source
John Resig
JS Method Overloading
23. Static code analysis
Identify potential problems
Possible bugs Overcomplicated expressions
Security issues Suboptimal code
Dead code Language standard violation
Duplicate code Code-style disregard
JSLint is a good example of such tool
24. Automatic
code corrections
Makes JavaScript download and run faster.
It is a true compiler for JavaScript.
It compiles from JavaScript to better JavaScript.
Implemented on Java
Speed is very impressive,
given that it’s a pure-JavaScript implementation.
Implemented on Node.js
25. Languages Improvements on syntax level
compiled Compiled JS will work on any JavaScript runtime
Repeating execution speed improvements
into JavaScript
CoffeeScript is an attempt to expose
the good parts of JavaScript in a simple way.
The golden rule of CoffeeScript is: "It's just JavaScript".
TypeScript is for application-scale JavaScript development.
Language is a typed superset of JavaScript
that compiles to plain JavaScript.
Any browser. Any host. Any OS. Open Source.
The goal of Dart is:
ultimately to replace JavaScript
as the lingua franca of web development
on the open web platform.
26. Classic
languages
compilation into JS
Strongly-Typed JavaScript (STJS)
Is an open source JavaScript code generator from a Java source.
It is built as a Maven plugin that can be executed after the compilation.
GWT
These allow you to write AJAX applications in Java and then compile the source
to highly optimized JavaScript that runs across all browsers,
including mobile browsers for Android and the iPhone.
Quicklight
The Saltarelle C# to Javascript compiler allows a developer to write C# code and then
compile it to Javascript which can be run in any web browser.
27. Emscripten
is an LLVM
to JavaScript
compiler
It takes LLVM bitcode (which can be generated from C/C++ using Clang, or any other
language that can be converted into LLVM bitcode) and compiles that into JavaScript,
which can be run on the web (or anywhere else JavaScript can run).
Using Emscripten, you can:
- Compile C and C++ code into JavaScript™ and run that on the web
- Run code in languages like Python as well, by compiling CPython from C to JavaScript
28. V8
JavaScript Engine
V8 is Google's open source JavaScript engine.
V8 is written in C++ and is used in Google Chrome.
V8 compiles JavaScript to native machine code (IA-32, x86-64, ARM, or MIPS CPUs)
The V8 assembler is based on the Strongtalk assembler
3 key areas to V8's performance:
Fast Property Access
Dynamic Machine Code Generation
Efficient Garbage Collection
Compilation into JS
optimized for Browser
30. C programs compiled to asm.js
Asm.js It's just a subset of JavaScript.
Mozilla is working on a first implementation for SpiderMonkey.
31. Emulators
on JavaScript
Matt Westcott Ben Firshman Kevin O'Dwyer
Emulated ZX Spectrum Emulated Dandy Emulated MS DOS
JSSpeccy JSNES JSDosBox
ZX Spectrum Dandy DOS
32. Linux PC emulator is written in JavaScript.
32 bit x86 compatible CPU
2.6.20 No FPU/MMX/SSE
Fabrice Bellard Yauhen Yakimovich
Emulated Linux Author of JSModem