Why erlang is the best language for the Internet
Sat Feb 1 23:31:39 CET 2003
In my last posting I made the following bald statement:
> The OO straight-jacket is a major hindrance to web-based computing
This is a general observation I've made that I haven't seen discussed
much. The Internet introduced, and is furthering, disconnected distributed
computation. It operates by passing stateless messages and requiring
sender and receiver to reconstruct and reproduce an environment to
synchronize their states. Manufacturers are pushing multiple servers,
multi-CPU machines and fast networks to handle all the messaging.
Object-oriented programming assumes a global environment in which all
objects live and communicate with each other, a life-cycle for objects, and
generally static typing enforced by the compiler. Objects / languages end
up having to bolt on some incredibly arcane and complicated way of
streaming themselves for reproduction on another node (e.g., marshalling,
XML, and CORBA). When they arrive on the new node, they find themselves
teleported to another dimension where they can't breathe the prevalent
atmosphere without goggles, helmet, and vacuum assist pack.
It seems to me that the Internet and programming languages are going in
opposite directions. Concurrent, message-based languages are better for
implementing Internet capabilities because they inherently mirror the
structure of the Internet.
Why is this happening?
My only answer is that the Internet allows computers to be manufactured
cheaply because they are interchangeable and so the manufactures push the
appliance / separation concept as far as they can. The HTML / XML
standardization allows Sunday programmers the ability to interface systems
because they can just grab some heavy, slow script off the net that does
the work for them without having to design anything. OO is a hold over
from trying to improve the big iron / big software project days which never
considered being relocated to another machine. Because of the training
required, languages are less likely to change if corporations (and tool
developers) are trying to protect their installed base. The continued push
in the OO direction is because 1) there is a lot of momentum so it won't
slow for a while, and 2) the failures have been associated with programming
in general, or programming teams in general, rather than the language approach.
The fact that universities (in the US at least) nowadays tend to give a CS
degree to a student who has only studied one language (C++ or Java) has
definitely led to a language resistence. The programmer who says "that's
the last new language I will learn", is already retired. Even if I don't
use a new language, I can guarantee that I will adapt some of the concepts
to the languages I do use.
I think erlang needs to point out this discrepancy to gain momentum. Even
though it is over 10 years old, it was designed with the network in mind,
with concurrency and message-passing as its central tenet, and with the
elegance and clarity that makes for a superior language.
More information about the erlang-questions