[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