Three years ago, Steve Yegge published an article titled The Next Big Language. He described a language of future as:
- having C-like syntax;
- fast;
- garbage collected;
- with dynamic typing;
- with debugger, IDE, and refactoring tools;
- supporting usual modern features such as regular expressions, associative arrays, closures, and OOP;
- cross-platform (including GUI apps).
Most commenters guessed he talked about JavaScript (with GUI being Dynamic HTML).
So what do we have now?
- JavaScript is widely used for web apps (ranked 10th by tiobe.com and 5th by langpop.com).
- High-performance proprietary and open-source implementations have appeared (Opera Caracan, Mozilla SpiderMonkey, and Google V8). They use just-in-time compilation, hidden classes, and other clever techniques to boost performance, just like Steve Yegge predicted.
- Server-side code can be written in JavaScript (using NodeJS and CommonJS). jQuery is supported on the server side.
- There is an SQLite driver and a package manager for node.js;
- Heroku offers node.js hosting;
- There are popular client-side libraries such as jQuery for DOM traversal, animation, and AJAX, Dojo Toolkit for widgets, TinyMCE for WYSIWYG text editing, etc.
- Mozilla plugins Firebug and Venkman can be used for debugging.
Programming tools are still immature, especially on the server side, but we can expect rapid progress in this area.
So is JavaScript the next big language? What is your opinion?
24 comments
Ten recent comments are shown below. Show all comments
http://www.opera.com/press/releases/2010/03/23_3/
http://my.opera.com/community/countup/
http://www.youtube.com/watch?v=OpTCS3g-cBY
I'm a happy user of Opera Mini on my non-Apple phone, and it is much faster than anything else, thanks to their own good server-side processing of the whole content (before they did it I even considered making a private web pre-processing server to use with my previous, weaker, older wap-based phone). Interestingly enough, that can be major argument for Opera: they don't interpret JavaScript from pages on the client side, and the functionality is technically different from the browser built in in iPhone(!) Still I don't expect they'll manage unless European politicians force Apple to change the rules. But they did so to Microsoft with the famous "browser ballot."
That's one more interesting observation: you have much more chances to win if you can change the rules under which you run. It happens seldom, and if Opera manages it, again it won't be "it just happened" kind of luck. Note that Opera browser is free the last few years and, even more surprising, Opera mini is free on other mobile platforms, even though it involves a lot of servers working on their side. They've spent quite a lot of money up to now!
"Why Chatroulette Is More Than Just Penises"
http://mashable.com/2010/03/28/chatroulette-2/
"We may think of Jon Stewart’s satirical review of the service as jumping the shark, or the beginning of the end, but it’s really just a sign that Chatroulette has permeated into pop culture. With upwards of 1.5 million visitors a day, that notion is fast becoming inescapable."
"Chatroulette Creator Reveals Himself To NYT As 17-Year-Old Russian Boy"
http://www.geekosystem.com/andrey-ternovskiy-chatroulette-creator/
"According to the report, the man behind the magic is Andrey Ternovskiy, a 17-year-old high school student from Moscow."
Back to the topic of the article: an SQLite driver was created recently for node.js (server-side JavaScript).
Apple banned languages other than Objective-C and C/C++. Windows Mobile 7 will support C# apps only (no native C/C++ code). So, developers will be locked to the chosen platform (Apple or Microsoft). There are serious business applications for Windows Mobile 6 written in C/C++, which will not work with the version 7.
The only language supported everywhere is, again, JavaScript (web applications).
Yes, if most of your processing is server based, it can be acceptable to have only web-based app. Javascript is then still just, in my opinion, a simpler piece of the whole puzzle. However it appears there's advantage in providing customized apps for the new platforms in order to use the platform-specific features not easily (or at all?) accessible otherwise.
The first computers I've used were 8-bit ones, so all this somehow familiar to me. There was BASIC then but practically all commercial software had to be fully platform-specific and in assembly. Today small platforms, which are sensitive to the resources used are becoming important again. For me good programmers (in engineering sense) are the ones capable of using the maximum of the resources/platform and capable of targeting something new fast. It's still orders of magnitude easier to work today. Bill Gates illegally used the mainframes on his university to develop the code for his first 8-bit computer target.
http://www.youtube.com/watch?v=hE7k0_9k0VA#t=03m00s
At the same time on another side Google is again in the news for promoting possibility of running delivered native binaries inside of your Chrome browser.
I still believe there's no need searching for "the one and only big one that will rule them all" it can give you a nice warm feeling if you're believer but it won't help you in any way.
But it's good following new developments. You have to know about new technologies and even more targets. Simply by deciding "only this will be enough for me" you limit yourself. And if you say "I won't limit myself" then the search for "the one and only big one" simply doesn't have sense. You only always decide what you're doing next based on the possibilities, preferences and expected benefits you see at the moment you're starting the project. Of course the simplest way to do something, when everything is estimated, should win.
JavaScript is, certainly, not the only language; the linked article mentions this ("Babel, not Esperanto"). But it's very important now.
As for Google Native Client, it's a great technology, which will be useful for graphic-intensive web apps and games. But it won't replace JavaScript in other areas (e.g., Google Docs word processor or GMail), because JS is already fast enough for them. BTW, Native Client needs a JavaScript wrapper around native code to work. So you have to learn JavaScript, again :)
Peter,
I am sending You the link to my article about a simple virtual machine created in JavaScript, inspired by your articles.
Here is the link:
http://www.codeproject.com/Articles/417071/JavaScript-Assembler-Language-Specification-JS-ASM
Thank You for excellent article series.
Best regards,
Darko