Erlang is getting too big
Tue Oct 14 00:15:24 CEST 2003
Finally the subject comes to light. And sadly enough, 90% of Erlang
users are not able to defend themselves... Why? Because they are not on
the mailing list. When they first study Erlang, they struggle to
understand recursion. Pattern matching is some form of black magic they
do not trust, let alone concurrency. LCs? Let's not even go there. In
the good old days, they would attend three courses over a 6 months
period and have all the time on this planet to learn (Ironically, when
the language was compact). Today, if they are lucky, they might get a 5
day course, OTP included. I work with these people on a daily basis.
They support and maintain Erlang programs, possibly write them as well.
Most enjoy their job, but will not go pondering day and night over
problems and potential solutions like most of us do. At 5pm they clock
off, and until they log on the following morning, Erlang does not even
cross their mind. It was for these people Erlang was originally
developed and kept simple. It was for this reason OTP was developed
(Some parts were successful, others weren't).
Now when there are organizations supporting 20+ erlang products or
systems consisting of millions of lines of code, these issues become
very relevant. These people must have the chance of going into the code,
understanding what is going on, and finding the bugs because development
can not jump in and act as heroes all the time. After all, that is where
70% of the cost of the software cycle is. And to reduce this cost, one
has to stop increasing the complexity of the language. Only well thought
and necessary additions should be included... Things that will simplify
the code, not make it more complex.
Things such as List (In)Comprehensions are powerful if you know what you
are doing. Parameterised modules as well if you are a hacker. But alas,
they do not fit in the jungle of large scale software design for which
Erlang was intended. Concepts such as packages should have integrated in
OTP, as OTP is there to solve these problems. A bit more throughout
should have gone into adding records, extra guards, macros and include
files. And a lot more thought should be put in before adding
parametersed modules and the new type syntax are included.
More information about the erlang-questions