Introduction
ke.han
ke.han@REDACTED
Wed Sep 7 19:55:13 CEST 2005
Saifi,
I'm pretty new to erlang as well (about 6 months). Let me see if I can
answer some of your questions. I assume the list will correct me if
I''m wrong.
Saifi wrote:
>
>Q. [Create more processes than OS supports.]
> Does Erlang process imply threads here ?
> Are the processes (threads) here library managed ?
> Is there a documentation for the user API somewhere ?
>
>
Erlang uses its own processes internal to the erlang VM. This is how
Smalltalk has traditional dealt with processes and also how Jave used to
do it early on. That's where the comparison stops though as erlang
provides for more reliable process scheduling. There are many benefits
to this. One you mention that you are only limited by the OS in terms
of RAM needed to handle the processes. Another benefit is is you can
expect an erlang app to behave the same on different OSes since it
doesn't rely on the native OS process/thread scheduling.
>Q. [Message Passing is "send and pray"]
> Is it UDP based communication ?
>
>
No, I beleive message passing between distributed erlang nodes is tcp.
Message passing internal to a VM uses erlang internal methods of process
communication. Although messaging is not guaranteed, it is more robust
than other alternatives and erlang programming methods mostly ensure
that you can easily know when something fails.
>Q. [Erlang is used in Nortel Alteon SSL Accelerator]
> What feature has been implemented in Erlang ? Is it SSL ?
> (Looked a Nortel Site, but they have no data on Erlang).
>
>
Yeah, companies that sell boxes don't usually worry too much about
telling their customer base about internal technologies utilized.
Erlang has implemented its own tcp stack protocol and ssl libraries.
>Q. [Things in the world don't share data]
> Doesn't this make the program's inefficient ?
> In C programs we have shared data among various threads ?
>
>
Depends on how you write the app. In good OO design, you want
everything encapuslated so that you send in as little data as possible
to a method and only data needed to supply the result is sent back. The
object should shield you from the larger internal data structures it may
use to determine your result. In other words, you almost never want to
expose a large data structure to be accessed among multiple
processes/objects.
In case where you do need to have multiple processes operate on shared
data, elrang has built in support for simple in memery tables (ets),
disk based tables (dets), and a full transactional database (mnesia)
which uses ets and dets as its internal store. Using these facilities,
you can solve almost all your needs to safe mulit process access to
large data structures.
>Misc questions -
>
>Q. Is Erlang a functional programming language ?
>
>
Not purely functional. Its has many functional aspects. Noteably, lazy
evaluation is missing.
>Q. What is the best class of problems to solve with Erlang ?
> (The slides talk about soft real-time systems).
>
>
That is the original use for erlang. But the creators did too good a
job ;-). Now others outside ericsson (myself, for one) are using it for
tradition business applications (web oriented server databases in my case)
>Q. What class of problems *cannot* be solved using Erlang ?
> (eg. with Java we don't do Systems programming).
>
>
You should read the FAQ on www.erlang.org. Also there is much erlang
documentation available. The intro docs talk about these sorts of
issues. As a programmer who spent 6 years building very sophisticated
Java server and client systems, I can tell you I don't miss Java one
bit. Everything I do in erlang is faster to write and more reliable.
erlang can make effiicient use of C libraries (see erlang Interface
docs). This enables you to do "bare metal" programming if necessary.
There are also libraries to eaily connect to Java (see JInterface
docs). Communicating is one of the things erlang does best.
Interacting with other libraries, processes written in any language is
pretty straighforward.
Also, erlang "scales down" pretty well from what I've read on this
list. You can do embedded systems work using low power CPUs with only
about 64MB RAM.
>Q. What are the new books on Erlang ?
> (could find only one on Amazon.com)
>
>
Just a few months ago, I purchased a used version of "Concurrent
Programming in ERLANG" from Amazon. The book is getting dated, but
serves as a very good starting point for learning erlang language
concepts. The first half of this book is available for download in PDF
form at www.erlang.org. Between erlang.org, erlang.se and
trapexit.org, you will find all the docs you need.
>I am keen to learn more about the language and have a
>C/C++/Java background.
>
>
Keep an open mind, read lots of docs, practice erlang through its
interactive shell environment, and read maillist archives. You can
learn alot in very short time.
have fun, ke han
>Thanks in advance.
>
>thanks
>Saifi .
>
>--
>TWINCLING Society www.twincling.org
>freedom of innovation
>
>
More information about the erlang-questions
mailing list