Erlang is a good fit for:
* Irregular concurrency: Task-level, Fine-grained parallelism
* Network servers
* Distributed systems
* Middleware: Parallel databases, Message Queue servers
* Soft Realtime / Embedded applications
* Monitoring, control and testing tools
Not so good fit for:
* Concurrency more appropriate to synchronized parallel execution: Data Parallelism
* Floating-point intensive code (HPC)
* Text Processing / Unicode (Unicode support now much better)
* Traditional GUI (some improvement with wx now)
* Hard Realtime applications
* Extensive interop with other languages/VMs (some improvement here with NIFs and Erjang - Erlang on JVM)
* No Windows 64-bit VM
I using Erlang for the things listed under "not so fit", because it's advantages out-weight some incomvinience.
Erlang is a good fit for:
* Irregular concurrency: Task-level, Fine-grained parallelism
* Network servers
* Distributed systems
* Middleware: Parallel databases, Message Queue servers
* Soft Realtime / Embedded applications
* Monitoring, control and testing tools
Not so good fit for:
* Concurrency more appropriate to synchronized parallel execution: Data Parallelism
* Floating-point intensive code (HPC)
* Text Processing / Unicode (Unicode support now much better)
* Traditional GUI (some improvement with wx now)
* Hard Realtime applications
* Extensive interop with other languages/VMs (some improvement here with NIFs and Erjang - Erlang on JVM)
* No Windows 64-bit VM
I using Erlang for the things listed under "not so fit", because it's advantages out-weight some incomvinience.