Yes. In fact, CPU's are still increasing in performance exponentially faster than RAM or disk (hard or solid-state) storage.
Fetching something from RAM still takes hundreds of CPU cycles. Even SSD's, which are much faster than hard disks in most metrics, are orders of magnitude slower than RAM.
MRAM(1) will bring memory latency down a good bit, if it catches on and advancements keep getting made. Its still going to lag behind the speed of processors though and the system bus will still be a general I/O bottleneck (especially if the MRAM is not on chip).
SSD and MRAM may cut down the I/O latencies, but they will never eliminate them, so asynchronous/concurrent operations through lightweight threads will still be important.
He also forgets things where independent processing is desirable because it eases modeling the system which you're modeling, eg a friend used Stackless Python to code that zombie outbreak simulation and each zombie got its own green thread because it simplified the simulation.
Of course, he has a point in that the language should allow green threads to be added as a library, rather than being built in, but most languages would actually allow this. Also, Erlang may have lightweight threads, but its still SMP-aware.
> Real programming languages let you implement your own concurrency models.
Yeah! You can write one of those suckers in an all-nighter! It's not like they're tricky or hard to debug or anything. Bring on the Java MonsterTM! Real languages let you use several concurrency models concurrently!
8 comments
[ 2.8 ms ] story [ 32.3 ms ] threadIsn't this obviously wrong, barring some breakthrough in memory latency?
Fetching something from RAM still takes hundreds of CPU cycles. Even SSD's, which are much faster than hard disks in most metrics, are orders of magnitude slower than RAM.
So yeah, this isn't happening anytime soon.
He also forgets things where independent processing is desirable because it eases modeling the system which you're modeling, eg a friend used Stackless Python to code that zombie outbreak simulation and each zombie got its own green thread because it simplified the simulation.
Of course, he has a point in that the language should allow green threads to be added as a library, rather than being built in, but most languages would actually allow this. Also, Erlang may have lightweight threads, but its still SMP-aware.
1. http://en.wikipedia.org/wiki/Magnetoresistive_Random_Access_...
You almost certainly know more about how you want your threads scheduled for your specific workload than the OS does.
Or you could go down the Solaris route with 170 different priority levels http://www.princeton.edu/~unix/Solaris/troubleshoot/schedule...
Yeah! You can write one of those suckers in an all-nighter! It's not like they're tricky or hard to debug or anything. Bring on the Java MonsterTM! Real languages let you use several concurrency models concurrently!