Erlangで言うプロセスとは、実はfiber(aka. micro-thread, nano-thread, pico-thread)*1。
で、fiberの実行コンテキストには、(たぶん)別スレッド、別プロセス、リモート(ネットワーク越し)、があるので、マルチコアCPUを使えば速くなるし、コンピュータを足せば速くなる。そして、どの実行コンテキストで動いているfiberも、Erlangの上からは透過的に操作できる。
「Erlangつかったら1台のPC上でn万プロセス作れたよー」ってのは、効率的なfiberの実装が使える言語ならErlang以外でも可能。ただ、fiberを別スレッドで動かすスケジューラを作るのにはそれなりに手間がかかるし、リモートでってなったらもっと大変。
逆に言えば、その実装を使いやすいライブラリとして用意できれば、他の言語もErlangに対抗可能。で、ScalaがErlangへの対抗馬と言われているのは、Scalaの標準ライブラリにそれが入ったから*2。ただし、効率性は判らない・・・ベンチどっかに落ちてないかな*3
Scalaの強みは、関数型言語の強さを持ちつつ、Javaの型システムと統合しているので、Javaのライブラリが使えること。Erlangが特殊用途向けに開発されたツールであるのに対して、Scalaは一般のプログラミング用に作られている。