Introduction

ke.han <>
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