Why erlang is the best language for the Internet

Jay Nelson jay@REDACTED
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 mailing list