www.wikidata.uk-ua.nina.az
Erlang Erla ng ˈɜːrlaeŋ UR lang mova funkcijnogo programuvannya z dinamichnoyu tipizaciyeyu priznachena dlya rozrobki program dlya riznogo rodu rozpodilenih i bagatonitkovih sistem Rozroblena i pidtrimuyetsya kompaniyeyu Ericsson Mova mistit v sobi zasobi porodzhennya paralelnih procesiv ta yihnoyi vzayemodiyi za dopomogoyu posilannya asinhronnih povidomlen bez vikoristannya blokuvan ErlangParadigma multiparadigmalna paralelna funkcionalnaData poyavi 1987Tvorci Dzho Armstrong programist Rozrobnik EricssonOstannij reliz 25 18 chervnya 2022 15 misyaciv tomu 2022 06 18 Sistema tipizaciyi dinamichna tipizaciya silna tipizaciya Pid vplivom vid Prolog SmallTalk Lisp PLEXVplinula na F Clojure Rust Scala Opa Reia Akka Dart Elixir Oz GoMova realizaciyi Erlang 1 Operacijna sistema BagatoplatformovaLicenziya Apache 2 0Zvichajni rozshirennya fajliv erl hrlRepozitorij vihidnogo kodu github com erlang otpVebsajt www erlang org Erlang u VikishovishiMova oriyentovana na rozrobku rozpodilenih vidmovostijkih zastosunkiv yaki zabezpechuyut paralelnu obrobku zapitiv v rezhimi realnogo chasu Mova nabula poshirennya v takih oblastyah yak telekomunikaciyi bankivski sistemi elektronna komerciya komp yuterna telefoniya i organizaciya mittyevogo obminu povidomlennyami Programa translyuyetsya v bajt kod yakij vikonuyetsya virtualnoyu mashinoyu sho zabezpechuye perenosnist Odnochasno rozrobnikami vipuskayetsya OTP Open Telecom Platform suputnij nabir bibliotek i komponentiv dlya rozrobki rozpodilenih sistem na movi Erlang Kod proyektu poshiryuyetsya pid modifikovanoyu vilnoyu licenziyeyu MPL Svij sintaksis i deyaki koncepciyi mova Erlang uspadkuvala vid movi logichnogo programuvannya Prolog Mova pidtrimuye zistavlyannya zi vzircem obrobku viklyuchen spiskovi ta binarni generatori anonimni funkciyi funkciyi vishogo poryadku obmin povidomlennyami mizh procesami Preprocesor pidtrimuye robotu z makrosami i vklyuchennya zagolovkovih fajliv Populyarnist movi Erlang zrosla u zv yazku z rozshirennyam oblasti vikoristannya telekomunikacijni sistemi na paralelni rozpodileni sistemi z visokim navantazhennyam yaki obslugovuyut miljoni koristuvachiv WWW taki yak chati sistemi keruvannya veb kontentom veb serveri i rozpodileni bazi danih sho vimagayut masshtabuvannya Erlang vikoristovuyutsya v deyakih NoSQL bazah danih visokoyi dostupnosti 2 Zmist 1 Nazva ta istoriya 2 Filosofiya 3 Osoblivosti 3 1 Visokorivnevi konstrukciyi 3 2 Paralelni obchislennya 3 3 Rozpodileni obchislennya 3 4 M yakij realnij chas 3 5 Garyacha zamina kodu 4 Opis movi 4 1 Tipi danih 4 2 Chisla 4 3 Atomi 4 4 Bitovi ryadki ta binarni dani 4 5 Kortezh 4 6 Spisok 4 7 Ryadok 4 8 Logichni znachennya 4 9 Funkcionalnij ob yekt Fun 4 10 Zapis 4 11 Karta 4 12 Inshi tipi 4 13 Vbudovani funkciyi dlya roboti z tipami 5 Operaciyi 5 1 Arifmetichni operaciyi 5 2 Bitovi operaciyi 5 3 Logichni operaciyi 5 4 Operaciyi porivnyannya 5 5 Zminni 5 6 Zistavlennya zi vzircem 6 Funkciyi 6 1 Umovni virazi 6 1 1 Prikladi 6 2 Preprocesor ta makrosi 6 3 Obrobka pomilok 7 Moduli 7 1 Procesi 7 2 Stvorennya procesiv 7 3 Peredacha ta prijom povidomlen 7 4 Obrobka pomilok ta zavershennya procesiv 7 5 Vvid vivid 8 Biblioteki 8 1 Standartna biblioteka moduliv 8 2 Tablici ETS ta DETS 8 3 Frejmvork OTP 8 4 Rozrobka grafichnogo interfejsu koristuvacha 9 Programuvannya na Erlang 9 1 Interaktivna obolonka 9 2 Dokumentuvannya ta oformlennya kodu 9 3 Tipi ta analiz kodu 9 4 Testuvannya profilyuvannya refaktoring 9 5 Efektivnist 10 Erlang ta inshi movi programuvannya 10 1 Integraciya ta gibridni movi 10 2 Porivnyannya Erlang ta C za produktivnistyu 10 3 Porivnyannya vzayemodiyi procesiv u Erlang ta Go 11 Kritika 11 1 Sfera zastosuvannya 11 2 Spilnota 12 Div takozh 13 Vinoski 14 PosilannyaNazva ta istoriya RedaguvatiSered maloobiznanih z istoriyeyu movi Erlang lyudej poshirena dumka sho nazva Erlang rozshifrovuyetsya yak ERicsson LANGuage Naspravdi mova otrimala svoyu nazvu na chest Agnera Krarupa Erlanga en danskogo matematika yakij pracyuvav u galuzi telekomunikacij Isnuye odinicya vimiryuvannya telekomunikacijnogo trafiku yaka takozh nazivayetsya Erlang en 3 Na stvorennya Erlang vplinuli ML Miranda en Ada Modula 2 en CHILL Prolog Okrim togo na sposib onovlennya programnogo zabezpechennya vplinuli Smalltalk i propriyetarni movi EriPascal ta PLEX yakimi poslugovuvalis v Ericson 4 Mova Erlang bula stvorena v 1986 roci v laboratoriyi kompaniyi Ericsson spilno Dzho Armstrongom Joe Armstrong Robertom Virdingom Robert Virding i Majkom Vilyamsom Mike Williams i v 1998 roci perevedena v rozryad vidkritih proyektiv Zavdyaki pochatkovij oriyentaciyi na stvorennya zastosunkiv dlya paralelnoyi obrobki zapitiv v rezhimi realnogo chasu mova nabula poshirennya v takih oblastyah yak telekomunikaciyi bankivski sistemi elektronna komerciya komp yuterna telefoniya i organizaciya mittyevogo obminu povidomlennyami 5 nbsp Robert Virding ta Dzho Armstrong 2013 rikU 1998 roci top menedzhment Ericsson virishiv ne brati na sebe zobov yazan z rozrobki ta pidtrimki vlasnoyi movi programuvannya natomist zoseredivshis na Java Vikoristannya Erlang bulo zaboroneno u novih proyektah Ericsson Radio AB u zv yazku z realizaciyeyu planu autsorsingu programnoyi tehnologiyi kompaniyi Rational Inc 6 Ce rishennya duzhe silno vplinulo na majbutnye Erlang vono prizvelo do vidkrittya kodu Erlang pid vidkritoyu licenziyeyu EPL analog Mozilla Public License a takozh posluzhilo golovnoyu prichinoyu pochatku poshirennya movi za mezhami kompaniyi sho jogo stvorila Osnovnim zaperechennyam proti vidkrittya vihidnogo kodu bulo virishennya pitan shodo patentiv ale ci trudnoshi buli podolani Nezabarom bagato hto z osnovnih rozrobnikiv pokinuv Ericsson shob organizuvati vlasnij biznes Bluetail AB 4 nbsp Majkl Vilyams odin z tvorciv ErlangNa pochatku 2000 h rokiv naukovi kola stali viyavlyati interes do Erlang Z 2002 roku stav provoditis shorichnij Erlang Workshop Ericsson prodovzhuvav sponsoruvati proyekt HiPE vid angl High Performance Erlang visokoproduktivnij Erlang Proyekt HiPE zajmavsya efektivnoyu realizaciyeyu movi ta instrumentami dlya perevirki tipiv i stvorenij u grupi proyektu kompilyator v mashinnij kod yakij vhodit u postachannya versiyi Erlang OTP vilno rozpovsyudzhuyetsya z 2001 roku Roboti pov yazani z Erlang vedut inshi zakladi vishoyi osviti Instrumenti dlya refaktoringu stvoreni v Kentskomu universiteti u Velikij Britaniyi ta universiteti Loranda Etvesha v Ugorshini instrumenti dlya riznih vidiv testuvannya u Madridskomu politehnichnomu universiteti tehnichnomu universiteti Chalmersa ta Geteborgskomu universiteti Koli sistemi z simetrichnoyu bagatoprocesornistyu tilki pochinali zavojovuvati rinok serveriv i nastilnih komp yuteriv kidayuchi viklik rozrobnikam programnogo zabezpechennya vzhe v 2006 persha versiya Erlang z pidtrimkoyu SMP bula vipushena spilnimi zusillyami komandi OTP z Ericsson i komandi HiPE Nezabarom pislya cogo vijshla persha majzhe za desyatilittya velika monografiya z Erlang Programming Erlang Dzho Armstronga pislya chogo bagato rozrobnikiv vidkrili dlya sebe Erlang OTP i mova stala nabirati populyarnosti 7 Proces rozvitku movi vklyuchaye v sebe rozglyad propozicij z rozvitku EEP Erlang Enhancement Proposal Za dopomogoyu cih propozicij Erlang spilnota vnosit zmini u standartnu podachu Erlang Z vnesenimi propoziciyami mozhna oznajomitisya na veb storinci erlang org eeps Filosofiya RedaguvatiZa svidchennyami Majka Vilyamsa Erlang stvoryuvavsya dlya virishennya troh problem rozrobki rozpodilenih sistem m yakogo realnogo chasu z visokim stupenem paralelizmu mozhlivosti shvidkoyi ta efektivnoyi rozrobki PZ otrimannya sistemi stijkoyi do programnih ta aparatnih zboyiv mozhlivosti onovlennya sistemi na lotu bez prostoyu obladnannya Za slovami Vilyamsa filosofiya yakoyi dotrimuvalis rozrobniki Erlang pasuye i dlya napisannya programnogo zabezpechennya ciyeyu movoyu 8 nbsp Znajdit pravilni metodi Proyektujte z vikoristannyam prototipiv Samih lishe idej nedostatno treba vmiti yih realizovuvati i znati sho voni pracyuyut Robit pomilki v nevelikomu masshtabi a ne u virobnichomu proyekti Originalnij tekst angl Find the right methods Design by Prototyping It is not good enough to have ideas you must also be able to implement them and know they work Make mistakes on a small scale not in a production project nbsp Bilshist mov stvorenih ranishe za Erlang buli rozrobleni bez poperednogo znahodzhennya zastosuvannya todi yak Erlang buv rozroblenij specialno na osnovi vimog do rozpodilenih stijkih do vidmov paralelnih sistem realnogo chasu Z rozvitkom Internetu viyavilosya sho bagato program mayut analogichni vimogi sho poyasnyuye zrostannya interesu do movi 9 Sekret visokoyi stijkosti do vidmov polyagaye u vikoristanni izolovanih odin vid odnogo legkih procesiv pov yazanih lishe mehanizmom obminu povidomlennyami ta signalami vihodu Principi rozrobnikiv na Erlang stosovno obrobki pomilkovih situacij u procesah mozhna viraziti u viglyadi vislovlyuvannya Let it crash 10 Pov yazano ce z tim sho v Erlang sistemi legko stezhiti za zavershennyam procesu zavershuvati procesi pov yazani zi zboyami i zapuskati novi procesi 11 Osoblivosti RedaguvatiSintaksis uspadkovanij vid movi Prolog Pidtrimuye moduli polimorfni funkciyi zistavlennya za shablonom anonimni funkciyi umovni konstrukciyi strukturi obrobku vinyatkiv optimizaciyu hvostovoyi rekursiyi Golovna risa Erlang model legkih procesiv Procesi ye deshevimi yihnye stvorennya vimagaye taku kilkist resursiv sho yih mozhna porivnyati z viklikom funkciyi Yedinim sposobom vzayemodiyi procesiv ye asinhronnij obmin povidomlennyami Proces mozhe vstanoviti zv yazok link z inshimi procesami i za viborom abo otrimuvati povidomlennya pro yihnye dostrokove zavershennya z vkazannyam prichini abo rozdiliti yihnyu dolyu Proces maye svoyu poshtovu skrinyu zvidki mozhe vibirkovo chitati povidomlennya Mova programuvannya Erlang spriyaye stvorennyu velikoyi kilkosti konkurentnih procesiv Procesi izolovani ta ne mayut spilnogo stanu Proces proyektuvannya polyagaye v iterativnomu rozbitti sistemi na iyerarhiyi pidsistem yaki konkurentno vzayemodiyut doki skladovi ne stanut dostatno prostimi dlya realizaciyi Suv yaz Procesi povidomlennya na vidminu vid suv yazi Ob yekti Interfejsi Uspadkuvannya chasto daye kompaktnishi rishennya Vidsutnist potrebi blokuvannya dostupu do stanu procesu dlya sinhronizaciyi yihnoyi vzayemodiyi suttyevo sproshuye programuvannya Dlya konkurentnogo resursu zazvichaj stvoryuyetsya proces monitor cherez yakij zdijsnyuyetsya vzayemodiya z resursom Takozh vazhlivij moment polyagaye u formuli let it crash nehaj proces vpade Zamist perehoplyuvati pomilki i namagatisya prodovzhuvati robotu chastina programi sho mistit rizikovanij kod vidokremlyuyetsya u nezalezhnij proces kamikadze yakij sistema vbivaye u vipadku viniknennya pomilki pri comu batkivskij proces otrimuye povidomlennya pro smert nashadkiv i za potrebi mozhe perezapuskati ci procesi Takij pidhid pozbavlyaye kod chislennih perevirok Visokorivnevi konstrukciyi Redaguvati Erlang ye deklarativnoyu movoyu programuvannya yaka vikoristovuyetsya bilshe dlya opisu togo sho maye buti obchisleno nizh yak Napriklad viznachennya funkciyi yake vikoristovuye zistavlennya zi zrazkom dlya viboru odnogo z variantiv obchislennya abo viluchennya elementa danih zi skladovoyi strukturi nagaduye rivnyannya Zistavlennya zi vzircem poshirene navit na bitovi ryadki sho sproshuye realizaciyu telekomunikacijnih protokoliv 8 Funkciyi ye ob yektami pershogo klasu Erlang U movi takozh shiroko zastosovuyutsya harakterni dlya funkcionalnoyi paradigmi programuvannya spiskovi vklyuchennya generatori spiskiv 8 Paralelni obchislennya Redaguvati nbsp Obmin povidomlennyami v movi ErlangOsoblivistyu movi Erlang ye zastosuvannya legkovagih procesiv vidpovidno do modeli aktoriv Takij pidhid dozvolyaye vikonuvati odnochasno sotni tisyach i navit miljoni takih procesiv kozhen z yakih mozhe mati skromni vimogi do pam yati Procesi izolovani odin vid odnogo i ne mayut zagalnogo stanu ale mizh nimi mozhna vstanoviti zv yazok ta otrimuvati povidomlennya pro yihnij stan 8 Dlya vzayemodiyi procesiv vikoristovuyut asinhronnij obmin povidomlennyami Kozhen proces maye svoyu chergu povidomlen obrobka yakoyi vikoristovuye zistavlennya iz vzircem Proces sho nadislav povidomlennya ne otrimuye povidomlennya pro dostavku navit yaksho identifikator procesu oderzhuvacha nedijsnij abo oderzhuvach ignoruye povidomlennya Takim chinom vidpovidalnist za pravilno organizovanu vzayemodiyu mizh procesami lezhit na rozrobnikovi 9 Napriklad pri realizaciyi na Erlang merezhevogo chatu struktura programi mozhe bezposeredno vidobrazhati odnochasnist dij koristuvachiv shodo obminu povidomlennyami shlyahom zapusku novih procesiv Efektivnist peredachi povidomlen zberigayetsya zi zbilshennyam kilkosti procesiv a vimogi do pam yati minimizuyutsya za rahunok togo sho legkovagimi procesami keruye virtualna mashina a ne zasobi operacijnoyi sistemi 8 Rozpodileni obchislennya Redaguvati Erlang z samogo pochatku proyektuvavsya dlya rozpodilenih obchislen ta masshtabovanosti Pidtrimka paralelizmu vbudovana v sintaksis ta semantiku movi tomu pobudovu sistemi mozhna vesti abstraguyuchis vid konkretnogo miscya obchislen U standartnij postavci Erlang mozhe nalagoditi zv yazok procesiv protokolu TCP IP nezalezhno vid pidtrimuvanih nim platform operacijnih sistem 8 Zapushenij ekzemplyar emulyatora Erlang nazivayetsya vuzlom node Vuzol maye im ya i znaye pro isnuvannya inshih vuzliv na cij mashini abo u merezhi Stvorennya ta vzayemodiya procesiv riznih vuzliv ne vidriznyayetsya vid vzayemodiyi procesiv vseredini vuzla Programi napisani na Erlang zdatni pracyuvati na kilkoh vuzlah Vuzlami mozhut buti procesori bagato yader odnogo procesora i navit cilij klaster mashin Dlya stvorennya procesu na inshomu vuzli procesu dostatno znati jogo im ya i bez osoblivih pidstav vin mozhe ne cikavitisya fizichnim roztashuvannyam procesu sho z nim vzayemodiye Sintaksis vidpravki povidomlennya procesu na svoyemu vuzli ta viddalenomu odnakovij 8 Zavdyaki vbudovanim u movu mozhlivostyam rozpodilenih obchislen ob yednannya v klaster balansuvannya navantazhennya dodavannya vuzliv ta serveriv pidvishennya nadijnosti viklikayut lishe neveliki vitrati na dodatkovij kod Za zamovchuvannyam vuzli sproyektovani dlya roboti vseredini vidokremlenogo segmenta merezhi DMZ ale yaksho neobhidno komunikaciya mizh vuzlami mozhe vidbuvatisya iz zastosuvannyam protokolu SSL zahishenogo kriptografichnimi metodami 8 M yakij realnij chas Redaguvati Programi visokorivnevoyu movoyu Erlang mozhut buti vikoristani v sistemah m yakogo realnogo chasu yakij inodi perekladayut yak psevdorealnij abo kvazirealnij Avtomatizovane keruvannya pam yattyu ta zbirannya smittya diyut u ramkah odnogo procesu sho daye mozhlivist stvoryuvati sistemi z milisekundnim chasom vidguku navit nezvazhayuchi na neobhidnist zbirannya smittya sho ne vidchuvayut pogirshennya propusknoyi zdatnosti pri visokomu navantazhenni 8 Garyacha zamina kodu Redaguvati Dlya sistem yaki ne mozhut buti zupineni dlya onovlennya kodu Erlang proponuye garyachu zaminu kodu angl hot code upgrade Pri comu v dodatku mozhut odnochasno pracyuvati stari i novi versiyi kodu U takij sposib programne zabezpechennya na Erlang mozhe buti modernizovano bez prostoyiv a viyavleni pomilki vipravleni 12 Opis movi RedaguvatiTipi danih Redaguvati Tipizaciya v Erlang ye silnoyu ta dinamichnoyu Dinamichna tipizaciya bula obrana dlya movi Erlang cherez te sho pershi rozrobniki buli bilshe z neyu znajomi 13 Na dumku Dzho Armstronga statichna tipizaciya vimagala b duzhe velikih trudovitrat zokrema realizuvati sistemu garyachogo dozavantazhennya kodu bulo b duzhe vazhko Taka tipizaciya koli mozhlivi pomilki tipiv viyavlyayutsya lishe pid chas vikonannya ne zavadila mozhlivosti stvoryuvati sistemi z duzhe visokim rivnem dostupnosti Dani Erlang ye nezminnimi operaciyi ne perepisuyut stari znachennya sho znahodyatsya v pam yati Yaksho neobhidno moduli na Erlang mozhna zabezpechiti opisami ta viznachennyami novih tipiv sho ne vplivayut na kompilyaciyu programi dlya avtomatichnoyi perevirki tipiv za dopomogoyu utiliti Dialyzer 13 Chisla RedaguvatiU Erlang ye dva tipi chislovih literaliv cili i z ruhomoyu komoyu napriklad 125 4 5e 20 Krim zvichajnoyi notaciyi chisla mozhna zadavati cherez simvol ASCII napriklad B oznachaye 66 abo razom iz zaznachennyam sistemi chislennya z osnovoyu vid 2 do 36 u starih versiyah do 16 napriklad 16 3f 2 1010 U Erlang zastosovuyutsya cili chisla dovilnoyi tochnosti ta dijsni chisla podvijnoyi tochnosti 64 biti u standarti IEEE 754 1985 Dlya roboti z chislami mozhna vikoristovuvati modul math yakij mistit zvichajnij nabir matematichnih funkcij ta funkciyu math pi 0 sho povertaye chislo p displaystyle pi nbsp 14 Priklad obchislen v interaktivnij obolonci Erlang OTP 23 erts 11 2 2 4 source 64 bit smp 20 20 ds 20 20 10 async threads 1 hipe Eshell V11 2 2 4 abort with G 1 gt 123 23 12 2 3 65 34782608695652 2 gt math cos math pi 1 0 3 gt random uniform 10 5 Atomi Redaguvati Atom konstanta z im yam sho maye buti vzyata v odinarni lapki yaksho ne pochinayetsya z maloyi literi abo mistit znaki okrim liter cifr pidkreslennya krapki ta simvolu Ponyattya atoma zapozichene z Prolog ta jogo mozhna vvazhati analogom pererahuvan enum v inshih movah programuvannya bez neobhidnosti poperednoyi deklaraciyi 15 Atomi vikoristovuyutsya majzhe viklyuchno v porivnyannyah ta v zistavlenni zi vzircem en Pattern matching ta mayut Erlang duzhe efektivnu realizaciyu Krim togo deyaki atomi mayut pevnij sens u znachennyah sho povertayutsya i opisi vinyatkiv Do nih vidnosyatsya napriklad error ignore noreply ok reply stop undefined Bitovi ryadki ta binarni dani Redaguvati Bitovij ryadok vikoristovuyetsya dlya zberigannya pam yati netipizovanih danih Ryadki sho skladayutsya z ciloyi kilkosti oktetiv nazivayutsya binarnimi abo dvijkovimi danimi angl binaries Sintaksis opisu bitovogo ryadka dosit gnuchkij oskilki viznachaye znachennya bitiv okremih diapazoniv i mozhe buti zabezpechenij modifikatorom tipu 8 Dekilka prikladiv v interaktivnij komandnij obolonci 1 gt lt lt 23 89 120 gt gt lt lt 23 89 120 gt gt 2 gt lt lt ABC gt gt lt lt 65 66 67 gt gt 3 gt lt lt 10 17 42 16 gt gt lt lt 10 17 0 42 gt gt 4 gt lt lt a b c gt gt lt lt abc gt gt 5 gt lt lt 1024 utf8 gt gt lt lt 208 128 gt gt Konstruktori bitovih ryadkiv angl bitstring comprehension analogichni spiskovim generatoram ale pracyuyut nad bitovimi ryadkami 1 gt lt lt lt lt bnot X 1 gt gt lt lt X 1 gt gt lt lt lt 2 111011 6 gt gt gt gt lt lt 4 6 gt gt U comu prikladi zminna X poslidovno otrimuye biti chisla 2 111011 yaki potim invertuyutsya operaciyeyu bitovogo zaperechennya bnot vid angl binary NOT vnaslidok chogo vihodit chislo 4 8 Kortezh Redaguvati Kortezh angl tuple skladenij tip danih z fiksovanoyu kilkistyu elementiv Pri dostupi do elementiv kortezhu za dopomogoyu vbudovanih funkcij numeraciya elementiv pochinayetsya z odinici a ne z nulya Pershij element kortezhu atom mozhut vikoristovuvati dlya opisu roli kortezhu u programi jogo nazivayut tegom angl tag mitka V Erlang prijnyato buduvati rizni tipi danih na osnovi kortezhiv z tegami ce polegshuye znevadzhennya programi ta vvazhayetsya garnim stilem programuvannya 8 Dlya roboti z kortezhami ye dekilka vbudovanih funkcij napriklad 8 1 gt tuple size a 1 777 3 2 gt element 1 b 2 3 4 b 3 gt setelement 1 c 5 d d 5 Spisok Redaguvati Spisok angl list skladenij tip danih zi zminnoyu kilkistyu elementiv Dlya manipulyaciyi zi spiskami mozhna vikoristovuvati funkciyi modulya a href https www erlang org doc man lists html all 2 lists a standartnoyi biblioteki Formalno spisok viznachayetsya yak struktura yaka maye golovu angl head ta hvist angl tail sho virazhayetsya sintaksichno u viglyadi HEAD TAIL de hvist zazvichaj ye spiskom mozhlivo porozhnim Porozhnij spisok poznachayetsya 8 Spiski mozhna zapisuvati i bilsh zvichnim sposobom Nastupni zapisi ekvivalentni 1 gt a b c a b c Dlya roboti zi spiskami mozhna vikoristovuvati konstruktori spiskiv 13 generatori spiskiv en List Comprehensions napriklad 1 gt X 2 X lt 1 2 3 4 0 5 1 0 1 5 2 0 Modul a href https www erlang org doc man lists html all 2 lists a standartnoyi biblioteki mistit funkciyi dlya roboti zi spiskami ta ryadkami oskilki ryadok vidu test v Erlang ye spiskom kodiv simvoliv 8 taki yak znahodzhennya najbilshogo znachennya sortuvannya zmini poryadku elementiv na protilezhnij otrimannya sumi elementiv tosho U nastupnomu prikladi skleyuyemo dva spiski v odin za dopomogoyu konkatenaciyi i dali rozbivayemo na dva spiski funkciyeyu lists split 2 1 gt lists split 2 l 2 3 4 5 6 l 2 3 4 5 6 A ce priklad togo sho ryadok vidu test v Erlang ye spiskom kodiv simvoliv 1 gt test t e s t true 2 gt test 116 101 115 116 true 3 gt t 116 U moduli a href https www erlang org doc man lists html all 2 lists a ye takozh nabir funkcij vishogo poryadku takih yak lists all 2 lists any 2 lists dropwhile 2 lists filter 2 lists foldl 3 lists foldr 3 lists map 2 lists foreach 2 lists map 2 funkciya vishogo poryadku yaka daye mozhlivist zastosuvati viznachenu nami funkciyu do kozhnogo elementa spisku v rezultati otrimayemo novij spisok third degree R gt lists map fun X gt math pow X 3 end R V danomu prikladi funkciya math pow X 3 pidnosit do stepenya 3 kozhen element spisku R lists filter 2 dana funkciya vishogo poryadku prijmaye dva parametri funkciyu predikat za dopomogoyu yakoyi mi vidfiltrovuyemo nash spisok drugij parametr Povertaye novij spisok rezultat obrobki filtrom vhidnogo spisku multiple three List gt lists filter fun X gt X rem 3 0 end List V danomu prikladi z vhidnogo spisku List u novij vihidnij spisok popadut lishe elementi kratni trom lists foldl 3 funkciya livoyi zgortki angl fold zgornuti l vid angl left livij prijmaye 3 argumenti funkciyu zgortannya pochatkove znachennya akumulyatora perelikFunkciya zgortannya prijmaye dva argumenti potochnij element spisku ta potochne znachennya akumulyatora I povertaye nove znachennya akumulyatora Klasichni prikladi obchislennya sumi ta dobutku elementiv masivu 1 gt Numberlist 11 12 13 14 15 11 12 13 14 15 2 gt lists foldl fun Item Acc gt Acc Item end 0 Numberlist 65 3 gt lists foldl fun Item Acc gt Acc Item end 1 Numberlist 360360 Nastupnij priklad ilyustruye robotu funkciyi pravoyi zgortki lists foldr angl fold zgornuti r vid angl right pravij pershim parametrom yakoyi maye buti funkciya 1 gt D fun V A gt V A end funkciya D dilennya V na A Fun lt erl eval 12 82930912 gt 2 gt lists foldr D 1 1 2 4 8 0 25 3 gt 1 2 4 8 1 0 25 Rezultat vikonannya zgortki sprava nalivo u ryadku 2 totozhnij lancyuzhkovomu podilu ryadok 3 Drugij parametr foldr pochatkove znachennya tak zvanogo akumulyatora Dlya kozhnogo elementa spisku sprava livoruch do elementa ta akumulyatora zastosovuyetsya funkciya zadana pershim argumentom foldr a znachennya zapisuyetsya v akumulyator Za vicherpannyam spisku funkciya povertaye znachennya akumulyatora Funkciya ye dosit potuzhnim zasobom yaksho vrahuvati sho akumulyator mozhe buti spiskom abo kortezhem 9 Zazvichaj koristuyutsya foldl tomu sho operaciya otrimannya elementu golovi spisku vikonuyetsya za konstantnij chas a dlya otrimannya elementu z kincya spisku potribno projtis cherez ves spisok 16 Ryadok Redaguvati U Erlang nemaye samostijnogo tipu dlya ryadkiv vnutrishno ryadki ye spiskami kodiv simvoliv Ryadok Privit rivnosilnij u vidpovidnomu koduvanni spisku 1055 1088 1080 1074 1077 1090 33 Dlya pravilnoyi interpretaciyi spiskiv kodiv simvoliv yak ryadkiv v interaktivnij konsoli zapuskajte z vidpovidnim parametrom erl pc unicode Erlang pidtrimuye Unicode yak u ryadku tak i zapisu okremogo simvolu X de X deyakij simvol 9 Binarni poslidovnosti zapisuyutsya ta vidobrazhayutsya yak poslidovnosti cilih chisel abo ryadkiv pomisheni mizh podvijnimi simvolami lt ta gt Dlya prikladu 1 gt lt lt 5 10 20 gt gt lt lt 5 10 20 gt gt 2 gt lt lt hello gt gt lt lt hello gt gt term to binary Term gt Bin Konvertuye bud yakij term Erlang u binarnu poslidovnist 16 Binarna poslidovnist viroblena za dopomogoyu term to binary zberigayetsya v tak zvanomu zovnishnomu formati termu Termi yaki buli konvertovani v binarni poslidovnosti z vikoristannyam term to binary mozhut buti zberezheni v fajli peredani v povidomlennyah po merezhi tosho a pochatkovij term z yakogo voni buli zrobleni mozhe buti vidnovlenij piznishe Ce nadzvichajno korisno dlya zberezhennya skladnih struktur danih u fajli abo nadsilannya skladnih struktur danih na viddaleni mashini 16 1 gt B term to binary useful lt lt 131 107 0 6 117 115 101 102 117 108 gt gt 2 gt binary to term B useful Atomi i ryadki zovni dosit shozhi ale mayut rizni realizaciyi Todi yak atomi mozhna lishe porivnyuvati ryadki pidtrimuyut bagato inshih operacij yim ye bezlich funkcij v modulyah lists i string Ryadok mozhe vikonuvati funkciyi atoma ale pam yat yaku zajmaye ryadok proporcijna jogo dovzhini todi yak atomi zberigayutsya v sistemnij tablici i na kozhne zberigannya peresilannya atoma v programi pripadaye lishe dekilka bajtiv nezalezhno vid dovzhini atoma Porivnyannya dvoh atomiv ce porivnyannya dvoh vnutrishnih identifikatoriv yake vikonuyetsya za odnu operaciyu todi yak porivnyannya ryadkiv peredbachaye poelementnij prohid tobto porivnyannya kodiv simvoliv elementiv spiskiv 8 Logichni znachennya Redaguvati Dlya znachen bulevoyi logiki istinne ta hibne v Erlang zastosovuyutsya atomi true istinne i false hibne yaki vikoristovuyutsya operaciyami porivnyannya logichnimi operaciyami vbudovanimi funkciyami 8 Priklad 1 gt 2 lt 3 true 2 gt is boolean 125 false Funkcionalnij ob yekt Fun Redaguvati Fun viraz dozvolyaye stvoriti anonimnu funkciyu lyambda funkciyu yaka vikoristovuyetsya napriklad dlya peredachi argumentom v inshu funkciyu Za dopomogoyu fun mozhna takozh otrimati funkcionalnij ob yekt dlya funkciyi modulya 9 Prikladi 1 gt lists map fun X gt X 1 end 1 2 3 2 3 4 2 gt Belongs fun lists member 2 Fun lt lists member 2 gt 3 gt Belongs a a b true Zapis Redaguvati Shob poznachati okremi elementi kortezhiv polegshiti robotu z velikimi kortezhami i uniknuti pomilok pri napisanni programi v Erlang bulo dodano sintaksichnij cukor sintaksis zapisiv angl record Zapisiv ne isnuye v chas vikonannya na etapi kompilyaciyi zapisi peretvoryuyutsya translyuyutsya v kortezhi klyuchi gublyatsya vidpovidno v chas vikonannya isnuyut lishe znachennya zapisiv Dlya roboti z zapisami neobhidno spochatku dati opis zapisu direktivoyu record napriklad dlya zapisu user opis mozhe buti nastupnim 17 record user login anonymous email password Z cogo opisu kompilyator diznayetsya sho mayutsya na uvazi kortezhi z chotiroh elementiv v yakih elementi z drugogo po chetvertij vidpovidayut polyam login nick password zapisu z im yam user viznachayetsya atomom v pershomu elementi kortezhu Znachennyam za zamovchuvannyam dlya polya login ye ryadok anon Yaksho znachennya za zamovchuvannyam ne vkazano yavno takim ye atom undefined Stvorennya zapisiv ta viluchennya elementiv zapisu zavzhdi vimagaye yavnoyi vkazivki imeni zapisu 17 R0 user vsi polya otrimuyut znachennya za zamovchuvannyam R1 user login user1 email user mail com password secret Zadayemo znachennya dlya vsih poliv Onovlennya odnogo znachennya v nayavnomu zapisi R2 R1 user login user2 onovlennya dvoh znachen v nayavnomu zapisi R2 R1 user login user2 email neo matrix org otrimati znachennya po klyuchu z zapisu Nick2 R2 user nick Karta Redaguvati Asociativnij masiv slovnik en map zberigaye pari vidu klyuch znachennya I klyuchem i znachennyam mozhe buti bud yakij term Erlang 18 Map a gt 2 b gt 3 c gt 4 a gt 1 b gt 2 hi gt 42 Key hi maps find Key Map ok 42 Inshi tipi Redaguvati U movi Erlang ye inshi tipi danih Tip posilannya angl reference ye unikalnim u mezhah vuzla klastera z yednanih vuzliv v seredovishi chasu vikonannya Erlang Posilannya stvoryuyetsya viklikom funkciyi make ref 0 i mozhe povtoritisya cherez 282 viklikiv ciyeyi funkciyi Posilannya mozhna porivnyuvati na rivnist a zastosovuyutsya voni dlya odnorazovih poznachok abo charivnogo pechiva 17 Identifikator portu angl port identifier viznachaye port dlya zv yazku iz zovnishnim po vidnoshennyu do Erlang sistemi svitom Port dozvolyaye procesu sho jogo stvoriv vlasniku tak zvanomu priyednanomu procesu obminyuvatisya binarnimi povidomlennyami zi storonnimi programami i OS sposobom prijnyatim v danij operacijnij sistemi 17 19 Identifikator procesu angl Pid yak i viplivaye z jogo nazvi identifikuye proces sho porodzhuyetsya riznimi funkciyami spawn Identifikator mozhna vvazhati unikalnim pid chas roboti Erlang sistemi ale v sistemah sho dovgo pracyuyut mozhut vse taki buti vikoristani povtorno sho zazvichaj ne ye problemoyu na praktici 17 Vbudovani funkciyi dlya roboti z tipami Redaguvati Dlya peretvorennya tipiv vikoristovuyutsya vbudovani funkciyi BIF angl builtin function vidu x to y z x v y a dlya perevirki nalezhnosti znachennya togo chi inshogo tipu funkciyi vidu is x ye x 1 gt atom to list hello hello 2 gt list to binary world lt lt world gt gt 3 gt tuple to list 1 2 3 4 1 2 3 4 1 gt is integer 3 true 2 gt is tuple abc false 3 gt is integer 3 0 falseOperaciyi RedaguvatiArifmetichni operaciyi Redaguvati Erlang nadaye najbilsh poshireni arifmetichni operaciyi dlya cilih chisel i chisel z plavayuchoyu komoyu Poznachennya Operaciya sho vikonuyetsya priklad Rezultat prikladu Unarnij plyus 3 3 Unarnij minus 3 3 Dodavannya 2 3 5 Vidnimannya 7 3 4 mnozhennya 1 2 0 4 0 48 Dilennya 5 3 1 6666666666666667div Cilochiselne dilennya 5 div 3 1rem Zalishok vid dilennya 5 rem 3 2Vsi ci operaciyi livoasociativni Unarni operaciyi mayut najvishij prioritet potim sliduye mnozhennya i dilennya najmenshij prioritet u skladannya ta vidnimannya Pri neobhidnosti cile mozhe privoditisya do tipu z ruhomoyu komoyu 8 Bitovi operaciyi Redaguvati Bitovi operaciyi pracyuyut nad cilimi chislami i dayut v rezultati cile chislo 8 Poznachennya Operaciya sho vikonuyetsya priklad Rezultat prikladubnot Pobitove zaperechennya bnot 2 1000 9band Pobitove I 2 band 3 2bor Pobitove ABO 1 bor 2 3bxor Pobitove viklyuchne ABO 5 bxor 3 6bsr Pobitovij zsuv vpravo 32 bsr 2 8bsl Pobitovij zsuv vlivo 1 bsl 5 32Logichni operaciyi Redaguvati Logichni operaciyi pracyuyut nad logichnimi znachennyami true istinne i false hibne oderzhuvanimi v rezultati porivnyan ta zastosuvannya funkcij perevirki tipu 8 Poznachennya Operaciya sho vikonuyetsya priklad Rezultat prikladunot Zaperechennya NE not true falseand Kon yunkciya I true and 1 lt 5 trueandalso Analogichno and ale ne obchislyuye drugij operand yaksho pershij false false andalso 1 lt 5 falseor Diz yunkciya ABO is atom 1 or is atom 1 falseorelse Analogichno or ale ne obchislyuye drugij operand yaksho pershij true true orelse 1 lt 5 truexor Viklyuchne ABO true xor true falseOperaciyi porivnyannya Redaguvati Operaciyi porivnyannya otrimuyut dva operandi a rezultatom operaciyi ye logichne znachennya true abo false U Erlang ye nastupni operaciyi rivno rivno vrahovuyuchi tip vikoristovuyetsya dlya porivnyannya chisel ne rivno ne rivno vrahovuyuchi tip vikoristovuyetsya dlya porivnyannya chisel lt menshe abo dorivnyuye lt menshe gt bilshe gt bilshe abo dorivnyuye perevirka na rivnist ne vrahovuyuchi tip 1 gt 5 5 true 2 gt 5 5 0 true perevirka na rivnist vrahovuyuchi tip 4 gt 5 5 true 5 gt 5 5 0 false Mozhna porivnyuvati znachennya riznih tipiv ale voni vvazhayutsya v Erlang vporyadkovanimi nastupnim chinom 8 chislo lt atom lt posilannya lt funkciya lt port lt identifikator procesu lt kortezh lt spisok lt binarni daniSpiski vvazhayutsya vporyadkovanimi v leksikografichnomu poryadku a kortezhi porivnyuyutsya za dovzhinoyu i lishe potim u leksikografichnomu poryadku 8 Zminni Redaguvati Zminni sluzhat dlya zberigannya znachen prostih i skladovih tipiv Im ya zminnoyi pochinayetsya z velikoyi literi u specialnih vipadkah z pidkreslennya i mozhe mistiti bukvi cifri pidkreslennya Zminnij mozhna prisvoyiti znachennya lishe odin raz cya vlastivist movi programuvannya nazivayetsya odinichnim prisvoyennyam angl single assignment Do perevag odinichnogo prisvoyennya mozhna vidnesti usunennya neobhidnosti v blokuvannyah a takozh sproshennya nalagodzhennya programi 20 Vidbuvayetsya obchislennya redukciya argumentiv funkciyi pered zastosuvannyam funkciyi do cih argumentiv vhidnih parametriv Oblast vidimosti zminnoyi poshiryuyetsya vid yiyi viznachennya en bind zv yazuvannya do zakinchennya klozi funkciyi Priklad binomial X gt Y X X X Y prod 1 T gt prod T prod Y T gt Y prod T prod gt 1 U comu prikladi oblast vidimosti X ves opis funkciyi binomial 1 a Y vid prisvoyennya do kincya opisu Zminna Y u drugij klozi funkciyi prod 1 ne maye vidnoshennya do zminnoyi Y z binomial 1 yiyi oblast vidimosti poshiryuyetsya do kincya ciyeyi klozi 8 Pri vihodi obchislen za mezhi oblasti vidimosti zminnoyi pam yat zajnyata yiyi vmistom mozhe buti zvilnena u procesi zbirannya smittya yaksho znachennya zminnoyi ne vikoristovuyetsya v inshij chastini programi 17 Zistavlennya zi vzircem Redaguvati Zistavlennya zi zrazkom en Pattern Matching vikoristovuyetsya v Erlang dlya prisvoyennya u tomu chisli pri roboti z parametrami funkcij upravlinnya potokom vikonannya programi otrimannya znachen skladovih tipiv viboru povidomlennya z chergi U livij chastini porivnyannya abo v zagolovku funkciyi mozhut buti pov yazani vzhe mayut znachennya i nezv yazani otrimuyuchi znachennya zminni a takozh literali atomi chisla ryadki V rezultati vikonannya porivnyannya mozhe viyavitisya uspishnim u comu vipadku zminni zv yazuyutsya zi znachennyami ta neuspishnim zminni zalishayutsya nepov yazanimi U zrazku mozhut buti zminni znachennya yakih dlya zrazka bajduzhe yih imena zapisuyutsya z pidkreslennya Zminni im ya yakih pochinayetsya z pidkreslennya ce zvichajni zminni krim togo sho kompilyator ne bude skarzhitisya yaksho voni ne vikoristani Ne mozhna priv yazuvati do nih znachennya bilshe odnogo razu 8 Funkciyi RedaguvatiProgrami Erlang skladayutsya z funkcij yaki viklikayut odne odnogo Kilkist vhidnih argumentiv parametriv funkciyi nazivayetsya arnistyu Pri vikliku funkciyi zagolovki funkciyi zistavlyayutsya zi zrazkom U razi zbigu parametriv vikliku formalni parametri zv yazuyutsya z faktichnimi i vikonuyetsya vidpovidna chastina tila funkciyi Zapis variantu obchislennya funkciyi dlya deyakogo zrazka mozhe nazivatisya klozom vid angl clause a viznachennya funkciyi ce nabir z odnogo abo bilshe kloziv Dlya utochnennya zistavlennya zi zrazkom u funkciyah mozhna vikoristovuvati ohoronni virazi yaki viplivayut pislya klyuchovogo slova when 9 U prikladi nizhche viznacheno funkciyu obchislennya znaka chisla yaka rozrahovuyetsya v zalezhnosti vid porivnyannya parametra z nulem sign X when X gt 0 gt 1 sign X when X 0 gt 0 sign X when X lt 0 gt 1 Erlang perebiraye matchit klozi funkciyi v tomu poryadku v yakomu voni zapisani zverhu vniz zliva napravo doki ne bude znajdeno vidpovidnij viraz zagolovok klozi yakij zmatchitsya 9 V ohoronnih virazah mozhna vikoristovuvati lishe obmezhenij nabir vbudovanih funkcij oskilki ci funkciyi ne povinni mati pobichnih efektiv Funkciyi Erlang pidtrimuyut rekursivni vikliki U razi koli viznachennya funkciyi zakinchuyetsya rekursivnim viklikom hvostova rekursiya Erlang vikoristovuye optimizaciyu stek viklikiv ne zastosovuyetsya 9 Yak parametrom i rezultatom funkciyi mozhe buti insha funkciya U nastupnomu prikladi funkciya odnogo argumentu povertaye funkciyu dodavannya argumentu 8 1 gt Plus fun X gt fun Y gt X Y end end Viznachennya funkciyi yaka povertaye funkciyu Fun lt erl eval 6 82930912 gt 2 gt Plus 2 Funkciya povertaye Fun ob yekt Fun lt erl eval 6 82930912 gt 3 gt Plus 2 3 Takij sintaksis ne pracyuye 1 syntax error before 4 gt Plus 2 3 Dodatkovi duzhki dozvolyayut dosyagti neobhidnogo rezultatu 5 5 gt Plus2 Plus 2 Plus2 3 Te same z vikoristannyam dodatkovoyi zminnoyi 5 Umovni virazi RedaguvatiOkrim matchingu ta ohoronnih viraziv u klozah funkciyi v Erlang ye inshi umovni virazi viboru if ta case Viraz viboru dozvolyaye organizuvati zistavlennya zi zrazkom useredini funkciyi i zazvichaj maye nastupnij sintaksis if ohorona 1 gt viraz 11 viraz 12 ohorona 2 gt viraz 21 viraz 22 ohorona N gt viraz N1 viraz N2 endTut ohorona1 ohoronnij viraz en guards 21 Ohoronni virazi rozshirennya zistavlennya zi zrazkom sho dodaye viraznosti Bez ohoronnih viraziv mi ne mozhemo viznachati taki rechi yak diapazon znachen chi pevni tipi danih U Erlang if ce viraz yakij mozhe mati dekilka gilok Gilki skanuyutsya poslidovno zverhu donizu dopoki zahisna poslidovnist ne bude ocinena yak true Yaksho ohorona1 pershij guard v danomu prikladi poverne true odrazu pochnetsya vikonannya vidpovidnih viraziv viraz11 viraz12 Pislya vikonannya cih viraziv vidbudetsya vihid z bloku i nastupni umovi ohorona2 ohoronaN pereviryatisya ne budut Yaksho zh ohorona1 poverne false vidbuvayetsya perehid do perevirki nastupnogo ohoronnogo virazu i tak doti poki guard ne poverne znachennya true pislya chogo budut vikonani vidpovidni rozdileni komami virazi i vihid z bloku Slid zauvazhiti sho i tut v ohoronnomu virazi mozhna zastosovuvati lishe obmezhenij nabir operacij ta vbudovanih funkcij Komi v ohoronnomu virazhenni pracyuyut yak operaciya andalso krapka z komoyu yak orelse napriklad 9 if X lt 0 gt io format menshe abo dorivnyuye nulyu n lt lt menshe abo dorivnyuye nulyu utf8 gt gt X gt 0 X lt 10 gt io format bilshe nulya ta menshe desyati n lt lt bilshe nulya ta menshe desyati utf8 gt gt X 10 X 11 gt io format dorivnyuye desyati abo odinadcyati n lt lt dorivnyuye desyati abo odinadcyati utf8 gt gt true gt io format bilshe abo dorivnyuye dvanadcyati n lt lt bilshe abo dorivnyuye dvanadcyati utf8 gt gt end Yaksho zhodna zahisna poslidovnist ne ye istinnoyu vinikaye pomilka vikonannya if clause Pri neobhidnosti mozhna vikoristovuvati zahisnik true V ostannij gilci oskilki cya zahisna poslidovnist zavzhdi virna i vvazhayetsya analogom inshe 16 Kompilyator Erlang stezhit za bezpekoyu zv yazuvannya zminnih useredini umovnih viraziv ce mi mozhemo pobachiti na nastupnomu prikladi module badexample export broken if 1 broken if X gt if X lt 0 gt Z 1 X gt 0 gt Y 1 end Y Z Pri sprobi skompilyuvati modul vinikayut povidomlennya pro pomilki tomu sho v takomu kodi zminni ne pov yazuyutsya zi znachennyam v inshij klozi vidpovidno 1 gt c badexample badexample erl 8 variable Y unsafe in if line 4 badexample erl 8 variable Z unsafe in if line 4 errorPravilnim bulo b viznachiti vsi vikoristovuvani dali za kodom zminni u vsih gilkah if virazi 9 module if else export compare 2 ascii 1 run 3 compare X Y gt Result if X gt Y gt greater X Y gt equal X lt Y gt less end io format p is p than p n X Result Y ascii Letter gt Code if Letter A gt 101 Letter B gt 102 true gt unknown end io format p p n Letter Code run X Y Letter gt compare X Y ascii Letter Mozhna vikoristovuvati viraz case of dlya porivnyannya poslidovnosti paterniv Na vidminu vid virazu if case of dozvolyaye vikoristovuvati ohoronni virazi v punktah spivstavlennya Yaksho zhodnij viraz case ne vidpovidaye zrazku ne matchitsya sistema vikonannya vikliche pomilku pro vidsutnist vidpovidnosti no case clause matching Vikoristovuvati shablon pidkreslennya mozhna shob zahopiti bud yake inshe znachennya yakim ne vidpovidali poperedni klyuchi 5 case expression of pattern1 when guard1 gt expr seq1 pattern2 when guard2 gt expr seq2 end Spochatku obchislyuyetsya expression pripustimo sho pri comu vono nabuvaye znachennya Value Dali Value spivstavlyayetsya z pattern1 razom z opcionalnim kontrolerom guard1 pattern2 i tak dali do pershogo uspishnogo spivstavlennya Yak tilki ce stanetsya vikonuyetsya poslidovnist viraziv expr seqN i rezultat cogo obchislennya staye rezultatom vsogo danogo virazu Yaksho zhoden iz paterniv ne pidijde to vidbuvayetsya vinyatkova situaciya 16 module case of compile export all nowarn export all admit Person gt case Person of male Age when Age gt 21 gt yes with cover female Age when Age gt 21 gt yes no cover male gt no boy admission female gt no girl admission gt unknown end run Person gt Record admit Person io format p n Record Prikladi Redaguvati V funkcionalnih movah programuvannya vidsutni cikli natomist vikoristovuyetsya rekursiya Rozglyanemo funkciyi obchislennya faktorialu module fact export fac 1 func 1 fac 0 gt 1 fac N when N gt 0 gt N fac N 1 Ce rekursiya bez hvostovoyi optimizaciyi vona dobre pracyuye dlya nevelikoyi glibini rekursiyi Prote staye problematichnoyu u vipadku velikoyi glibini rekursiyi Chim bilshe operacij rekursiyi tim bilshe zajme pam yati dana programa u steku pri vikonanni dana rekursiya rozgortayetsya u stek vidpovidno chim bilshe rekursivnih viklikiv tim bilshe pam yati zajme dana programa pri vikonanni 16 Hvostova rekursiya ce rekursiya yaka viklikayetsya ostannoyu instrukciyeyu takim chinom stek zalishayetsya nezminnim abo zh praktichno nezminnim i funkciya mozhe pracyuvati permanentno bez zupinki 16 func N gt func N 1 func 0 A gt A func N A when N gt 0 gt func N 1 N A Hvostova rekursiya nezalezhna vid kilkosti rekursivnih viklikiv v pam yati zalishayutsya lishe dva chisla Sprobuyemo napisati funkciyu obchislennya N nogo chisla Fibonachchi na Erlang dvoma shlyahami algoritmami Spochatku zvichajna rekursiya module fibonacci export fib usual 1 fib tail 1 fib usual 1 gt 0 fib usual 2 gt 1 fib usual N when N gt 0 gt fib usual N 1 fib usual N 2 Dana funkciya trimaye vsi chisla promizhni rezultati odnochasno u pamyati i kilkist rekursivnih viklikiv funkciyi aktivnih procesiv zrostaye nadto strimko Hvostova rekursiya v danomu vipadku pishetsya z vikoristannyam dvoh timchasovih zminnih v yakosti parametriv nashoyi funkciyi Taki zminni nazivayutsya akumulyatorami ta vikoristovuyutsya dlya zberigannya promizhnih rezultativ nashih obchislen shob ne zberigati bagato nezakinchenih obchislen procesiv yaki ochikuyut rezultat rozrahunkiv vid inshih procesiv u pam yati fib tail N when is integer N N gt 0 gt fib tail N 1 0 fib tail 0 A1 gt A1 fib tail N A1 A2 gt fib tail N 1 A2 A1 A2 U pamyati trimayutsya lishe tri chisla ta zajmayetsya obchislennyami lishe odin proces Dodamo dekilka funkcij yaki pracyuyut rekursivno zi spiskom i vikonuyut taki zvichni dlya vsih nas zavdannya viznachennya dovzhini masivu znahodzhennya maksimalnogo minimalnogo elementa masivu obchislennya sumi vsih elementiv masivu 1 Viznachennya dovzhini masivu spochatku zvichajna rekursiyalen list gt 0 len list gt 1 len list H T when is list H T gt 1 len list T hvostova rekursiya z akumulyatoromlength tail List when is list List gt length tail List 0 length tail Acc gt Acc length tail Tail Acc gt length tail Tail 1 Acc 2 Znahodimo maksimalnij element masivu spochatku zvichajna rekursiyamax el Last when is number Last gt Last max el H T when hd T gt H gt max el T max el H T gt max el H tl T ta sama funkciya z dopomogoyu hvostovoyi rekursiyi i akumulyatoratail maxx H T when is number H gt tail maxx T H tail maxx Acc when is number Acc gt Acc tail maxx H T Acc when H gt Acc gt tail maxx T H tail maxx T Acc gt tail maxx T Acc 3 Pidrahuyemo sumu elementiv masivu zvichajna rekursiyasumx gt 0 sumx H T gt H sumx T pidrahunok sumi elementiv masivu z dopomogoyu hvostovoyi rekursiyitail sum List gt tail sum List 0 tail sum Acc gt Acc tail sum H T Acc gt tail sum T Acc H Odin z algoritmiv sortuvannya shvidke sortuvannya 12 module qsort export qsort 1 qsort gt qsort Pivot Rest gt qsort Front Front lt Rest Front lt Pivot Pivot qsort Back Back lt Rest Back gt Pivot U comu prikladi funkciya qsort viklikayetsya rekursivno do vicherpannya vsih elementiv Viraz Front Front lt Rest Front lt Pivot zbiraye spisok Front z elementiv Rest takih sho element Front menshij za Pivot Operator skleyuye spiski Preprocesor ta makrosi Redaguvati Preprocesor Erlang EPP dozvolyaye vkladati fajli z vihidnim kodom odin v inshij viznachati makrosi ta zdijsnyuvati prosti ta parametrizovani makropidstanovki 8 Makros viznachayetsya za dopomogoyu direktivi define a makropidstanovka zdijsnyuyetsya vkazivkoyu imeni makrosa ta mozhlivih parametriv pislya znaka pitannya Nastupnij priklad pokazuye viznachennya ta zastosuvannya parametrizovanogo makrosa define ZERO X X 0 is zero T when ZERO X gt true is zero T gt false Im ya makrosa zazvichaj pishetsya velikimi literami Viznachennya makrosa maye mistiti leksemi Erlang cilkom napriklad sproba zadati chastinu imeni zminnoyi za dopomogoyu makrosa viklikaye sintaksichnu pomilku Makrosi mozhut vikoristovuvatisya dlya pidvishennya zruchnosti chitannya kodu v ohoronnih virazah dlya operatoriv nalagodzhennya i t in Preprocesor maye dekilka viznachenih makrosiv yaki ne mozhna pereviznachiti MODULE MODULE STRING FILE LINE MACHINE 22 Zagolovnij fajl rozshirennya hrl z viznachennyami makrosiv ta zapisiv mozhna vklyuchiti za dopomogoyu direktivi include 8 Obrobka pomilok RedaguvatiDlya obrobki vinyatkovih situacij Erlang mozhna zastosovuvati konstrukciyu try catch v zagalnomu vipadku zapisuyetsya v nastupnomu viglyadi 8 try viraz dlya obchislennya of zrazok 1 when ohorona 1 gt viraz 1 zrazok 2 when ohorona 2 gt viraz 2 zrazok N when ohorona N gt viraz N catch klass 1 zrazokVikl 1 when ohoronaVikl 1 gt virazVikl 1 klassM zrazokViklM Stacktrace when ohoronaViklM gt virazViklM endYak i u vipadku case virazu viraz sho obchislyuyetsya zistavlyayetsya zi zrazkom chastini mizh of i catch dlya otrimannya rezultatu 9 Pislya klyuchovogo slova catch sliduyut chastini obrobki vinyatkiv u yakih na dodatok do zrazkiv vinyatkiv mozhut buti vkazani klasi vinyatkiv pered dvokrapkoyu error throw ta exit Stacktrace ce spisok viklikiv funkcij obchislennya yakih vikonuvala programa koli bulo stvoreno vinyatok Pidkreslennya mozhe vikoristovuvatis yak u zrazku tak i v klasi viklyuchennya Nastupnij prostij priklad ilyustruye perehoplennya pomilki klasu error pri obchislenni kvadratnogo korenya 1 gt try math sqrt 1 catch error Error gt error Error end error badarith 2 gt try math sqrt 4 catch error Error gt error Error end 2 0Dlya stvorennya vinyatkiv viznachenih koristuvachem vikoristovuyetsya funkciya throw 1 yaka prijmaye kortezh z bilsh detalnim opisom pomilki 9 sho vinikla i generuye vinyatok klasu throw Vikoristannya ciyeyi funkciyi nebazhane cherez pogirshennya zruchnosti chitannya kodu programi ale mozhe znadobitisya v deyakih vipadkah pri roboti z vkladenimi strukturami danih napriklad pri rozbori XML 8 Vinyatki klasu exit vinikayut u rezultati vikliku vbudovanoyi funkciyi exit 1 abo signalu vihodu Do rozrobki Richardom Karlssonom Richard Carlsson z komandi proyektu HiPE opisanogo vishe novogo mehanizmu obrobki vinyatkiv z yavivsya u versiyi R10B v Erlang vikoristovuvalisya catch virazi 8 Moduli RedaguvatiKod programi na Erlang mozhna rozbiti na okremi moduli Modul ce im ya dlya naboru funkcij organizovanih v odnomu fajli Im ya modulya maye zbigatisya z im yam fajlu yaksho vidkinuti rozshirennya 8 Modul mozhna vidkompilyuvati v bajt kod yak iz komandnogo ryadka operacijnoyi sistemi tak i z komandnoyi obolonki Erlang 13 U fajli modulya mozhna zapisati ogoloshennya funkcij ta direktivi inodi nazivayutsya atributami Obov yazkovim atributom ye lishe module atom imeni modulya Inshij atribut sho chasto vikoristovuyetsya export zastosovuyetsya dlya opisu spisku eksportovanih funkcij tobto funkcij yaki mozhna vikoristovuvati za mezhami modulya Funkciyi v Erlang odnoznachno viznachayutsya modulem im yam ta arnistyu Napriklad math cos 1 vidpovidaye funkciyi cos z modulya math prijmaye odin argument Viklikati funkciyu mozhna tak math cos 1 2 8 Vihidnij tekst modulya kompilyuyetsya v BEAM fajl fajl sho mistit bajt kod virtualnoyi mashini BEAM angl Bogdan s Bjorn s Erlang Abstract MachineBogdan s Bjorn s Erlang Abstract Machine 23 U svoyu chergu ERTS angl Erlang Runtime SystemErlang Runtime System sistema chasu vikonannya Erlang vikonuye cej kod 9 Procesi Redaguvati Osnovnoyu abstrakciyeyu paralelnogo programuvannya v Erlang ye proces Procesi mozhut porodzhuvati inshi procesi vikonuvatisya odnochasno obminyuvatisya povidomlennyami reaguvati na zavershennya odin odnogo Stvorennya procesiv Redaguvati Erlang maye nevelikij ale potuzhnij nabir primitiviv dlya stvorennya procesiv i spilkuvannya mizh nimi Mizhprocesovij zv yazok pracyuye za dopomogoyu asinhronnoyi sistemi peredachi povidomlen yaka ne maye spilnogo dostupu kozhen proces maye poshtovu skrinku chergu povidomlen yaki buli nadislani inshimi procesami ta she ne vikoristani Dlya otrimannya povidomlen yaki vidpovidayut bazhanim patternam proces vikoristovuye primitiv receive Procedura obrobki povidomlen pereviryaye povidomlennya po cherzi na vidpovidnist kozhnomu patternu poki odin z nih ne zbigayetsya Koli povidomlennya vikoristano ta vidaleno z poshtovoyi skrinki proces vidnovlyuye vikonannya Povidomlennya mozhe mistiti bud yaku strukturu Erlang vklyuchayuchi primitivi cili chisla chisla z plavayuchoyu tochkoyu simvoli atomi kortezhi spiski ta funkciyi Dlya stvorennya novogo procesu sluzhit dekilka vbudovanih funkcij spawn ta yiyi analogi 24 Funkciyi povertayut identifikator procesu yakij mozhe vikoristovuvatisya napriklad dlya nadsilannya povidomlen novostvorenomu procesu V interaktivnij konsoli erl mozhna otrimati spisok procesiv ta inshu informaciyu za dopomogoyu funkcij processes ta i vidpovidno 8 Navedenij nizhche priklad kodu pokazuye vbudovanu pidtrimku rozpodilenih procesiv Stvorimo proces ta viklichemo funkciyu web start server Port MaxConnections ServerProcess spawn web start server Port MaxConnections Stvorimo viddalenij proces ta viklichemo funkciyu web start server Port MaxConnections na viddalenij nodi RemoteNode RemoteProcess spawn RemoteNode web start server Port MaxConnections Vidpravimo povidomlennya procesu ServerProcess asinhronno Povidomlennya skladayetsya z kortezha z atomom pause ta chislom 10 ServerProcess pause 10 Otrimayemo povidomlennya nadislani comu procesu receive a message gt do something data DataContent gt handle DataContent hello Text gt io format Got hello message s Text goodbye Text gt io format Got goodbye message s Text end Yak pokazuye priklad procesi mozhut buti stvoreni u viddalenih vuzlah i vzayemodiya z nimi ye prozoroyu u tomu sensi sho vzayemodiya z viddalenimi procesami pracyuye tochno tak samo yak vzayemodiya z lokalnimi procesami Rozpodilenist en Concurrency pidtrimuye osnovnij metod obrobki pomilok v Erlang Koli proces avarijno zavershuyetsya vin akuratno zavershuye robotu ta nadsilaye povidomlennya keruyuchomu procesu yakij potim mozhe vzhiti zahodiv napriklad zapustiti novij proces yakij bere na sebe zavdannya starogo procesu Peredacha ta prijom povidomlen Redaguvati Yak i mova Occam Erlang vikoristovuye dlya vidpravki povidomlennya sintaksis zi znakom okliku Process ID Message Prijom povidomlennya tobto viluchennya jogo z chergi poshtovoyi skrinki procesu vikonuyetsya za dopomogoyu receive viraziv yaki zazvichaj zapisuyutsya takim chinom 8 receive zrazok 1 when ohorona 1 gt viraz 11 viraz 12 zrazok 2 when ohorona 2 gt viraz 21 viraz 22 zrazok N when ohorona N gt viraz N1 viraz N2 Nepov yazanaZminnaDlyaInshihPovidomlen gt viraz 1 viraz 2 end Zustrivshi takij viraz interpretator poslidovno pereglyadaye povidomlennya z chergi Kozhne povidomlennya interpretator zistavlyaye zi zrazkom i yaksho vono vidpovidaye zrazku to obchislyuyutsya vidpovidni virazi Koli vsi povidomlennya perebrani i potribnogo ne viyavilosya proces ochikuye novih povidomlen pislya chogo perebir chergi povtoryuyetsya Yaksho v receive virazi vidsutnij zrazok yakomu zadovolnyaye bud yake povidomlennya takij viraz nazivayetsya vibirkovim receive virazom 8 Obrobka pomilok ta zavershennya procesiv Redaguvati Proces mozhna zv yazati z inshim u rezultati mizh procesami vstanovlyuyetsya dvonapravlene z yednannya angl link Yaksho odin iz procesiv zavershuyetsya nenormalno vsim pov yazanim z nim procesam peredayetsya signal vihodu angl exit signal Procesi sho otrimali signal zavershuyutsya poshiryuyuchi signal dali Signal vihodu ye kortezhem elementami yakogo ye atom EXIT vihid identifikator procesu sho zavershivsya i prichinu zavershennya procesu Prichina zavershennya peredayetsya lancyuzhkom procesiv sho zavershuyutsya 8 Proces mozhe zdijsniti perehoplennya pomilki angl trapping errors yaksho vin maye praporec perehoplennya vihodu Takij proces otrimuye signali vihodu pov yazanih z nim procesiv u viglyadi zvichajnih povidomlen z analogichnoyu strukturoyu kortezhu Perehoplenij signal vihodu bilshe ne peredayetsya pov yazanim z procesom perehoplyuvachem procesam Signal vihodu z prichinoyu atomom normal normalne zavershennya procesu ne viklikaye zavershennya pov yazanogo procesu Yaksho zh prichina atom kill proces zavershuyetsya bezzasterezhno nezalezhno vid praporec perehoplennya vihodu a pov yazanim z nim procesam yak prichina vidpravlyayetsya atom killed sho daye yim mozhlivist zreaguvati 8 Erlang maye mozhlivist vstanoviti i odnonapravlene z yednannya Pri zavershenni procesu sho sposterigayetsya proces sposterigach otrimuye povidomlennya iz zaznachennyam prichini zavershennya Proces mozhe zupiniti sebe sam chi zupiniti inshij proces viklikavshi funkciyu exit 8 Vvid vivid Redaguvati U planuvalniku procesiv Erlang sistemi problema vvodu vivodu vlastiva bagatom inshim movam paralelnogo programuvannya virishena dostatno elegantno Upravlinnya vvodom vivodom integrovane z planuvalnikom vzhe na nizhnomu rivni zdijsnyuyetsya na osnovi podij sho dozvolyaye programi obroblyati vhidni ta vihidni dani bez zajvih blokuvan Takij pidhid vimagaye menshogo chisla vipadkiv ustanovlennya ta rozrivu z yednan a takozh pribiraye neobhidnist blokuvannya ta peremikannya kontekstu Sposib chastishe zastosovuyetsya v sistemah z yavnimi vimogami visokoyi dostupnosti ta nizkogo chasu vidguku Realizaciya podiyevo oriyentovanogo vvodu vivodu vbudovana v Erlang sistemu Ce ye perevagoyu pri proyektuvanni paralelnih dodatkiv 17 Standartna biblioteka mistit modul io z funkciyami vvodu vivodu Taki funkciyi mistyat v sobi pobichni efekti Voni polyagayut napriklad u poyavi vivedenoyi informaciyi v konsoli abo u zapisuvanni danih u fajl na disku Napriklad funkciya io format dlya formatovanogo vivodu vivodit ryadok iz pidstanovkoyu parametriv povertayuchi u razi uspihu atom ok 8 1 gt io format priklad vivodu p n 1 priklad vivodu 1 okFunkciyi modulya io peredbachayut standartnij servernij interfejs vvodu vivodu Protokol vvodu vivodu Erlang angl The Erlang I O protocol detalno viznachaye zv yazok kliyenta i servera zabezpechuye dvonapravlenij zv yazok mizh kliyentami ta serverami Server vvodu vivodu ce proces yakij obroblyaye zapiti ta vikonuye potribne zavdannya napriklad na pristroyi vvedennya vivedennya Kliyent ce bud yakij proces Erlang yakij bazhaye chitati abo pisati dani z na pristrij vvedennya vivedennya 25 Biblioteki RedaguvatiStandartna biblioteka moduliv Redaguvati Zgidno z oficijnoyu dokumentaciyeyu standartna biblioteka moduliv STDLIB 14 ye obov yazkovoyu dlya vklyuchennya do minimalnoyi sistemi Erlang OTP 26 razom z yadrom Erlang Biblioteka mistit moduli sho nadayut riznomanitni funkciyi dlya roboti z vbudovanimi tipami ta inshimi strukturami danih vvodu vivodu zvernennya do seredovisha dlya roboti z fajlovoyu sistemoyu procesami tosho Zgidno z oficijnoyu dokumentaciyeyu standartna biblioteka moduliv STDLIB ye obov yazkovoyu dlya vklyuchennya do minimalnoyi sistemi Erlang OTP 26 razom z yadrom Erlang Biblioteka mistit moduli sho nadayut riznomanitni funkciyi dlya roboti z vbudovanimi tipami ta inshimi strukturami danih vvodu vivodu zvernennya do seredovisha dlya roboti z fajlovoyu sistemoyu procesami tosho Modul a href https www erlang org doc man array array a viznachaye funkcionalnij abstraktnij tip danih dlya dinamichnogo masivu mistit funkciyi viluchennya ta onovlennya elementiv masivu rekursivni funkciyi dlya roboti z masivami Modul a href https www erlang org doc man string string a rozshiryuye mozhlivosti modulya a href https www erlang org doc man lists html all 2 lists a funkciyami dlya roboti bezposeredno zi spiskami simvoliv yakimi ye ryadki v movi Erlang Modul a href https www erlang org doc man dict dict a vid angl dictionary slovnik mistit funkciyi dlya asociativnogo masivu Napriklad zberezhennya viluchennya ta vidalennya znachennya za klyuchem z yednannya masiviv tosho Modul a href https www erlang org doc man math math a mistit matematichni funkciyi Modul a href https www erlang org doc man random random a mistit funkciyi dlya generaciyi psevdovipadkovih chisel Modul a href https www erlang org doc man calendar calendar a zabezpechuye obchislennya miscevogo ta universalnogo chasu dnya tizhnya ta bagatoh funkcij peretvorennya chasu Chas ye miscevim koli vin nalashtovanij vidpovidno do potochnogo chasovogo poyasu ta litnogo chasu Chas ye universalnim koli vin vidobrazhaye chas na nulovij dovgoti bez bud yakih popravok na litnij chas Modul a href https www erlang org doc man timer timer a mistit funkciyi perevedennya intervaliv chasu do milisekund zapusku podij za tajmerom ta inshi pov yazani z chasom funkciyi Modul a href https www erlang org doc man erlang erlang a mistit vbudovani funkciyi Erlang po zamovchuvannyu funkciyi z cogo modulya ye importovanimi v kozhen modul Modul a href https www erlang org doc man file html file a zabezpechuye interfejs do fajlovoyi sistemi Funkciyi dlya vidkrittya zakrittya chitannya ta zapisu fajliv pereglyadu direktorij i t d Modul a href https www erlang org doc man filelib html filelib a mistit utiliti vishogo rivnya nizh modul a href https www erlang org doc man file html file a Cej modul ne pidtrimuye neobrobleni imena fajliv tobto fajli imena yakih ne vidpovidayut ochikuvanomu koduvannyu Taki fajli ignoruyutsya funkciyami cogo modulya Dopomizhni funkciyi dlya manipulyacij z fajlami ensure dir Name gt ok error Reason Perekonuyetsya sho vsi batkivski katalogi dlya vkazanogo fajlu abo imeni katalogu isnuyut namagayuchis stvoriti yih yaksho neobhidno Povertaye OK yaksho vsi batkivski katalogi vzhe isnuyut abo mozhut buti stvoreni Povertaye error Reason yaksho yakijs batkivskij katalog ne isnuye ta ne mozhe buti stvorenij ensure path Path gt ok error Reason Perekonuyetsya sho vsi batkivski katalogi dlya vkazanogo shlyahu Path isnuyut namagayuchis stvoriti yih yaksho neobhidno Na vidminu vid secure dir 1 cya funkciya namagatimetsya stvoriti vsi segmenti shlyahu yak katalog vklyuchayuchi ostannij segment Povertaye OK yaksho vsi batkivski katalogi vzhe isnuyut abo mozhut buti stvoreni Povertaye error Reason yaksho yakijs batkivskij katalog ne isnuye ta ne mozhe buti stvorenij Modul a href https www erlang org doc man filename filename a mistit funkciyi dlya analizu ta obrobki imen fajliv Ci funkciyi stvoreni takim chinom shob kod Erlang mig pracyuvati na bagatoh riznih platformah iz riznimi formatami imen fajliv Nazva fajlu mozhe buti korotkoyu vidnosnoyu nazvoyu napriklad foo erl dovgoyu absolyutnoyu nazvoyu vklyuchayuchi poznachennya diska nazvoyu katalogu yak ot D usr local bin erl lib tools foo erl abo bud yakimi variaciyami mizh nimi Dopomizhni funkciyi dlya manipulyacij z fajlami absname Filename gt file filename all Peretvoryuye vidnosne im ya fajlu ta povertaye absolyutne im ya Ne robit sprob stvoriti najkorotshu absolyutnu nazvu oskilki ce mozhe dati nepravilni rezultati u fajlovih sistemah yaki dozvolyayut posilannya absname Filename Dir gt file filename all Te same sho absname 1 za vinyatkom togo sho katalog do yakogo maye buti vidnesene im ya fajlu vkazano v argumenti Dir Modul a href https www erlang org doc man io html io a zabezpechuye interfejs do standartnih serveriv vvedennya vivedennya Erlang Usi funkciyi vivedennya povertayut OK yaksho voni uspishni abo zavershuyut robotu yaksho ce ne tak Funkciyi v comu moduli mayut dodatkovij parametr IoDevice Yaksho vin vklyuchenij ce bude pid procesu yakij obroblyaye protokoli vvedennya vivedennya Zazvichaj IoDevice yakij povertaye file open 2 Yaksho IoDevice ne vkazano vikoristovuyetsya standard io Opis protokoliv vvodu vivodu ye u rozdili Protokol vvodu vivodu Erlang u posibniku koristuvacha Modul a href https www erlang org doc man io lib io lib a funkciyi biblioteki vvedennya vivedennya Mistit funkciyi dlya peretvorennya v i z ryadkiv spiskiv simvoliv Voni vikoristovuyutsya dlya realizaciyi funkcij v moduli io Modul a href https www erlang org doc man crypto html crypto a zabezpechuye nabir kriptografichnih funkcij Nayavni hesh funkciyi SHA1 SHA2 Secure Hash Standard FIPS PUB 180 4 SHA3 Standard Permutation Based Hash and Extendable Output Functions FIPS PUB 202 BLAKE2 fast secure hashing MD5 Message Digest Algorithm RFC 1321 MD4 Message Digest Algorithm RFC 1320 Modul u crypto app u dodatok crypto Metoyu programi crypto ye nadannya Erlang API dlya kriptografichnih funkcij API znahoditsya na dosit nizkomu rivni i ye deyaki vidpovidni funkciyi API dostupni v public key 3 na vishomu rivni abstrakciyi yakij vikoristovuye kriptododatok u svoyij realizaciyi Potochna realizaciya kripto vikoristovuye nifs dlya interfejsu kriptobiblioteki OpenSSL i mozhe pracyuvati z obmezhenoyu funkcionalnistyu zi starimi versiyami yak OpenSSL 0 9 8c Pidtrimka rezhimu FIPS vimagaye prinajmni versiyi 1 0 1 i vstanovlennya OpenSSL iz pidtrimkoyu FIPS Rekomenduyetsya vikoristovuvati versiyu yaka oficijno pidtrimuyetsya proyektom OpenSSL API sumisni serverni moduli taki yak LibreSSL takozh povinni pracyuvati Kriptododatok shodnya testuyetsya prinajmni z odniyeyu versiyeyu OpenSSL 1 0 1 1 0 2 1 1 0 1 1 1 i 3 0 Rezhim FIPS takozh perevireno dlya 1 0 1 i 1 0 2 Vikoristannya OpenSSL 3 0 iz mehanizmami abo v rezhimi FIPS she ne pidtrimuyetsya programoyu OTP crypto Vihidni versiyi OpenSSL mozhna zavantazhiti z domashnoyi storinki proyektu OpenSSL abo z perelichenih tam sajtiv dzerkal Okrim cih najbilsh vazhlivih moduliv standartna biblioteka mistit bagato inshih z yakimi mozhna poznajomitisya za dokumentaciyeyu 8 Tablici ETS ta DETS Redaguvati Dlya organizaciyi kolekcij v operativnij pam yati v Erlang ye modul ETS angl Erlang Term Storage shovishe termiv Erlang ETS mozhe zberigati chotiri vidi kolekcij mnozhina angl set vporyadkovana mnozhina angl ordered set multimnozhina angl bag multimnozhina z povtorennyami angl duplicate bag 9 Dostup do elementiv kolekcij vidbuvayetsya klyuchovim polem kortezhu klyuchi yak i znachennya mozhut buti bud yakih tipiv Uporyadkovani mnozhini zrealizovani u viglyadi binarnih zbalansovanih AVL derev a inshi kolekciyi z vikoristannyam hesh tablic 8 DETS tablici dopovnyuyut funkcionalnist ETS tablic za vinyatkom vporyadkovanih mnozhin dozvolyayuchi zberigati dani u fajlah Frejmvork OTP Redaguvati nbsp Derevo procesiv ErlangOTP angl Open Telecom Platform ye nalagodzhenim naborom korisnih povedinok angl behaviours procesiv Vin vikoristovuyetsya dlya stvorennya servernih program OTP formalizuye diyi procesiv ta dozvolyaye buduvati na yih osnovi OTP dodatki U modulyah OTR viznacheno zagalni standartizovani shabloni dlya konstruyuvannya paralelnih dodatkiv Gen server interfejsnij modul dlya realizaciyi kliyent servernoyi arhitekturi 27 Zagalnij servernij proces gen server realizovanij za dopomogoyu cogo modulya maye standartnij nabir interfejsnih funkcij i vklyuchaye funkciyi vidstezhennya ta zvituvannya pro pomilki Vin vpisuyetsya v derevo naglyadu OTP Najpopulyarnishimi povedinkami ye uzagalnenij server ta sposterigach angl supervisor 28 Ye j inshi povedinki kincevij avtomat obrobnik podij 29 9 OTP mistit i inshe spoluchne programne zabezpechennya angl middleware napriklad SUBD Mnesia OTP povedinki podilyayutsya na robochi procesi angl worker processes Sho vikonuyut vlasne obrobku zapitiv Procesi sposterigachi angl supervisors U zavdannya procesiv sposterigachiv vhodit stezhennya za robochimi procesami ta inshimi procesami sposterigachami nashadkami Dereva sposterigachiv skladayut OTP dodatok angl application Dokumentaciya Erlang viznachaye OTP dodatok komponentom yakij realizuye deyaku funkcionalnist yaka mozhe buti nezalezhno zapushena na vikonannya i zupinena yak cile a takozh povtorno vikoristana v inshih sistemah 30 Rozrobnik programi pishe kod moduliv funkcij zvorotnogo vikliku angl call back module v yakih i znahoditsya specifichna dlya ciyeyi programi chastina funkcionalnosti 8 Strogo kazhuchi OTP ne ye chastinoyu movi Erlang Odnak vin nastilki uvijshov u kulturu ta praktiku rozrobnikiv na Erlang sho chasom mizh nimi skladno provesti mezhu 9 Rozrobka grafichnogo interfejsu koristuvacha Redaguvati Rozrobka dodatkiv z grafichnim interfejsom koristuvacha krim veb interfejsiv mozhe vestis za dopomogoyu biblioteki wxErlang biblioteki wxWidgets portovanoyi dlya Erlang V standartnu postavku Erlang OTP vhodit WxErlang WxWidgets napisanij na C tomu pered rozrobnikami wxErlang stoyalo zavdannya viraziti zasobami Erlang iyerarhiyu ob yektiv Sproshuyuchi u wxErlang klasam vidpovidayut moduli a ob yektam posilannya makrosam na C vidpovidayut makrosi Erlang Deyaki tipi danih dlya yakih u C buli vikoristani klasi podayutsya v Erlang za dopomogoyu inshih tipiv danih napriklad wxPoint zadayetsya u viglyadi kortezhu z dvoh elementiv Podiyi wxErlang mozhna obrobliti v Erlang abo cherez funkciyu zvorotnogo vikliku angl call back functions abo v bilsh prirodnomu seredovishi Erlang peredacheyu povidomlen 8 Programuvannya na Erlang RedaguvatiInteraktivna obolonka Redaguvati nbsp Interaktivna obolonka erl v okremomu vikniInteraktivna obolonka angl shell dlya Erlang mozhe buti viklikana v Unix podibnih sistemah komandoyu erl u Windows werl Obolonka dozvolyaye vvoditi virazi ta otrimuvati rezultat yih vikonannya viprobuvati novij kod zajmatisya interaktivnim nalagodzhennyam keruvati sistemoyu sho znahoditsya v promislovij ekspluataciyi tosho 17 Takozh obolonka dozvolyaye vikoristovuvati dodatkovi funkciyi komandi dostupni tilki v nij Do prikladu komanda q zdijsnyuye vihid iz obolonki iz zavershennyam vsogo sho robit Erlang sistema 17 V obolonci mozhna viklikati BREAK menyu za dopomogoyu Ctrl C u Unix podibnih OS abo Ctrl Break u Windows Ce menyu maye rizni komandi u tomu chisli a negajna zupinka c prodovzhennya roboti v obolonci ta inshi informacijni ta dopomizhni komandi dlya roboti z Erlang sistemoyu Kombinaciya klavish Ctrl G viklikaye she komandne menyu yakim mozhna za neobhidnosti zupiniti proces sho zavisiv obolonku i povernutisya v obolonku i i potim c 13 Dokumentuvannya ta oformlennya kodu Redaguvati Sistema EDoc mozhe generuvati dokumentaciyu z vihidnogo kodu Dlya dokumentuvannya kodu modulya dostatno dodati pevnim chinom rozmichenij tekst a takozh fajl overview edoc dlya dokumentaciyi rivnya proyektu v ostannomu neobov yazkovo vikoristovuvati znaki komentarya 9 Instrumenti dlya roboti z kodom na Erlang napriklad erlang rezhim v Emacs mayut na uvazi deyaki osoblivosti shodo vzhivannya simvoliv komentarya Komentarem vvazhayetsya tekst vid znaka vidsotka do kincya ryadka v Erlang Tak potrijnij znak vidsotka viklikaye virivnyuvannya livim krayem podvoyenij virivnyuvannya na rivni navkolishnogo kodu a odinochnij znak vidsotka vikoristovuyetsya dlya poznachennya komentarya pislya kodu v kinci ryadka 9 Rozrobniki Erlang virobili pevni stilovi ugodi shodo organizaciyi ta oformlennya vihidnogo kodu Napriklad horoshim stilem vvazhayetsya znizhennya vkladenosti sintaksichnih struktur napisannya korotkih moduliv menshe 400 ryadkiv kodu ta funkcij ne dovshe 15 20 ryadkiv kodu vikoristannya osmislenih imen dlya zminnih ta funkcij tosho 31 Tipi ta analiz kodu RedaguvatiPrograma Dialyzer rozroblena v ramkah proyektu HiPE Vona vhodit do standartnoyi postavki i dozvolyaye viyaviti pomilki u tomu chisli pomilki tipizaciyi shlyahom statichnogo analizu kodu Programa TypEr napisana Tobiasom Lindalom Tobias Lindahl ta Kostisom Sagonasom Kostis Sagonas ye chastinoyu Dialyzer TypEr dozvolyaye pereviryati viznachennya tipiv funkcij zviryati vkazanij u direktivi spec tip funkciyi z yiyi viznachennyam vikonati vivedennya tipiv Programa vivodit vsi tipi sho vidpovidayut uspishnomu zastosuvannyu funkciyi v zagalnomu vipadku lishe priblizno v bilsh grubij bik Vikoristannya funkciyi bud yakim inshim chinom obov yazkovo prizvede do pomilki chasu vikonannya U nastupnomu prikladi pokazanij sintaksis viznachennya tipu direktiva type ogoloshennya tipu poliv zapisu ta direktiva spec razom z viznachennyam funkciyi 8 type user status disabled enabled status odin z dvoh atomiv record user login anon string tipi poliv zapisu password string status user status nickname string spec check password string user gt ok error string deklaraciya funkciyi check password Password User gt viznachennya funkciyi Dialyzer vid angl DIscrepancy AnaLYZer for ERlang Programs analizator superechnostej dlya Erlang program programa dlya viyavlennya v kodi okremih moduliv i v okremih dodatkah pomilok tipiv nedosyazhnogo kodu ta nadlishkovih perevirok Usi viyavleni Dialyzer defekti vimagayut usunennya bo instrument ne daye pomilkovih spracovuvan Dlya kozhnoyi funkciyi vsih moduliv sho pereviryayutsya Dialyzer vstanovlyuye tip vikoristovuyuchi zasnovanij na obmezhennyah vivid tipiv i analiz potokiv danih Pislya viznachennya tipiv funkcij provoditsya analiz protirich u programi 32 Testuvannya profilyuvannya refaktoring Redaguvati Dlya modulnogo testuvannya Erlang nadaye EUnit Dlya sistemnogo testuvannya Erlang nadaye frejmvork Common Test EUnit mistit zasobi dlya opisu testiv v tomu chisli neobhidnij dlya cogo nabir makrosiv a takozh vivodit zvit po zakinchennyu testuvannya Testuvannya moduliv vidbuvayetsya shlyahom pidklyuchennya zagolovnogo fajlu z EUnit a funkciyi z testami mozhut buti yak vklyucheni v sam modul sho testuyetsya tak i vineseni v okremij modul 8 Testuvannya paralelnih program mozhna vikonati za dopomogoyu Quviq Quick Check versiya Mini bezkoshtovno Krim testuvannya mozhna zdijsniti perevirku vsih mozhlivih variantiv vihidnih danih za dopomogoyu metodu perevirki modelej Dlya cogo ye stvorena v Madridskomu politehnichnomu universiteti utilita McErlang 1 8 Shob profilyuvati kod ta viyaviti stupin pokrittya kodu testami mozhna zvernutisya do moduliv eprof fprof cover ta utiliti cprof 9 Dlya Erlang rozroblena nizka instrumentiv refaktoringu vihidnogo kodu spisok ne ye vicherpnim RefactorErl Wrangler avtomatichna nezalezhna vid IDE utilita tidier Utilita tidier dozvolyaye avtomatichno znahoditi ta viroblyati ekvivalentni peretvorennya kodu napriklad zaminyuyelists filter fun X gt is something X end L na X X lt L is something X 33 Efektivnist Redaguvati Erlang maye svoyi sekreti napisannya efektivnogo kodu Udoskonalennya movi robit deyaki z tryukiv zastarilimi tomu dokumentaciya ye najkrashim posibnikom u pitannyah optimizaciyi u sukupnosti z profilyuvannyam ta stres testuvannyam Napriklad pri roboti zi spiskami ne bazhano dodavati element do kincya dovgogo spisku za dopomogoyu konkatenaciyi abo funkciyi dodavannya elementa do spisku Zate mozhna dodati element do pochatku spisku a kincevij rezultat obrobiti funkciyeyu zvernennya poryadku elementiv spisku L1 New Elem List L2 lists reverse L1 Ye svoyi rekomendaciyi i dlya pidvishennya efektivnosti paralelnih program Do prikladu diyi sho vimagayut bagato pam yati najkrashe vidilyati v okremij proces bo pri comu zmenshuyutsya vitrati na zbirannya smittya Todi pam yat shvidshe bude zvilneno pislya zavershennya procesu 8 Erlang ta inshi movi programuvannya RedaguvatiIntegraciya ta gibridni movi Redaguvati Erlang sistema dozvolyaye vikonuvati integraciyu z sistemami na inshih movah programuvannya Ye mehanizmi dlya merezhevoyi vzayemodiyi z S Java Lisp Perl Python Ruby Do prikladu dlya efektivnishogo sinhronnogo vikliku nevelikih funkcij na C mozhna vikoristovuvati platformno zalezhni funkciyi angl NIF natively implemented function Visokorivnevi biblioteki dozvolyayut Erlang sistemi predstavlyati C abo Java vuzli yak zvichajni Erlang vuzli Inshi movi mozhna pov yazati z seredovishem vikonannya Erlang za dopomogoyu drajveriv abo merezhevih soketiv za dopomogoyu protokoliv na kshtalt HTTP SNMP IIOP Do prikladu Ruby vzayemodiye z Erlang za dopomogoyu paketa erlectricity a dlya Python rozroblena realizaciya Erlang vuzla u viglyadi paketu py interface 20 Virtualna mashina Erlang znahodit zastosuvannya i v inshih movah programuvannya Do prikladu Elixir ta proyekt Erl2 Dzho Armstronga Krim togo Robert Virding pidtrimuye proyekt Lisp Flavored Erlang Erlang pripravlenij Lispom u yakomu sintaksis Lispa vikoristovuyetsya z kompilyatorom 34 Erlang Ye j inshi BEAM movi Efene Joxa Reia 35 Luerl Erlog 36 Na oficijnomu sajti movi ye zgadka proyekt pro Erjang v yakomu vikoristovuyetsya virtualna mashina Java Porivnyannya Erlang ta C za produktivnistyu Redaguvati Praktika pokazuye sho dlya vivchenih telekomunikacijnih dodatkiv kod na Erlang buv na 70 85 korotshim nizh na C a produktivnist sistemi pri perepisuvanni kodu z C na Erlang zrosla majzhe na 100 37 Dlya odnogo iz vikoristanih u doslidzhenni proyektiv riznicya bula poyasnena napisannyam dodatkovogo C kodu v ramkah zahisnogo programuvannya upravlinnya pam yattyu ta kodu dlya visokorivnevoyi komunikaciyi tobto mozhlivostyami yaki ye chastinoyu movi Erlang ta bibliotek OTP 8 Porivnyannya vzayemodiyi procesiv u Erlang ta Go Redaguvati Vpliv teoriyi poslidovnih procesiv sho vzayemodiyut Charlza E Hoara vidchuvayetsya yak u Go tak i v Erlang Erlang i GoSpilne procesi vidpravlyayut odne odnomu povidomlennya Vidminne V Erlang ce vidbuvayetsya bezposeredno V Go za dopomogoyu kanaliv angl channels 38 Ci kanali mayut tipi 39 Organizaciya vzayemodiyi z povidomlennyamiU Erlang nemaye tipizaciyi chasu kompilyaciyi za vinyatkom ohoronnih viraziv sho dozvolyaye posilati procesam povidomlennya bud yakogo tipu Nezrozumile povidomlennya bude proignorovano abo nazavzhdi zalishitsya v cherzi 38 Go dozvolyaye legko organizuvati grupu go program angl goroutine natyak na angl co routine spivprograma dlya otrimannya povidomlen z deyakogo kanalu takij pidhid vidomij yak pul potokiv Realizaciya robochogo puluV Erlang pri proyektuvanni yakogo pridilyalasya osobliva uvaga determinizmu ta chasu zatrimki angl latency realizaciya robochogo pulu mozhliva ale potrebuye dodatkovih zusil Chislenni vidpravniki trivialno realizuyutsya v oboh movah 38 Erlang proces mozhe nadislati povidomlennya i chekati na nogo vidpovid vidpovidno do deyakogo zrazka ignoruyuchi inshi povidomlennya v cherzi V Go take nemozhlivo ale podibna funkcionalnist mozhe buti dosyagnuta stvorennyam u tomu chisli dinamichnim novih vvodiv tobto podilom kanaliv za priznachennyam 38 Rozdilennya mizh procesamiV Erlang vidsutnij stan sho rozdilyayetsya mizh procesami angl shared mutable state i tomu izolovanij proces duzhe ridko predstavlyaye interes 38 Go vimagaye yavnoyi vkazivki togo yaki go programi budut vzayemodiyati z inshimi peredacheyu povidomlen Abstrakciyi vzayemodiyuchih procesiv shozhi v Erlang i Go Shob uniknuti pomilok pri perehodi z odniyeyi movi na inshu slid vrahovuvati tonkoshi i osoblivosti oboh mov shabloni yaki horoshi v odnij movi mozhut ne pidhoditi dlya inshoyi 38 Kritika RedaguvatiV Erlang ye nedoliki 40 Nedoliki sintaksisu simvol zakinchennya virazu zalezhit vid kontekstu ce abo simvoli abo Ce vimagaye dodatkovoyi uvagi pri zmini miscya virazu Nadlishkove bagatosliv ya zapisiv record Zavzhdi potribno propisuvati povnij perelik alternativ abo vkazati ostannoyu klozoyu true v if virazi dlya uniknennya vidachi vinyatku yaksho ni odna z umov ne vikonuyetsya Suvoro obmezhenij nabir funkcij yaki mozhna vikoristovuvati v if virazah cej nedolik mozhna ominuti vikoristannyam case viraziv Funkcionalnij stil i nezminyuvani zminni prizvodyat u deyakih dodatkah napriklad testi do bilshoyi kilkosti pravok nizh v inshih movah programuvannya tak yak vstavka deyakoyi promizhnoyi obrobki mozhe vimagati novih imen zminnih sho mozhe prizvesti do zmin u kodi nastupnogo dali za tekstom Z nedolikiv sistemi tipiv mozhna vkazati vidsutnist ryadkovogo tipu i nemozhlivist dinamichno dodavati u zapisi novi chleni Isnuyut problemi z organizaciyeyu vihidnogo kodu yaka mozhliva tilki cherez stvorennya novogo fajlu Vidsutnist prostoriv imen klasiv abo inshih zasobiv dlya organizaciyi kodu Riven yakosti moduliv za vinyatkom osnovnih ta dokumentaciyi ye daleko ne najkrashim 40 Dzho Armstrong odin z tvorciv movi u svoyemu vistupi na konferenciyi z istoriyi mov programuvannya v 2007 roci pererahuvav spisok zon zrostannya dlya movi 41 Vikoristannya zbirannya smittya dlya atomiv Polipshennya zasobiv spoluchennya iz zovnishnim kodom angl foreign code Posilennya izolyaciyi mizh procesami Bilsh viborcha sistema bezpeki sered vuzliv Erlang zasnovana na riznomu stupeni doviri Okremi poznachennya dlya protokoliv ta sistem Moduli mayut buti ob yektami pershogo klasu Masove poshirennya Erlang mozhe strimuvati nezvichnij dlya bilshosti programistiv sintaksis vikoristannya funkcionalnoyi paradigmi a takozh te sho najkrasha na 2022 rik realizaciya movi vikoristovuye virtualnu mashinu BEAM a ne bilsh poshirenu JVM 42 Sfera zastosuvannya Redaguvati nbsp Tipova arhitektura sistemi yaka vikoristovuye Erlang OTP Programi Erlang koristuyutsya sluzhbami Mnesia SASL agentami SNMP monitoringu ta inshimi na bazi frejmvorku OTP yakij u svoyu chergu vikoristovuye ERTS Programi inshih sistem programuvannya pidtrimuyutsya menshoyu miroyu 43 Erlang pidhodit dlya Stvorennya merezhevih serveriv rozpodilenih sistem program z GUI ta podibnih do nih interaktivnih program Stvorennya instrumentiv dlya testuvannya upravlinnya ta stezhennya Stvorennya dodatkiv z neregulyarnim paralelizmom u yakih rozparalelyuvani zavdannya dosit riznomanitni Erlang pogano pidhodit dlya Napisannya kodu sho mistit intensivni obchislennya z plavayuchoyu komoyu yakij vimagaye vklyuchennya nativnogo kodu konkretnoyi platformi chi silnoyi optimizaciyii i dlya stvorennya dodatkiv yaki potrebuyut sinhronnogo vikonannya zavdan Dlya proyektiv v yakih kod povinen vikonuvatisya na JVM abo CLR abo proyektiv sho vimagayut bezlichi bibliotek z inshih sistem programuvannya 44 Krim togo Erlang stav zastosovuvatisya dlya Rozrobki sistem hmari she do togo yak sformuvalosya same ponyattya hmarnih obchislen 45 Vikoristovuyetsya v masshtabnih telekomunikacijnih ta Internet dodatkah bagatma kompaniyami vklyuchayuchi Amazon EC2 z realizaciyeyu SimpleDB Servis socialnih zakladok Delicious Facebook bekend dlya chatu zroblenij na Erlang T Mobile servis SMS ta sistemi autentifikaciyi 46 Serverne programne zabezpechennya WhatsApp napisane na Erlang U sichni 2012 roku serveri WhatsApp pid FreeBSD z 96 GB operativnoyi pam yati zmogli obroblyati vid 1 do 2 8 miljoniv z yednan 47 48 Erlang chasto stavlyat u zaslugu legendarnu nadijnist ATM komutatora AXD301 u merezhi British Telecom Za danimi Ericsson z sichnya 2002 roku za dekilka rokiv trapilasya lishe odna neznachna nespravnist na pidstavi chogo nadijnist sistemi zgidno z rozrahunkami bula 99 9999999 49 Hocha bilsh realni ocinki sho vrahovuyut bagato inshih faktoriv govoryat vse taki pro p yat dev yatok uspih marshrutizatora pov yazuyut z dostupnimi zasobami rozrobki nadijnih paralelnih obchislen vbudovanimi v Erlang 49 She Erlang vikoristovuyetsya v dodatkah z vidkritim vihidnim kodom napriklad CouchDB dokumentooriyentovana BD z REST interfejsom Disco frejmvork dlya rozpodilenih obchislen na osnovi paradigmi MapReduce 50 51 Ejabberd vilnij GNU GPL rozpodilenij ta vidmovostijkij Jabber server napisanij na Erlang RabbitMQ platforma oriyentovana na obrobku povidomlen realizuye AMQP MQTT 52 Wings 3D programa 3D modelyuvannya 53 Dlya Erlang bulo napisano dekilka veb serveriv Cowboy 54 Yaws angl Yet Another Web Server MochiWeb biblioteka dlya stvorennya HTTP serveriv 55 She buli stvoreni dekilka veb frejmvorkiv i sistem upravlinnya vmistom takih yak N2O 56 Nitrogen Chicago Boss Zotonic BeepBeep Erlang Web ErlyWeb 57 Novaframework 58 Sered vidomogo programnogo zabezpechennya napisanogo Erlang yake ne uvijshlo v kategoriyi vishe vidilyayut Rozpodilenu NoSQL bazu danih Riak yaka sproyektovana za principami Amazon DynamoDB 59 Flussonic ranishe vidomij yak Erlyvideo videostrimingovij server sho pidtrimuye dekilka protokoliv 60 Krim togo napisanij na Erlang instrument Tsung yakij dozvolyaye emulyuvati tisyachi za dostatnoyi kilkosti testovih serveriv miljoni odnochasnih koristuvachiv zastosovuyetsya u stres testuvannyah rozpodilenih sistem 61 Erlang pidhodit dlya zavdan shtuchnogo intelektu osoblivo obchislyuvalnogo intelektu nejroevolyuciyi zasnovanih na nejronnih merezhah Take zastosuvannya mozhlive zavdyaki p yatom klyuchovimi vlastivostyami movi programuvannya nejronnih merezh sho ye u Erlang izolovani procesi nejroni angl encapsulation paralelizm angl concurrency odnochasnist mehanizm viyavlennya zboyiv nezalezhnist vid roztashuvannya angl location transparency garyacha zamina kodu Prikladom takogo zastosuvannya ye realizaciya odnogo z pidhodiv do nejroevolyuciyi DXNN 62 Spilnota Redaguvati Navkolo tehnologij Erlang utvorilas spilnota rozrobnikiv yaka pidtrimuye novachkiv Vihidnij kod Erlang dostupnij cherez servis spilnoyi rozrobki GitHub Rozrobniki ta koristuvachi Erlang mozhut spilkuvatisya cherez spisok rozsilki Erlang questions pitannya Erlang abo na IRC kanali erlang na Freenode Erlang Factory vlashtovuye u vsomu sviti zahodi ta konferenciyi sered yakih konferenciya koristuvachiv Erlang Erlang User Conference Specialna grupa SIGPLAN ACM regulyarno provodit Erlang majsternyu Erlang Workshop a konferenciya OSCON vklyuchaye sekciyu z Erlang 63 V Ukrayini Erlang spilnota porivnyano nevelika Div takozh Redaguvati erl Elixir mova programuvannya Vinoski Redaguvati The erlang Open Source Project on Open Hub Languages Page 2006 d Track Q124688 Nordstrom Bengt 1981 Programming in Constructive Set Theory Proceedings of the 1981 conference on Functional programming languages and computer architecture FPCA 81 ACM Press doi 10 1145 800223 806773 Procitovano 16 serpnya 2022 Nachala raboty s Erlang Arhivovano 2013 11 22 u Wayback Machine ros a b Armstrong Joe 2007 History of Erlang HOPL III Proceedings of the third ACM SIGPLAN conference on History of programming languages anglijska ISBN ISBN 978 1 59593 766 7 a b Erlang org http erlang org course history html anglijska Dacker Bjarne 2000 Concurrent Functional Programming for Telecommunications A Case Study of Technology Introduction anglijska Royal Institute of Technology s 37 Fredlund Lars Ake 2012 Erlang a platform for developing distributed software systems anglijska Madrid Universidad Politecnica de Madrid a b v g d e zh i k l m n p r s t u f h c sh sh yu ya aa ab av ag ad ae azh ai ak al am an ap ar as at au af ah ac ash ash ayu aya Cesarini Francesco 2009 Erlang Programming anglijska O Reilly Media Inc s 498 ISBN ISBN 978 0 596 51818 9 a b v g d e zh i k l m n p r s t u f h St Laurent Simon 2013 Introducing Erlang anglijska O Reilly Media Inc s 185 ISBN ISBN 978 1 449 33176 4 Verraes Mathias 9 grudnya 2014 Let It Crash Mathias Verraes Blog angl Procitovano 11 zhovtnya 2022 Tate Bruce A 2010 Seven Languages in Seven Weeks A Pragmatic Guide to Learning Programming Languages anglijska Pragmatic Bookshelf a b Armstrong Dacker Lindgren Millroth Erlang product team at Ericsson 2013 Open source Erlang White Paper http ftp sunet se pub lang erlang white paper html anglijska Ericsson AB Arhiv originalu za archiveurl vimagaye archivedate dovidka a b v g d Hebert Fred 2013 Learn You Some Erlang for Great Good A Beginner s Guide anglijska No Starch Press s 624 ISBN ISBN 978 1593274351 a b math STDLIB Reference Manual Version 1 19 3 https www erlang org doc man math html anglijska Martin Logan et al 2011 s 31 32 a b v g d e zh Erlang OTP 25 0 4 https www erlang org doc Anglijska Procitovano 25 serpnya 2022 a b v g d e zh i k Logan Merritt Carlsson Martin Eric Richard 2011 Erlang and OTP in Action Manning s 397 ISBN ISBN 9781933988788 Data Types Erlang Reference Manual User s Guide Version 5 10 3 http www erlang org doc reference manual data types html anglijska Ericsson AB 2013 Ports and Port Drivers Reference Manual User s Guide Version 5 10 3 https web archive org web 20131203022736 http www erlang org doc reference manual ports html anglijska Ericsson AB 2013 Arhiv originalu za 3 grudnya 2013 Procitovano 16 serpnya 2022 a b Kessin Zachary 2012 Building Web Applications with Erlang Anglijska O Reilly Media Inc s 156 p ISBN ISBN 978 1 4493 0996 1 Syntax in functions Learn You Some Erlang for Great Good learnyousomeerlang com Procitovano 10 veresnya 2022 The Preprocessor Predefined Macros Erlang Reference Manual User s Guide Version 5 10 3 anglijska Ericsson AB 2013 Hebert 2013 Modules Martin Logan et al 2011 s 75 The Erlang I O protocol STDLIB User s Guide Version 1 19 4 anglijska Ericsson AB 24 grudnya 2013 a b STDLIB STDLIB Reference Manual Version 1 19 3 angl Ericsson AB 2013 Arhiv originalu za 7 listopada 2013 Procitovano 1 grudnya 2013 Erlang gen server www erlang org Procitovano 16 veresnya 2022 Erlang supervisor www erlang org Procitovano 16 veresnya 2022 Erlang gen statem www erlang org Procitovano 16 veresnya 2022 application Kernel Reference Manual Version 2 16 3 https www erlang org doc apps kernel application html anglijska Ericsson AB 1 listopada 2013 Procitovano 2013 Klas Eriksson M Williams J Armstrong 2 grudnya 2013 Programming Rules and Conventions http erlang se doc programming rules shtml anglijska Ericsson AB Arhiv originalu za 30 listopada 2013 Procitovano 16 serpnya 2022 Aronis Stavros and Papaspyrou Nikolaos and Roukounaki Katerina and Sagonas Konstantinos and Tsiouris Yiannis and Venetis Ioannis E 2012 A Scalability Benchmark Suite for Erlang OTP anglijska Copenhagen Denmark ACM Proceedings of the Eleventh ACM SIGPLAN Workshop on Erlang Workshop Erlang 12 s pp 33 42 ISBN 978 1 59593 766 7 Avgerinos Thanassis and Sagonas Konstantinos 2009 Cleaning Up Erlang Code is a Dirty Job but Somebody s Gotta Do It anglijska Edinburgh Scotland Proceedings of the 8th ACM SIGPLAN Workshop on ERLANG ACM Lisp Flavored Erlang https lfe github io anglijska Why I m stopping work on Reia http www unlimitednovelty com 2011 06 why im stopping work on reia html anglijska JUNE 29 2011 Federico Carrone et al Spawned Shelter http spawnedshelter com Anglijska 15 veresnya 2013 Nystrom Trinder King 2008 a b v g d e David Chisnall 14 listopada 2011 A Tale of Two Concurrency Models Comparing the Go and Erlang Programming Languages angl Pearson Education Informit Arhiv originalu za 3 grudnya 2013 Procitovano 1 grudnya 2013 Chisnall David 14 listopada 2011 A Tale of Two Concurrency Models Comparing the Go and Erlang Programming Languages https www informit com articles anglijska Procitovano 1 grudnya 2013 a b Katz Damien 9 bereznya 2008 What Sucks About Erlang http damienkatz net 2008 03 what sucks about html angl Arhiv originalu za 5 grudnya 2013 Procitovano 24 listopada 2013 Armstrong A History of Erlang 2007 6 19 6 20 Tate 2010 s 221 Dan McCreary Ann Kelly 2013 Larson Erlang for Concurrent Programming 2008 Robota z velikimi obsyagami danih v hmari za dopomogoyu MapReduce anglijska IBM 1 bereznya 2012 Arhiv originalu za 11 grudnya 2013 Procitovano 7 grudnya 2013 Ericsson 4 December 2014 Ericsson Ericsson com 4 December 2014 Retrieved 7 April 2018 Scaling to Millions of Simultaneous Connections Arhivna kopiya na sajti Wayback Machine Rick Reed WhatsApp Erlang Factory SF March 30 2012 1 million is so 2011 Arhivna kopiya na sajti Wayback Machine WhatsApp Blog January 6 2012 a b Tompson 2012 s 33 http discoproject org 1 bereznya 2012 Robota z velikimi obsyagami danih v hmari za dopomogoyu Map Reduce http discoproject org Anglijska Arhiv originalu za 11 grudnya 2013 Procitovano 7 grudnya 2013 Disco storinka proyektu http discoproject org Arhiv originalu za 16 veresnya 2010 Procitovano 7 grudnya 2013 Pivotal Software Inc RabbitMQ MQTT Adapter Arhiv originalu za 1 grudnya 2015 Procitovano 10 grudnya 2015 Tompson 2012 s 23 25 Cowboy Nine Nines 15 veresnya 2022 Procitovano 16 veresnya 2022 Martin Brown 2013 Introduction to programming in Erlang Part 2 Use advanced features and functionality angl IBM Arhiv originalu za 3 grudnya 2013 Procitovano 1 grudnya 2013 N2O Arhiv originalu za 18 serpnya 2015 Procitovano 13 grudnya 2014 Zachary Kessin 2012 s 121 123 Novaframework https github com novaframework nova anglijska 24 travnya 2022 Procitovano 22 08 2022 Simon St Laurent 2013 s 167 Flussonic live streaming software Arhiv originalu za 16 chervnya 2012 Procitovano 7 travnya 2012 Bradley Holt Chapter 6 Distributed Load Testing Scaling CouchDB O Reilly Media Inc 2011 P 39 ISBN 978 1 4493 0343 3 Sher 2013 s 144 150 Chapter 5 The Unintentional Neural Network Programming Language Simon St Laurent 2013 s 168 169 Posilannya Redaguvatihttp www erlang org realizaciya z vidkritimi vihidnimi tekstami Arhivovano 13 chervnya 2006 u Wayback Machine http groups google com group erlang in ukraine grupa ukrayinomovnoyi Erlang spilnoti https archive today 20030224125715 http www erlang projects org repozitorij proyektiv na Erlang https web archive org web 20111026040038 http cean process one net Comprehensive Erlang Archive Network repozitorij proyektiv na Erlang https web archive org web 20130806160118 http www trapexit org forum viki rishennya pidruchniki dovidkovi materiali http erlide sourceforge net plagin dlya seredovisha rozrobki Eclipse Arhivovano 5 veresnya 2007 u Wayback Machine z pidtrimkoyu movi Erlang http www learnyousomeerlang com anglomovnij onlajn pidruchnik z programuvannya movoyu Erlang Arhivovano 8 kvitnya 2022 u Wayback Machine 2007 Programming Erlang Software for a Concurrent World Pragmatic Bookshelf ISBN 978 1934356005 2013 Programming Erlang Software for a Concurrent World Second edition Pragmatic Bookshelf ISBN 978 1937785536 nbsp Ce nezavershena stattya pro movi programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi Otrimano z https uk wikipedia org w index php title Erlang amp oldid 40646896