rss feed
Any language lucky enough to support all of these must-have features would presumably be accepted much more quickly than less well-endowed languages, and therefore would eventually be wildly popular among developers.
His premise is that any language you invent, unless it has these certain features and is backed by industry heavyweights, is doomed to utter obscurity and therefore failure.This is a familiar refrain. In an excellent series of blog posts on what features a more popular Haskell-like language might have (http://toomuchcode.blogspot.com/2007/02/part-1-programming-and-metaphorical.html), Ryan Brush claims that:
And that:
However, I simply don't accept the premise. It may have been that ten years ago, your choice of languages was restricted by what binaries or VMs your customer's desktops could run. And in that case, the relative popularity of a language really did matter. If you chose a language whose runtime none of your customers could install or use, or didn't come pre-installed on your customer's computers, then you ran the risk of not being very successful.But today, many applications are web apps served off of remote servers. Except for client-side UI code, large swaths of application logic live on a climate-controlled, colocated server that the customer never touches except via HTTP. That means that the server can equally well run Lisp, Python, Befunge, you name it, without having any adverse impact on your customers. As long as it serves up the web application the customer wants, it doesn't matter whether your language is the Next Big Language or the Obscure Dialect Du Jour.Now, before you start getting all in a tizzy, let me state some rather important caveats.I am fully aware that local, native applications aren't going away anytime soon, or ever. And for those, Yegge's Next Big Language will probably be very handy. And yes, I know that he's probably talking about the next version of JavaScript, which will even play a large role in web applications.I'm also aware that some web applications are shipped to customers, and so do have runtime and platform restrictions. Witness Fog Creek's much-lambasted Wasabi.But even so, there will still remain a large contingent of server-side application components that you run on your own servers, and so you'll be able to write those apps in any language you want. In other words, although there will always be many areas of applications in which the language does matter, there will similarly always be many server-side applications in which it simply doesn't.So, if you can use any language you want on the server, does language popularity matter at all for server-side applications? You better believe it does. As Ryan Brush points out, language popularity has a direct impact on whether your risk-averse employer will let you use it at work. Nobody has ever gotten fired for choosing Java.But again, I'm not making an argument that you can happily get by using Bob's Podunk Lisp Variant when you work at IBM or Sun, but simply that there are still some specific areas of application development in which you can use pretty much any language you want. Now, this may be relegated to the server in the form of web apps, and you may have to be working at a smaller and/or less stuck-in-the-mud company to convince your boss to let you use your language of choice, but there still are many areas in which the Next Big Language just doesn't matter one whit.Okay, so then how does popularity affect writing server-side apps for progressive organizations that will let you use something other than Java, C#, or ECMAScript 2007 Enterprise Edition? Well, there's still the question of standard and third-party language libraries, where the network effect has a large impact.For instance, if your language is so obscure that no one's writing libraries for it, then it will be extremely difficult for any developers, new or experienced, to get anything done. In other words, if you have to write your own HTTP client every time you want to pull something down from a URL, because you're only the eighth person who has ever used the language and the first seven used it to write nothing more variations on the Fibonacci sequence, well then you're going to be giving up on it pretty quickly in favor of Java.But if the language happens to be moderately obscure while still supporting enough of a self-sustaining community to contribute, maintain, and document the language's standard libraries, then the language can be useful enough to developers for day-to-day use. Who cares if Microsoft is using your language as long as it's got built-in libraries for doing everything you need to do and runs on all the machines you need it to run on.So unlike Steve Yegge's characterization, that language popularity is an all-or-nothing proposition, there is a fine gradient between total obscurity and complete corporate adoption. And along that gradient there lie varying degrees of usefulness for varying types of software development. If it so happens that your language of choice is just popular enough to be useful for the kind of applications you're developing, then you can continue to code in peace without having to worry about what might be next or big.Oh, and for all you Linux/BSD nuts out there, as an exercise, run through the above argument substituting "OS" for "language". You'll notice that the Next Big OS doesn't matter either.
blog - the Next Big Language doesn't matter
posted by witten on February 11, 2007
In a recent post (http://steve-yegge.blogspot.com/2007/02/next-big-language.html), Steve Yegge describes the features the "Next Big Language" must have in order to take over the world, including things like C-like syntax, dynamic typing with optional static types, and a decent IDE.
When I refer to NBL, the Next Big Language, I specifically mean the next popular language. I.e., a language that you yourself will wind up learning and actually using.
Any language lucky enough to support all of these must-have features would presumably be accepted much more quickly than less well-endowed languages, and therefore would eventually be wildly popular among developers.
But I really need to stop spending time telling people individually why their languages are doomed to fail. Instead, I'll summarize it in today's blog entry.
His premise is that any language you invent, unless it has these certain features and is backed by industry heavyweights, is doomed to utter obscurity and therefore failure.This is a familiar refrain. In an excellent series of blog posts on what features a more popular Haskell-like language might have (http://toomuchcode.blogspot.com/2007/02/part-1-programming-and-metaphorical.html), Ryan Brush claims that:
A language must be usable by mediocre developers to achieve widespread use.
And that:
Widespread adoption is important so good programmers can use better languages in their day jobs.
However, I simply don't accept the premise. It may have been that ten years ago, your choice of languages was restricted by what binaries or VMs your customer's desktops could run. And in that case, the relative popularity of a language really did matter. If you chose a language whose runtime none of your customers could install or use, or didn't come pre-installed on your customer's computers, then you ran the risk of not being very successful.But today, many applications are web apps served off of remote servers. Except for client-side UI code, large swaths of application logic live on a climate-controlled, colocated server that the customer never touches except via HTTP. That means that the server can equally well run Lisp, Python, Befunge, you name it, without having any adverse impact on your customers. As long as it serves up the web application the customer wants, it doesn't matter whether your language is the Next Big Language or the Obscure Dialect Du Jour.Now, before you start getting all in a tizzy, let me state some rather important caveats.I am fully aware that local, native applications aren't going away anytime soon, or ever. And for those, Yegge's Next Big Language will probably be very handy. And yes, I know that he's probably talking about the next version of JavaScript, which will even play a large role in web applications.I'm also aware that some web applications are shipped to customers, and so do have runtime and platform restrictions. Witness Fog Creek's much-lambasted Wasabi.But even so, there will still remain a large contingent of server-side application components that you run on your own servers, and so you'll be able to write those apps in any language you want. In other words, although there will always be many areas of applications in which the language does matter, there will similarly always be many server-side applications in which it simply doesn't.So, if you can use any language you want on the server, does language popularity matter at all for server-side applications? You better believe it does. As Ryan Brush points out, language popularity has a direct impact on whether your risk-averse employer will let you use it at work. Nobody has ever gotten fired for choosing Java.But again, I'm not making an argument that you can happily get by using Bob's Podunk Lisp Variant when you work at IBM or Sun, but simply that there are still some specific areas of application development in which you can use pretty much any language you want. Now, this may be relegated to the server in the form of web apps, and you may have to be working at a smaller and/or less stuck-in-the-mud company to convince your boss to let you use your language of choice, but there still are many areas in which the Next Big Language just doesn't matter one whit.Okay, so then how does popularity affect writing server-side apps for progressive organizations that will let you use something other than Java, C#, or ECMAScript 2007 Enterprise Edition? Well, there's still the question of standard and third-party language libraries, where the network effect has a large impact.For instance, if your language is so obscure that no one's writing libraries for it, then it will be extremely difficult for any developers, new or experienced, to get anything done. In other words, if you have to write your own HTTP client every time you want to pull something down from a URL, because you're only the eighth person who has ever used the language and the first seven used it to write nothing more variations on the Fibonacci sequence, well then you're going to be giving up on it pretty quickly in favor of Java.But if the language happens to be moderately obscure while still supporting enough of a self-sustaining community to contribute, maintain, and document the language's standard libraries, then the language can be useful enough to developers for day-to-day use. Who cares if Microsoft is using your language as long as it's got built-in libraries for doing everything you need to do and runs on all the machines you need it to run on.So unlike Steve Yegge's characterization, that language popularity is an all-or-nothing proposition, there is a fine gradient between total obscurity and complete corporate adoption. And along that gradient there lie varying degrees of usefulness for varying types of software development. If it so happens that your language of choice is just popular enough to be useful for the kind of applications you're developing, then you can continue to code in peace without having to worry about what might be next or big.Oh, and for all you Linux/BSD nuts out there, as an exercise, run through the above argument substituting "OS" for "language". You'll notice that the Next Big OS doesn't matter either.
4 comments
Write a comment!-
Re: the Next Big Language doesn't matter posted by brush on February 11, 2007 11:25 PM
Great points. Server-side development is a fertile area of growth for new languages and this is good thing. Some great languages and ideas are being developed there. Even so, this post does acknowledge the Next Big Language is important in at least some context. This context matters more to some than others, though, so the title saying the next big language doesn't matter might be an overstatement.I do agree with your assertion that many languages not fitting Steve Yegge's criteria will continue to find use, though. -
Re: the Next Big Language doesn't matter posted by witten on February 11, 2007 11:29 PM
brush wrote:Even so, this post does acknowledge the Next Big Language is important in at least some context. This context matters more to some than others, though, so the title saying the next big language doesn't matter might be an overstatement.
Point taken. It's just that "The Next Big Language doesn't matter for colocated server-side applications as long as you work for a moderately flexible employer and use something that has a decent standard library" doesn't have quite the same ring to it. :) -
Re: the Next Big Language doesn't matter posted by John on February 12, 2007 01:26 PM
Bjarne Stroustrup seems to come to the same conclusions as Yegge:
http://public.research.att.com/~bs/SELL-HPC.pdfAlso, who says the platform is the thing constraining the language? Most of the time it's hiring managers and corporate machines. They need to make sure that if they break a person cog, they can throw a new one in there easily.When he says Big, I think he is entirely referring to popularity and whether you will be forced by an employer / customer to use it for any multitude of reasons (most of them related to popularity). -
Re: the Next Big Language doesn't matter posted by witten on February 12, 2007 03:01 PM
There will always be employers that dictate the use of certain popular languages, and I'm not claiming those don't exist or won't continue to exist. I'm simply suggesting that there are some specific areas of application development where you can "get away with" non-Java/non-C#/non-ECMAScript 2007 Enterprise Edition languages. For that development, at those employers, the Next Big Language doesn't matter.