Scratchbook

Das Leben ist immer anders als die Realität.

Erlang

Claude, 31. Mai 2008, 22:26 Uhr

Warning: Use of undefined constant ri_rand_compare - assumed 'ri_rand_compare' (this will throw an Error in a future version of PHP) in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/random-image-widget/random_image.php on line 129 Warning: Use of undefined constant ri_rand_compare - assumed 'ri_rand_compare' (this will throw an Error in a future version of PHP) in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/random-image-widget/random_image.php on line 130 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match_all(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 700 Warning: Invalid argument supplied for foreach() in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 707 Warning: preg_match_all(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 700 Warning: Invalid argument supplied for foreach() in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 707

erlanglogo1.gif

Es kommt nicht oft vor, dass ich über eine Programmiersprache stolpere, und auf den ersten Blick denke ich: WOW. Bisher ist das zweimal vorgekommen: Bei AutoIt und bei PHP. Jetzt kommt ein weiteres WOW…

Nein, es ist nicht Ruby. Das hat zwar die intuitivste Syntax aller Zeiten, aber: Es ist langsam.
Von Java will ich gar nicht erst reden; dieses Geschwür ist langsam und frisst aber zusätzlich mindestens 2x soviel RAM wie überhaupt im System vorhanden.
C/C++: Damit kann man alles machen, ja. Aber: Wenn man diese Hammersprachen verwendet, verwandelt sich alles in einen Daumen!

Computer wurden in letzter Zeit immer mit noch höherer Taktfrequenz beworben. Doch das zieht auf Dauer nicht. Irgendwann ist Schluss – irgendwann stösst man an Grenzen. Jetzt kommt ein neuer Trend ins Spiel: Mehr Prozessorkerne. Oder wie Google so schön sagt:

Andere Unternehmen dachten, dass große Server der schnellste Weg seien, um enorme Datenmengen zu verarbeiten. Google hat herausgefunden, dass Netzwerk-PCs der schnellere Weg sind.

Es geht immer mehr Richtung Parallelverarbeitung. 2011 werden Prozessoren voraussichtlich 32 Kerne haben. Am CERN entwickelt man gerade an einem World Wide Grid.

Die Welt ist gleichzeitig. Die Welt ist verteilt.

Ich bin auf der Suche nach einer Programmiersprache, die leichtgewichtig und performant ist, auf allen Plattformen läuft und eine kompakte Syntax hat. Eine Sprache, die paralleles Programmieren von Haus aus mitbringt – ohne die üblichen üblen Probleme. Schön wär’s auch, wenn man Prozesse einfach so in ein Netzwerk schmeissen kann, unabhängig davon, ob es sich um ein Windows, Linux oder Mac handelt. Verteilte Systeme ohne Raketenwissenschaft.

Ich glaube ich habe diese Sprache nun gefunden: Erlang.

Erlang wurde ursprünglich für die Programmierung von Anwendungen in der Telekommunikation geschaffen. Die dort vorhandenen besonderen Anforderungen gingen unmittelbar in den Entwurf der Programmiersprache und des Laufzeitsystems ein:

  • Parallelität
  • Hohe Verfügbarkeit
  • Fehlertoleranz
  • Auswechseln von Modulen zur Laufzeit

Schon mal probiert, eine Multithreading-Anwendung zu Programmieren? So richtig mit Semaphoren, Shared-Memory und Deadlocks… Genau. Vergesst es! Erlang macht das alles gratis, by design.

What’s This All About?
It’s about concurrency. It’s about distribution. It’s about fault tolerance. It’s about functional programming. It’s about programming a distributed concurrent system without locks and mutexes but using only pure message passing. It’s about speeding up your programs on multicore CPUs. It’s about writing distributed applications that allow people to interact with each other. It’s about design methods and behaviors for writing fault-tolerant and distributed systems. It’s about modeling concurrency and mapping those models onto computer programs, a process I call concurrency-oriented programming.

Erlang ist eine funktionale Sprache, alles sind Prozesse. Und zwar leichtgewichtige Prozesse. So kann man schon mal 100’000 Prozesse gleichzeitig starten, und dabei vergehen bloss 750 Milisekunden und es ist trotzdem noch Arbeitsspeicher frei. Es spielt auch keine Rolle, ob diese Prozesse auf der lokalen Maschine oder irgendwo im Netzwerk laufen. Ich muss auch nicht das ganze Programm neu kompilieren, sondern nur das betroffene Modul, und kann den Code danach im laufenden Betrieb auswechseln. Ericsson hat mit Erlang einen ATM-Switch programmiert, welcher pro Jahr nur 32ms (Milisekunden!) ausfällt.

Apache dies at about 4,000 parallel sessions. Yaws is still functioning at over 80,000 parallel connections.

Yaws ist ein in Erlang geschriebener Webserver.

Ein paar Code-Vergleiche (alle machen dasselbe):

Einmal in C:
c.png

Dann in Java:
java.png

Und jetzt mit Erlang:

erlang.png

Starten:
compile-run.png

Hat überhaupt schon mal jemand was damit programmiert? Ja, ejabberd ist in Erlang geschrieben. Und es gibt sogar einen 3D-Modeller in Erlang: Wings3D.

Was mir auch gefällt: Die Batterien werden mitgeliefert.
Alles ist mit drin und funktioniert. Compiler, Debugger, Analysetools… Aber auch ein komplettes Datenbanksystem. Selbstverständlich auch verteilt und parallel 😉

Mir gefällt das. Diese Sprache hat Zukunft. Obwohl: Ich muss mich schon ein wenig an diesen funktionalen Programmierstil gewöhnen. Da gibt’s nämlich Funktionen, welchen man Funktionen übergeben kann, die dann wieder Funktionen zurückliefern, oder Variablen, die nicht variabel sind… Raffiniert, aber um das mal zu durchblicken muss man sich ordentlich das Hirni verbiegen.

Nichtsdestotrotz: Das Ding ist geil.

Es gibt übrigens ein Buch: Programming Erlang: Software for a Concurrent World [Thalia]
Und einen Google TechTalk: Erlang
Und einen Chaosradio-Express Podcast: Erlang

http://erlang.org/

rakudave

iiinteresing… muesi moll aagugge

Longneck

hehe..

ajo, s pdf zum buech: Erlang.torrent

Freidenker

die sproch gits scho sit 1987. erikson hets ganz klar uf telecom bedürfnis entwicklet. chasch ja denn mal e präsi vorbereite für unseri winter session 😉

rakudave

das ischs problem an dr burg… kei beamer ^^

Freidenker

dä google tech talk wird ab dr 30min ersch interessant… dä typ isch e schloftablette… aber denn het er endlich über virtualisierig afo rede und ich bi ufgwacht. bi erlang ghöre virtualisierti machine (nodes) zum kernkonzept und chasch mitem integrierte shell alles wüeschte ändere. alles in erlang. omg…. zumindest das isch definitiv _geil_

Longneck

@1987: i weiss.. 20 johr. und jetzt wirds langsam aktuell^^

@präsi: mer chönne’s jo in rollespiel veranschauliche: was passiert, wenn 10 lüt ei füürstell wänn benutze?
erlang-style: jede het sini eigeni füürstell^^

Longneck

@virtuelli maschine: jää, das het ericsson sehr guet gmacht. durch das het erlang si eigene scheduler (und cha drum so krass viel prozess verwalte), isch betriebssystemunabhängig, und das mit em prozess über netzwerk verteile passiert transparent. jääääääääää, i finds zu geil!

Freidenker

bi gspannt wie langs goht bis anderi sproche das au ufgriffe… zumal zukunft ja wirkli nur no z.b. mulicore isch…

Longneck

isch bereits ufgriffe worde – ha libraries gseh für ruby und python, wo erlang-verhalte „simuliere“… typisch. doch die wärde niemols an erlang anecho, wills halt eifach e anderi archidektur/konzept isch. me miessts vo grund uf neu baue.

Longneck

http://www.process-one.net/en/blogs/article/facebook_chat_is_developed_in_erlang/

Unlike a three-guys-in-a-garage startup, we don’t have the luxury of scaling out infrastructure to keep pace with user growth; when your feature’s userbase will go from 0 to 70 million practically overnight, scalability has to be baked in from the start.

s geile an erlang isch au: skalierigsproblem? hmm, fätzä mer doch eifach es paar linux-server meh ins netzwerk.
passt.

Freidenker

heheh… du tönsch wie dr töchti 😉

Longneck

wägem „passt“, gäll! 🙂

nei, i bi grad das erlang buech am duureackere. mann isch das e geniali sprooch!
bi jetzt grad am kapitel: binaries. arbeite mit binärdateie isch glaubs niene eifacher…

bispiel: ipv4 header in variable packe:

<<HLen:4, SrvcType:8, TotLen:16, ID:16, Flgs:3, FragOff:13, TTL:8, Proto:8, HdrChkSum:16, SrcIP:32, …>> = Datastream.

Datastream isch de Binärseich. Dä wird abgfüllt: 4bit in d variable HLen, denn chömme 8bit in SrvcType, denn 16bit in TotLen usw.
Mann! i ha immer dänkt schaffe mit binärdateie isch raketewüsseschaft.. hehe, aber nüm mit erlang!

s geile isch au: chasch alles nach binär konvertiere und über s netzwerk heize. und am andere ändi widr vo binär zruggkonvertiere. um little/big-endian und so züüg kümmeret sich erlang automatisch.

me merkt scho, dass do 20 johr entwicklig dehinter stöhn. de ufbau isch üsserscht guet durchdacht. alles het si platz, sini funktion. nid sones chaos wie bi php… 🙂

und s isch voll uf performance usgleit. und die debugger-tools, und die doku – mmh, vom feinsten! würd me erlang verkaufe welle; die vorteil hätte uf einere verpackigsrücksite nid platz!

lichtgwichtig, performant, parallel, verteilt – i ha scho mängisch dänkt: die sprooch chönt vo google si. het äml viel vo dr google-philosophie drin.

Freidenker

was wotsch ez konkret eigentli drmit code?

Longneck

mol luege.. zerscht wötti mol d sprooch chli kennelerne. denn hani so idee wie e DVD-rip cluster, oder es freelancer-like videochat system. naja, zuekunftsmusik, aber d idee isch do.

Longneck

videovortrag von joe armstrong, designer vo erlang: http://www.infoq.com/presentations/erlang-software-for-a-concurrent-world

Freidenker

han grad luscht mal endli PHP an nagel zhänke und öbis bessers für webby sache zbenutze. bi grad am studiere ob python mit django oder ruby on rails. erlang schiedet gläb us, will für python und ruby gits eifach zu geili frameworks… ez muess i nur no luege wem i e chance geh söll… kennt öber ruby/python guet?

Longneck

i hamer es ruby buech kauft. ruby rockt eifach! aber eigentlich kenni beides ehner weniger.

Warning: count(): Parameter must be an array or an object that implements Countable in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/themes/scratchbook/navigation_bar_bottom.php on line 1