Next Big Language: Sad but true files
Steve Yegge has a long post up on the topic of "the next big programming language". The title of this post comes from this assertion:
Rule #1: C-like syntax
C(++)-like syntax is the standard. Your language's popularity will fall off as a direct function of how far you deviate from it.
There's plenty of wiggle room in the way you define classes and other OOP constructs, but you'll need to stick fairly closely to the basic control-flow constructs, arithmetic expressions and operators, and the use of curly-braces for delimiting blocks and function bodies.
Probably true, regardless of how much I think that cripples a language. For instance: C style syntax pretty much guarantees that you won't have named arguments. Instead of something readable like this:
webServer startOnPort: 80 maximumNumberOfInstances: 10 usingHostName: 'www.somehosthere.com'.No, instead you'll see this:
web_server.start (80, 10, "somehosthere.com");
Which is a sad commentary on the industry, but that's the way it is. Meanwhile, at least things are iterating in the direction of the trail Smalltalk blazed decades ago.
Technorati Tags: programming, dynamic, syntax, smalltalk

Comments
C-like syntax
[Andrew] February 11, 2007 16:41:17.186
web_server.start (80, 10, "somehosthere.com");
can also be written:
web_server.onPort(80)
.maxInstances(10)
.usingHostName("somehosthere.com")
.start();
but its still a compromise, I agree.
Pythonic
[Norman Gerre] February 11, 2007 18:06:39.075
Python-style?
It's something that could be bootstrapped into a lot of languages with C-like syntax, even.
Re: Next Big Language: Sad but true files
[ Michael Lucas-Smith] February 11, 2007 18:33:37.629
Comment by Michael Lucas-Smith
In Javascript, you'd use a hash as the argument to the function, so you'd actually write:
webserver.start({ host: 'www.somehosthere.com', port: 80, maximumNumberOfInstances: 10 });Can you guess the C based language?
[Scott] February 11, 2007 20:07:28.945
Being based on C like syntax doesn't necessarily mean no named arguments.
[webServer startOnPort:80,maximumNumberOfInstances:10 , usingHostName:@"www.host.com"];
(I make no claims on the quality of that example code, I barely program in Objective-C)
[Travis Griggs] February 11, 2007 21:01:05.616
The Objective-C example shouldn't have the commas. The Javascript example is also similar to Ruby. The problem with this approach... performance sucks. See this.
Syntax familiarity isn't all that important
[Stephen Pair] February 11, 2007 23:53:31.952
Nah...the next big language will be the one that is the best for driving the chips of tomorrow. If a Smalltalk VM could do it today, it would unquestionably be the next big language.
Re: the chips of tomorrow
[Jeff Hallman] February 12, 2007 9:23:17.724
For personal computers, dual-core is better than single core, but not nearly as useful as doubling the speed of a single core would be. More than two cores for a PC is mostly useless.
Most programs today are sequential and cannot be readily parallelized. But chipmakers have to do something with their increasing transistor budgets, and there are no easy ways left to increase the speed of a single core. For chips designed to execute C-style languages, the only alternatives are more cores or more cache memory, and there are diminishing returns to both of those.
20 years ago, people thought about making processors designed to run object-oriented languages. Features like tagged data and stack-oriented processing cost more transistors than mainstream C-style processing. If you devoted those extra transistors to speeding up the processors instead, you could get faster in general, which is better than faster for a specialized use. But now that the 'faster in general' increments are getting harder to come by even with massive numbers of transistors, perhaps specialized processors will become a better way to spend them.
Re: Next Big Language
[Dave Cope] February 13, 2007 4:32:53.348
It's interesting how Smalltalk has made me a better Rebol (forth meets lisp?) programmer...here is the Rebol version
webserver [
start-on-port: 80
max-number-instances: 10
using-host-name: "www.somewhere.com"
]
This calls a function (Rebol is not OO) with a block, inside this block the words are assigned values. So, only like Smalltalk on the surface. There is more than one way to skin a cat.
Re: Re: Next Big Language
[ Michael Lucas-Smith] February 13, 2007 5:42:46.285
Comment by Michael Lucas-Smith
I just realised the 'with' command in Javascript (prototypejs.org) would be a good candidate for this conversation too - and it doesn't cost the speed expense of making a hash:
with(webserver) { host: 'www.somwhere.com'; maxNumberOfInstances: 10; startOnPort: 80 }