Many times a programming language is just a tool.. Sometimes it is a differentiator
At Facebook , they have used Erlang mostly for its lightweight concurrency and its actors model concurrency( ErLang calls them Channels; Scala calls them actors)
This has real implications in terms of how many machines Facebook has to buy to support chat; I am sure they cut their hardware requirements by at least half from what they would have needed if they went with a traditional request/response model; Shows how a good architecture means real money saved for hight traffic sites.
If you want to learn how Facebook uses Erlang as a differentiator, go through this presentation
There is a pdf somewhere also which explains the architecture in more detail.
My only question is this : Could a java based NIO approach have delivered similar/same results for Facebook; Is Java threading model so heavy and the semantics of shared memory so ill suited for Facebook chat?