Erlang for web-developers
ke han
ke.han@REDACTED
Tue Aug 29 17:28:35 CEST 2006
On Aug 29, 2006, at 8:44 PM, Andrés Valenciano wrote:
> ke han wrote:
>> This does add to the erlang sales pitch problem.
>
> Yes it is a problem, some times when others have used only one tool
> for
> everything for years and before that another tool for
> everything...they
> are difficult people to talk to or persuade to change from their
> comfort
> zone about development.
>
> Most of the things I heard were the same that were thrown to the Rails
> guys: pool of people to work with the "technology", "enterprise
> standard" for web apps, blah blah blah (well, not one thing about
> scalability in this case :) )
yes, rails is much of the time a "pay later" solution. Frankly, its
not because rails does anything particularly wrong. It does many
things spot on.
There are two negatives with Ruby on Rails...if you allow me to
grossly oversimplify:
1 - lack of tools for ruby development. You need a Smalltalk like
environ to truly understand and explore RoR code. Rails heavily uses
"meta-programming". Ruby mixins are a core of this technique. Its
great if you allow the magic to just work for you on things that are
well documented. But what happens when you need to push on the
limits of "convention over configuration"? ansrwer: you need to
_know_ what your model, view and controllers are actually inheriting
at run time. Along with the obvious lack of a good debugger, Ruby is
missing the exploratory tools necessary to understand what Rails does
to your code.
2 - concurrency. Rails is a "shared nothing" architecture. This is
absolutely not the same thing as when we say erlang is a "shared
nothing" language. An erlang app shares an enormous amount. The
overall effect of an app well coded in erlang can be very efficient
and scalable. This is possibly my one and only true criticism of the
Rails developers. They are PANSIES!!!! You heard me.... a solid app
framework consists of three major things to support the app developer:
a - declarative programming interface
b - metadata. This stuff in its many forms allows the above
declarative interfaces to do their magic.
c - concurrency and resource management. A good app framework
should bury all issues of concurrency and resource management so that
an app programmer can write seemingly single threaded code and have
the app framework worry about what happens when you go from 1 test
user to 10,000 concurrent real users.
I have written many scalable app frameworks in Smalltalk and Java
that get all three of the above correct. Rails completely sidesteps
the third issue by calling their architecture "shared nothing". This
is pansy, weak minded, schoolgirl programming at its worst!!! ;-) I
realize Ruby doesn't have a great threading model. But its not much
more anemic than a Smalltalk one...and I can tell you that you
absolutely can make it scale in a single VM!!! By deferring this
important issue to high-level HTTP requests which share nothing, you
lose out on a lot.
>
>
>> I think the best way to approach this issue is to think of erlang as
>> your central command and control center. You can spawn an external
>> process to handle non-erlang tools like full text search, image
>> manipulation, SMS gateway, etc... You can do this cheap and easy by
>> just spawning an external process (think of the CGI paradigm) or have
>> the extrenal process connect back to an erlang socket server and keep
>> the external resource alive (think FCGI). Once you see how easy
>> it is
>> to create ad-hoc erlang socket servers to wrapper external tools, I
>> think your fears of not having feature X as a native erlang lib will
>> dissipate.
>
> Maybe one thing to do, could be use an Erlang community web site
> answering these question, giving examples of how to integrate Erlang
> with other tools, just like yours.
I will follow the lead taken by so many others and publish a tutorial
or two in the next two months. I can tell you though that my way of
doing things is directly derived from existing tutorials.. I may be
able to provide yet another concrete example, but some the erlang
gurus have already published great examples of how to solve these
problems. See Martin Logan's recent thread on tutorial organization.
ke han
>
> Thanks for the answers to my post.
>
> -Andrés
More information about the erlang-questions
mailing list