How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc....

29
How did I get here?

Transcript of How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc....

Page 1: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

How did I get here?

Page 2: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

WebAssembly Dance Party

Page 3: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

Learn a Language: Web Assembly

Page 4: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

Who is this guy? (@seanhelvey)

• M.S. Computer Science at New York University

• Web Development Instructor at Galvanize Boulder

• Teacher of JavaScript, Node.js, React, Redux

• Co-organizer of Front Range Elm Meetup

Page 5: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

I do not work for a browser vendor!

• Most talks you will find on WebAssembly are biased

• Not saying this is a bad thing, but let's be honest

• Also not trying to compile my C++ game to the web

• I'm an average web developer interested in the future

Page 6: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

Objec&ves

• Illustrate growth of ECMAScript

• Introduce WebAssembly (Wasm)

• Understand how to use Wasm

• Outline future vision

Page 7: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

Discuss growth of ECMAScript specifica7on

• 1995: JavaScript created

• 1997: 110 page ECMAScript specifica:on

• 2015: 566 page ECMAScript specifica:on

Page 8: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly
Page 9: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

Back in the day

Page 10: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

5-10 years ago

Page 11: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

Yesterday

Page 12: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

THE FUTURE (Today)

Page 13: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

Indirect flight: CO -> Europe -> Hawaii

Page 14: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

Direct flight: CO -> Hawaii

Page 15: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

A student / teacher perspec/ve on WebAssembly

• I’ve used over 20 different languages and trust me

• Teaching JavaScript is the hardest by far

• ES5 was hard to begin with

• ES6, 7, 8, etc. making it even more difficult

Page 16: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly
Page 17: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

A student / teacher perspec/ve on WebAssembly

• If you can learn JavaScript, you can learn anything!

• Learn to learn, unfamiliar environments, problem solving

• Many students get jobs working with other languages

• Must be able to talk about programming in general

Page 18: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

Timeline of WebAssembly developments

• March 2013 - Predecessor asm.js released

• June 2015 - WebAssembly working group formed

• November 2017 - WebAssembly MVP released

• February 2018 - W3C public draK released

Page 19: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

.wat is WebAssembly or Wasm?

• A binary instruc.on format for a virtual machine

• A portable target for high-level languages

• Java / JVM solved similar portability issue

Page 20: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

.wat is WebAssembly or Wasm (Cont...)

• 32 and 64 bit integer and floa2ng point types

• File formats

Page 21: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

.wat is WebAssembly or Wasm (Cont...)

• Modules can be loaded in either the UI thread or in a Web Worker

• Run in a safe, sandboxed execu:on environment & enforces browser's policies and permissions

Page 22: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

Memory

• Wasm Memory is represented as a con2guous range of untyped bytes

• The memory accessible by a par2cular WebAssembly Instance is confined to a range

• Libraries have separate memories that are fully isolated from each other

Page 23: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

Tables

• Wasm Tables are resizable typed arrays of references

• While Memory provides a resizable typed array of raw bytes, it is unsafe for references

• In the current itera=on, func=ons are the only valid reference type

Page 24: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

How can I use it?

Page 25: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

wasm-bindgen

Page 26: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

Emscripten

• When you’ve wri/en a new code module in a language like C/C++, you can compile it into WebAssembly using a tool like Emscripten

emcc hello.c -s WASM=1 -o hello.html

Page 27: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

Future vision

• Is it really just for C/C++/Rust?

• Language quality race to the top

• More modularity and portability

• JavaScript (maybe) as glue code

• Choose the right tool for the job!

Page 28: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

Objec&ves

• Illustrate growth of ECMAScript

• Introduce WebAssembly (Wasm)

• Understand how to use Wasm

• Outline future vision

Page 29: How did I get here? · • Teacher of JavaScript, Node.js, React, Redux ... • ES6, 7, 8, etc. making it even more difficult. A student / teacher perspec/ve on WebAssembly

Thank you!