8 ms·
> Many are more familiar with the Chrome DevTools console than they are with a Unix command-line prompt. More familiar with WebSockets than BSD sockets, MDN tha
by celeritascelery 6y ago
> Many are more familiar with the Chrome DevTools console than they are with a Unix command-line prompt. More familiar with WebSockets than BSD sockets, MDN than man pages. Bash and Zsh scripts calling into native code will never go away. But JavaScript and TypeScript scripts calling into WebAssembly code will be increasingly common. Many developers, we think, prefer web-first abstraction layers.
Every time I read something like this I realize how much in the minority I am. I am not a web developer. I have never written JavaScript before in my life. I hate working with “web-first abstractions”. I feel like it is just massive bloat on top of true native application. But given the popularity of things like electron, react-native, Node, and Deno I don’t speak for the majority.
And the thing is, I don’t know if I just learned web dev if I would love this new approach to software that is eating the world and I would “get it”. Or if it just exists because JavaScript developers don’t want to learn something new.
- oblio 6y ago> Or if it just exists because JavaScript developers don’t want to learn something new. It's probably a big reason. But if you think about it from the other angle... you don't want to learn Javascript, which would be new to you :-)
- int_19h 6y agoSpeaking for myself, I have already learned JavaScript - I just don't want to have to use it.
- hinkley 6y agoWhat I learned about myself working as a NodeJS developer: I’m okay writing JavaScript as long as I don’t have to spend all day every day writing it.
- joshmanders 6y agoThis is an interesting thing to think about. I was primarily a PHP backend dev for 15 years who only used jQuery to toggle classes on click actions, but decided to try something new and switched to Node in 2015. Node + ECMAScript 2015 just BLEW my mind and was so fun, that not only am I now primarily a Node dev, but I've excelled extensively in the frontend. I've never enjoyed building websites or web apps as much as I have in the last 5 years.
- bluejekyll 6y agoWith WebAssembly, now you don’t have to. You do need a JS shim to load the WebAssembly, but after that, pick your favorite source language that can target wasm.
- k1rcher 6y agoThis is fascinating. As someone who programs primarily in Python, I have been struggling with adapting to a JS-heavy environment in the past several years. I have began utilizing Node + React for frontend use cases but find that my build pipelines become incredibly cluttered and esoteric rather quickly. Am going to explore wasm solutions, thanks :)
- giobox 6y agoI’ve long been of the opinion you must learn JS today regardless of what your preferred language might be - it’s more or less (thanks to browser vendors and the web) the closest thing we have to a “zero” dependency runtime on all platforms. Learning a WASM based workaround to avoid learning JavaScript is not helping you or the products you might want to make. There is a huge ecosystem of existing JavaScript code to adopt or extend in the client out there too. Expecting or wishing the market to bend to your preferred language or style is an often great way to become a very unhappy developer.
- jessaustin 6y agoAs someone who programs primarily in Python, I have been struggling with adapting... Would you mind providing some more details here? After Python packaging drove me batty for the last time, I wouldn't have described the switch to JS/CS/TS as "struggling"? With respect to "build pipelines", you don't have to use grunt, gulp, etc. It's totally fine to have regular bash commands in npm scripts.
- k1rcher 6y agoHm... I think the biggest issues I experience have more to do with frontend design rather than composing JS itself. I love using it as a "one-off" scripting language which usually involves interaction with some sort of an existing codebase. I'm also fairly confident in doing any sort of backend-centric work, in which existing components most likely exist as well (or at the very least something POC-esque to iterate on or scaffold from). With that said I believe most of these difficulties stem from most of my experience being backend-centric roles, so when it comes time to implement a frontend from scratch, I become unsure of where to start. The sheer amount of technologies available and vast amount of flexibility is also very intimidating. However I've been slowly but surely immersing myself in the stack(s), and have found that much like my experience with CSS the best way to learn is to simply do it-- making mistakes and learning from them in my exploratory learning. I do appreciate what you said about build pipelines and feel much better about my current projects :-) quick edit: I think my lack of experience in functional programming is another factor here, however Typescript's object orientated style is very attractive.
- celeritascelery 6y agoTouché. I will admit I am resistant to learning JS. Part of this is that it seems like no one actually "likes" to program in it, they just have to because it is so ubiquitous. But I guess that just goes back to the Bjarne Stroustrup quote: "There are two kinds of programming languages: The ones people complain about and the ones nobody uses."
- ronyeh 6y agoI love it, but I use Typescript, which has a few niceties (e.g., stronger typing) beyond modern JS.
- arcturus17 6y ago> Part of this is that it seems like no one actually "likes" to program in it JavaScript consistently ranks as one of the most loved languages in Stack Overflow surveys... I find plenty of counter-examples of this point on HN too - engineers who have worked across many different stacks and rank JS/TS as one of the best dev experiences they've had (there is one such comment in this comment tree) Anecdotally, I feel as if pre-ES6 a lot of the complaints you read online were from users of the language. Nowadays, it's as if most of the complaints are from people who don't use it. I think there is something to be said about refusing to learn anything but JS, as knowing different languages can be a boon for an engineer, but I believe it's an excellent tool to have in one's belt nowadays.
- richeyryan 6y agoI like to program in JS. I've written non trivial amounts of code in Java, PHP, Clojure and OCaml. I've written approaching trivial amounts of code in Go and Rust. JS has warts, undoubtedly so. But I try to approach it like I would Clojure and it makes the experience much better for me. I think JS has the bones of a Lisp if you're willing to look for them. Sure it doesn't have macros or decent conditional expressions or immutability but using something like Ramda gets you some of the way there. And there are proposals for pattern matching and immutable data structures though they are fairly far off. I think JS is at its worst when people try to code it as poor version of Java or C#. I have a bit of a love hate relationship with Typescript for this reason. Some aspects of its type system are great like being able to make a union out of anything, I wish OCaml had that. But I think denying Javascript's inherent dynamic nature is a mistake. Overall I've learned to ignore its worst parts and just focus on what made it good from the start, being a weird cousin of Scheme that runs in the browser.
- FpUser 6y agoI learned JS when it first showed up. Still write backend servers in C++ and JS libraries to interact with those servers from a browser.
- burlesona 6y agoThey answered this at the end of the article: “The Deno company hopes to enable the millions of web programmers out there to maximally leverage their craft in other domains.” It takes time to learn an ecosystem, and when people know one ecosystem and not another, most people would rather do high skill, high value work in the ecosystem they know than start over as a noob in a new one. The only thing unique about the web / JavaScript land is its ubiquity and size due to its place as the language of the browser. So anyone who can make an abstraction that lets JavaScript developers do stuff outside the browser without learning much new has a virtually guaranteed large audience of developers who are likely to think “I would love to be able to build X, I just don’t have time to learn a new ecosystem.” Those folks are then thrilled to dive in and use the new abstraction. And there are a lot of those people. And that’s why we are all stuck using Electron apps for so much stuff. :) But that doesn’t have to be a bad thing. Electron can evolve to be less of a resource hog, and better alternatives are being tested all the time. The same is true for other non-browser applications of JavaScript. I don’t know if this vision is reality, but I think that it may be that we’re in the early days of a transition toward the browser stack being the new “GUI.” Which is to say, back in the 80s there was a lot of debate around GUIs and whether they were a good idea etc., and while most people liked them to some degree, they also lamented the idea of losing the command line. But in the end, GUIs didn’t shrink the number of CLI tools in the world, rather they increased the size of the domain that computers are used for my making it more accessible to more people. I think that so far the web vs native debate seems to be following a similar trajectory.
- scaladev 6y ago> It just exists because JavaScript developers don’t want to learn something new. Are you sure? I started building a desktop application recently. As much as I abhor Electron and refuse to touch anything built on top of it, there basically wasn't any other choice due to the absolutely massive amounts of libraries written for the web. I threw a couple of them in and it saved me at least 90% of work compared to what I would have to do if I'd chosen Qt (or anything else native). Would I rather spend a week and have something to show to my client, or roll up my sleeves and re-implement everything myself (which would take about half a year before I'd have anything working at all)? (For the record, I didn't downvote you. I consider it a shitty practice to downvote somebody for their opinion, without even replying.)
- IAmNotAFix 6y agoThe web is eating the world because it's the easiest way to ship an application. It has nothing to do with whether developers like to do it or not.
- dgellow 6y agoAnd because web app publishers have full control. If I have a web application, I can update it right now and it will be updated for ALL my users at the same time. No store policies bullshit, no need to somehow notify users that a new version has to be downloaded and installed, no fragmentation of your user base because half of your customers stay at an old version due to whatever reasons out of your reach.
- threatofrain 6y agoBut you don’t get full control, and that’s why people go native. Because platforms rightly distrust web apps. This will likely be true for a long time as security becomes a bigger deal everyday.
- wayoutthere 6y agoAs someone who works with a lot of large businesses; they vastly prefer SaaS delivered over the web these days. Not only does it mean there’s no infrastructure to manage, there are also no deployment / upgrade headaches if you need to roll a client out to a few thousand corporate users. Web apps are also a hell of a lot easier to secure these days (as long as you trust / validate the platform’s security, which should be in the contract anyway). Which is also why a lot of “native” apps are pretty much web apps with some wrappers around platform-native hardware integration.
- dgellow 6y agoYou're talking about control of the hardware/filesystem/etc, I'm talking about control of the application itself.
- 6y ago
- spark3k 6y agoTypescript / Javascript have significant reason to exist in their own right.
- juancampa 6y agoThere's a big difference between "interpreted" and "JIT compiled". Both of these end up JIT compiled in most cases
- marcosdumay 6y ago> Or if it just exists because JavaScript developers don’t want to learn something new. Looks to me like they don't want to write stuff twice, and they would have had to write for the web anyway. The web stack is not good by any measure. The native GUI toolkits are suffering form abandonment, so the web-based toolkits are among the best available (but not at the top). But if you don't have any reason to expect to create web code, your life will be better if you ignore the stack.
- vinay_ys 6y ago> The native GUI toolkits are suffering form abandonment SwiftUI is new. Flutter is new. Both have taken birth recently and have huge investments and usage.
- bin_bash 6y agoElectron and React Native aren't popular because they're in JS. They're popular because you can write the application once and use it cross-platform. Mac/Windows or Android/iOS.
- scotty79 6y agoElectron is popular because when your application is in JavaScript writing and improving plugins for it is a breeze. That was what propelled Atom and VSCode. What you said is valid of course when you look at Slack and such, but you ommited most important cross-platform target. Your app can run on Windows/Linux/Mac .. and the Web.
- fabiospampinato 6y agoIf you consider the web as a platform then you'll see immediately how writing an app in JS rather than in C++ can be advantageous.
- 40four 6y agoRespectfully, your comment is way off topic, and nothing to do with discussing The Deno Company, and what it means for the Deno ecosystem. Not to mention, this is a very worn out, tired complaint that's been talked about ad nauseam. Reading angry swipes at web developers is not very interesting. Ok, you're not a web developer. So you stick to what pays the bills, why would you learn Node or Typescript? Same for web developers, why would they learn C++ or haskell? Some will take interest and cross over, some won't. Who cares? Pretend like Deno doesn't exist and the world will continue to turn.
- ivan888 6y agoI think you took the wrong tone from the parent comment; it sounds like this person was genuinely interested in sparking a real conversation about how people feel about the environment that they spend time in, and whether that could have dramatically shifted based on what they decided to or had to learn
- otde 6y agoI feel like if this person was interested in “sparking a conversation,” they wouldn’t open said conversation with “I hate how bloated web abstractions are, but I guess they’re popular for some reason,” with the exact same digs at electron that have been rehashed in every HN comment section. I agree, to be clear — I use many of said abstractions, and they’re often quite bloated and everything else this person is complaining about. This just doesn’t strike me as someone who’s asking for insight; it’s just complaining, and it’s fine to point that out.
- 40four 6y agoOthers said they didn't get the same tone as I did, so maybe I'm off there. I'm willing to reconsider. I'll just give my opinion on the final sentence which I guess is the conversation we should be on. "And the thing is, I don’t know if I just learned web dev if I would love this new approach to software that is eating the world and I would “get it”. Or if it just exists because JavaScript developers don’t want to learn something new." I think the answer to this is a resounding "No, if you're not a web developer you will not 'just get it'". I don't think one approach or the other is 'better', but it just depends on what your background is and how you got into programming, and that's fine. These tools are meant for web developers. We are talking about the next iteration of NodeJS here. It's the whole point is that it merges web programming with systems programming. So if you're not a web developer, there really is no good reason to jump over unless you are just curious. From the blog post: "The Deno company hopes to enable the millions of web programmers out there to maximally leverage their craft in other domains."
- numpad0 6y agoThe New Way prints money much more reliably. It gets more people involved in the process. It forces deeper coordination across communities in and out of tech, strengthening connections. The old way gets _your_ job done _effortlessly_. idk, I guess that’s not ideal in the meat world.
- bilalq 6y agoThis is a common misconception. Javascript, and the web as a whole, have one of the lowest barriers to entry. You don't need to learn how to use a shell, install a programming language, or anything. You can literally open the developer tools in a browser you already have installed and try playing around with programming. When it comes time to ship, your users already have the runtime ready to go. This low barrier to entry means that many people who are new to software development end up choosing it. Some of these go on to become serious software developers, some learn enough to make a small career in a niche without picking up the skills of a generalist developer, and some keep it as a hobby. There are quite a few people that fall in those last two camps, but there's nothing inherently wrong with that. I'm a fairly seasoned developer with experience shipping things written in Java, Scala, Ruby, Python, Perl, and JavaScript/TypeScript to large and high traffic systems and services. The tooling and developer experience of working with TypeScript is still the most pleasant I've interacted with. On the UI side, it isn't even close.
- de6u99er 6y agoI replaced recently an unreadable bash-script through a small maintainable JS program. It's doing the same thing as the bash script and accepting the same parameters but does not require a black belt in regexp and going through hundreds linux/unix command man pages to understand what it does. I think you'd be surprised how many modern applications are written in JavaScript or Python. One of the more prominent ones is VSCode.
- arcturus17 6y agoThere's that famous Knuth exchange with another programmer where Knuth develops a super-complex data structure and algorithm to solve a problem, and the other programmer responds "that's cool, but I can do that in a single command line by piping three Unix commands". There is a case to be made for programmers being at least familiar with Unix utilities and shell scripting so that they can unlock the superpowers described in that anecdote. However, I largely agree with your sentiment - I pretty much do all of my scripting in JavaScript and Python and would not be particularly happy to have to deal with a large bash script.
- ksec 6y agoIt is time to post this again. The Birth & Death of JavaScript ( 2014 ) https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript https://www.destroyallsoftware.com/talks/the-birth-and-death...
- auganov 6y agoA lot of modern software has to ship a browser version and this simple fact can be all it takes to inform downstream choices. Let's go with WebSockets as an example. You decide you need them in the browser. This will likely mean some other component will have to support them too. By now you need a pretty good reason to reimplement it over something else. If you need a handshake you may exploit the fact that WebSockets open with a standard HTTP request. Your handshake over another socket may look pretty different. DDoS services, proxies etc may support WebSockets but not arbitrary TCP or they may support it differently. A WebSocket "message" doesn't exist in plain TCP, will you make your TCP protocol work the same or will you handle frames differently? Point is - your choice may be between just WebSockets or WebSockets AND something else.
- 40four 6y agoMaybe I got a little too worked up in my other comment. Maybe you didn’t mean the tone that I took your comment as. But in a serious answer to your last sentence ” And the thing is, I don’t know if I just learned web dev if I would love this new approach to software that is eating the world and I would “get it”. Or if it just exists because JavaScript developers don’t want to learn something new.” My opinion is the answer is a resounding “No, you will not just get it”. This is a complicated question of course, but to distill my thoughts down 1) You do not need to view web development as a threat to your skill set. You didn’t say specifically what stack you work in, but I have to believe that you will be able to continue making a living in it. 2) Tools like Deno are specifically designed for and intended for web developers to be able to easily leverage their skill set in other areas like systems. So if your not a web developer, and you don’t have a particular interest in learning web languages/ APIs, then don’t worry about it. Just because it’s trendy right now doesn’t make it a better approach technically speaking. It’s quite possibly worse than the approaches you know. So what I’m saying is this tool isn’t meant for you. And that’s ok. Just because it makes HN front page and web development is huge right now, doesn’t diminish the tech you know to be good. Last sentence of the blog post: ”The Deno company hopes to enable the millions of web programmers out there to maximally leverage their craft in other domains.”