JavaScript, The Final Frontier(resin.io)
resin.io
JavaScript, The Final Frontier
http://resin.io/javascript-the-final-frontier/
8 comments
Look, everything looks like a nail! Let's use that screwdriver over there as a hammer.
I don't think you understand how that metaphor works... are you trying to say that every problem is the same and developers choose wildly different tools for the job?
I think the commenter is taking a dig at the result of Atwood's Law in application here.
Maybe somebody should coin a new "Law". Something like, "The fact that something can (and apparently therefore will) be programmed in JavaScript doesn't mean that it will be (useful|performant|efficient|high-quality)."
I happen to agree with him. Just because something can be written in JavaScript doesn't make it a "good idea" for certain domains.
Maybe somebody should coin a new "Law". Something like, "The fact that something can (and apparently therefore will) be programmed in JavaScript doesn't mean that it will be (useful|performant|efficient|high-quality)."
I happen to agree with him. Just because something can be written in JavaScript doesn't make it a "good idea" for certain domains.
I think he's trying to say that we enjoy trying out new tools in interesting and unintended ways even when it can be pretty obvious a more boring traditional approach would be better. It's a pretty core hacker trait.
"when all you have is a hammer everything looks like a nail"
vs
"Look, everything looks like a nail! Let's use that screwdriver over there as a hammer."
So despite having multiple tools, everything still looks like a nail. Think of your typical boring webapp development that most of us have done a thousand times.
Rather than use the same tools you always have and are familiar/bored to death with it's often quite tempting to use something else to help keep things interesting while hoping that it might actually end up being better than what you've used in the past. Chances are it's not. but that's what learning is all about.
"when all you have is a hammer everything looks like a nail"
vs
"Look, everything looks like a nail! Let's use that screwdriver over there as a hammer."
So despite having multiple tools, everything still looks like a nail. Think of your typical boring webapp development that most of us have done a thousand times.
Rather than use the same tools you always have and are familiar/bored to death with it's often quite tempting to use something else to help keep things interesting while hoping that it might actually end up being better than what you've used in the past. Chances are it's not. but that's what learning is all about.
Sounds to me like he is commenting on two things: many developers only see only type of problem; and many developers have a hard time picking the most appropriate tool any given problem. He's paraphrasing and expanding on the original metaphor by acknowledging our field's desire for standardization as an optimization strategy while introducing irony in the misuse/non-standard use of tools to complete the same function.
I think it's about the perspective that every problem can be solved with a hammer-like-thing, however inefficiently.
I'm still rather amazed that there is such a term as, "hardware hacking." And that it is considered magical. I grew up with computers where programming them was what you did with them. They were hardware. You had to learn at least a little bit of programming to get them to do anything at all.
Which was rather annoying and not terribly empowering for anybody but those interested in programming computers. Due to economics of scale in computing the computers I knew when I started programming have faded into the background and have been replaced by appliances that run apps. Today there are programmers who have years of experience who couldn't tell me what the size of a pointer is on their machine or how a program is executed by the operating system. Javascript is so far removed from the concerns of addressing schemes, allocations and registers that it's fun seeing people move into low-power computers from this point of view as if it's the most natural thing in the world.
We live in frightfully exciting times.
Which was rather annoying and not terribly empowering for anybody but those interested in programming computers. Due to economics of scale in computing the computers I knew when I started programming have faded into the background and have been replaced by appliances that run apps. Today there are programmers who have years of experience who couldn't tell me what the size of a pointer is on their machine or how a program is executed by the operating system. Javascript is so far removed from the concerns of addressing schemes, allocations and registers that it's fun seeing people move into low-power computers from this point of view as if it's the most natural thing in the world.
We live in frightfully exciting times.
I guess I'll step aside the js dominance discussion for now.
Just wanna say what a delightful article.
Just wanna say what a delightful article.
Devices thrive through native, strongly typed, compiled languages, because both are fast and need each other to make each other happy.
Programmers thrive through interpreted languages because it is fast to learn and allows boss and his programmers to craft something quickly to show up for their effort.
Programmers thrive through interpreted languages because it is fast to learn and allows boss and his programmers to craft something quickly to show up for their effort.
> interpreted languages
Being interpreted is an implementation detail. For example, V8 (Chrome's JS engine) doesn't have an interpreter. It compiles to (quick and dirty) machine code right off the bat. Later, the "hot" parts are compiled to better more optimized machine code.
There are also several C interpreters.
Being interpreted is an implementation detail. For example, V8 (Chrome's JS engine) doesn't have an interpreter. It compiles to (quick and dirty) machine code right off the bat. Later, the "hot" parts are compiled to better more optimized machine code.
There are also several C interpreters.
As ahoge points out, interpreted/compiled is an implementation detail.
OTOH, you might have a point if you replaced the first category with "strongly, statically typed" and the latter category with "weakly and/or dynamically typed".
On the third hand, maybe not -- with its type inference, Haskell (and, IME, even Scala, with its much more limited type inference) allow crafting working code with speed comparable to, e.g., Python. Perhaps its not strong/static typing that slows down the dev process so much as implementations of such systems that require lots of ritualistic incantations to the type system.
OTOH, you might have a point if you replaced the first category with "strongly, statically typed" and the latter category with "weakly and/or dynamically typed".
On the third hand, maybe not -- with its type inference, Haskell (and, IME, even Scala, with its much more limited type inference) allow crafting working code with speed comparable to, e.g., Python. Perhaps its not strong/static typing that slows down the dev process so much as implementations of such systems that require lots of ritualistic incantations to the type system.
Small steps towards this: http://www.imdb.com/title/tt0387808/
I find it amazing that programming language regress is considered a progress.
When is this JavaScript idiocy going to end? Is there some kind of conspiracy on HN and reddit where every other day somebody comes along to sing JavaScript's praises? The language has been around for donkey's years and yet every other day we get an announcement about some new square plug has been made to fit into a Javascript round hole.
I mean if JavaScript is so wonderful then why haven't all the important things which could and should have been accomplished with it been done by now? This madness must end.
The amount of time a younger and current generation of programmers have spent futzing around JavaScript simply borders on a cruel, criminal and wastful abuse of their time and talent. So much time trying to solve programs which were fixed in other languages ages ago and inadequately so, simply because it is 1 an interpreter, 2 it is the only one running in the browser (aka THE universal platform)
If Google, Microsoft et al in their desire to rent software, hang on to users data and whatnots are willing to persist with it that's fine, but why should acquiescence to their agenda lead to slavish fanboyism at the altar of Javascript?
Sorry if I have derailed someone's thread or pooped someone's party but the sheer impedance mismatch of this development platform drives me nuts.
I mean if JavaScript is so wonderful then why haven't all the important things which could and should have been accomplished with it been done by now? This madness must end.
The amount of time a younger and current generation of programmers have spent futzing around JavaScript simply borders on a cruel, criminal and wastful abuse of their time and talent. So much time trying to solve programs which were fixed in other languages ages ago and inadequately so, simply because it is 1 an interpreter, 2 it is the only one running in the browser (aka THE universal platform)
If Google, Microsoft et al in their desire to rent software, hang on to users data and whatnots are willing to persist with it that's fine, but why should acquiescence to their agenda lead to slavish fanboyism at the altar of Javascript?
Sorry if I have derailed someone's thread or pooped someone's party but the sheer impedance mismatch of this development platform drives me nuts.
Javascript is ubiquitous on the web. That is a huge advantage it has over other languages. People started using it to do cool things on the web, which is great. "Hey, Javascript is not so bad" is the correct sentiment.
But, I also agree with you. Are people only using it everywhere because it's what they know, or am I missing something that proves it's actually the right tool for all these jobs?
I like Javascript, but every time I see people go gaga over some choppy implementation of 1995 technology in Javascript, I have to laugh.
But, I also agree with you. Are people only using it everywhere because it's what they know, or am I missing something that proves it's actually the right tool for all these jobs?
I like Javascript, but every time I see people go gaga over some choppy implementation of 1995 technology in Javascript, I have to laugh.
JS is like a common cold - annoying, commonplace and still not cured. I mean some diseases are worth than cold, so JS is not so bad.
I have my solution to the problem: Haxe. I write my server and client in the same language as I write my games and other desktop software.
Also, guess what? It's all native code.
Seriously, why don't more people use Haxe? It's amazing.
Also, guess what? It's all native code.
Seriously, why don't more people use Haxe? It's amazing.
It looks great, but: no ReSharper, I don't like JS transpilers, no way my employer will switch to something obscure. Promoting new languages is hard, even Google has a lot of trouble promoting Go and Dart.
> So much time trying to solve programs which were fixed in other languages ages ago and inadequately so, simply because it is 1 an interpreter, 2 it is the only one running in the browser (aka THE universal platform)
This is not a trivial benefit to which further attention can be dismissed as "slavish fanboyism". The biggest strength of JavaScript, by far, is its ubiquity. Without discussing whether it was or was not a waste of time to build such a wide variety of JavaScript-programmable platforms in the first place, this is the reality. With it, you can:
I will agree that the language itself is inelegant, that there are many difficulties with using it in the browser, that reimplementing existing technology atop JavaScript can result in poor performance, etc. But to call it "madness" that people deploy to such a universal platform is silly. The gains are self-sustaining, and at the core (the browser) there is no other choice.
This is not a trivial benefit to which further attention can be dismissed as "slavish fanboyism". The biggest strength of JavaScript, by far, is its ubiquity. Without discussing whether it was or was not a waste of time to build such a wide variety of JavaScript-programmable platforms in the first place, this is the reality. With it, you can:
- Produce "binaries" that are universally executable via the browser platform
- Perform a wide variety of system-software-level functions, such as I/O
- Perform hardware level operations
- Render 3D graphics
- Serve as a compilation target for other languages
In what other language can you write a program which will run on such a combinatorial explosion of operating systems, hardware platforms and CPU architectures, let alone with reasonable performance?I will agree that the language itself is inelegant, that there are many difficulties with using it in the browser, that reimplementing existing technology atop JavaScript can result in poor performance, etc. But to call it "madness" that people deploy to such a universal platform is silly. The gains are self-sustaining, and at the core (the browser) there is no other choice.
> In what other language can you write a program which will run on such a combinatorial explosion of operating systems, hardware platforms and CPU architectures, let alone with reasonable performance?
By that do you mean Android, iOS and Windows?
This what I call acquiescing. The simple fact is that coding in Javascript gives the Big Three access to your raw code, or makes it easier to deobfuscate it. Why have Microsoft brought out TypeScript and Google Dart, if Javascript is so great? Because it is not. Who are the standards bodies besides these 3? Who controls and directs the W3C policies. Extending Javascript to make it easier to work with or supplanting it with a new backwards compatible version shouldn't be a big deal, but of course these 3 will always disagree to disagree so long as it gives them an advantage over mass of developers out there an advantage and forces them through their marketplaces.
By that do you mean Android, iOS and Windows?
This what I call acquiescing. The simple fact is that coding in Javascript gives the Big Three access to your raw code, or makes it easier to deobfuscate it. Why have Microsoft brought out TypeScript and Google Dart, if Javascript is so great? Because it is not. Who are the standards bodies besides these 3? Who controls and directs the W3C policies. Extending Javascript to make it easier to work with or supplanting it with a new backwards compatible version shouldn't be a big deal, but of course these 3 will always disagree to disagree so long as it gives them an advantage over mass of developers out there an advantage and forces them through their marketplaces.
JS is a weird language. There are competing quasi compatible implementations from a few different entities. Meaningful standards have taken a long time to come about. JQuery was the turning point I think.
My point is it's very accessible, getting more features every day and suited perfectly for the client/server model used in most applications today. That's probably a good fit for how we will interact with little embedded devices. Because they will likely connect to a home server.
It's not the best tool for every job, but experimenting is the best way really find out. If nothing else they'll learn from it.
Isn't this what hacking is all about?
My point is it's very accessible, getting more features every day and suited perfectly for the client/server model used in most applications today. That's probably a good fit for how we will interact with little embedded devices. Because they will likely connect to a home server.
It's not the best tool for every job, but experimenting is the best way really find out. If nothing else they'll learn from it.
Isn't this what hacking is all about?
> I mean if JavaScript is so wonderful then why haven't all the important things which could and should have been accomplished with it been done by now? This madness must end.
Well, almost.
Well, almost.
* Web - check
* Mobile - Appcelerator Titanium - check
* Servers - NodeJS - check
* Hardware - TesselIO - check
* Desktop - Windows 8 - check
Did I miss anything?Isnt Resin a server ? maybe you should look for another name , branding collision is never good for new products.