Live data from Hacker News

The future of programming languages in a massively concurrent world

news.ycombinator.com

1–10 of 33 posts

The future of programming languages in a massively concurrent world

#1
If, as it appears, whatever-it-is-that-replaces-Moores's-law states that the number of processor cores will double every 18 months from now on, then in 6 years time 32 core machines will be common place.. and the hacker's weapon of choice a gleaming new 64 core Macbook Pro.

It seems to me that in such a world any language that by default addresses 3% or less of the processing capacity will quickly loose popularity and those that embrace concurrency at a fundamental level (not another library) will become more and more relevant. IMO, Joe Armstrong in this (previously submitted) video talks a lot of sense on this issue.--> http://channel9.msdn.com/ShowPost.aspx?PostID=351659

My motivation for posting this is simply that I would love for Arc to succeed in it's objectives. But to be a '100 year language' I imagine it would have to first thrive in the next 10 years; and to do that it must be seen as a great language for tomorrow's world and not today's. From what I've seen so far of Arc I get nothing but good vibes and it would be a shame for it to be sidelined in the multi-core rush just around the corner.

My apologies if this has been discussed before. I am new here, couldn't figure out how to search past articles and Google just returns this home page.

Re: The future of programming languages in a massively concurrent world

#2
check out cilk; http://en.wikipedia.org/wiki/Cilk . i'm not terribly familiar with it, but it extends c++ and adds a few keywords/abstractions to work with concurrency. it's been spun out of its original project at MIT into a startup as well (http://cilk.com/ )

Re: The future of programming languages in a massively concurrent world

#3
I think it's a race:

In one corner are languages like Erlang that have been designed for concurrency.

In another corner are languages with massive user bases, that don't do concurrency very well (Java for example), that will have to undergo modifications to work better.

In another corner, perhaps, are languages that are just now being created. They're the outsiders, but have more agility in their design because they don't have huge user bases.

Re: The future of programming languages in a massively concurrent world

#7
post #3

I think it's a race: In one corner are languages like Erlang that have been designed for concurrency. In another corner are languages with massive user bases, that don't do concurrency very well (Java for example), that will have to undergo modifications to work better. In another corner, perhaps, are languages that are just now being created. They're the outsiders, but have more agility in their design because they…

I think 'race' is one way of looking at it. Another way to look at it is that there will be more than one 'winner'. Just like today, I think in the world of tomorrow people will use more than one programming language. So all of the languages that expect to be around tomorrow will need to evolve into languages for controlling concurrent systems on massively parallel architectures.

You are correct in saying that some languages are simply given as winners.

Erlang is a VERY impressive language from a performance standpoint. That said, it really needs to be used in conjunction with some front end UI language to present the results of all of its processing. Make no mistake about it, if one has so much data that one will need say 32 cores to process it, then a clever presentation layer is a must. Another drawback here is that, for those Erlang programmers who are something other than elite, Erlang will handle all of the locking and synchronization on its own. I think experienced senior programmers see where that one is going. That said, the way Erlang implements concurrency is cool. I like simple!

In my opinion, Java is another clear winner here. From Wall Street systems with US$900,000,000,000 a day in transactions flying through them, to medical imaging systems rooting out cancerous pathologies, to petroleum exploration systems trying to find the precise limits to all of that new Cuban oil, Java is at the center. When it comes to handling massive datasets in a maintainable fashion, Java is second only to the C,C++ languages. Some would even say that C or C++ code is less maintainable than Java. I would say they should hire new C programmers.

Lastly, C, C++ and Assembly will always be around because there will always be someone,(Carmack) who wants to outshine everyone else. And we can all agree that nothing flies like an assembly routine. As a bonus, we can get exacting control over concurrency, synchronization and locking. It may be difficult to believe, but this option is attractive to a certain class of hacker.

Concurrency in todays web darlings, Ruby, PHP, and Python will be challenging. I think someone out there will simply come up with a new language. Or the web guys will switch to Erlang over time. They will run into a data size problem though due to the way Erlang implements concurrency at a low level. It will be interesting to watch them problem solve that.

On the front end, it's easy . . . Microsoft wins. Anyone who understands concurrency in an intimate fashion knows the challenges of getting a scripting language like JavaScript to support it in a satisfactory fashion. Do you lock and synchronize for the developer? Do you let him/her? Do you copy the heap and send messages? What about client side memory in a tabbed browser? The questions go on and on. Java may have somewhat of a chance here, depending how things go, but basically Microsoft will continue to have the majority lock.

Re: The future of programming languages in a massively concurrent world

#8
post #7
post #3

I think it's a race: In one corner are languages like Erlang that have been designed for concurrency. In another corner are languages with massive user bases, that don't do concurrency very well (Java for example), that will have to undergo modifications to work better. In another corner, perhaps, are languages that are just now being created. They're the outsiders, but have more agility in their design because they…

I think 'race' is one way of looking at it. Another way to look at it is that there will be more than one 'winner'. Just like today, I think in the world of tomorrow people will use more than one programming language. So all of the languages that expect to be around tomorrow will need to evolve into languages for controlling concurrent systems on massively parallel architectures. You are correct in saying that some l…

Concurrency in web languages is a non-issue, because each request is independent (or should be, if you have a proper shared-nothing architecture). You simply run multiple processes and give each process a full core. Most FastCGI/SCGI webserver modules have functionality built-in to multiplex among backend processes.

Concurrency in the database is more interesting, particularly since that's where the bottleneck is in many web apps. But that's a C/C++ problem, and many DBMS vendors have already invested a large amount of effort into solving it.

Re: The future of programming languages in a massively concurrent world

#9
post #7
post #3

I think it's a race: In one corner are languages like Erlang that have been designed for concurrency. In another corner are languages with massive user bases, that don't do concurrency very well (Java for example), that will have to undergo modifications to work better. In another corner, perhaps, are languages that are just now being created. They're the outsiders, but have more agility in their design because they…

I think 'race' is one way of looking at it. Another way to look at it is that there will be more than one 'winner'. Just like today, I think in the world of tomorrow people will use more than one programming language. So all of the languages that expect to be around tomorrow will need to evolve into languages for controlling concurrent systems on massively parallel architectures. You are correct in saying that some l…

Concurrency in todays web darlings, Ruby, PHP, and Python will be challenging.

Heard of stackless python? [http://www.stackless.com/]. Eve Online is the highest profile app using it I know of.

Introduction to Concurrent Programming with Stackless Python [http://members.verizon.net/olsongt/stackless/why_stackless.h...]

Re: The future of programming languages in a massively concurrent world

#10
post #9
post #7

Earlier quoted context omitted.

I think 'race' is one way of looking at it. Another way to look at it is that there will be more than one 'winner'. Just like today, I think in the world of tomorrow people will use more than one programming language. So all of the languages that expect to be around tomorrow will need to evolve into languages for controlling concurrent systems on massively parallel architectures. You are correct in saying that some l…

Concurrency in todays web darlings, Ruby, PHP, and Python will be challenging. Heard of stackless python? [ http://www.stackless.com/ ]. Eve Online is the highest profile app using it I know of. Introduction to Concurrent Programming with Stackless Python [ http://members.verizon.net/olsongt/stackless/why_stackless.h... ]

Stackless is interesting, but I found it to be a little unwieldy when I wrote a volume visualization test. When each task needs access to the entire volume of data, Stackless gets REALLY slow. I didn't look through the Stackless internals the way I looked into Erlang, but the slowdown was undeniable.

Again, for massive datasets, accessed by many cores over a massive number of threads, it needs a little more development.

TEST ALGORITHM:

Standard Volume ray casting. Each pixel processed separately. Ray casted through volume with alpha based early ray termination.

Post reply on HN