[erlang-questions] node.js vs erlang

Miles Fidelman mfidelman@REDACTED
Thu Jun 19 15:10:03 CEST 2014

Aaron J. Seigo wrote:

>> that's exactly the (non-intuitive) lesson to take away: you can have poor
>> documentation and expect people to do lots of self-training and research BUT
>> if you do these three "simple" things you can still be successful at spreading
>> your tech:

Somehow, I don't think that any of this has much to do with success at 
"spreading your tech."  Maybe at differentiating your tech, but other 
factors dominate which technology people use.

Right of the bat, technology selection is almost always driven by:
1. Absolute dictates of your application environment (e.g., objective-c 
for iPad applications)
2. What your employer or client dictates (current employer builds 
everything in .NET and MSQL stored procedures, there's an awful lot of 
COBOL still out there)
3. A language you learned early, and feel comfortable in - for me, 
that's Fortran or LISP, yes it dates me, today schools seem to teach C, 
Java, and maybe Python
4. After that, you're into the world of picking the most appropriate 
language for the application at hand
- for numerical stuff: Fortran, APL, R, MATLAB
- for mission-critical hard-real-time: Ada (yes, it's alive in both 
aerospace and SCADA)
- for web sites: pick a platform/ecosystem first (notably Drupal, 
WordPress, Joomla, ..) and one usually ends up at PHP or perl (and for 
perl, it's CPAN that makes it)
- now if I'm going to develop a distributed simulator, or a middleware 
platform - Erlang is the obvious choice (and if I didn't already know 
about it, I'd go looking for something like Erlang, and there's only one 
thing I'd find)

Erlang is not taught in mainstream computer science curricula. 
Personally, I think it should be - it covers two concepts: Functional 
Programming, Actor formalism, and it provides a basis for exploring the 
structure of large, complex, highly concurrent, highly available, 
distributed systems.

Beyond that, Erlang is something one actively goes looking for - because 
it provides unique capabilities ideal for particular classes of problems 
that are generally not in the mainstream, and tend to be the purview of 
experienced, senior people.

Personally, when someone says "Erlang is too hard to learn" - I think 
what they're really saying is:
- the concepts are radically different from what I'm used to (e.g., 
functional programming, actors), and/or,
- my application doesn't require capabilities that are unique to Erlang, 
so why bother?

In this context:
> 0. attract: tell everyone what your product is really good at in a very
> simple, positive manner[1]

Erlang:  highly concurrent, highly distributed, highly available, 
near-real-time systems

This kind of narrows the scope rather significantly.  And, when you get 
into this world, people do serious technology assessment and selection 
efforts.  Making Erlang a bit better known, and easier to evaluate might 
help adoption - but that's questionable - my experience is that people 
who are looking for Erlang either know about it, or find it quickly; and 
adoption is driven more by political and business decisions than 
technical ones.

When it comes to the mass market, Erlang is more likely to be buried in 
something else - like a web platform (e.g., Cowboy) or a noSQL database 
(e.g., CouchDB).  In this regard, the messaging does become important - 
but Erlang has very little to do with what makes CouchDB or Cowboy the 
right platform for a job.

>> 1. be positive: greet potential adopters with positivity[1] and they will
>> reflect that back

Well, that's more about the community - and the Erlang community is 
pretty positive, helpful, and welcoming.

>> 2. have a "quick hook": give people something super quick and super easy to do
>> at the very start. this gives them the feeling of accomplishment, even if it
>> is completely trivial[3]. having tasted success (trivial as it may be) they
>> will invest time/energy to get more.
>> by doing those 3 things, nodejs can have a steep learning curve and still
>> succeed in getting lots of users.

Personally, I think that's irrelevant when it comes to Erlang.
- "Hello, World" is pretty trivial in Erlang, as with any other language
- once you get into real work, Erlang is either overkill, or the 
concepts actually require some serious learning

Folks who need Erlang (or something like it) are going in expecting a 
steep learning curve, and are not going to be dissuaded by lack of 
something trivial.

Just one man's opinion, of course.

Miles Fidelman

In theory, there is no difference between theory and practice.
In practice, there is.   .... Yogi Berra

More information about the erlang-questions mailing list