Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
JavaScript: The Past, Present and Future
Search
Kim Joar Bekkelund
April 17, 2015
Programming
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
JavaScript: The Past, Present and Future
An introduction to the role of JavaScript. Given to students at NTNU in Trondheim, Norway.
Kim Joar Bekkelund
April 17, 2015
More Decks by Kim Joar Bekkelund
See All by Kim Joar Bekkelund
ASTs in JavaScript
kimjoar
0
150
Writing Beautiful JavaScript Tests
kimjoar
12
2.8k
WebSockets and Server-Sent Events
kimjoar
1
300
Patterns of Large-Scale JavaScript Applications
kimjoar
20
1.6k
Patterns of Large-Scale JavaScript Applications
kimjoar
22
2.4k
Enkle JavaScript-abstraksjoner
kimjoar
1
220
Simple JavaScript Abstractions
kimjoar
9
830
Introduksjon til forretningsmodeller
kimjoar
2
390
Other Decks in Programming
See All in Programming
Kotlinの15年とServer-Side Kotlin
n_takehata
1
200
自作Discord音声botをLambda MicroVMsに移行した話 / Migrating My Discord Voice Bot to Lambda MicroVMs
akihisaikeda
1
290
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
410
Next.js: The final boss of Web Performance
guaca
0
380
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
3
1.4k
AWS CDKを理解するために公式の定義を深掘って解説してみる / Understanding AWS CDK by Digging into Its Official Definition
akihisaikeda
2
260
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
270
Zero-Tap Sign-In対応、結局何をすればいいの?
mitohato14
0
1.5k
Web Framework Benchmark Battle 2026, Any%
a_matsuda
3
3.1k
学びを記事・スライド・Xへ高速展開する― AI-assisted Learning Loopで回すコンテンツ生成術
ochtum
0
190
私なりのハーネスエンジニアリング ~独自の言語処理系の開発を通して~
seosoft
0
180
조합이폭발하는디자인시스템이걸눈으로도테스트하라고요
giljongyu
0
720
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
96
14k
Designing Experiences People Love
moore
143
24k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Producing Creativity
orderedlist
PRO
348
41k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.5k
Amusing Abliteration
ianozsvald
1
380
Designing Powerful Visuals for Engaging Learning
tmiket
1
650
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Designing for Performance
lara
612
70k
The Invisible Side of Design
smashingmag
301
52k
Transcript
JavaScript The Past, Present and Future
Kim Joar Bekkelund @kimjoar
[email protected]
Fagleder i JS-plattform Jobbet i
BEKK siden 2011
None
None
It all started at 1995
Brendan Eich + 10 days = JavaScript
What did we do with this new language? (You really
don't want to know)
CUT & PASTE
None
None
None
… and this went on for almost 10 years
2004
2005
What happened?
What happened?
What happened?
What happened?
JavaScript went from nothing to …
"any application that can be written in JavaScript, will eventually
be written in JavaScript." Atwood's Law
JavaScript Where are we now?
We expect more!
None
None
SPA Single-page applications
None
10/90? 50/50? 70/30?
None
None
WebSockets Client Server Set up connection
JavaScript + I/O Single-threaded, non-blocking
None
Node.js in production?
“Assembly language of the web”
None
# Assignment: number = 42 opposite = true # Conditions:
number = -42 if opposite # Functions: square = (x) -> x * x # Arrays: list = [1, 2, 3, 4, 5] # Objects: math = root: Math.sqrt square: square cube: (x) -> x * square x Inspired by Ruby and Python Several features will be added to the next JS version
class Point { x: number; y: number; constructor(x: number, y:
number) { this.x = x; this.y = y; } getDist() { return Math.sqrt( this.x * this.x + this.y * this.y ); } } var p = new Point(3,4); var dist = p.getDst(); console.log("Hypotenuse is: " + dist); Optional static typing. Superset of JS.
data Person = Person { name :: String, age ::
Number } showPerson :: Person -> String showPerson (Person o) = o.name ++ ", aged " ++ show o.age examplePerson :: Person examplePerson = Person { name: "Bonnie", age: 26 } Inspired by Haskell
(ns example (:require [om.core :as om] [om.dom :as dom])) (defn
widget [data owner] (reify om/IRender (render [this] (dom/h1 nil (:text data))))) (om/root widget {:text "Hello world!"} {:target (. js/document (getElementById "my-app"))}) A Lisp for the browser
asm.js Speeding up compiled languages
asm.js Speeding up compiled languages "an extraordinarily optimizable, low-level subset
of JavaScript"
C/C++ -> LLVM -> Emscripten -> asm.js
int f(int i) { return i + 1; } C
function f(i) { i = i|0; return (i + 1)|0; } asm.js
But what happens when you can run C and C++
code in the browser?
None
None
None
millions of lines of C compiled to asm.js/JavaScript running in
a browser !
JavaScript The future
language, apps, ecosystem, VM
LANGUAGE the
ES1 1997 ES2 1998 ES3 1999 ES4 Abandoned ES5 2009
ES6 2015 ES7 est. 2016
Adjustments based on real-world problems
None
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>Datainn</title>
<meta name="description" content=""> <meta name="viewport" content="width=device-width"> <script src="../shared/vendor/proj4js/proj4js-compressed.js"></scr <script src="../shared/vendor/bower_components/underscore/undersco <script src="../shared/vendor/bower_components/jquery/jquery.min.j <script src="../shared/vendor/bower_components/spin.js/spin.js"></ <script src="../shared/vendor/bower_components/angular/angular.js" <script src="../shared/vendor/bower_components/angular-route/angul <script src="../shared/vendor/bower_components/angular-animate/ang <script src="../shared/vendor/bower_components/ng-table/ng-table.j <script src="../shared/vendor/bower_components/moment/moment.js">< <script src="../shared/vendor/bower_components/moment/lang/nb.js"> <script src="../shared/vendor/bower_components/based-on/index.js"> <script src="../shared/vendor/bower_components/poller.js/poller.js <script src="../shared/vendor/bower_components/ee.js/ee.js"></scri <script src="../shared/vendor/bower_components/d3/d3.js"></script> <script src="../shared/vendor/bower_components/nvd3/nv.d3.js"></sc
None
ECOSYSTEM the
None
Cryptography API, Audio API, WebRTC, File API …
60fps, but only one thread Web Workers 60fps, but only
one thread
None
from mostly huge frameworks to thousands of small libraries
None
Rendering to …
WebGL
vimeo.com/105880197 javazone webgl
React Native
None
None
APPS the
None
None
offline first
Full-featured online apps
None
None
Desktop and mobile apps
None
chrome os, windows 8, firefox os JavaScript as a first-class
citizen
We will see more of the backend developers on the
frontend … and that's a great thing!
VM the
Browser = rendering engine + JavaScript engine
Chakra SpiderMonkey JavaScriptCore V8 Nashorn
Super-competitive market Push for new features and better performance
2/3 of native speed on benchmarks emscripten + asm.js
None
Want to learn JS?
None
None
Takk for meg!