The good:
- Concurrency #1 implementation detail
- Runtime reload of code
- Shell
- Atoms
- Pattern matching parameter over loading / conditional methods
- Message passing as core part of language is easy and wonderful
- Monitor / Subervisor to restart services that fail
The bad:
- Strings (this is pretty bad since it is the most used datatype)
- Contextual termination ",", ";", "." can all terminate a line / function (I almost like it but don't)
- Syntax is 30 years old and has not aged well
- Immutable types
Erlang make concurrency very easy in some ways by making a lot of other programming very difficult. Writing simple service oriented things like key/values stores or simple, reliable CRUD task it is perfect for. Where as for algorithms, string processing and other complex operations it is a poor solution for. Unfortunately I don't have many concurrent distributed problems where the difficult part is getting the concurrency right. However I now understand why databases like CouchDB and Riak are written in erlang. At the moment I am not writing a lot of simple services however I can see how it would be helpful in the future for simple services.
nice....!
ReplyDelete