3 ms·
> If I'm better at one language than another, it is at least somewhat harder. Why struggle when you can flow? If you're better with screwdrivers, why struggle
by rootlocus 9y ago
> If I'm better at one language than another, it is at least somewhat harder. Why struggle when you can flow?
If you're better with screwdrivers, why struggle with a hammer?
JavaScript has a painfully slow runtime. Writing servers requires attention to performance and reliability, which javascript is very poor at. If you want to make a toy service and don't care about any of this, go ahead and use your favourite language. But when you want to make something incredibly fast and reliable (like nginx), you'll need to consider another technology.
- coldtea 9y ago>If you're better with screwdrivers, why struggle with a hammer? Hammers and screwdrivers are not general purpose tools in the way that languages are. For most things, most languages are just as fine. It's not like JS is specialized in some very small niche by design -- like e.g. COBOL is. >JavaScript has a painfully slow runtime. I call BS. v8 is one of the fastest dynamic runtimes, at 2x of C or so for lots of tasks, and it totally obliterates Python, PHP, Ruby, and co in speed. And since some of the web's different properties are written in the latter 3, it's certainly not speed (which JS surpassed them far in) that's the issue. >If you want to make a toy service and don't care about any of this, go ahead and use your favourite language. But when you want to make something incredibly fast and reliable (like nginx), you'll need to consider another technology. Nobody writes "nginx" in JS. They write the kind of APIs and apps and services that people also used to write in PHP, Python, Ruby, Go and whatever lang.
- otempomores 9y agoLua
- thehardsphere 9y ago> It's not like JS is specialized in some very small niche by design -- like e.g. COBOL is. Uhh, what? You don't consider "programatically manipulate the DOM in the browser" to be a niche?
- pier25 9y agoAccessing the DOM is not really part of the language specification, but the browser API, no?
- thehardsphere 9y agoAnd the "Browser API" was invented to do what, exactly? And by what mechanism was said API exposed to developers? And whose cocktail napkin was the specification written on?
- coldtea 9y ago>And the "Browser API" was invented to do what, exactly? Whatever it was inveted to do is totally irrelevant, as the "browser API" is not Javascript the language/syntax but just an API (library/module). In fact you could trivially implement it in all kinds of programming languages.
- coldtea 9y agoThere's nothing about JS as a language meant specifically to "programatically manipulate the DOM in the browser". Anything it does related to that is just simple library code and methods on the "document", "element", etc objects -- and that's only when run in the browser where those are available (automatically "imported" let's say). Node doesn't even have the "document" object.
- rootlocus 9y ago> I call BS. v8 is one of the fastest dynamic runtimes, at 2x of C or so for lots of tasks, and it totally obliterates Python, PHP, Ruby, and co in speed. Any proof for this? EDIT: According to "The Computer Language Benchmarks Game" JavaScript fares pretty well against Python [1] or Ruby [2] but not really that great against C [3] or Java [4] in the CPU intensive benchmarks. 1 http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=node&lang2=python3 http://benchmarksgame.alioth.debian.org/u64q/compare.php?lan... 2 http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=node&lang2=yarv http://benchmarksgame.alioth.debian.org/u64q/compare.php?lan... 3 http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=node&lang2=gcc http://benchmarksgame.alioth.debian.org/u64q/compare.php?lan... 4 http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=node&lang2=java http://benchmarksgame.alioth.debian.org/u64q/compare.php?lan...
- coldtea 9y ago>JavaScript fares pretty well against Python [1] or Ruby [2] but not really that great against C [3] or Java [4] in the CPU intensive benchmarks. Considering is a non-static, totally dynamic language, with all kinds of dynamicity in it, it does totally fine. 10x to 30x faster than Python, Ruby etc, and 3x to 5x slower than C/Java is totally fast.
- wolco 9y agoMaybe against php 4. PHP 7 is much faster
- coldtea 9y agoIt's just about 2x as fast as PHP5. JS JIT were already many times faster than PHP5. There's no comparison to the complexity, quality, resources and top-notch teams in play in JS JITs (just consider the vendors making them: Google, Apple, Microsoft and Mozilla) and PHP.
- tchaffee 9y ago> If you're better with screwdrivers, why struggle with a hammer? Not a great analogy. A more accurate analogy is switching from one very big toolbox to another very big toolbox. If you are used to one and know where all the tools are, and they have been used so much that the wood perfectly fits your hand, then it's just going to take some time to get used to the new toolbox. I'm not saying it's a hard rule and you should never consider another language. I just answered the question of why someone would want to use javascript on the backend. It's not the only factor, but it's a factor.
- exo128 9y agoGoing further with the toolbox analogy... Imagine we have carpenters and brick layers. Two distinct jobs that maybe have some overlap of tools. We decide that we have a lot more carpenters than brick layers, so we'll take a carpenters' toolbox and add a few brick layer inspired tools to it (but they're not necessarily the same, and some of the tools that can overlap maybe aren't quite as specialized, nuances, nuances, etc.). Now, we can tell our managers that our problems are solved. All of our carpenters can now do masonry work. The root problem of all of this mess is that both of these domains are different. Problems and solutions in the front-end tend to be different than in the back-end. Management is sold on this "everyone is an interchangeable cog now" fantasy they have been chasing for decades and crappy decisions are made. We end up with most developers not really learning at least one of the areas of the full stack very well (and not learning both if they are really striving to under-achieve...). Note: This same thing happened in Java before NodeJS, but in reverse. Back-end developers refused to really learn web development and so we ended up with misguided solutions like GWT and virtually every other high level Java web framework/library. Perhaps I haven't run into the right people, but mostly my experience with other JavaScript devs is they don't even know the fundamentals really (they don't understand scope rules in JS, they don't really understand weak typing, they don't understand JS is single threaded, they don't understand closures very well, etc.). I don't know if this lack of understanding is due to a lack of experience programming at all, or just not really learning JavaScript (many non-JS devs are forced to learn enough JS to get the front-end working -- or at least seemingly working). The thought of lowering the bar on development even further is frightening (Johnny did some web development last year, I'm sure he can transition to writing our back-end API since he knows JS). I'm all for anyone learning and improving as a developer -- and sharing in my passion. What I hate is this false confidence more and more people seem to have with everything and the problems it causes (they don't bother to learn the tools they have or the tools that came before them, they are too lazy to learn a new language/framework/library, and they have extreme NIH syndrome).