A Brief History of JavaScript by the Creator of JavaScript

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments

There are only two kinds of languages: the ones people complain about and the ones nobody uses

- Bjarne Stroustrup

👍︎︎ 122 👤︎︎ u/Arve 📅︎︎ Apr 14 2018 🗫︎ replies

I know that mostly everyone despises Flash with a fiery passion but ActionScript 3.0 / ES4 was (is?) a really great development language. It's clear that ES4 failed because the change was just too radical of a departure, but it's nice to see that while ActionScript 3.0 had to fall in lieu of open standards on the web, all was not lost as we can now use TypeScript, which is syntactically identical to ActionScript 3.0 / ES4.

👍︎︎ 51 👤︎︎ u/TheDarkIn1978 📅︎︎ Apr 14 2018 🗫︎ replies

The history of the worst and the best language there is..

👍︎︎ 49 👤︎︎ u/bananiumsapiens 📅︎︎ Apr 14 2018 🗫︎ replies

I feel like if we used scheme instead of js it would either be a lot better or exacerbate all of the problems.

👍︎︎ 7 👤︎︎ u/[deleted] 📅︎︎ Apr 14 2018 🗫︎ replies

That better be 17 minutes and 28 seconds of apologies.

👍︎︎ 163 👤︎︎ u/remy_porter 📅︎︎ Apr 14 2018 🗫︎ replies

Transcript? Thanks.

EDIT: Not sure what the jokes and downvotes are about. Are people unfamiliar with the use of a transcript to read instead of watching or listening to an interview?

👍︎︎ 25 👤︎︎ u/midianite_rambler 📅︎︎ Apr 14 2018 🗫︎ replies

That's Tom Hanks tho

👍︎︎ 10 👤︎︎ u/[deleted] 📅︎︎ Apr 14 2018 🗫︎ replies

if i had 6 minutes to design a programming language i'd devote at least 3 seconds to deciding that variables shouldn't be global by default

i feel like disliking javascript is a really vanilla opinion at this point, so i'll dislike brandon eich instead, this talk is dull and brave is garbageware

👍︎︎ 4 👤︎︎ u/TheGidbinn 📅︎︎ Apr 15 2018 🗫︎ replies

I feel like this was a "shots fired" moment...

"Founded mozilla, did firefox which restarted the browser market..., ...taught google how to do Chrome"

👍︎︎ 1 👤︎︎ u/etharis 📅︎︎ Apr 14 2018 🗫︎ replies
Captions
22 years ago uh in in may i did 10 days of hard work i didn't sleep much but um before that in february i was recruited um my friends said you know come out to the coast we'll have a few laughs do scheme in the browser and by the time i got there of course it was supposed to look like java and as kristoff said b a little language i knew after i got into the netscape 2 that it would either die quickly and microsoft would completely replace it or it would be around for 20 or years or longer and i said this to my cubicle mate at netscape jeff weinstein so he can testify to that but people get impatient and they get tempted by things like you know windows on the pc and you think the web will die every 10 years and it doesn't it just keeps going and that's why i like this quote from ian hickson things that are impossible just take longer i'm going to cover why that is necessarily so with the web and the best way to cope with that fact um i've been around a long time so there was netscape javascript i found in mozilla with jamie zwinski and other people did firefox which restarted the browser market nobody thought that was possible taught google how to do chrome and for me the interesting innovation is now going into peer-to-peer networks that are not just for downloading songs but but now for things like cryptocurrencies and um involved in those as well as in uh ad blocking tracking protection and privacy by design i think privacy tech is going to be big in the next 10 years i'm glad that europe is doing its part there how do we cope with the fact that in any regime of web browsers you're going to have competition you might have a near-death experience where internet explorer takes 95 of the market but firefox showed how to restart it and i think that will be a lesson that is not forgotten that means you'll have competing browsers working in standards bodies and they have to find a modis vivendi they have to get along and the best way that i've learned to do it is just not smoke but to socialize and this has been going on with javascript since 1996 november when netscape took javascript to the ecma standards body at that time it was the european computer manufacturers association uh here's the secretary general of the time of bon vivant i remember fondly he's retired now he lived in geneva he has a dutch surname but he's belgian born polymath uh reconcile really fun guy um and that i think taught me something that we've tried to keep going in this committee that you have dinners together and you you try not to hold grudges or let personality conflicts which are inevitable get the better of you um and and netscape while it lasted did that and microsoft even played relatively fair as they took the browser market but then they shut it all down so with firefox we brought it back and we actually restarted it i went to geneva in 2005 after firefox 1 0 came out in november of 2004 and i said the on let's let's bring the band back together it's time to improve javascript again and you know microsoft was kind of like oh do we really have to we're doing c sharp but macromedia had used a version of javascript called actionscript in the flash player and so we formed an alliance with them and this led to a bunch of learning and socializing and philosophizing that i think is important i use this famous painting by raphael there's a detail from it um that's doug crockford on the left and me on the right doug's always pointing up and i'm like keep it real um there are bad problems in committees it's inevitable because you get um conflicts of personality and conflicts of style and and sort of deep deeply held beliefs that aren't fully unpacked into chains of reasoning it's hard to reason together if people come from really different schools of thought so we've learned how to cope with this by not rushing to any conclusion when you're doing language design you're solving many problems which cross cut or trade off against each other you have to take the the hermeneutic spiral as it's called you have to be willing to go around several times before you close on a design and sometimes you have to throw things out and start over again that's happened for instance with es6 proxies you have to avoid the temptation to say well i have developers that are solving this complex compound problem so i'm just going to give them a complex compound solution that's kind of a fixed composite function because that usually doesn't work it's usually the case that when you decompose it you find that you've got uncomposable parts and what we'd rather do is what the scheme scheme in the browser the scheme uh report says in its very first paragraph it says break the language down into orthogonal primitives that work well together so that's been the job of the committee and coming to an understanding of those primitives and minimizing the choice of primitives choice of axioms has been important then there's the ugly i shouldn't linger on it tuko you find people sometimes let their competitive interests get the better of them and so they use um essentially bad faith arguing they find sort of vague um excuses for not doing something and they all have some truth in them they're all half truths you ain't gonna need it don't scare the junior people you know don't make it into java but you have to actually get into the concrete aspects to get past those objections because that could be true of many things that we want and while we don't want to make javascript into java languages grow there's a great talk by guy steele where he starts with a subset of the english language in presenting the talk and then he grows his subset as he gives the talk languages grow that's how they how they progress um so we've had to cope with the good the bad and the ugly and we've made progress the old days were when netscape had some market power which was going away and we got es1 done based on my work in netscape 2 and 3. ecmascript 2 just historical curiosity was the iso version of es1 es3 was the big one it had a bunch of new things it had fully nested functions and closures function expressions a lot of you may have heard about es4 i spent many years on that that's where we with macromedia which got bought by adobe tried to really get microsoft to sit up and pay attention by doing the big language that had been envisioned even in 1999 uh by somebody named walmart horwat of netscape who i gave the keys to the kingdom too and he designed this language action swift 3 has a lot of aspects of it it actually got implemented by microsoft on the server side in 2000 but they never promoted it and did not standardize it es4 failed but the failure was important because the committee then with my code name harmony found a way to come together and work on es5 which was the no new syntax 3.1 kind of incremental step from es3 that had been started concurrently with the s4 doug crockford and others dissenting from es4 in public we pulled everybody together and we've been operating in much better mode since then es6 obviously is a big leap forward a lot of backlog had to be absorbed but uh now we've got on to a better cadence uh there's a backstory some of this is you've heard about scheme in the browser it was a lie uh it was a vain hope let's say um there were other things that i did in hurry in the 90s that i do regret you know do while switch try catch that's all okay i think that worked out um regular expressions uh thought to demu i based on pro 4 sorry i met larry wall in 97 and i said hey i'm putting pro regular expressions in javascript and he turned green he looked very unhappy um he was changing them for pro 5. uh and pro 6 is even even different because he had could do a clean slate language um the restarting of of tc39 i mentioned that that was painful because microsoft didn't want to do much to the language until they did and when they did it was still this sort of half-hearted thing until i think chrome came out and that really woke them up so um we we had you know amazing performance work in javascript engines uh we even had um google say that javascript cannot be repaired so we'll do dash now dart and i told him it wouldn't work they didn't listen uh that actually leaked through an accidental global message uh post by somebody on the tc39 committee whose name is on it he's not the author of that dash memo but he he turned white and went over to another googler during the november 2010 meeting and tapped them on the shoulder in theatrical fashion and they all all the googlers decamped to the hall and we said what's going on is the singularity arrived has has sergey or larry cancelled free you know cookies um only later did we learn that my friend on the committee from google had accidentally posted this this internal memo which javascript must be replaced it was like we love javascript but it must be replaced and it's just really hard to replace there's something like successful um dna about javascript once it's in there you're kind of hard they're getting rid of it another thing i'm particularly proud of in the last ten years was this sort of discovery carving nature at the joint as plato said of science of asim.js inside of javascript if you look at c code and some of you probably know c code you have you have a statically typed language with machine types and there is fast c code notably games games are always torturing the hardware can you map that to javascript it turns out you can and this was discovered first i think by elon zakai maybe by others concurrently or a little bit before at adobe labs and the trick is to use the bitwise operators that i put in most of them come from c one of them comes from java so i'm really glad i put those those like vertical bar operator in because that if it hadn't been in there from 1995 it would have been hard to add later and the fact that it was there all along meant we could do incredibly fast javascript also needed typed arrays from webgl and this is this is not meant for reading but just the dynamic nature of javascript has led to a common architecture in all i think all the top engines now the open source engines where you have interpreting and you have sort of a fast just-in-time compiler baseline compiler and then you have a much more aggressive compiler that operates when there's really hot code running and the fast subset of javascript that is asm.js the statically typed fast subset allows bypassing the baseline jit and the interpreter which has paved the way for webassembly which we're all excited about a little more back story i i realized um after alan where's brock did a great job uh as editor of atlanta 262 and as we got es5 done that he was not happy at microsoft so i recruited him to mozilla and we did es6 that was a a coup and i was uh glad to have alan on the crew at mozilla there the formalization of asm.js as a type system was by dave herman the exploratory compiler driven work was by elon zakai and luke wagner did the amazing compiler that bypasses those jits and does a sort of whole module compilation to machine code and it all came together in one week in the fall of 2012 in raleigh north carolina epic games unreal engine 3 was ported in four days you know you had to get the audio working using open el map2 web audio you had to get opengl map to webgl fix a few compiler boxes suddenly this game is running at 60 frames a second tim sweeney the founder of epic said he thought it would take years to get there i think this pretty much killed portable native client and other such approaches it was at that point inevitable that web assembly would emerge babel.js was interesting because 10 or 20 years ago people would say i'm never writing code with a compiler i'm writing javascript to the metal and and now they've gotten used to using tools and i think that's beneficial linting but even type systems type script and so on and at some point i think the committee will standardize some kind of type system we have a new proposal from some folks at google it's going to take a while it there's disagreement between flow and typescript and there's a lot of evolution and exploration to do you know how modern software works on a rapid release cycle like six-week cycle for you know firefox chrome brave um some of their browsers are more like an annual cycle the ecma committee is now going on an annual cadence which is good because it gets rid of that scheduled chicken problem where if people feel like they're going to miss they can just go to the next year they don't try to hold up everything to jam and something doesn't fit um and and as predicted google threw in the towel on dart and around the same time i think threw in the towel on portable native client was not going to go across browser you know webassembly was out in 2015 june so there's been a lot of interesting backstory that you may not hear everywhere i sometimes try to share this this is at a brooklyn js meetup where i said you know some things changed some say the same apple is still apple other companies sort of trade roles and and attitudes and and right after that of course microsoft open source their chakra core javascript engine we're still waiting for edge but it could happen it was a good move um i'll just share in detail one of the new things that's coming into um es 2018 or something i don't know what it'll be it's it's getting implemented in all the engines now uh all the open source engines and that's big and you know how when you start counting up in javascript you get past 53-bit integer you lose precision i didn't have time to do any other number types and i did put in those bitwise operators so implicit in javascript are 32-bit signed in unsigned integers other than that you're out of luck and if you want to go to really big numbers like the finance people do you end up using your own big decimal or big integer library but we're putting big end into the language and it will have nice end suffix for literal syntax they'll have operators that work sensibly even with some safe conversions for comparisons it will have the ability to name property keys and cast to narrow or integer types which is important for asm.js because bigint will matter there this is how we're going to project 64-bit types uh through javascript big-ins back into 64-bit machine types in azim js i i had to get this ball rolling by saying let's do 64-bit types and a couple of people um dan ehrenberg notably um said let's let's let's do big ends and we can make it just as fast it'll be better and dart had big in so we know it's better so that's good um i'll put these slides as you can see the links here's an example fibonacci function in javascript nicely using uh destructuring and computing fibonacci numbers and if you go up to fib 79 you run out of 53 bits of mantissa and ieee double everyone blames me for for ieee's floating point problems like not a number somebody put a tweet up with a oscilloscope with not a number this is like a tektronix or hp oscilloscope and they said it's javascript and i said no it's not it's c code it's it's um it's ieee but i'll take the blame with bigint we get rid of this we get the true answer uh in green instead of the wrong one ready just to show you that the committee is is not messing around these are a selection of the stage three proposals those union node realize import as a function is hard to do statically but it's coming thanks to dominic google dominic danikola so dynamic import pretty big michael fitcar is championing flat map and flattenings for all the functional fans out there seb martin at facebook is doing um rest and spread for objects that's what the third line shows we're evolving classes and uh actually i think other things to have private fields and methods and and the design is more like ruby i think um there's still some details being debated there but this is at stage three uh synchronous iterations so you can do for a weight of and you can totally efface the the pain of promises a bunch of regular expression fixes look behind back in 1997 just missed es3 it was just being added to pearl when we were cutting off the es3 regular expression features so finally getting a look behind assertions and unicode is getting help and named property groups uh the slash s flag on regular expressions and there's there's much more small proposals some bigger ones i didn't cover here they all have to go through a rigorous process to get into the next version language but in the annual cycle we're going at javascript will continue to evolve and that's why i say always bet on js and i have to treat webassembly fairly because it's another input language for the same javascript vm that we all enjoy in multiple browsers and oh yeah webpack's pretty cool too thank you very much
Info
Channel: Coding Tech
Views: 54,032
Rating: undefined out of 5
Keywords: javascript, history of javascript, future of javascript, web development, browsers, Brendan Eich
Id: 3-9fnjzmXWA
Channel Id: undefined
Length: 17min 28sec (1048 seconds)
Published: Fri Apr 13 2018
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.