JavaScript Creator Talks About the Future
mikejuk writes "JavaScript is currently an important language — possibly the most important of all the languages at this point in time. So an impromptu talk at JSConf given by the creator of JavaScript, Brendan Eich, is not something to ignore. He seems to be a worried about the way committees define languages and wants ordinary JavaScript programmers to get involved."
Not so sure I'd agree with that summary - I don't doubt the importance of JavaScript to the modern internet but I'd be more inclined to consider the C's of this world as the main foundation of the industry.
jaymz
its incomplete and stupid at so many parts. i still wait for script type=text/lua or text/python
I know this may be considered radical and groundbreaking for those who design the language but perhaps putting in some way of letting the developer decide if he/she wants to copy an object or just create a new reference to it when doing assignment?
For those who don't know what I'm going on about:
var myObj = new Object();
myObj.foo = 1;
var newObj = myObj;
newObj.foo = 5;
alert(myObj.foo);
That will display a dialog with "5" in it because newObj and myObj are basically the same object which is the opposite of how it works in most other languages that are commonly used these days.
Oh, and there's no magic "DON'T FUCKING DO THAT!" operator either...
Greylisting is to SMTP as NAT is to IPv4
JavaScript isn't even that important to the modern Internet. It's pretty isolated to the Web, and even there it's only seriously used by a small number of sites. It just gets a lot of undeserved hype.
Indeed, C and its derivatives and related languages are in fact the main foundation of virtually all software. For every line of JavaScript in a given web site, there will be hundreds, if not thousands, of lines of C or C++ code doing the real work within the JavaScript interpreter, the web browser, the client's OS, the routers between the client and server, the server's OS, the web server, the back-end web app (or the language it's implemented in), the back-end database server, and so forth.
While I generally don't like stuff coming out ouf technical committees, sometimes the alternative is worse... like in the case of JavaScript.
bullFUCKINGshit.
The problem with javascript is that it is one of the WORST languages and environments. I dare to say Brandan owes the whole industry a great big apology. If he were japanese, there is a traditional act he should perform. Javascript doesn't have types to speak of, doesn't handle numbers very well, I mean seriously "+" appends two numbers? No scope to speak of. It looks object oriented, but has no real notion of classes. No inheritance. All of the features that have made languages "safer" and "easier" to program in, javascript lacks. I can't think of one innovative or positive aspect of javascript, and lament that it is, alas, the only option at this point. Visual Basic is a better language, and I hate VB too.
Javascript is a hack by a person who didn't know better and we are stuck with it. I shake my head. For decades people have been creating new computer languages. ruby, java, perl, erlang, c++, c, pascal, basic, cobol, fortran, etc. All of these had an objective, to allow some some form of expressiveness or simplicity. Yet, javascript is on all the browsers. Irony for sure.
When did it become acceptable to have the content take up only 1/4 of the page width?
While the JavaScript language, development environments and implementations are absolutely terrible, as I see you're well aware, those are not the worst parts of it all. By far, the community is the most atrocious thing related to JavaScript. The people are generally nice enough, but my gosh, are they ever ignorant when it comes to computing.
JavaScript tends to drive away everyone who is even remotely a good programmer, as such people can usually see just how flawed JavaScript is, and they want nothing to do with it. So what we have left over is a bunch of non-skilled "programmers" who think they know what they're talking about, but in reality have absolutely no clue. They continually produce some of the shittiest code that has ever been written.
The scariest part is how they want to start getting involved with server-side development. This was typically one area of web development were good developers could use good technologies to get the job done well. But now the JavaScript community has put together very half-assed Erlang clones like Node.js, and have been hyping them as viable server-side technologies (when they clearly aren't). This is going to be a huge disaster, caused solely by the ignorance of the JavaScript community, and those who are foolish enough to hire such people to develop software.
..but in no way it's the most important programing language of all.
Isn't Javascript flexible enough to let programmers define their own programming styles without the need to tinker with the language proper?
It seems to me most of the innovation in the Javascript space is taking place in libraries/frameworks (like jQuery, Dojo, Scriptaculous, Prototype, YUI, GWT and so on), as it should.
What will the point of some new syntax be?
I'm not a lawyer, but I play one on the Internet. Blog
I hate Javascript. I've hated it since the early days of the web when I saw that it was just a half-assed scripting version of real C-syntax programming languages (take your pick on which one). Web programming is much more complicated than it needs to be due to the combination of a crappy client-side programming language (Javascript, I'm looking at you) and a presentation layer that was never designed to support software (that's HTML lurking in the corner). These two are the foundation of every standard web app made today. The world has evolved this way because they are the least common denominator technologies and because they were easy for the script kiddies who grew up to be today's web programmers.
Just wait until you've had to fix your first Node.js and MongoDB disaster. I'm working with one client to get rid of such a system. It is by far one of the worst gigs I've ever had, and I've had to clean up a whole lot of stupid shit before.
JavaScript barely works as a client-side scripting language, and even then the experience is totally shitty for developers and users alike. Slashdot is a really good example of how JavaScript can absolutely fuck up a site unnecessarily.
But it has absolutely no place for server-side development. It's just not up to the task in any way. It's missing basic language features necessary for large-scale server-side development. Its development tools are atrocious. Its runtime performance is horrible. Node.js is fucking stupid, and that's putting it nicely. Using it to query a data store is an extremely idiotic idea. All in all, it's a massive failure.
JavaScript "programmers" have put together some of the worst and most broken systems that I've ever dealt with, and I've been dealing with horrible systems written using languages like PHP, Visual Basic, PowerBuilder and Perl. JavaScript may be one of the biggest computing disasters of all time.
Slashdot, and most other web sites, were far better without JavaScript. Over successive site "redesigns", Slashdot has become increasingly harder and less-efficient to read, and it's much more of a pain in the ass to post comments now.
One used to be able to view all comments in a story by merely changing a dropdown and clicking a button. Now, in order to do the same, we have to drag that stupid JavaScript "Score" slider thing at least twice, with it usually fucking up and not dragging properly a few times. Then we have to scroll to the bottom of the page and click the "Get More Comments" button. This usually has to be done at least 5 to 10 times, since most stories have a few hundred comments. It's far, far worse than it was before.
I know there's a "classic" mode for registered Slashdot users, but I'm not such a user, and never will be. Even then, I hear it's just the previous not-as-shitty-but-still-shitty version that uses JavaScript, just not as stupidly as the current version.
... how do you really feel?
"Consensus" in science is _always_ a political construct.
I would be embarrassed if created a language of Javascript quality for widespread use. I just wish Python was the standard browser programming language. Heck, PHP or Perl would be a significant improvement!
Maybe the failure was that no one who was tech savvy deemed it worthwhile to create a language that could be popular.
So here's a challenge: instead of bitching about js come up with something that can draw users away from js.
If you can't, then who's the failure?
"Consensus" in science is _always_ a political construct.
Those aren't "innovations". They're merely hacks to get around some serious deficiencies with JavaScript and its browser-based runtime environment.
jQuery, for instance, wouldn't even be useful if the DOM weren't so horribly fucked up, and if JavaScript and DOM implementations didn't vary so much between different browsers.
At logic, it's you.
I don't need to have made any movies to know that Uwe Boll is shit.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
What you emphasise isn't even written correctly. Please retake your grammar classes.
In the whole scheme of things, no, the Web isn't overly important. Yes, it's very visible and very hyped in the media, but it's still a comparatively small part of the Internet as a whole. BitTorrent traffic alone far outweighs Web traffic. Then there are more traditional uses like FTP and email. Voice and video teleconferencing are always becoming more prevalent. Then there's also gaming. Don't forget DNS. And there are many other more technical uses that I know you won't be familiar with.
Sites that use Flash and/or JavaScript heavily tend to be rather useless. Slashdot has gotten progressively worse to use as more JavaScript has been introduced. Likewise, Flash doesn't really add anything useful to the table. We could download and play games long before Flash existed. We could stream videos using RealPlayer and other technologies long before YouTube existed. In fact, those real applications are often much effective to use than the Flash- or JavaScript-based "equivalents". GMail, for example, will never be as usable as real email clients like mutt, Thunderbird, and even Outlook.
iOS is already on its way out. Android is absolutely crushing it. Every sensible developer is moving to Android, and the language there isn't JavaScript. It's Java.
JavaScript is nearly irrelevant in the big picture. As a JavaScript advocate, I know you have trouble seeing that. But that's just because of your ignorance. You just aren't aware of the greater scene. Of course JavaScript will look important to you, because it seems that JavaScript is the only thing that you know. Not everyone is as ignorant as you, however. We see that JavaScript is merely a small turd in a huge toilet.
I don't see where anyone has yet mentioned Doug Crockford's excellent videos on JavaScript. These are all on YUI theater. http://developer.yahoo.com/yui/theater/ All the criticisms mentioned here are discussed in depth. Crockford deals with the good and bad parts of JavaScript from the perspective of years of detailed research on it. And like it or no, JS is available in a useful, common subset on all modern browsers. The whole HTML, CSS, DOM, JavaScript ball of wax is a kludge that happened by the chaos of historic accident. But we are stuck with them, and Crockford's notions of how to do JS right are worth your time in viewing the videos.
C isn't web scale.
Really? Then what language was your Web Browser or the Web server you connect to written with? It's most likely C/C++.
I had to read that title multiple times... Then gave up and read the post, which only confused me further. In case anyone else is as confused as I was, I finally decoded it: Javascript might be in *its* most important time ...but in no way is it the most important programming language of all.
Javascript has first class functions and closures.
function add(x){ // is 42;
return (function(y){ return x+y;});
}
f = add(10);
f(32);
That's the way it works in object oriented programming: objects have states and objects can have multiple names.
If you don't like that, program in a functional programming language, or just stop using "=".
The C++ standards committee has been lost in template la-la land for the last decade. They've focused on features understood by few and used correctly in production code by fewer. Since the discovery that the C++ template system could be abused as a term-rewriting system to perform arbitrary computations at run-time, that concept has received far too much attention. It's an ugly way to program, but it's "l33t". On the other hand, they've been unable to fix any of the fundamental safety problems in the language. C++ is unique among mainstream languages in providing hiding ("abstraction") without memory safety. (C has neither, Simula, Pascal, Ada, Java, Delphi, Erlang, Haskell, Go, and all the "scripting languages" have both.) So there's an example of a committee screwing up.
On the Python side, we have von Rossum. The problem there is that he likes features that are easy to implement in his CPython implementation, which is a naive interpreter, even if they inhibit most attempts at optimization. As a result, Python isn't much faster than it was a decade ago, and is still about 60x slower than C. Attempts to speed it up have either failed or resulted in insanely complex, yet still sluggish, implementations. So that's the "guru" approach.
... you've never heard of ColdFusion ("JavaScript" server-side) or worked with prototype/jquery
JavaScript is a quirky, but powerful language. Sorry, man. You're missing the boat.
which is better? from what i read html5 seems to be too simple. i have played with flash builder 4 and really like flex a lot. i am coming from an oo php background.
BitTorrent traffic alone far outweighs Web traffic.
...and many people locate the BitTorrent they want to use by searching on the web.
Then there are more traditional uses like FTP
...and many people locate the file they want to download by FTP by following a link on a web site (assuming they don't download it using HTTP).
and email.
Which many people now access via a webmail application such as Gmail or Outlook Web Access - and while they aren't going to supplant email anytime soon, people are increasingly using social networking sites like Facebook and Twitter to communicate.
Voice and video teleconferencing are always becoming more prevalent. Then there's also gaming.
...and people don't use the web at all to locate people, find game servers, find out about games or even play them on line?
Don't forget DNS. And there are many other more technical uses that I know you won't be familiar with.
Actually, I've been using the Internet since before the web existed, and I've even written POP and SMTP clients in lovingly hand-crafted C so cut the patronising crap - I do actually know the difference between the web and the Internet. The argument was whether the Web was an important part of the Internet - not whether it was the only use.
Sites that use Flash and/or JavaScript heavily tend to be rather useless. Slashdot has gotten progressively worse to use as more JavaScript has been introduced.
OTOH, sites like Google Maps and Docs use it to great effect. I'd agree that Slashdot is a less than stellar example (and I'm not quite sure why it needs so much scripting to do what it does).
Likewise, Flash doesn't really add anything useful to the table.
Vector graphics and object-based animation that scale nicely without having to be coded from scratch? Its particularly suitable for things like online tests and educational applets. Again, it can be abused by using it for things that could/should be done in plain old HTML - and its use it for animated/interactive ads may be annoying, but that doesn't make it insignificant. Plus, all the people flaming iOS because it doesn't support Flash presumably think its good for something. For my money, it ought to be replaced by HTML5+SVG+DOM+CSS+AJAX+Javascript in the long term, but the development tools aren't there yet.
We could download and play games long before Flash existed.
In a format that would run unmodified on Windows, Mac, Linux on some mobile devices? Well, yes, there is Java - although I've found Flash to be more consistent cross-platform and easier to deliver (the plug-in is a simple download which most people already have, and its trivial to package Flash as stand alone .exe or .app files that run without plugins) and Flash's graphics engine is perfect for simple 2d games. Java may be better for complex stuff Minecraft, but if I wanted to write a poker app I'd choose Flash (until/unless SVG is properly supported across browsers). Plus, Flash is biggest in "on line" games like Farmville, which are tied to web-based social networking.
We could stream videos using RealPlayer and other technologies long before YouTube existed. In fact, those real applications are often much effective to use than the Flash- or JavaScript-based "equivalents".
Sometimes the issue is not just technical. Macromedia/Adobe give away the player plug-in, make their money selling tools to content creators and only bug users when an update to the player is available. RealPlayer were continually trying to push their premium media player software and content on your users. You could tell users to go install Flash player without them coming back and asking if they had to pay (because Real had made the "Free Playe
In a survey of 100 programmers, 111111 thought that duck-typing was a good idea.
Strange thing I tried to read the article and while loading the page I got: Javascript Error Code: 857 Cannot render pages flaming the language it self.
You should have called it refObj. I don't program JS; so take this FWIW but I have to agree with the other posters. I think the "magic" you're looking for is:
I'm sure some JS guy can show us how to write a copy constructor for Object. Not knowing much about the language I'd say the worst case is that it'd be a function full of getter and setter calls.
Why would I want to act as a computing node for every jerk who owns(!) a website and chooses to offload computing tasks via JS onto my box?
In what way is PHP an improvement of JavaScript? That is one ugly kluge of a language.
Democracy is for the people; you only vote once per season and we'll do the rest of the work for you don't have to.
A whole summary of why NoSQL MongoDB is the absolutely best right here compared to RDBMS. Go MongoDB!
http://saveie6.com/
I'm expert in C and assembler programming since more than 20 years.
Javascript is just perfect to write multi-platform and remotely accessible AJAX user interfaces for C/PHP/mySQL applications, despite the lack of true multithreading (although multithreading can be emulated: http://ltiwww.epfl.ch/sJavascript/), and actual differences in CSS implementations and other MS non-interoperability policy bullshit.
With the new chrome JS engine, execution speed is now acceptable.
And with jQuery it's a pleasure to write efficient and reusable cross-browser compatible modules.
C and assembler have nothing to do with "stone age", they are the bottom layers on which are based higher level languages.
Because C follows the assembler concepts, with observation and experience one can easily imagine the assembler code the C code will be compiled into, and write very efficient object code in terms of memory usage and performance.
There were actual reasons that COBOL was more used than, say, ALGOL, although they both became available at the same time, and ALGOL was the better language.
JavaScript is a medium-quality language, with less utility but roughly the same number of flaws as C. What makes it so terrible are the broken tools, broken and old browsers, amateur coders, dumb DOM, and so on.
And what makes all of this worse is the inescapable monopoly it has over client-side web coding.
I18N == Intergalacticization
While i can not say i have a ton of experience using java script, i can say it's good at what it does. It's when you try to make it do something it's not intended to do that you end up with problems. C and C++ are languages that are very good at what they were designed to do. They crate functional programs, that can be easily recompiled to just about any platform. However as i recall JavaScript was designed to make a web-page more interactive not solve the worlds hunger crisis. A tool should be used for it's intended purpose, when you try to use a wrench as a screwdriver you will encounter problems. If your trying to use JavaScript server side then you are just plain using it wrong. It is not the languages fault for your misuse of it. And just because they expanded it so that it can do something does not mean that it should do it. So don't complain about JavaScript not making a good server side language. If you really feel the language is so poor, then go out and design a better one. You can complain after you have completed that. If you still feel you want to complain about a language try WhiteSpace.
As to JavaScript being one of the most important languages of our time, that is utter BS, at best it is an individuals opinion. All of your languages would break down to nothing with out basic machine code. Yes that language no one here even wants to talk about, and mostly resides inside engineering offices next to huge logic diagrams. Granted it's not portable, or even consistent in many cases. But without it all computers would be nothing more than expensive paperweights. On top of that the importance of a language is irrelevant to anything but financial disbursement. Using it in this context is simply a marketing ploy, and distracts the topc from it's real objective.
Javascript the most important language? Give me a break. It has all but RUINED the web. In the late-90s and early 2000s, lots of good, talented and forward thinking folks were trying their darndest to get behind the web standards movement and encourage everyone to create semantic web pages that loaded quickly, looked great and were perfectly functional. But Javascript is like the worst aspects of capitalism. Or handguns. It has been used to pollute, snarl, corrupt and cripple the web. It is used to steal information, to compromise people's privacy. It is slow and buggy. It requires a lot of CPU overhead. It's not efficient. And it's just plain messy. The antithesis of elegance. Anything with the word "java" in it I have come to hate with a passion. The guy who "invented" it should do the world a favor and commit hari-kiri.
So, here is the high level idea (despite the danger of inviting Prolog zombies I'll be using its syntax for the Horn Clause):
Parallelism spawns independent computations.
The Horn Clause:
m(A,B,C):-x(A),y(B),z(C).
expresses AND parallelism spawning 3 independent computations.
The Horn Clause document:
m(A):-x(A). m(A):-y(A). m(A):-z(A).
expresses OR parallelism spawning 3 independent computations.
In an operating system, parallel computations are scheduled for execution, allocating resources according to priorities.
There are also computations which cannot be scheduled until the computations upon which they depend complete. The Horn Clause document:
m(A,B,C):-m(A),m(B),m(C). m(A):-x(A). m(A):-y(A). m(A):-z(A).
expresses 3 AND parallel computations, each depending on 3 independent OR parallel computations.
This kind of data-dependency suspension of scheduling is also handled by operating systems.
By focusing on these constructs:
a radical reduction in semantic complexity can be realized.
Tools
Seymour Cray once said that much of engineering creativity comes from using old tools in never-before intended ways. The same is true of anything. New understanding of a thing's use is a way to create a new tool. Indeed, even when creating a new thing-in-itself as a tool (the ordinary means of creating a new tool), what comes first is its desired use. It is harmful to think about the fact that your hammer can be used as a paper-weight when you are pounding a nail into a piece of wood with a rock.
With that in mind, let us properly-use the Horn Clause.
Branching is properly scheduled parallelism.
Looping is either AND parallel recursion or it is properly scheduled OR parallelism.
Class hierarchy is properly scheduled polymorphism.
Polymorphism is OR parallelism.
Exception handling properly scheduled OR-parallelism.
A database row is cached AND parallelism.
Numbers are duplicate row counts, dimensioned by the conjunction of the dimensions of their columns (some of which may be, themselves be
Seastead this.
Even by the usually-high Slashdot standards, this is holy war is setting a new standard for pointlessness and posturing.
I have seen JavaScript and my mind went numb, tell him he can't scare me no more with his future works.