Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Javascript as a Platform

Vlad Mysla
March 25, 2013

Javascript as a Platform

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.

Vlad Mysla

March 25, 2013
Tweet

More Decks by Vlad Mysla

Other Decks in Research

Transcript

  1. 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
  2. Why people use JavaScript? My name is Mark, I use

    JavaScript to hide buttons. Dan, 18 years. My girl is love in JS! I’m Mario, JavaScript is all that I learned in my life!
  3. Why you really should use it? I use JS, just

    because it works everywhere!
  4. JavaScript Created for Web Designers C-like syntax, makes it appear

    like an ordinary procedural language Weakly typed
  5. JavaScript Created for Web Designers C-like syntax, makes it appear

    like an ordinary procedural language Has more in common with functional languages like Lisp or Scheme than with C or Java Weakly typed
  6. JavaScript Created for Web Designers C-like syntax, makes it appear

    like an ordinary procedural language Has more in common with functional languages like Lisp or Scheme than with C or Java Arrays instead of Lists Weakly typed
  7. JavaScript Created for Web Designers C-like syntax, makes it appear

    like an ordinary procedural language Has more in common with functional languages like Lisp or Scheme than with C or Java Arrays instead of Lists Objects instead of PropertyLists Weakly typed
  8. JavaScript Created for Web Designers C-like syntax, makes it appear

    like an ordinary procedural language Has more in common with functional languages like Lisp or Scheme than with C or Java Arrays instead of Lists Objects instead of PropertyLists Lambda functions Weakly typed
  9. JavaScript Created for Web Designers C-like syntax, makes it appear

    like an ordinary procedural language Has more in common with functional languages like Lisp or Scheme than with C or Java Functions are First Class Arrays instead of Lists Objects instead of PropertyLists Lambda functions Weakly typed
  10. JavaScript Created for Web Designers C-like syntax, makes it appear

    like an ordinary procedural language Has more in common with functional languages like Lisp or Scheme than with C or Java Functions are First Class Arrays instead of Lists Objects instead of PropertyLists Lambda functions Prototypal inheritance Weakly typed
  11. JavaScript Created for Web Designers C-like syntax, makes it appear

    like an ordinary procedural language Has more in common with functional languages like Lisp or Scheme than with C or Java Functions are First Class Arrays instead of Lists Objects instead of PropertyLists Closures Lambda functions Prototypal inheritance Weakly typed
  12. JavaScript Created for Web Designers C-like syntax, makes it appear

    like an ordinary procedural language Has more in common with functional languages like Lisp or Scheme than with C or Java Functions are First Class Arrays instead of Lists Objects instead of PropertyLists Closures Lambda functions Prototypal inheritance Weakly typed Run-time evaluation
  13. JavaScript It Is The World's Most Misunderstood Programming Language is

    very mutable, it’s very flexible. You can rename things. Douglas Crockford Computer Programmer Brendan Eich Author of JavaScript
  14. Founded Netscape company and created one of the first browsers

    1994 1997 Brendan Eich joined Netscape , to create a programming language for browser and base it on Scheme (a Lisp dialect) JavaScript is a trademark of Oracle Corporation Mozilla inherited Netscape’s code-base and official JavaScript management rights 1995 1998 Rhino engine by Norris Boyd released 2008 Google released V8 engine JavaScript engine prototype (Mocha) 1996 LiveConnect released ECMA Standardization LiveConnect 2 released 1998 2010 +10 Released NN2 with JS support
  15. Ecma International a standards organization of information and communication systems

    private non-profit funded in 1961 to standardize computer systems in Europe ≈265 standards
  16. 1.0 1997 Compromise between Netscape and Microsoft 2.0 1998 Align

    with ISO/IEC 16262 international standard 3.0 1999 Added regular expressions, try/catch exception 3.1 Yahoo, Microsoft and Google formed group to update of ECMAScript 3 4.0 Abandoned, due to political differences concerning language complexity 5.0 2009 Library support for JSON, and more complete reflection 5.1 2011 Align with 3rd version of ISO/IEC 16262:2011 6.0 Support classes, semantic and syntactic innovations ECMAScript Language Specification ECMA-262 ISO/IEC 16262 EDITORIAL CHANGES EDITORIAL CHANGES MAJOR RELEASE MAJOR RELEASE ABANDONED MAJOR RELEASE MAJOR RELEASE COMMUNITY RELEASE 72% of functionality is supported by browsers 28% have issues (IE8, FF3.5, OP10.5, Konq 4)
  17. Static code analysis Possible bugs Overcomplicated expressions Security issues Suboptimal

    code Dead code Language standard violation Duplicate code Code-style disregard Identify potential problems JSLint is a good example of such tool
  18. 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
  19. Languages compiled into JavaScript Improvements on syntax level Compiled JS

    will work on any JavaScript runtime Repeating execution speed improvements The goal of Dart is: ultimately to replace JavaScript as the lingua franca of web development on the open web platform. 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. 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".
  20. 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.
  21. 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
  22. V8 JavaScript Engine Compilation into JS optimized for Browser 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
  23. Asm.js C programs compiled to asm.js It's just a subset

    of JavaScript. Mozilla is working on a first implementation for SpiderMonkey.
  24. Emulators on JavaScript JSSpeccy ZX Spectrum Matt Westcott Emulated ZX

    Spectrum Ben Firshman Emulated Dandy JSNES Dandy Kevin O'Dwyer Emulated MS DOS JSDosBox DOS
  25. Linux 2.6.20 Fabrice Bellard Emulated Linux PC emulator is written

    in JavaScript. 32 bit x86 compatible CPU No FPU/MMX/SSE Yauhen Yakimovich Author of JSModem