Tahle anketa je rozšířením ankety, kterou jsme uvedl nedávno. V diskuzi pod minulým příspěvkem bylo navrhnuto, že by by zajímavé zjistit zastoupení jednotlivých jazyků nejen v celkovém měřítku, ale i dle jednotlivých typů projektů, zkušeností vývojářů atd. Přináším tedy tuto velkou anketu ;-)
Dle typu aplikace
Typ aplikace: Malé soukromé weby
Typ aplikace: Menší profesionální webové aplikace (např. firemní webové stránky)
Typ aplikace: Rozsáhlé informační systémy
Typ aplikace: Aplikace s vysokým počtem přístupů
Dle vzdělání
Vzdělání: žádné odborné vzdělání v IT
Vzdělání: Střední škola se zaměřením na IT
Vzdělání: Vysoká škola ze zaměřením na IT
Dle zkušeností s profesionálním vývojem
Profesionální zkušenosti: Žádné (nevyvíjím profesionálně)
Profesionální zkušenosti: 1-2 roky
Profesionální zkušenosti: 3-4 roky
Profesionální zkušenosti: 4-5 let
Profesionální zkušenosti: 6 let a více
Dle typu vývoje
Typ vývoje: Open source projekty
Typ vývoje: Proprietální projekty
Dle cílové platformy
Cílová platforma: Windows
Cílová platforma: Linux, Unix
Opět tam chybí Erlang (ErlyWeb http://erlyweb.org/, YAWS http://yaws.hyber.org/(http://www.sics.se/~joe/apachevsyaws.html)). A kromě toho Haskell (HApps http://happs.org/), Oz (Mozart http://www.mozart-oz.org/), a další. Snad kromě Smalltalku, je to jako se ptát, jestli je lepší se nechat srazit Tatrou nebo Liazkou.
Drahý autore,
s tím se bude asi vyplňovat jenom blázen. Dále nechápu proč je tam JSP 2x a třeba JSF tam není vůbec. Co se týká .NET technologie, tak plete hrušky s jablkama. Tedy programovací jazyk s frameworkem. Správně by tam mělo být pouze ASP.NET. Také nerozumín co myslíte C/C++? ISAM? Modul pod Apache?
Jinými slovy se ptám: proč se plete do věcí kterým viditelně vůbec nerozumíte?
[12]
Jen k tomu C/C++. Když jsem programoval např CGI pro Apache, stačilo by na to čistě C. Data od klienta získáte (podle metody odeslání POST/GET) buď z parametrů při spuštění (CGI je defacto obyčejná aplikace, s tou vyjímkou, že výstup se odesílá klientovy), nebo z proměných prostředí, které pro dané CGI Apache definoval.
Samozřejmě existují knihovny, které to vwlice ulehčí, jako např. CGIlib. Nechápu tedy Váš údiv
[13] JSP je oddělěně, protože to je tecnologie, která se velice často používá oddělěně. Ostatní nástroje postavené nad Javou nebo jejich kombinace jsou v položce Java.
V .NET sám nevyvíjím, ale někde sem četl, že jsou firmy, které pro backend webových aplikací používají C#. Proto jsem zahrnul celou rodinu .NET jazyků.
Položkou C/C++ má na mysli jakoukoli možnost, kde tyto jazyky k psaní webových aplikací používáte. Nemyslím, že by zde bylo nutné nějak podrobněji rozlišovat.
[8] Myslím, že z pohledu této ankety je podstatné právě vzdělání v oboru, kterým se zabývá tedy IT. Smyslem je právě vyhodnotit jak formální vzděláni v oboru ovlivňuje programátory.
Samozřejmě nechci nijak snižovat význam ostatních oborů, jen jsme ne nepovažoval z hlediska této ankety na směrodatné.
[17] Dobře asi jsem se nevyjádřil úplně přesně. Samozřejmě Javu a JSP nelze oddělit. Myslím tím, že JSP se často používá jako základní prostředek ve kterém se stránky zapisují a Java slouží pouze jako podpůrný prostředek. V protikladu k vývoji, který je založen na servletech nebo frameworcích jako je např. Spring.
A co LotusScript s vazbou na Javu, Javascript a podobně. Tomu se říká Lotus Domino server. Víme soudruzi?
A, věřte mi, umí toho velmi hodně. Ale. Ale, ale, ale? Asi se soudruhům pod jednu fajfku nevejde.
Stručně a jasně - takovéto ankety jsou obrazem přání jejich autorů.
Tedy povětšinou dost drsně řečeno - NA HOVNO
[4][13][21][22][23] Nevím proč spousta z Vás je a okamžite tak agresivni. Pochopil bych to, kdyby se jednalo o článek, na který jsou přece jenom vyšší nároky na kvalitu. Ale tady jde jen o zápis v blogu, které rozhodně nemám v úmyslu vydávat z a seriózní články. Nemám bohužel čas na to abych těmto zápisům věnoval takové množství času, aby byly dokonalé.
Ve vyjádření k minulému zápisku se někdo vyjádřil, že by ho zajímalo zastoupení jednotlivých jazyků právě podle různých kritérií. Dal jsem si s tím tu práci abych tuhle anketu vytvořil.
Výsledkem je že spousta lidí hned začne kritizovat sebemenší představitelné nedostatky a nepřesnosti. Že je anketa příliš rozsáhlá, na druhou stranu sklidím kritiku za to že jsem nezahrnul každý myslitelný jazyk a jejich kombinace. Snažil jsme se prostě udělat rozumně rozsáhlý průřez. Jak to bohužel vypadá nepodařilo se mi to.
Kritizovat je snadné.
[23] Kolik znáte webů, které běží na Haskellu? (Viz [7].) Anketa nemá být výčtem všech jazyků, které alespoň jednou někdo použil na vývoj webové aplikace… A tak jako tak jste zapomněl na Nejlepší Jazyk Na Světě — Lisp :-P — což byl první jazyk, který byl použit na vývoj webových aplikací. Viz http://en.wikipedia.org/wiki/Viaweb
[27] Konstruktivní kritiku uvítám. Mimo jiné je to taky jeden z důvodů proč sem tento blog založit - občas se něčemu přiučit. Ovšem Vaše poznámky jsou ale spíše útokem na nepřesné formulace nebo slovní nejasnosti.
Nechci a ani nemůžu tvrdit, že jsem odborníkem na všechno. Ovšem myslím, že v této oblasti jistý přehled mám. Pokud máte konkrétní věcné poznámky rád je uvítám a pokud opravíte nějaký můj omyl rád to připustím.
Ovšem vaše poznámky jsou spíše snahou a o nalezení sebemenšího slabého místa mého příspěvku a následně o útok na mě. Upřímně nechápu co Vás k takovému jednání vede. :-(
Ahoj, nejde přeci o kritiku. Ačkoliv? Když dáš v plen svoji myšlenku, musíš počítat s kontra názory a ty, většinou, směřují ke kritice = jsou kritické. Neb každý hájí to své a nedej Bože, aby tam nebylo to co nepoužívám já = :-).
Pokud se nad tím zamyslím, tak asi nelze anketou nikomu vyhovět. Snad jenom sobě.
Ankety jsou o cílech a o statistice.
Takže, pokud jsem napsal, že je to většinou na ho..., nebylo to až tak kritické, jako spíše ironické.
Ale jinak - zkus svoje ankety zpracovat statisticky a porovnat s jinými, kterých je na webu dost a dost a pak to bude zajímavé. Třeba.
Za pokus to stojí, nemyslíš?
[31] Jak již jsem psal konstruktivní kritiku uvítám. Ale musí být smysluplná a věcná. Ne aby se někdo snažil najít sebemenší nepřesnost v mých formulacích a pak mě na jejich základě napadat. Takový přístup mi přijde dosti dětinský.
Ano nikdy nelze vyhovět všem, ale to by si měli uvědomit ostatní. Já jsem se v dobré víře snažil to udělat nejlépe jak dovedu. Uznávám, že jsem asi některé věci formuloval trochu nepřesně.
Nějaké zpracování výsledků ankety mám samozřejmě v plánu. Ale nejdříve potřebuji nashromáždit nějaké výsledky. Uvidíme jestli z toho nakonec vyjdou nějaké zajímavé výsledky.
Tento Váš poslední příspěvek beru jako dobrou a konstruktivní poznámku. Ovšem Vaše předchozí příspěvky svým tónem vyzněly dosti agresivně. Možná to z Vaší strany nebyl úmysl.
ta anketa je naprosto retardovana a i kdyz sem mel opravdu snahu ji vyplnit, zjistil sem ze nemuzu, protoze FAKT nechapu co jako mam vyplnovat? Z textu sem pochopil ze je to anketa o tom jakej jazyk kdo pouziva .. dobry.. to este chapu, na maly weby tohle, na vetsi tohle.. ok. Nicmene dal uz fakt nevim.. to jako vyplnuju to co pouzivam, nebo to co umim? Nebo to co si myslim ze je nejlepsi?
shrnu-li to, musim napsat ze takhle DEBILNI A ZBYTECNE DLOUHOU ANKETU sem este nevidel
Teda to je husty. Nechapu. Pred minulym prispevkem se zjevila jeste docela slusna diskuze s relevantnimi podnety, i kdyz i tam se vyskytlo par uletu. Tak si autor da tu praci a udela komplexni anketu, ktere se evidentne zucastnily stovky lidi. Prisla jim mozna zajimava, mozna i prinosna neco jim dala. Nemeli co dodat tak naklikali a sli dal. Ale o to vic se v diskuzi projevi par (snad ani ne deset) nevim cim zakomplexovanych, kteri rvou a nadavaji, protoze to neni po jejich. Je to mala skupinka, ale dokaze vzit chut delat neco dalsiho. Ac moc nesouhlasim v nazorech s autorem, tak musim rict, at se drzi a nenecha se znechutit darmoslapama a vyzirkama.
A par vzkazu k diskutujicim:
kdyz nerozumim ankete ackoli ostatni predemnou nemeli problem - co se tak nad sebou zamyslet
kdyz jsem masochista a pouzivam obskurni minoritni jazyky tak to jeste neznamena, ze musi byt masochista i tvurce ankety. Tech 15x10 polozek s 1 hlasem by nic jinyho nez masochizmus nebylo.
kdyz jsem guru a autor tomu evidentne nerozumi - no jasne, vsichni tleskame a vykrikujeme bravo mistre
[35]
Máte pravdu. Pokud jsem si všiml, tak alespoň v kategoriich kde jsem hlasoval jednoznačně vede PHP, na paty mu šlape Pýthon, Java a .NET. Moje C/C++ je až kdesi na 5-6 místě o které se navíc dělí s Perlem. Což je (alespoň pro mě) překvapením. Myslel jsem, že právě C/C++ se bude využívat víc.
[46]
Např. ty které využívají C++ WT ( http://www.webtoolkit.eu/wt#/ ). Jejich seznam je zde: http://www.webtoolkit.eu/wt/wiki/index.php/Sample_Wt_Applications . Určitě by se našli třeba i projekty které využívají gSOAP ( http://www.cs.fsu.edu/~engelen/soap.html ) atd... Stačí to? :)
pro autora ankety:
fakt nema cenu si delat hlavu z tech nekterych agresivne kritickych prispevku. Jenom dokazuji, ze tema se chytlo (a pak prozrazuji cosi neblaheho o autorech tech prispevku, ale to fakt nema cenu resit, je to jenom a pouze jejich problem).
spis bych od nespokojencu cekal snahu o diskusi ve smeru: proc ten jazyk/framework ano, a ten druhy ne, k cemu se co hodi, prednosti/slabiny, trochu osvety (klidne i propagace, ale vecne, zadne bludy), prohodit nejake ty pripady pouziti, apod.
z meho hlediska muzu k ankete jenom dodat: Bravo!
[33] Server latence dynamických stránek <1ms, bezešvé clusterové prostředí, destitisíce konkurenčíních připojení bez zakuckání, spolehlivost na 5 devítek a lepší, několika násobně méně kódu a lepší čitlenost díky pattern matchingu, hot code swapping, jednoduché hledání a odstraňování chyb bez restartu, ... nestačí?
[50] Díky za odpověď, to jsou praktické zkušenosti z nějakého velkého projektu a platí všechny najednou? Některé aspekty chápu (actorový model apod.), ale jako celek mi to přijde až moc optimistické a spousta těch parametrů bude závislá na podmínkách. Několikanásobně méně kódu třeba oproti Pythonu a Ruby? To bych chtěl vážně vidět.
[50] To zní opravdu zajímavě. Můžu se zeptat o jaký projekt se jedná?
Jakým způsobem je řešeno napojení na server? Jaká je podpora připojení k databázím? Existuje možnost integrace s existujícími knihovnami pro mainstreamové jazyky (např. C/ C++ nebo Java)?
Můžete mě případně odkázat na nějaké kvalitní zdroje na Internetu?
Výkon pro statický obsah:http://www.joeandmotorboat.com/2009/01/03/nginx-vs-yaws-vs-mochiweb-web-server-performance-deathmatch-part-2/
Výkon pro dynamický obsah: http://berlinbrowndev.blogspot.com/2008/08/application-server-benchmarks-including.html (viz první tabulka)
Robustnost: http://www.sics.se/~joe/apachevsyaws.html
Web frameworky: http://medevyoujane.com/blog/2008/12/18/erlang-web-development-frameworks.html
Velký projekt? Největší je asi tohle http://www.erlang.se/publications/ericsson_review_axd301_1998012.pdf viz str.6 "Automatic recovery from
software errors" (cca 1.7 mil LOC v Erlangu, údajně největší reálný a komerčně úspěšný projekt ve funkcionálním jazyce vůbec, metodika a zkušenosti shrnuty v této Ph.D. práci http://www.erlang.org/download/armstrong_thesis_2003.pdf) Nenechte se odradit, že to jsou telekomunikace, Unix to je AT&T a telekomunikace ;-)
[51] Vyjmenované aspekty všechny najednou: Například zkušenosti Motoroly: 18x méně kódu než C++, 2x větší maximální výkon, 3x menší latence, zotavení po přetížení, škálování atd. http://www.erlang.se/euc/06/proceedings/1600Nystrom.ppt
Několikanásobně méně kódu než Python nebo Ruby? Určitě než Python, Ruby možná, z vlastní zkušenosti dokonce méně než Perl. Nemusíš psát defenzivně a pattern matching, to jsou killer feature. Samozřejmě jsou věci, které napíšeš v Perlu kratší, ale taky naopak a většinou je delší celá výsledná aplikace. V Erlangu je kratší spolehlivější, snáze se debuguje a lépe škáluje. Vtip je v tom, že můžeš mapovat konkurentní proces na Erlang proces 1:1, žádné předčasné optimalizace. Spawn+join procesu 10us. Perl thread až 1500 us podle sdílené paměti, fork ani nemluvit (pěkný průser, když odforkuješ z procesu co má hodně paměti, tak když child skončí, tak clean up začne špinit stránky :-/ ) Paměť na jeden proces v Erlangu <1k. Klidně můžeš mít 1 milion procesů na mašině co má 1GB paměti a Erlang se ani nezadýchá.
Jaké je napojení na server? Žádné, je to aplikační server = prostě dostaneš request jako parametr do handleru (tam se dostal jako message). Žádné IPC a podobné nesmysly. Co request to proces a i v něm si jich můžeš udělat kolik chceš. Milion? Žádný problém.
Jaká je podpora pro připojení k databázím? Viz ErlyWeb, horší než třeba v Perlu, ale k čemu to když máš k dipozici mnesii. Nezmínil jsem se? Průmyslově ověřená soft realtime klastrovaná aplikační databáze napsaná přímo v Erlangu. Komunikace aplikace - databáze přímo, transakce psané ve stejném jazyce jako samotná aplikace, navzájem vnořené transakce (znovupoužití kódu), žádné zbytečné IPC, žádné zbytečné problémy s mapováním datových typů na typy databáze, nonstop běh i při změně schematu atd.
Možnosti integrace:
Linked-in driver (je i FFI) - nejvyšší výkon, ale blbě napsaný driver dokáže shodit runtime a musí se to umět.
Port - komunikace přes pipe, takže výkon asi jako FastCGI nebo Apache worker (rozuměj ve světě Erlanu pomalé ;-)), velmi jednoduché pro napsání. Omezené možnosti komunikace, prostě jen zasílání zpráv přes jeden kanál a jen lokálně.
Node - Proces napsaný v jiném jazyce co se tváří jako jakýkoli jiný node v Erlang clusteru. Například existuje Java node a .NET node (C#) a další. Komunikace přes síť, multiplexing zpráv (node se může tvářit, že v něm běží více procesů a routovat message pro ně). Některé node dokonce podporují process monitory, normálně je monitorován jen node. (Monitorováním se rozumí, že když si zapnu v procesu A monitor procesu nebo node B, tak když ten node nebo proces skončí ať už normálně, nebo havárií, tak o tom spolehlivě dostane proces A zprávu)
Vysvětlení pojmů:
Erlang - jazyk a runtime platforma (clustering, hot-code swap)
OTP - průmyslově ověřený framework pro budování spolehlivých systémů (Ericsson - ATM swith se spolehlivostí devět devítek) - běžně používán pro většinu erlangových projektů. Je totiž velmi jednoduchý a snadno se používá a vlastnosti platformy máš prakticky zadarmo
YAWS - web a aplikační server a jednoduchý web framework
MochiWeb - web server a framework
EarlyWeb - MVC web framework na YAWS
Nitrogen - event driven web framework na YAWS i MochiWeb
Celé to zní jako pohádka? Taky mi to znělo jako pohádka, když jsem poprvé četl http://www.erlang.org/white_paper.html Když jsem si to začal ověřovat, tak jsem nejen zjistil že je to pravda, ale začal jsem objevovat další a další pohádkové vlastnosti a měnili se ve skutečnost.
Další zajímavé projekty v Erlangu:
CouchDB - http://couchdb.apache.org/ - REST over HTTP DMBS (klastrovaná, ...)
Scalaris - http://code.google.com/p/scalaris/ výherce ceny IEEE pro škálující řešení
ejabberd - nejvýkonnější a nejpoužívanější klastrovatelný a plugovatelný XMPP serevr
Wings 3Dh - http://www.wings3d.com/ 3D modeller
Tsung - http://tsung.erlang-projects.org/ HTTP, XMPP, ... benchmarking tool
Facebook - http://www.facebook.com/ chat system je v Erlangu
Amazon SimpleDB - ;-)
A že jste o Erlangu ještě neslyšeli? Nejste sami, celý svět objevuje Erlang teprve teď http://ulf.wiger.net/weblog/wp-content/uploads/2008/11/erlang-requests-per-month-081101.gif
Tahle anketa je přece nesmysl. KAždý by měl vyplnit, jaké má vzdělání zkušenosti a na jakém nejvíce dělá projektu a potum by měl jednou hlasovat.
Takhle si tam nakliká každý jak ho napadne. Navíc by měl každý vybrat jazyk co používá nejčastěji. Pokud používám v z 90% Ruby a z 10% PHP protože jsem k tomu okolnostmy přinucen. Výsledek bude znít zase ve prospěch PHP. Podobně je to z jinýma jazykama ....
Takže anketa nevypovídá vůbec o ničem.
[55] Bohužel systém anket v blogách na rootu takovéhle pokročilé možnosti nemá. Nebo o nich alespoň nevím. Pokud to jde tak mi někdo pls poraďte jak na to.
V podstatě teď spoléhám na to, že lidi budou vyplňovat anketu popravdě a jen položky, které se jich týkají.
Přidávání vah jednotlivým jazyků je zajímavá možnost, ale opět nevím o tom, že by šlo v blogu něco takového použít. Tato hodnota by byla podstatná, kdyby bylo cílem určit zastoupení jednotlivých jazyků v projektech. Cílem je ale spíše určit jejich zastoupení mezi programátory.
Rozhodně nemám v úmyslu výsledky této ankety považovat ze příliš spolehlivé, ale může naznačit některé zajímavé trendy. Až se nashromáždění výsledky pokusím se udělat nějaké vyhodnocení.
[54] Začíná to znít čím dál zajímavěji. Určitě si o tom něco přečtu.
Jediné co mě trochu odrazuje je funkcionální paradigma. Zatím mám zkušenosti s LISPem a ten mi příliš nesedl. Ale uvidíme třeba změním názor.
P.S. Omlouvám se za zpožděné schválení. Blog systém Váš příspěvek zablokoval, protože obsahoval podezřele moc odkazů.
[54] Super evangelizace (pro mě na první pohled ne úplně přesvědčivá, ale nechci to šmahem odsoudit), spousta zajímavých odkazů, díky. Erlang je jeden z jazyků, které mě nějakou dobu zajímají, existují podobnosti s jazyky, se kterými jsem zatím koketoval (OCaml, Scala) - mimo jiné jde o ten pattern matching (v ML i Scale) či actory (jenom ve Scale). Ty do Erlangu děláš profesionálně, nebo je to Tvoje hobby?
Erlang jako jazyk neni vubec slozity, to fukcionalni paradigma je vstrebatelne, cele je to postavene na rekurzi a 'pattern matching' plus 'actor model' misto klasickych vlaken. Pred nejakou dobou jsem Erlang cvicmo vyzkousel a v pohode.
Porad ale neni dostatek kvalitni dokumentace a komunita kolem Erlangu se nezda byt prilis velka (jako by to jine paradigma prilis odcizovalo nebo co, pritom se neni neho bat), a nikdo do Erlangu moc necpe prachy (jako treba do Ruby a RoR, ktere byly/jsou/budou? bajecnym businessem samy o sobe). Take nevim, nakolik jsou zminene projekty zive.
Ad profesionálně. Profesionálně dělám BI SaaS v Perlu na cloudu v Amazonu a protože narážím na určitou třídu problémů, tak hledám jak je řešit. Dělám evaluaci možných řešení a postupem času jsem zavrhl všechno jako přechod na jiný jazyk (Python, Ruby, Java, CL) protože u žádného z nich benefity po případného přechodu nevyváží ty problémy s přechodem. Erlang je v tomhle výjimkou. Znamená to radikální změnu paradigmatu, ale přináší:
Nárůst výkonu - žádná z alternativ nepřináší větší větší výkon. Ruby a Python o tom se nemá cenu bavit. CL - problémy s GC které krásně ukazuje ten druhý odkaz, což mě osobně velmi zklamalo a akceptace Lisp syntaxe taky není nic moc, to by musel přinést něco podstatně víc. Java - stejné problémy s GC - prostě globální GC s nutností řešit cykly nikdy nemůže překonat GC per proces a bez cyklů. Ostatně viz zkušenosti z Motoroly, ani C++ a vlastní management v konkurenčním charakteru zátěže prostě nestíhá. Je to nefér, ale Erlang tady nebojuje čestně ;-)
Kvalita - tady se má cenu bavit jedině o J2EE a CL. Zkušenosti s J2EE nejsou přesvědčivé. Spolehlivost je tam dosahována za cenu obrovských nákladů, problémy s memory aliasingem (reference na objekty a vedlejší efekty funkcí). CL je na tom podobně. Tady opět Erlang nebojuje fér, funkcionální paradigma a sideefect free to je prostě někde jinde.
Velikost kódu - O Javě se v tomhle nemá cenu bavit, je na tom skoro stejně špatně jako C++. Tady má šanci CL a Python, Ruby. Jenže do toho nám vstupuje pattern matching a optimistické programování v Erlangu a opět to není úplně fér. Když by se přidal pattern matching do CL, tak je to asi jediný který může držet krok.
Spolehlivost - framework J2EE je asi jediné co se může srovnávat s OTP. U CL nevím, ten diskvalifikovali jiné věci na to abych zjišťoval jak je na tom například Allegro nebo jiný průmyslově ověřený framework. O akademických pokusech se nemá cenu bavit. Tohle diskvalifikuje OCaml i Haskell (HApps je v vtip, přečtěte si specifikace). Ukažte mi projekt se SLOC jako má ADX301 do kterého bylo investováno cca 1000 člověkoroků a stejnou spolehlivostí a můžeme se o tom bavit. Aby to bylo fér tak u Javy SLOC dělte aspoň třema ať nežeru.
Clusterování - J2EE, příliš komplikované proti erts (Erlang RunTime System). V erts je to součást jazyka, síťová transparentnost základních jazykových konstrukcí a podobně. Opět kvalitativně někde jinde.
Na OCaml, Haskell a podobně jsem se díval a absence OTP je asi největším zabijákem, pak následuje nenativní cluster a už se vezou.
Erlang testuji už nějakou dobu, tak můžu potvrdit, že ty výkonnostní čísla nelžou. Kódu je skutečně potřeba několika násobně méně. Programování v něm je skutečně jednoduché, minimum bižuterie okolo (succes case a pattern matching je nakažlivý, jak jednou zkusíte, tak vám defenzivní programování a absence pattern matchingu přijde strašný opruz - jestli to nemyslíte vážně tak to radši nezkoušejte, protože v jiných jazycích budete od té doby strašně trpět).
Co se týče komunity, tak ta roste exponenciálně a je na vás jestli se chcete svést na vlně, nebo sedět v koutku. Co se týče hlavních vlastností jazyka, tak je přebírají ostatní jazyky a platformy, ale vždycky je to s nějakými kompromisy. A tam kde to není s kompromisy (OCaml, Haskell, Oz), tak chybí OTP. Do toho by musel někdo investovat obrovské prachy a nemá cenu na to čekat. Za porovnatelný ekvivalent bych považoval snad F#, ale i tam jsou kompromisy a ta platforma je pro mě osobně nepřijatelná. F# v CLR .NET má peněz dostatek a výkon se tím dá nahnat. Když bych na .NET dělal, tak bych měl velké dilema.
Jedinou nevýhodou Erlangu je neobvyklá syntaxe (mě osobně se maximálně líbí a v ní jsou zakleté některé klíčové výhody) a relativně malá báze knihoven a dokumentace. To všechno se dá překonat, ale chyby v konceptu nikoliv. Z Erlangu výkon Javy teoreticky vymačkat jde (pokud ho už nemá). Dodělat do Erlangu knihovny a dopsat dokumentaci jde. Dostat z Javy spolehlivost, čitelnost a jednoduchost vývoje v Erlangu nejde ani teoreticky. A místo Javy si dosaďte jakýkoliv oblíbený jazyk z této ankety a dojdete ke stejnému závěru.
Živost projektů:
CouchDB - jeden s nejdynamičtěji se vyvíjejících projektů Apache Foundation. Během několika měsíců se dostal z inkubátoru mezi oficiální projekty.
SimpleDB v Amazonu - ;-)
ejabberd - LOL
Facebook - LOL
Během posledního roku je kolem Erlangu se podezřele motají firmy jako IBM, Sun Mircrosystems, Yahoo, Amazon, Google a další
Riziko vidím v tom, že někdo zainvestuje infrastrukturu kolem CL, OCaml, Oz nebo Haskell. A přetáhne na sebe pozornost. Nebo vylepší JVM a udělá z ní MVM (viz odkazy v disertaci J. Armstronga jako jedna z větví kterou se Java nevydala, pro Erlang naštěstí, pro celé IT bohužel) což je nekompatibilní krok a stejně pak bude muset předělat půlku infrastruktury kolem (to mi přijde jednoduší vylepšit BEAM nebo HiPE).
P.S.: Pro ty co mají rádi Ruby syntaxi, tak existuje Reia (http://wiki.reia-lang.org/) a přijít tak výhody single assigmentu při debugování. Pro ty co mají rádi syntaxi Lispu tak je tady LFE (Lisp Flavoured Erlang http://groups.google.com/group/erlang-questions/browse_thread/thread/adfe375287d4bef4/4a9127e701f5e2db) a mají lepší podporu maker.
Ještě doplním co se týče budoucnosti jazyka. Erlang je v telekomunikacích stále používán a stále se vyvíjí. Ačkoliv dostal v Ericssonu oficiálně ban už před skoro deseti lety, tak OTP tým v Ericssonu stále oficiálně existuje a stále Erlang i OTP vyvíjí, opravuje chyby, testuje a vydává. R12B vyšlo loni a už má třetí revizi. Kromě toho ho aktivně používají velcí telekomunikační operátoři ve světě (namátkou Vodafone UK) i u nás akorát se o tom nedočtete na každém sloupu. V tomhle je na tom jako COBOL, i kdyby ho nakrásně přestali vyvíjet, bude tu s námi ještě desítky let. Jenže on se vyvíjí a akceleruje. Skoro se dá říct, že je v tomhle směru na tom snad i lépe než Java ;-)
[61-63] Upřímně řečeno, ty knihovny mi připadají jako největší brzda funkcionálních jazyků. Mimo jiné proto koketuju se Scalou. Proč vlastně dostal Erlang v Ericssonu ban? Nebyl dostatečně cool a trendy z hlediska managementu?
Proti Erlangu jako takovému nemůžu říct nic, ale BerkeleyDB (nyní pod Oracle) jako backend důrazně nedoporučuju.
[64] Podle mě známých oficiální i neoficiálních informací za tím stálo "strategické" rozhodnutí: "Ericsson není SW firma." Díky za to, jinak by jsme neměly Erlang/OTP jako open source. Na druhou stranu i přes ban je ADX301 finančně nejúspěšnější Ericsson produkt ;-) I přes ban se navzdory vedení v Erlangu dále uvnitř Ericssonu vyvíjí a vyvíjí se i samotná platforma. Prostě proto, že nic lepšího není.
BerkeleyDB jsem zatím nezkoumal. Můžeš být konkrétnější? Kvalita kódu (bugy, memory leaky)? Špatné API? Management? Výkon? Škálování? Nespolehlivost výkonu (deviace response time, throughput, ...)? ??? Moc mě to zajímá, protože jsem se chtěl na BerkeleyDB blíže podívat.
[65] Podle mých zkušeností občas dochází ke korupci dat a to dokonce i tenkrát, když do databáze nic nezapisuješ, což je zvláštní. Nemám zkušenosti s vyspělejšími vlastnostmi jako jsou replikace, skončil jsem u transakcí a šifrování dat. V Berkeley (což samozřejmě vyplývá z definice) máš k dispozici pouze dvojici klíč - hodnota (s malou pomocí v podobě sekundárních indexů, ale ty se dají nasimulovat "ručně" pomocí další Berkeley databáze), to znamená, že pokud chceš po Berkeley funkcionalitu podobnou klasickým relačním databázím, nadřeš se jako pes a výsledek nebude adekvátní námaze. V některých nasazeních to nepoznáš, ale jakmile se dostaneš k napsání vlastního optimalizátoru dotazů a podobným věcem, pravděpodobně brzy zjistíš, že to není nejlepší cesta.
Kdyby ses chtěl touto cestou přesto vydat, jenom pár poznámek: Nikdy jsem nepoužil Queue ani Recno (ty mají poměrně omezenou použitelnost), ale podle mých zkušeností se moc nevyplatí používat Hash tabulky, BTree je v drtivé většině případů optimálnější a to i tehdy, když nepotřebuješ hledat záznamy, které jsou větší nebo menší než nějaká hodnota. Snaž se vyhnout "Overflow pages", pokud je to možné. Nízko nastavená velikost stránky spolehlivě degraduje výkon.
Já jsem uvažoval o něčem na způsob http://dukesoferl.blogspot.com/2008/06/tokyocabinet-and-mnesia.html ( http://www.wagerlabs.com/blog/2008/06/mnesia-unlimited.html ). Případně jen jako backend ke key/value storage. To jsou jen takové úvahy co by se dalo a nedalo dělat pro speciální použití se speciálními požadavky na výkon nebo latence.
[64] Na historii Erlangu se zrovna včera někdo zeptal na erlang-question http://www.erlang.org/pipermail/erlang-questions/2009-January/040978.html V odpovědích jsou zajímavé podrobnosti kolem toho.
Autor je student Fakulty informačních technologií VUT v Brně. Současně pracuje ve firmě LifeWeb (http://www.lifeweb.cz) jako hlavní vývojář.