Discussing node.js - Computerphile

Поділитися
Вставка
  • Опубліковано 28 лют 2021
  • The hidden technology that's behind apps like Visual Studio Code & Skype is web based. David Domminney Fowler chats Google's V8, node.js & HTML5
    More about David Domminney Fowler: / daviddomminneyfowler
    / computerphile
    / computer_phile
    This video was filmed and edited by Sean Riley.
    Computer Science at the University of Nottingham: bit.ly/nottscomputer
    Computerphile is a sister project to Brady Haran's Numberphile. More at www.bradyharan.com

КОМЕНТАРІ • 1 тис.

  • @Rob9
    @Rob9 3 роки тому +268

    As someone who has done a ton of firmware and end user programming, I barely know anything about web programming. I'd love this series.

    • @lunaticberserker5869
      @lunaticberserker5869 3 роки тому +24

      As someone who's new doing web programming, I nothing about firmware and end-user programming, and I'm curious about it. :p

    • @aryanmaurya3422
      @aryanmaurya3422 3 роки тому +5

      Yeah, I guess firmware programming is much more complex than Web programming.

    • @lunaticberserker5869
      @lunaticberserker5869 3 роки тому +1

      @@aryanmaurya3422 Exactly! That's why I'm curious about it.

    • @chrisbailey2098
      @chrisbailey2098 3 роки тому +9

      @@aryanmaurya3422 I would say they are equally complex, throw node into the equation and you have server side programming as well as front end. Different horses for different courses as they say

    • @rban123
      @rban123 3 роки тому +6

      @@aryanmaurya3422 it's not exaclty "more complex," it's just completely different and complex in different ways.

  • @a8lg6p
    @a8lg6p 3 роки тому +358

    Here's a potential Computerphile video topic: Ryan Dahl, in his original presentation of Node, said something like: Multithreading is a leaky abstraction. It sounded like there may be some use-cases where the traditional multithreading approach is superior, but for many, it sounds like the event-driven approach is not only easier to reason about and avoids many of the headaches associated with writing multithreaded code, but at least for some use cases, is demonstrably faster. That's a topic I'd like to hear more explanation and commentary on.

    • @Eliassausaur
      @Eliassausaur 3 роки тому +12

      I agree much more with this than a single thumbs-up could ever express

    • @bk1507
      @bk1507 3 роки тому +4

      Would definitely watch a video about this

    • @sycration
      @sycration 3 роки тому +9

      I've found Rust language to remove much of the headache for me at least

    • @johnfrazer7964
      @johnfrazer7964 3 роки тому +4

      @@sycration Yeah Rust is great and fast but it comes at a price, like you have to deal with ownership which can be a real headache. I've been writing some smallish glue code in Rust lately where I started out in pure 'cargo cult' mode i.e. copy/pasting existing code then adapt it. When some of the typical Rust errors hit me like optional values or, much worse, the borrow checker, I still resort to rearranging symbols in the editor until those errors go away.

    • @pajeetsingh
      @pajeetsingh 3 роки тому +3

      He did not read the first chapter of POSIX Pthread programming book properly which said the exact same thing.

  • @cadekachelmeier7251
    @cadekachelmeier7251 3 роки тому +1044

    I was surprised seeing someone talk about javascript without shitting all over it.
    Then I looked at the comments.

    • @dakoderii4221
      @dakoderii4221 3 роки тому +94

      I love JavaScript and I hate JavaScript.

    • @newvocabulary
      @newvocabulary 3 роки тому +69

      Since async/await, it's been a pleasure to write JS.

    • @MladenMijatov
      @MladenMijatov 3 роки тому +41

      @@dakoderii4221 I just hate it and people think am being a fanboy of something else or whatever. When in fact am talking from 10+ years of writing the damn thing and having nothing but issues. I don't remember ever being happy that I had to write JS code. It always ends up being hacky and working around something.

    • @oliverb7897
      @oliverb7897 3 роки тому +53

      JavaScript bad, please like and subscribe

    • @Pekkhum
      @Pekkhum 3 роки тому +18

      Well, those who are most likely to want to talk about node.js are more likely to be those that enjoy working in Javascript. Those who do not enjoy Javascript will likely avoid node.js, with so many other event driven frameworks available in so many languages.

  • @jamisonr
    @jamisonr 3 роки тому +86

    What he says @2:40 is exactly what led me to being a "software engineer." That is, paraphrasing, that "the computer did what you told it to do" and you could see it happen immediately. For me, it was a C64 in approximately 1987/88, and the program was just changing background colors...and I thought "what if I change this value to something else?" and it worked. And I was hooked. And 30+ years later I still love it and make a nice living from it.

    • @marianoamar3867
      @marianoamar3867 3 роки тому +9

      Who doesn't feel that way?
      Been coding for over 2 decades myself (I started on MS Basic and C back in MS/DOS), and I still get moments of wonder when I look at things like AAA games, where my brain just goes "And that's all just binary math inside a handful of transistors that somehow gets translated over and over until you see a person jumping and fighting"

    • @tunyaa
      @tunyaa 2 роки тому +1

      @@marianoamar3867 The abstraction level is almost a daily thought for me as well. Unbelievable.

  • @Andrew90046zero
    @Andrew90046zero 3 роки тому +111

    "technology that happily dies out, flash!"
    and I took that personally.

    • @rockets4kids
      @rockets4kids 3 роки тому +3

      What the web stack has become is *far* worse than Flash ever was. It needs to be thrown away and replaced with something sensible.

    • @Andrew90046zero
      @Andrew90046zero 3 роки тому +2

      @@rockets4kids kinda true imo. Although it's easy for me to say that because I don't use HTML CSS and Javascript on a daily basis. People who do though, might be more inclined to disagree simply because it's their job, or they don't want to relearn so many things.
      But in the end, it would mean that the web gets a MEGA PERFORMANCE BOOST. and a lot of things just become faster and might even allow for new types of web businesses based around this boost. 🤷‍♂️

    • @JohnWalz97
      @JohnWalz97 3 роки тому

      @@rockets4kids what makes you say that?

    • @rockets4kids
      @rockets4kids 3 роки тому

      @@JohnWalz97 It is a hodgepodge of bastardized technologies that requires an absurd amount of resources to be even usable. Worse still, it has become basically the *opposite* of what it was designed to be.

    • @rubenpartono
      @rubenpartono 2 роки тому

      @@rockets4kids What was it designed to be?

  • @Furiends
    @Furiends 3 роки тому +28

    What he's talking about is called Chromium Embedded Framework which has a pretty crazy history that starts with a Linux desktop environment called KDE which made a highly modular web standards library called KHTML that would eventually become Safari Webkit and that inherent modularity made it an optimal choice for Chrome. There's a lot of other trends and features under pinning all this to like that web standards and open source go together like bread and butter. So eventually an open source web engine had to win out. itself forms the basis of Opera and Edge web browsers and is up one layer of abstraction from web rendering engine to entire browser framework (similar to Mozilla).

  • @borntolose_livetowin
    @borntolose_livetowin 3 роки тому +46

    peaking my head outside my domain-specific language world, finally I understand why JavaScript is the most used programming language since a couple of years...

    • @_Dingu
      @_Dingu 3 роки тому +12

      Ease of development/deployment with a huge increase in the number of software developers will do that.

    • @IIARROWS
      @IIARROWS 3 роки тому +4

      @@_Dingu And don't forget marketing... that is the main drive as everything in our age.

    • @adamjijo
      @adamjijo 3 роки тому +12

      @@IIARROWS obviously but marketing is fair game when you can make the claim that this language is all you need to know to make applications for 99% of devices.

    • @sacredgeometry
      @sacredgeometry 3 роки тому +1

      @@adamjijo It depends what sort of apps you are writing because you couldn't write some types of apps on any platform with just trad js no matter how hard you tried.

  • @betatester03
    @betatester03 2 роки тому +9

    Wow, this video seriously connected some important dots for me. I will religiously watch this if it becomes a series.

  • @EricMeyerweb
    @EricMeyerweb 3 роки тому +14

    Just found this, and it was really nice to see and hear someone of David’s accomplishments and background give HTML+CSS+JS some respect in a Computerphile video. Much appreciated!

  • @dragonbone81
    @dragonbone81 3 роки тому +283

    This video was all over the place hahaha. Was pretty interesting to watch as a developer but I can imagine it made no sense for people that don’t know much. Was just rambling about node lol

    • @Fishysua
      @Fishysua 3 роки тому +4

      +

    • @TheSliderW
      @TheSliderW 3 роки тому +12

      No. Was expressing his amazement about the way a simple web based scripting languages can now be used to easily build useful online and offline apps.

    • @EldunMcLayan
      @EldunMcLayan 3 роки тому +11

      I‘m not sure what you mean with 'all over the place' but UA-cam‘s personalization algorithms create really effective bubbles around you. If you never searched for any programming or other tech stuff you wouldn’t see this video anywhere.

    • @SKyrim190
      @SKyrim190 3 роки тому +1

      As someone who knows something about programs and codes that run on your own computer, but knows very little about the internet I can confirm I understand very little.
      What I got from it is "Google made fast way of running code written in Java in their browser. People took it and started coding programs that treat themselves as 'in browser' even though they were only on your PC and not connecting to any server."
      I hope it is somewhat close to what he said. No idea why what they did would be so fast and better than coding a normal executable file though...

    • @GrouchierThanThou
      @GrouchierThanThou 3 роки тому +3

      @@SKyrim190 Thanks. Although you seem to have sort of gotten the overall gist of it, the amount of inaccuracies in your summary still pretty much confirms that OP is not wrong.

  • @gaafts
    @gaafts 3 роки тому +16

    You've allowed me to appreciate Javascript, never heard it talked about this way. Not familiar with web technologies yet, but it never occured to me that half of everything we use are just glorified web browsers. There's a twisted beauty in the uniformity.

    • @diablo.the.cheater
      @diablo.the.cheater 3 роки тому +4

      That is because html5 + cc3 are just perfect for GUIs, they are quick to use and easy to create stunning very personalized GUIs

  • @AvindraGoolcharan
    @AvindraGoolcharan 3 роки тому +5

    Thanks for starting the conversation, computerphile. Looking forward to more focused videos on JS.

  • @pancakerizer
    @pancakerizer 3 роки тому +128

    Small correction: Brailsford didn't say HTML is a *Turing complete* programming language, just that it is a programming language

    • @4.0.4
      @4.0.4 3 роки тому +19

      I saw someone implement turing completeness with checkboxes and CSS. It was slow as molasses.

    • @NoNameAtAll2
      @NoNameAtAll2 3 роки тому +10

      If it's not turing complete, it's not programming

    • @deoxal7947
      @deoxal7947 3 роки тому +20

      @@NoNameAtAll2 Brainfuck is turing complete but I wouldn't call it a language.
      Brailsford's argument was very informal, that HTML is a language and it makes computers do stuff.
      Why make it more complicated than that? Brailsford is well versed in the theory of computability so it's not like he's naive.

    • @cookiedragon234
      @cookiedragon234 3 роки тому +11

      @Kotetsu Chan HTML existed for 5 years before JavaScript, and 20 years before react - what do you think they were using it with?

    • @cookiedragon234
      @cookiedragon234 3 роки тому +7

      @Kotetsu Chan who cares about react? It is not relevant to the conversation.

  • @JWacker667
    @JWacker667 3 роки тому +5

    Great Video! One more important thing about Web technologies on the desktop is that it runs on pretty much any client from the same codebase and it's very easy to deploy updates.

  • @mik13ST
    @mik13ST 3 роки тому +14

    It opened backend to a lot of frontend develoers, but that comes at a cost of having often hundreds of libraries for the same purpose. The stylelint package has 500 (0.5k) packages it depends on. What a great idea.

    • @rolfs2165
      @rolfs2165 3 роки тому +1

      And in many cases those dependencies aren't needed at all if you just take a minute to think about what you're doing. I've seen fellow students include Apache Commons in Java projects - for something like isNullOrEmpty(String).

    • @dealloc
      @dealloc 3 роки тому +4

      I don't see how being a frontend developer is correlated with the number of libraries. C, Ruby and many other general purpose languages has ecosystems with thousands of libraries that do the same thing. Doesn't make it bad.
      The reason why it's seen as a problem in Node.js is because it's popular. It's easy for anyone to get started and use. The ecosystem grows as more people join. I see this as progress and innovation, even though you may disagree that something like left-pad is an innovation.

  • @MoosesValley
    @MoosesValley 3 роки тому +11

    David is such a gently spoken and humble guy. Thank you for the very interesting video !

  • @doombuddha
    @doombuddha 3 роки тому +12

    I've been using Node for a while and every now and then I think back to PHP-GTK, which tried to accomplish the same thing about 16 years ago

  • @KutAnimus
    @KutAnimus 3 роки тому +205

    It's very fitting that the restaurant and fries analogy was used, because if you eat fries too much you will get bloated.

    • @randomuser5237
      @randomuser5237 3 роки тому +13

      I don't think you understand either the analogy or javascript or restaurants.

  • @christianhorauf9958
    @christianhorauf9958 3 роки тому +1

    Please bring more about node. It's my favorite plattform and really allows you to do astonishing stuff

  • @cubbybear5326
    @cubbybear5326 3 роки тому +109

    You guys should also talk about web assembly. It’s pretty interesting. Basically it allows code like C or Java to work in the browser.

    • @milkyway9225
      @milkyway9225 3 роки тому +3

      Please, explain more. They probably have no clue what web assembly is :DD

    • @carlosmspk
      @carlosmspk 3 роки тому +3

      Why DOESN'T C or Java work in the browser?

    • @109Rage
      @109Rage 3 роки тому +25

      ​@@carlosmspk Browsers need to have some measure of security, because you're basically running code someone else wrote. As such, Javascript has been the default way to write web applications since forever, and it interacts with the world through a set of controlled APIs that need to be secure. It's possible to "compile" (or rather, "transpile") C and Java into Javascript, effectively translating what should be C code into its equivalent in Javascript, but the result isn't always the best, and may be slow. One solution to this that was used in the past for running things like Flash were things like plugins, which operated in a container but you couldn't send people your own plugins without them installing them, because these plugins had to be in native machine code, which was a huge security risk, so only Flash really used this system.
      So, you had people who wanted to write in C or whatever other programming language they were already used, but translating that code to Javascript resulted in slow code. Plus, you couldn't just send raw machine code to people, due to security concerns. So, Web Assembly was created. What WASM is, is basically a type of "machine code", for a virtual machine. Basically like Java. It's still binary 1s and 0s, but if you gave it to a CPU, it wouldn't know what to do with it. But WASM is designed so that when a browser reads it, it's easy for the browser to then turn that code into safe machine code, that it can execute FAST (or at least faster than you'd normally be able to in plain Javascript)... Now you can write an app in C, compile it to WASM, and run it in the browser...
      Or at least that's the dream. There's still a bunch of features missing from WASM, and some interfacing kinks to work out, so its not in perfect condition, but it's thought by some that WASM will eventually replace Javascript on the web... I won't hold my breath tho.

    • @jarosawgudz5108
      @jarosawgudz5108 2 роки тому +5

      Java isn't really popular for WebAssembly development. It's mostly Rust and C/C++ because they're supported "out of the box". There's also some Go and Blazor (C# front-end framework) development going on. There's also a new language that's almost identical (mainly different types) to TypeScript called AssemblyScript and it's gaining popularity.

    • @theshermantanker7043
      @theshermantanker7043 2 роки тому

      Java isn't that's suited for Web development, it's more for stuff to run directly on a PC or for servers and enterprise stuff

  • @mrbrianparker
    @mrbrianparker 3 роки тому +4

    Well, I enjoyed it and now I'm mucking about with node.js and looking forward to some more videos.

  • @Uristqwerty
    @Uristqwerty 3 роки тому +7

    The funny thing about Flash is that, more and more, open web standards are being replaced by "whatever chromium does", and most of the powerful APIs that got Flash labelled as dangerous have made their way into Javascript itself. What few remain, like filesystem access and low-level network sockets are typically exposed by Electron/node.js, so as soon as someone figures out a redirect attack to get it to load an external script, it's as dangerous as flash ever was, except in the last few years of its life, Flash's filesystem and network access were proxied through the browser, and there isn't the same level of distrust of Electron that Flash had acquired among the general public.
    Except Flash was designed to perform adequately on a single-core, hundreds-of-megahertz, no-GPU-acceleration old desktop, while the modern web stack has so many layers of abstraction that half the sites out there manage to make a *modern* computer run like it's a decade old!

    • @tahvohck
      @tahvohck 3 роки тому +1

      I dunno that I'd call Flash's performance "adequate" but it does feel like it runs a damn sight leaner than your average JS stack, I'll give it that.

    • @diablo.the.cheater
      @diablo.the.cheater 3 роки тому +1

      you can get filesystem access from a chrome webpage if you design it as a PWA and ask permission from the user, no need for electron, you can even access the binary data of custom stuff you put on usb ports and write "drivers" for them in javascript, again, asking permission.
      That is more of a concern than electron doing it, because electron doing it is not a problem, electron is for desktop applications and it loads html that is bundled inside itself, it does not get its javascript css and html from the internet, they are bundled in, locally, so this type of security is not a concern for electron, it is not more dangerous for electron to access it that is for a C++ app to do it, the problem with flash doing it was because it was on the web, electron is not on the web, it uses the same technologies as the web but it is not on the web, it is local.

  • @imalwaysright1408
    @imalwaysright1408 2 роки тому +1

    I love this channel! Even for a complete beginner this was engaging and educational. MORE MORE MORE!

  • @anonmousse
    @anonmousse 3 роки тому

    I was waiting for this coverage for a while now

  • @wk02
    @wk02 3 роки тому +58

    5:51 Javascript is blocking but task-based. Your blocking code needs to end for other tasks to run. I think that's an important distinction to make :)

    • @danielegvi
      @danielegvi 3 роки тому +3

      Technically all code is blocking, just that some code blocks more than others. For what it's worth, there are C (libc) functions that are labelled as "non-blocking" or "returning immediately", even though again, all code blocks.

    • @jp46614
      @jp46614 3 роки тому +6

      it uses libuv under the hood which has a thread pool, instructions especially async will be thrown into that thread pool and wait for an output while doing everything else

    • @ClaudioBrogliato
      @ClaudioBrogliato 3 роки тому

      Exactly. If the waiter is required to do 1000 pushups nobody is going to be served until he's finished.

    • @MladenMijatov
      @MladenMijatov 3 роки тому +1

      Pshht. Let's not break their fantasy world. Single threaded non-blocking you just have to wait for next execution.

    • @codahighland
      @codahighland 3 роки тому +4

      JS isn't even non-blocking unless you go out of your way to use asynchronous programming techniques. If you're trying to do actual computation instead of I/O... Well, to extend the metaphor, the chef might be too busy to take a new order from the waiter.

  • @rjc4370
    @rjc4370 3 роки тому +3

    Having every web browser implement Emca Script made JS truly portable. The web browser is the hero.

  • @dream_emulator
    @dream_emulator 2 роки тому

    Cool to see someone explain the tools we use daily with proper passion 👏

  • @miguelangelromerogutierrez9626
    @miguelangelromerogutierrez9626 3 роки тому

    Fascinating explanation! Love this channel since now! Hope to find more history of computer science :)

  • @luisbanegassaybe6685
    @luisbanegassaybe6685 3 роки тому +63

    javascript: started from the bottom now we’re here

    • @dandan7884
      @dandan7884 3 роки тому +7

      a veeeery rocky beginning (when jquery was almost mandatory for standarization)

  • @EvanRustMakes
    @EvanRustMakes 3 роки тому +4

    How convenient because I'm building a system with Node right now. Thanks!

  • @goldfish8196
    @goldfish8196 3 роки тому +1

    I love this episode. Watched several times.

  • @martijnheeroma5492
    @martijnheeroma5492 2 роки тому

    fell in love with Node, done things I could never done before, nice video, looking forward to more of this

  • @DeusGladiorum
    @DeusGladiorum 3 роки тому +151

    Today I learned that Computerphile comments also have flame wars

    • @Alfenium
      @Alfenium 3 роки тому +2

      Sorry, that's my fault.

    • @ephektz
      @ephektz 3 роки тому +29

      It’s mostly a bunch of elitist nerds gatekeeping their precious domain and paradigm. I’m seeing a lot of disinformation in the comments. I thought developers were meant to be intelligent and knowledgeable.

    • @jenaf372
      @jenaf372 3 роки тому +13

      This is not a war. This is just a deserved burning of an abomination. As if JS had any chance XD

    • @DeusGladiorum
      @DeusGladiorum 3 роки тому +21

      @@ephektz Seriously. You can argue the performance costs of a JIT-compilation-based language and there’s certainly issues that need to be resolved, but this attitude sounds just like stories of Assembly programmers scoffing at the introduction of human-readable, high-level languages. There are clear advantages outside of performance.

    • @9a3eedi
      @9a3eedi 3 роки тому +13

      @@DeusGladiorum there are advantages to the developer sure
      But the user suffers

  • @burgy_
    @burgy_ 3 роки тому +20

    Electron is memory hungry out of the box, but I have hope for it's future with people like Discord working to optimize memory usage etc.
    Discord is the gold standard for a React/Electron and React Native app for me.
    Here's to hoping PWA gets better support on iOS & Desktop soon to replace smaller Electron apps that don't need to be in the framework.

  • @TheGiantBeanshow
    @TheGiantBeanshow 2 роки тому

    Would love to see a series on this!! Wonderful stuff

  • @Taurdil
    @Taurdil 3 роки тому +112

    5:32 definitely change the landscape for me. Had to buy an extra 16Gb of RAM. Can we talk about how inefficient our programs are?

    • @duser
      @duser 3 роки тому +14

      Aa they say, unused ram is wasted ram

    • @alexxx4434
      @alexxx4434 3 роки тому +6

      Well something has to push the sales of RAM, right? See, it's working!

    • @i1a2159
      @i1a2159 3 роки тому +4

      16 Gigabits or 16 Gigabytes? Because 8 Gigabytes of RAM is still enough to run Windows 10 and a whole host of applications

    • @MladenMijatov
      @MladenMijatov 3 роки тому +10

      @@i1a2159 Whole host of applications not written in JS+Electron presumably. Otherwise it would be 4.

    • @jort93z
      @jort93z 3 роки тому +1

      ​@@i1a2159 Gigabytes of course. Ram is always measured in gigabyte as far as I know. Also gigabit would be Gbit, GB and Gb both mean gigabyte.

  • @Nors2Ka
    @Nors2Ka 3 роки тому +25

    Computerphile should invite Johnathan Blow to talk about modern computing. That would be a sight to behold.

  • @Glutnix
    @Glutnix 3 роки тому +41

    The web browser really has become the standard way to abstract away as many hardware, firmware and operating system concerns as you can. And JavaScript powers all of that ^_^

  • @kelvinrawson1729
    @kelvinrawson1729 3 роки тому +1

    A very exciting episode of computerophile, if you might call it that ;)

  • @headlights-go-up
    @headlights-go-up 3 роки тому +2

    David's passion and excitement is infectious.

  • @x0r1k
    @x0r1k 3 роки тому +106

    Electron is cool, but so slow and 2-3 apps eats all your RAM and drain your battery.

    • @scose
      @scose 3 роки тому +18

      true except for the "cool, but" part

    • @Soremwar
      @Soremwar 3 роки тому +3

      I wished Electron never existed, it gives JavaScript performance a bad fame

    • @kuroexmachina
      @kuroexmachina 3 роки тому +6

      that's because each electron app is technically a full chrome browser

    • @allie-ontheweb
      @allie-ontheweb 3 роки тому +1

      Also I'm like 95% sure Atom & Electron are completely unrelated applications

    • @dealloc
      @dealloc 3 роки тому +4

      @@allie-ontheweb Electron is a framework, used by and originally written to power Atom, so they are not unrelated.

  • @jfolz
    @jfolz 2 роки тому +4

    Oh yeah NPM is so great and famously has no huge glaring flaws whatsoever.

  • @stachowi
    @stachowi 3 роки тому +1

    This video is fantastic... really enjoy the web app content as a web developer myself.

  • @insideTheMirror_
    @insideTheMirror_ 3 роки тому

    Wow, I learnt so much out of this video. Thanks!

  • @re.liable
    @re.liable 3 роки тому +5

    I'm just starting to learn JS/TS and React, and this totally blew my mind (esp. the fact that VSCode was essentially built with JS lol). It also helped me cement some concepts I'm not totally in the clear about, like node.js being the kind of CLI counterpart for JS

  • @juzujuzu4555
    @juzujuzu4555 3 роки тому +60

    It's hard to imagine worse things than Chromium browser and Javascript based desktop software. Especially on software and components that are used by millions of people. The total amount of wasted resources is kind of insane.

    • @DeusGladiorum
      @DeusGladiorum 3 роки тому +8

      I get where you’re coming from, and there are many chromium desktop apps that do perform like garbage, but your sentiment also shares some parallels with Assembly programmers during the introduction of higher-level languages. Wasted performance can certainly be a worthy trade off for quicker development and maintenance, IMO, but I’m also pretty biased given I don’t actually create desktop apps in the first place haha

    • @Panakotta000
      @Panakotta000 3 роки тому +4

      I think chromium is actually pretty nice... bringing some kind of open standard to the web-front world... not that browser-war stuff... but I'm fully in with you and the JS based desktop software xD

    • @xybersurfer
      @xybersurfer 3 роки тому +7

      @@DeusGladiorum JavaScript isn't higher-level than existing desktop languages though

    • @AkshayAradhya
      @AkshayAradhya 3 роки тому

      @@00O3O1B Chromium is open source. If you don't like the standards you can propose a new one.

  • @bborkzilla
    @bborkzilla 3 роки тому +1

    As a long-term C++ developer, all this HTML5, Javascript, AJAX and all is new to me!

  • @philipmrch8326
    @philipmrch8326 3 роки тому +152

    Well, in C# we use async and await a lot. It's very common these days, so saying that it's all synchronous and blocking is not true...

    • @sacredgeometry
      @sacredgeometry 3 роки тому +9

      Did he say C# was synchronous? What?

    • @thealliedhacker
      @thealliedhacker 3 роки тому +28

      @@sacredgeometry He did say that about .NET, incorrectly

    • @Daktyl198
      @Daktyl198 3 роки тому +35

      C#/dotnet is still a synchronous language by default. You have to actively program it in an async/multithreaded way. Javascript instead is generally event driven, and many things are forced async like database calls with JavaScript promises.
      I still will always choose C# 10/10 times though.

    • @Elite7555
      @Elite7555 3 роки тому +28

      @@Daktyl198 Nothing in JavaScript stops you from writing purely syncrhonous code.

    • @gajbooks
      @gajbooks 3 роки тому +15

      @@Daktyl198 JavaScript is also single threaded, and used to use callbacks as a necessity, like how puny microcontrollers and operating systems still operate using interrupts. Async has been added relatively recently, but barely any longer ago than C# got theirs.

  • @sillyraccoon2895
    @sillyraccoon2895 2 роки тому +3

    Thank You, Salvator Mundi of Computer Science!!.

  • @nixdskilly4786
    @nixdskilly4786 3 роки тому +5

    I have been using Node.JS for a while but never really looked into the history and impact it has had, this video really took me for a ride and makes me feel excited for what is currently happening in the field of web technologies.

  • @barbellbilly
    @barbellbilly 3 роки тому

    Very nicely explained!

  • @tristunalekzander5608
    @tristunalekzander5608 3 роки тому +49

    As a programmer who has started learning react and node.js, I am constantly dreaming of a way that I can do web development but with C# or even C++. Thinking about using Javascript for everything sounds like a nightmare.

    • @gabormiklay9209
      @gabormiklay9209 3 роки тому +3

      Kotlin multiplatform could be interesting then.

    • @user-ez3ei8cd5o
      @user-ez3ei8cd5o 3 роки тому +8

      You should be able to write frontend compiling c# to wasm already.

    • @thealliedhacker
      @thealliedhacker 3 роки тому +7

      I prefer Razor pages without any JS at all, but if you want fancy JS-like interactions, there's Blazor

    • @durnsidh6483
      @durnsidh6483 3 роки тому +5

      Just use wasm. Edit: if your language can be compiled to LLVM, you can compile that to WASM, then run it in anything that runs Javascript with just a bit of surrounding conde to run the WASM.

    • @thealliedhacker
      @thealliedhacker 3 роки тому +1

      @@durnsidh6483 Blazor is a WASM framework...

  • @Kalukaru
    @Kalukaru 3 роки тому +141

    They now Sell JavaScript like they once sold Java. "Platform independent", "Easy to use" and so on.

    • @wk02
      @wk02 3 роки тому +63

      Well, JS is platform independent and easy to use?

    • @danielegvi
      @danielegvi 3 роки тому +49

      "Used by 3 billion devices worldwide"

    • @alexxx4434
      @alexxx4434 3 роки тому +25

      But at what cost?!

    • @berndborte8214
      @berndborte8214 3 роки тому +44

      @@alexxx4434 At the cost of computing power, which is not a limiting factor for most applications nowadays.

    • @alexxx4434
      @alexxx4434 3 роки тому +47

      @@berndborte8214 What if every application starts to eat hundreds of megabytes of memory and CPU resources just to basically do the UI, will then it become an issue?
      We're heading there.

  • @rebeccaritter
    @rebeccaritter 3 роки тому +4

    You can do things asynchronously in C # for anyone who is interested look up the keywords async and await.

    • @jakubkooologic9704
      @jakubkooologic9704 3 роки тому +1

      No, only Javascript can do that 🤣 🤣 🤣 🤣 🤣

  • @stantoniification
    @stantoniification 2 роки тому

    Looking forward to more videos in this vein :)

  • @fonkbadonk2957
    @fonkbadonk2957 3 роки тому +8

    I've been developing with Delphi since ~1999 and never did anything else than event-driven software. This feature is far from new. (Delphi is an IDE that uses a Pascal dialect, and is the direct offspring of Borland Turbo Pascal. And it is very much alive and up to date, contrary to most sentiments I see when these names crop up.)

  • @bondymagnomous3544
    @bondymagnomous3544 3 роки тому +15

    Two hours ago I've been randomly studying this subject and now you release a video about it, lol.

    • @FortoFight
      @FortoFight 3 роки тому

      Yeah, I've been doing Node stuff all day lol

  • @frcrr
    @frcrr 3 роки тому +34

    ...and someone would say "Oh, let's put a browser on top of node.js and it'll allow people to have their computers brought to their knees and molten to a puddle of charred plastic by simply running a webchat application or a text editor!"

    • @SamualN
      @SamualN 3 роки тому +3

      what?

    • @davidgillies620
      @davidgillies620 3 роки тому +2

      @@SamualN Yeah, this is sadly typical of people who've convinced themselves that node.js and JavaScript in 1996 are somehow similar. Modern JS, combined with HTML5 and especially when rendered more type-safe by Typescript, is an incredibly robust and performant language. Very large-scale backend systems use it all over the world.

    • @frcrr
      @frcrr 3 роки тому +14

      @@SamualN this thing the guy blabbers about - a "chromium built-in into a desktop application" - turns simple desktop apps like chat or a text editor into ram-eating monstrosities like discord, Skype, vscode or slack. If you need 2gb of ram just for gui of your IDE, there's something wrong with your paradigm.

    • @MladenMijatov
      @MladenMijatov 3 роки тому +6

      @@davidgillies620 It is incredibly performant. Speed at which it eats RAM is hard to describe with words.

  • @stinkycrinkler
    @stinkycrinkler 3 роки тому +1

    This is really amazing content, thank you computerphile for all that you do! Would love to see some more node and javascript related content! Much love from a big fan - Thank you.

  • @spacecowboy3063
    @spacecowboy3063 2 роки тому +1

    This subject is a series in itself. There are millions of people like me that are just starting in programming and software and many of us entered through the Web Development door.

  • @vitalspark6288
    @vitalspark6288 3 роки тому +11

    Atom isn't now called Electron. Electron is a toolkit for developing applications using HTML, CSS, and Javascript, which run in a modified version of Chromium. Atom is one such application; it's an IDE. Yes, the Electron toolkit emerged from the early work on Atom, and there's an overlap in the development teams, but Electron and Atom are separate products, and Atom is still called Atom.

    • @LaggyKar
      @LaggyKar 3 роки тому +2

      Indeed. Atom is equivalent to VSCode in this regard

    • @kushagrano1
      @kushagrano1 3 роки тому

      I dont't think he was talkig about atom the IDE but acorn atom the computer

    • @pepkin88
      @pepkin88 3 роки тому

      Before being renamed to Electron it was called Atom Shell, he wasn't that much off.

  • @nnmartin94
    @nnmartin94 3 роки тому +7

    Recommend Go to my fellow JS devs. It's a breath of fresh air in some ways, while still being relatively straightforward to pick up.

    • @jawad9757
      @jawad9757 3 роки тому +2

      Inb4 people start shitting on golang under this comment

  • @horrorhotel1999
    @horrorhotel1999 3 роки тому +12

    The one thing I have to say about this video: this was by far les concise and coherent than the other computerfile videos I usually watch. While interesting, I strongly got the feeling this wasn't really prepared, and the presenter was mostly rambeling.
    Still appreciate you putting out content tough

  • @jpsilver3510
    @jpsilver3510 2 роки тому

    Best explanation of threads that I've ever heard

    • @dsantuc
      @dsantuc 2 роки тому +1

      What I think he meant to illustrate with his restaurant analogy was asynchronous processing, as opposed to threads, since JavaScript is single-threaded. A threaded model of his analogy would be hiring a new waiter or waitress for every customer that comes into the restaurant.

  • @SillyMakesVids
    @SillyMakesVids 3 роки тому +194

    So I watched all 12-13 minutes of this video, but I still don't know what node.js is...

    • @danielegvi
      @danielegvi 3 роки тому +122

      A runtime environment for JavaScript, ie. a means to run JS on a computer outside of a browser, with access to filesystem, network, etc. Think "using JavaScript like you would use Python".

    • @SillyMakesVids
      @SillyMakesVids 3 роки тому +17

      @@danielegvi Thank you~

    • @Pyroblaster1
      @Pyroblaster1 3 роки тому +29

      Listen at 4:59, node.js is Google V8 wrapped in some code which allows it to run Javascript application on the command line or desktop in general. node.js is to javascript what CPython is to the Python language.

    • @MladenMijatov
      @MladenMijatov 3 роки тому +18

      Consider yourself lucky.

    • @null-calx
      @null-calx 3 роки тому +7

      Node.js is beautiful, welcome..

  • @pacifico4999
    @pacifico4999 3 роки тому +148

    The problem with Electron is how much memory it uses

    • @wk02
      @wk02 3 роки тому +4

      Maybe something like "tauri" could be used instead?

    • @victorcodesseira
      @victorcodesseira 3 роки тому +18

      It depends on implementation, really. There are plenty of apps that end up using tons of RAM, but the best example of how it can be lightweight is VSCode. But, like everything else, if it depends on implementation, there will be a lot of bad apples.

    • @pacifico4999
      @pacifico4999 3 роки тому +30

      @@wk02 I don't know what are the alternatives today for desktop apps, it's been quite a while since I've made one.
      But I don't think a messaging app like Microsoft Teams should consume 600MB of RAM

    • @danielegvi
      @danielegvi 3 роки тому +27

      @@pacifico4999 I still can't understand how the same company can release both VS Code and Teams. One is lightweight, the other one is just garbage.

    • @jp46614
      @jp46614 3 роки тому +16

      @@danielegvi vscode is really fast but it still uses a lot of memory (i opened up a few c++ files and memory rose to 300mb)

  • @GregoryBates
    @GregoryBates 3 роки тому +2

    The problem that I run into is that enterprise architects at big companies wrote their last line of code in the mid to late 2000’s and haven’t updated their understanding of UI engineering since then. JavaScript, HTML, and CSS aren’t seen as disciplines, but just “web stuff” that anyone can do.

    • @AkshayAradhya
      @AkshayAradhya 3 роки тому

      Just boomers with a boomer mentality

  • @igorthelight
    @igorthelight 3 роки тому +18

    About queuing in JS: it's not like any other language have ability to spawn a new Thread so you wouldn't have to wait until previous command will finish it's job ;-)

    • @iivarimokelainen
      @iivarimokelainen 3 роки тому +3

      event loop isn't same as multithreading. more akin to async/await in c#

    • @Soremwar
      @Soremwar 3 роки тому +3

      Async !== parallel

    • @kuroexmachina
      @kuroexmachina 3 роки тому +7

      concurrency and multithreading are different concepts

    • @marianoamar3867
      @marianoamar3867 3 роки тому +2

      Which most other modern languages also have. Both concurrentcy, multithreading, AND non-blocking IO/Processes

  • @kentw.england2305
    @kentw.england2305 3 роки тому +91

    So, node.js is an important part of dragging the internet bloat into my desktop?

    • @wk02
      @wk02 3 роки тому +14

      Internet isn't necessarily bloated, but the reason why desktop apps consume so much RAM is because they are made using the Electron framework that uses v8 + chromium shebang to run scripts in JIT mode (like node.js). Instead of just running native code directly and not using JS :)

    • @zyansheep
      @zyansheep 3 роки тому +2

      @@wk02 Yee, the _internet_ isn't bloated, it's just the interpreted languages created on top of it (javascript, html, css)
      Edit: i hav sqruare brain

    • @danielegvi
      @danielegvi 3 роки тому +11

      @@zyansheep "dated languages" ah, yes, compared to the languages in which native apps are created, like C, from 1972.

    • @22RH544
      @22RH544 3 роки тому +17

      I personally find Electron apps the single most atrocious things ever created in the digital landscape. The amount of bloat is absolutely abnormal (looking at you Microsoft Teams).

    • @adamjijo
      @adamjijo 3 роки тому +1

      @@22RH544 if it runs fine on most systems and reduces the effort of writing and maintaining code it's not all that bad though right? I mean even I hate the fact that everything is so bloated now but also like, not everything needs to be all that efficient.

  • @PeterWalkerHP16c
    @PeterWalkerHP16c 3 роки тому +32

    AH! The emperor has new clothes again!

  • @kleinesfilmroellchen
    @kleinesfilmroellchen 3 роки тому +1

    I really look forward to each appearance to the computerphile robot invented for Robert Miles' videos.

    • @jacekmowinski
      @jacekmowinski 3 роки тому

      Robert has his own youtube channel btw.

  • @AnoopVargheese
    @AnoopVargheese 3 роки тому +2

    Is there a reason why captions have been disabled for this video? It's not just that there isn't a pre-written set of captions, but the video doesn't even allow the auto-translated speech-recognition captions to be viewed.

  • @pfactum
    @pfactum 3 роки тому +98

    Skype… not everyone remembers it being written in Pascal (I guess?) and not requiring tons of RAM and CPU cycles unlike that pile of Electron-ish software nowadays.

    • @yumeyuki1944
      @yumeyuki1944 3 роки тому +25

      And? It's not 90s anymore. CPUs are fast and RAM is cheap. Sure, a software written in C++ would be faster than a Electron based software, but it would take longer to develop it. On top of that, it most likely would work on only one platform. That's why technologies like React Native are getting popular. Developing this way is cheaper, and due to fast CPUs end users won't notice a big difference (in basic apps). However, I don't think JavaScript will replace C++ when it comes to graphics/audio processing any time soon.

    • @pfactum
      @pfactum 3 роки тому +29

      @@yumeyuki1944 consider not only resources consumption, which is disputable despite the fact that CPUs get faster and RAM - cheaper (remember that joke about software getting slower more rapidly than hardware gets faster? not really a joke though), but also other things like attack surface.

    • @altairbueno5637
      @altairbueno5637 3 роки тому +57

      @@yumeyuki1944 really hate web developers. You use the excuse of simplicity and cheap components just to release garbage software that just drains battery. Shame on you

    • @user-ez3ei8cd5o
      @user-ez3ei8cd5o 3 роки тому +26

      @@yumeyuki1944 Consider the environmental damage due to higher energy consumption. JS programmers are killing the planet 🙃

    • @phantom_stnd
      @phantom_stnd 3 роки тому +13

      @@yumeyuki1944 it may be 'cheap' but it isn't free dude

  • @iminni3459
    @iminni3459 3 роки тому +6

    And now we have Deno!

    • @gloverelaxis
      @gloverelaxis 3 роки тому +3

      Deno really is so much better than Node in almost every way. I really hope it gets more packages created for it.

    • @yt-sh
      @yt-sh 3 роки тому

      I like your profile pic lol

  • @jms019
    @jms019 3 роки тому +1

    Must mention it’s the BBC Micro’s 40th birthday this year. Hopefully this will bring more people to any real event at the Centre for Computing History

    • @Anvilshock
      @Anvilshock 3 роки тому +1

      Uh, it's BBC Micro's birthday _every year._ In fact, it's anyone's or anything's birthday every year that was ever born in some literal or figurative sense.

    • @jms019
      @jms019 3 роки тому

      @@Anvilshock Meant to say 40th of course !

    • @Anvilshock
      @Anvilshock 3 роки тому

      @@jms019 You do know you can edit comments, yes?

  • @Furiends
    @Furiends 3 роки тому

    I think the gist here is that web technologies have been generalized into many applications. In my opinion this has really been true a long time but its evolved over time. In the mid 2000s it was standards that were pervasive. Everything from RSS feeds, XMPP messaging (which power most communications technology for a while) to COLLADA for 3d assets. However now its software libraries and platforms. That is instead of strictly information sharing in a technical setting its a product thats shared. This changes things a bit since the companies that produce these have various motivations for doing so. Broadly though you could call this the age of "apps" that is software that is product or brand focused rather than task or protocol focused. It's about user followings and walled gardens of data.

  • @Coppertiel
    @Coppertiel 3 роки тому +38

    Electron is named "Electron" even though it's really heavy.

    • @GGWP-nx3kn
      @GGWP-nx3kn 3 роки тому +1

      False advertising.

    • @phantom_stnd
      @phantom_stnd 3 роки тому +2

      Should be renamed to neutronium :)

    • @sakon4466
      @sakon4466 3 роки тому

      trying to change quantum physics 🤣🤣

  • @corster8221
    @corster8221 3 роки тому +17

    I needed this, I learned html css php and MySQL over winter break, but I didn’t understand how everything else factored/worked in

    • @excitedbox5705
      @excitedbox5705 3 роки тому +1

      No you only need JS. stay away from node. Don't get yourself tricked into this mess of compiling CSS and HTML.
      Look at TailwindCSS which even though it is "compiled" it is not translated from 1 dialect to another. For php you should get into Symfony and twig. If you do need JS frameworks I wouldn't go past JQuery. Everything beyond Jquery was just trying to be fancy and turned web development into a nightmare.
      I have been doing this for 19 years now and I am close to changing professions because of what has happened to the industry these last 5 years. All these frameworks caused Adobe and others to give up Professional Visual editors like Dreamweaver because you couldn't support the frameworks in any reasonable manner and now we have to do Template alignments in code and tons of refreshes. In addition to working in DOS prompts with a new language/set of commands every month.

    • @corster8221
      @corster8221 3 роки тому +3

      @@excitedbox5705 What’s wrong with css and html? And to be clear, I only know html css php and MySQL, I haven’t touched js yet, I still have yet to understand what a framework is, or even means...
      I also know C++, VisualBasic, and Java, but only in an IDE in school
      I will come back to this comment when I actually get a grasp of what you said, but rn calculus is taking up most of my time

  • @crypticnomad
    @crypticnomad 3 роки тому

    I've been toying around with embedding chrome in rust and using deno instead of node. I've not done anything more useful than a small proof of concept but it is a far smaller download than your typical electron equivalent.

  • @marcelbricman
    @marcelbricman 2 роки тому

    i think your electron/atom memories got the better of you :) actually atom is an editor and the basis for vscode, but electron is a framework that both (and many more apps) are based on.

    • @rickdev1922
      @rickdev1922 2 роки тому

      vscode are built on the top Electron framework... it just javascript(typescript), css and html5

    • @marcelbricman
      @marcelbricman 2 роки тому

      @@rickdev1922 yes - the vid says sth else

  • @pyroghost11
    @pyroghost11 3 роки тому +4

    6:27 the best explanation of asynchronicity I have ever heard!!!!

  • @rikschaaf
    @rikschaaf 3 роки тому +7

    It would be fun if you started a series on programming languages, like from A-Z. It's been a while since you had something that focused on something related to Java, Scala or Kotlin.

  • @GoTeamScotch
    @GoTeamScotch 3 роки тому +1

    Very interesting video. I think I may need to sink my teeth into node.js now. I've been developing for the web for years and have been curious about node.js. I would love to start doing desktop apps, but that C learning curve looks intimidating.

    • @heddospacenegroe1923
      @heddospacenegroe1923 3 роки тому

      you can make desktop apps with python

    • @patricknelson
      @patricknelson 3 роки тому

      It’s so ubiquitous now (and very much adjacent to what you already do) that it definitely won’t hurt if you were to dive in, regardless of what other stuff you’re eventually interested in learning or doing later on. There’s tons of other stuff out there though, too. It’s just that knowing and being well versed in Node.js (or just JS in general, really) is an extremely useful skill, of many in your toolkit.

  • @JSDudeca
    @JSDudeca 3 роки тому +2

    Ryan Dhal's latest project is Deno which is also Transcript, JS, V8 based but has taken out so much silliness in Node. Sad to see no mention here :'(

    • @diablo.the.cheater
      @diablo.the.cheater 3 роки тому

      Because Deno is irrelevant, nobody wants to use it because it has taken out so much that made Node great.

    • @JSDudeca
      @JSDudeca 3 роки тому

      @@diablo.the.cheater Can you provide a couple of examples of what was taken out that is critical to have in the language?

  • @SergeMatveenko
    @SergeMatveenko 3 роки тому +7

    BTW, the most popular plugin for VS Code is the one providing support for Python:)

  • @tomasnemec5680
    @tomasnemec5680 3 роки тому +163

    Sorry but stating that Javascript is non-blocking unlike the other languages (.NET, Java, etc.) is simply misleading. All of these in fact have non blocking operations as well as syntax allowing writing elegant code (async/await in .NET anyone?)

    • @DavidHembrow
      @DavidHembrow 3 роки тому +8

      And it goes back much further than that. e.g. the 1993 NT beta version already strongly encouraged use of asynchronous IO in C / C++ and that remains the case.

    • @KangJangkrik
      @KangJangkrik 3 роки тому +13

      More like event-driven rather than non-blocking. Remember, there is nothing called "async" and "await" back then, nor "Promise".

    • @marianoamar3867
      @marianoamar3867 3 роки тому +9

      I was going to say something similar.
      What JS pioneered was basically getting multithreaded and non-blocking code to the Web Browser. But in Desktop and Server this has existed since computers were powerful enough to actually handle two processes at once

    • @taragnor
      @taragnor 3 роки тому +15

      @@marianoamar3867 JS isn't multithreaded. JS essentially does what many languages traditionally used multiple threads for on one thread using its message loop. In fact, one of the big JS bottlenecks is that it can only use one core (at least unless you use webworkers, but that takes a lot more extra code since they can't share memory).

    • @marianoamar3867
      @marianoamar3867 3 роки тому +3

      @@taragnor I know it wasn't multithreaded (specially with the loop). What I meant is that all these things JS pioneered on, they were all for browser based code (including multithreaded jobs now, because it does have those now).
      JS didn't really create anything new for programming languages, it just brought them to the borwser.
      And don't take that "just" as me being condescending or anything. I find what JS did for client side browser code to be amazing.
      I just take umbrage in suddenly everybody wanting to port JS to server, then to command line, etc; when there are definitely better ways to do those with other languages and tools.

  • @ashikmehermobin9926
    @ashikmehermobin9926 2 роки тому

    I have tried electron, the moment I ran it, I understood a It's chromium tab. It’s awesome

  • @jeromesnail
    @jeromesnail 3 роки тому

    Node is awesome. I just love it so much. People can hate how they want I still love it.

  • @holly_hacker
    @holly_hacker 3 роки тому +8

    The world would be a a much better place if less people used electron. The main reason people have to get 16gb of ram nowadays is because you usually have at least 3 different browser instances running, most of which some electron app because people can't do anything but js nowadays.

    • @randomuser5237
      @randomuser5237 3 роки тому

      Well the world would also be much better if less people were on internet or if less people commented about things they don't understand. But we can't have everything we want.

  • @JamesSmith-cm7sg
    @JamesSmith-cm7sg 3 роки тому +24

    But isn't nodejs terrible for cpu intensive tasks? It's also vulnerable to attacks as if you can block the worker threads the app goes down.

    • @danielegvi
      @danielegvi 3 роки тому +2

      CPU intensive tasks are definitely best left to write in a different language that compiles to something more efficient. But a nice strength of JS is how well it integrates with native modules and webassembly, so you can have the best of both worlds. Also, the app goes down when you block the main thread, not the worker threads, that's just how computers work though.

    • @jp46614
      @jp46614 3 роки тому +2

      I have a production app in node.js and we use clusters to spread the load between all cores which works quite well with CPU intensive tasks.

    • @chrismanning5232
      @chrismanning5232 3 роки тому +6

      @@jp46614 Was going to mention this. We run very CPU intensive tasks across manual node clusters (not autoclustering like PM2, Forever, etc.), and it really just comes down to designing it properly. Node does a lot more than people give it credit for, if used properly.

    • @jp46614
      @jp46614 3 роки тому

      @@chrismanning5232 yeah we do that too. it all comes down to the design and how well you implement it.

    • @JamesSmith-cm7sg
      @JamesSmith-cm7sg 3 роки тому

      @@danielegvi
      What does the main event loop do if all workers are busy? As I understand it you specify the number of workers upfront.

  • @gibbyhart3203
    @gibbyhart3203 2 роки тому +2

    as a full stack dev i was trained on java and angular. Then i got introduced to node.js and I cannot go back. I need one IDE and and can out perform any java backend in half the time.

    • @sjzara
      @sjzara 2 роки тому +2

      You can’t outperform any Java backend. Huge high-performance systems are written in Java (and other JVM compiled languages such as Scala) - Kafka is an example. There are backends which use high-performance databases which are written in Java. The belief that the neat new language you have just learned is the best thing ever is extremely common, as enthusiasm can lead to huge productivity, but the structural and performance limits of a language can’t be wished away.

  • @AssemblyWizard
    @AssemblyWizard 3 роки тому +1

    10:04 npm doesn't stand for "node package manager", but on npmjs.org in the top-left corner you can see what it *could* stand for.

  • @phasm42
    @phasm42 3 роки тому +18

    Typescript has brought sanity to Javascript.

    • @42222
      @42222 3 роки тому

      No it's still transpiled and undebuggable. It will likely get diched when new versions of js come out.

    • @danielegvi
      @danielegvi 3 роки тому +3

      @@42222 If you think it's undebuggable you must have skipped literally every single piece of documentation on it. Source maps are what make any transpiled-to-JS language debuggable, not just TS to JS, but languages like C/C++ compiled to asm.js as well. Also, JS (standardized name EcmaScript, managed by TC39) works on a yearly release process, in which feature proposals are discussed and go through many stages. Amongst the people who contribute to those discussions are people from the TypeScript team itself, which then implement features in the later stages before they are even formally introduced to the standard.
      Plenty of big companies are already using TypeScript today (some are in the process of migrating to it), and when you've got big industry players backing it, it's hard to think it will get "ditched when new versions of js come out".

    • @jp46614
      @jp46614 3 роки тому +2

      weakly typed javascript is easy, but in a production scale app it makes you lose your mind which is where typescript is needed

    • @tomihawk01
      @tomihawk01 3 роки тому

      Which makes it doubly sad that React has won out over Angular.

    • @danielegvi
      @danielegvi 3 роки тому +2

      @@tomihawk01 React has strong TypeScript support though

  • @casperes0912
    @casperes0912 3 роки тому +24

    History was a bit too simplified for my taste; Verging on wrong with no mention of WebKit for example.
    And the bit about the event loop and serial nature of code; You can use threads to "not keep the waiter waiting by the kitchen" in any language, really.

    • @gmes7848
      @gmes7848 3 роки тому +10

      Threads would be "having multiple waiters". It's not the same as async programming.

    • @IrrationalExuberance
      @IrrationalExuberance 3 роки тому +1

      AKA KHTML

    • @efeyzee
      @efeyzee 3 роки тому +1

      @@gmes7848 And how do you think the V8 engine implements that? It uses threads -it's written in C++, you know.

    • @gmes7848
      @gmes7848 3 роки тому +2

      @@efeyzee The implementation doesn't matter. The difference is in the behavior.
      Talking about implementations though, you can have a single-threaded task executor. You do not need threads to implement async.

    • @efeyzee
      @efeyzee 3 роки тому +1

      ​@@gmes7848 You can necessarily do everything JS does through the V8 engine in C++

  • @kahnfatman
    @kahnfatman 2 роки тому +1

    Electron apps (NodeJS) are the memory monsters. Thanks to you NodeJS. When lots people can write softwares, we end up with coffee makers (that function as editors). [satire]

  • @AntonMochalin
    @AntonMochalin 3 роки тому

    It's sooo nice to see so many people hating JS and being unable to do anything with its popularity.

  • @beziko
    @beziko 3 роки тому +5

    Didn't async/await come to JS *from* the .NET/C# ecosystem?

    • @trinidad17
      @trinidad17 3 роки тому

      Yes they existed in C# before JS (.NET 4.5 in 2012 vs ECMAScript 2017), but Futures were proposed in 1977, and there were libraries implementing them way before C# had an async keyword or even node.js existed. Java 5 had FutureTask in 2005, for example. And goes without mention that even based programing has existed way before that.

    • @beziko
      @beziko 3 роки тому

      @@trinidad17 Does Java 5 perform actual async or spawns a separate thread and if you want to (a)wait you'll block it?

    • @MartinOmander
      @MartinOmander 2 роки тому

      That may be (I haven't used in C# recently) but before async/await Javascript let you do async programming with callbacks. I believe that goes all the way back to the late 1990s.

  • @user-yr1uq1qe6y
    @user-yr1uq1qe6y 3 роки тому +5

    It will be interesting to see how long Electron hangs on when .net core finally includes a cross-platform UI.

    • @user-nm4kq5kw4f
      @user-nm4kq5kw4f 3 роки тому +3

      hopefully not long, especially with desktop Blazor coming (using native dotnet under the hood) for all your web-tech-in-a-desktop-application needs

  • @dannycandra
    @dannycandra 3 роки тому +2

    Javascript also run the code sequentiell unless you are doing async stuff like with xhr / promise. This concept is not new in java or dotnet or even in c. It just simplified multithreading. There is even a java lib that mimic the syntax of javascript promise although java has it own implementation called completablefuture.
    Most people choose javascript for its accessibility and community, I use it for its efficiency. Not because its better or faster. But at anytime I would pick typescript over javascript. It just feel more clean and readable. Strong typed or not is not an issue for me.

  • @tibfulv
    @tibfulv 2 роки тому

    I was way ahead of you back in the day, using bash as a CGI-app language. It's always been obvious to me languages have multiple uses.