Erlang is 'n algemene programmeringstaal wat ontwerp is om gelyktydige toepassings te bou.
Dit is oorspronklik ontwikkel vir telekommunikasie-toepassings. Dit is 'n hoogs skaalbare, funksionele taal wat ideaal is vir telekommunikasie, webtoepassings, verspreide rekenaars, kitsboodskappe, e-handel en ander dienste wat 'n konstante verbinding benodig en gelyktydige insette vanaf 'n groot aantal bronne.
Sommige van die funksies wat Erlang aantreklik maak vir moderne programmeerders sluit in:
Gelyktydigheid, waardeur Erlang-programme insette vanuit verskeie bronne kan aanvaar en in die verspreide omgewing kan funksioneer.
Foutverdraagsaamheid, waardeur stelsels kan voortgaan om te werk, selfs as sommige elemente van die program misluk of verkeerd is, wat dit 'n baie nuttige taal maak vir omgewings wat altyd aan die gang is, soos 'n webgemeenskap of telekommunikasieplatform..
Laai van warmkode, waardeur kode gewysig kan word en programme opgedateer word sonder dat die stelsel hoef te stop of herlaai.
Boodskappe oorgedra eerder as gedeelde veranderlikes, waardeur prosesse kan kommunikeer met 'n hoër mate van gelyktydigheid.
Vullisverwydering, wat outomatiese geheuebestuur bied vir beter spoed en werkverrigting.
Erlang is nie so maklik om in sommige programmeertale in te spring nie, want dit is sintaksis en funksionele ontwerp is baie uniek en skep 'n skerp leerkurwe vir nuwe programmeerders.
4.1 Exlixer Geskiedenis
4.2 Kort inleiding tot funksionele programmering
4.2.0.1 Funksionele programmehulpbronne
4.3.1.3 Gemeenskaps- en voortgesette leer
4.3.2 Boeke oor Elixir
4.4 Moet ek Elixir leer??
Die taal van Erlang is in 1986 die eerste keer ontwikkel deur werknemers van Ericsson, Joe Armstrong, Robert Virding en Mike Williams.
Die taal is ontwerp om bestaande telefonietoepassings te verbeter, en is sterk beïnvloed deur die PLEX-taal.
Die eerste weergawe van Erlang is in Prolog geïmplementeer, maar dit was te stadig vir telefoonsentrums. Om dit op te los, het die span in 1992 die BEAM-virtuele masjien ontwikkel.
BEAM het die Erlang-kode vinniger saamgestel aan C, waardeur Erlang vinnig van prototipe na regte toepassings kon oorgaan. In 1995 is Erlang geïmplementeer in die ATM-uitruil, AXD.
In 1998 het Ericsson Radio Systems egter die gebruik van Erlang binne enige nuwe produkte verbied, omdat hulle gepoog het om alle produkte na nie-eie tale te verskuif..
Die nuwe beleid het Joe Armstrong, onder andere Erlang-programmeerders, genoodsaak om te bedank, en uiteindelik het daartoe gelei dat die span later daardie jaar Erlang aan die open source wêreld vrygestel het..
Nie meer 'n eie produk nie, en met die vastrapplek van die telekommunikasiewêreld, het Ericsson later sy houding teenoor Erlang omgekeer en Armstrong heroefen.
Erlang word nou aktief gebruik deur telekommunikasiemaatskappye wêreldwyd, waaronder T-Mobile, Whatsapp, Ubiquiti en IDT Corp. Ericsson behou die taal voort en gebruik dit in Ericsson se ondersteuningsnodes en mobiele netwerke, insluitend hul LTE-netwerke.
Gegewe die ongelooflike behoefte aan gelyktydige programmering, met die internet-gebaseerde en mobiele tegnologie wat voortdurend uitbrei, groei Erlang steeds in gewildheid, en baie ernstige ontwikkelaars maak die skakelaar.
Gevolglik is daar baie gratis aanlynbronne beskikbaar om u aan die gang te kry en hulp te verleen.
Erlang.org: die amptelike webwerf van Erlang, hierdie bladsy bevat sagteware-aflaaie, dokumentasie en gebruikersgidse, skakels na aanlynhulpbronne en gemeenskappe, en inligting oor onlangse nuus en opkomende Erlang-geleenthede.
Erlang Sentraal: hierdie gemeenskapsgedrewe webwerf bevat alles waarmee u moet begin en u Erlang-kennis kan voortbou. Dit bied tutoriale, video's, 'n Wiki, werkbord en 'n gemeenskapsforum aan.
Meestal Erlang: 'n gereelde podcast gewy aan Erlang-dinge. Hulle bespreek basiese programmeringskonsepte, voer 'n onderhoud met sleutelinnoveerders en bied advies aan nuwe en ervare Erlang-programmeerders.
Erlang Factory: hierdie jaarlikse tegniese konferensie bring Erlang-ontwikkelaars van oor die hele wêreld bymekaar om nuwe innovasies en teorieë te bespreek, en bied 'n reeks opsionele 3-dae intensiewe opleidingskursusse aan.
Erlang verskil baie van die meeste tale, en selfs ervare programmeerders wil dalk 'n handige gids beskikbaar hê om by te hou met sommige van sy eksentrisiteit. Of u nou al jare programmeer, of u wil die volgende groot mobiele app ontwerp, daar is 'n Erlang-titel daar vir u:
Programmering van Erlang: sagteware vir 'n gelyktydige wêreld deur Joe Armstrong: geskryf deur een van die oorspronklike skrywers van Erlang, dit is die definitiewe gids vir die taal en die gebruik daarvan in gelyktydige omgewings, soos wolktoepassings, meervoudige gebruikersspeletjies en gemeenskapsgebaseerde webwerwe. Die boek is ontwerp vir individue met min vorige ervaring in funksionele of parallelle programmering, en leer hierdie konsepte deur middel van tutoriale en praktiese voorbeelde..
Die bou van webtoepassings met Erlang deur Zachary Kessin: ontwerp vir ervare webontwikkelaars met basiese kennis van Erlang, en lei programmeerders deur 'n reeks eenvoudige projekte vir webdiensprogrammering, en berei hulle voor om hul eie webtoepassings te bou en aanlyn te kry..
Leer u 'n paar Erlang vir baie goed! Deur Fred Herbert: soos die humoristiese titel dit aandui, erken hierdie boek gelukkig dat die sintaksis van Erlang onkonvensioneel is, dat dit datastrukture ongewoon is, en dat die tipe stelsel oor die algemeen vir baie nuwelinge aanstoot gee – dit is presies waarom u 'n handleiding vir die ongewone maar tog kragtige konvensies. Dit begin stadig, met baie basiese tegnieke, en bou in meer ingewikkelde programmeringskonsepte, soos die leser aangepas word by die ingewikkeldhede van die nuwe taal. As u nie 'n fisiese eksemplaar benodig nie, het die skrywer die boek ook gratis aanlyn beskikbaar gestel.
Bekendstelling van Erlang: Aan die slag in funksionele programmering deur Simon St Laurent: Hierdie boek bestee baie tyd aan installasie en Erlang se dop, en sorg dat nuwe programmeerders (of dié wat nuut is aan Erlang) heeltemal gemaklik is met die opdragreël-koppelvlak en beweeg dan aan om die taal in baie basiese konsepte op te deel en dit te demonstreer deur eenvoudige programme te skep.
Ontwerp vir skaalbaarheid met Erlang / OTP deur Cesarini en Vinoski: hierdie boek is bedoel vir ervare Erlang-programmeerders wat hul begrip wil uitbrei en die Open Telecom Platform (OTP) wil benut om kommersiële-graadstelsels te ontwerp en te bou wat kompleks en skaalbaar is.
Elixir is 'n relatiewe nuwe taal, maar het 'n lang geskiedenis. En dit het alles by Erlang begin.
Sedert die middel van die tagtigerjare het Erlang 'n goeie werk gedoen met wat hy ontwerp was, meestal telefoniese toepassings. Maar neem drie dekades vinnig vorentoe en dink oor die behoeftes van hoogs skaalbare webtoepassings.
Pinterest lewer byvoorbeeld 14.000 kennisgewings per sekonde. Facebook moet opdaterings ontvang en boodskappe terugstoot na 1,6 miljard aktiewe gebruikers. Hierdie soort hoë gelyktydigheid en hoë beskikbaarheid is presies waarvoor Erlang ontwerp is.
En so het hierdie ou telekommunikasie-taal skielik weer nuwerwets en gewild geword. Behalwe in 'n nuwe vorm.
Dit blyk dat Erlang regtig moeilik is om te lees en te skryf. Dit is nie verbasend nie, want dit is dekades gelede ontwikkel. Dit was voordat 'pret om te gebruik' 'n belangrike oorweging in taalontwerp was.
Valim was deel van die Ruby on Rails-ontwikkelingspan en het selfs 'n boek oor Rails-ontwikkeling geskryf. Die Ruby on Rails-span neem die ontwikkelaarservaring baie ernstig op, en die kommer het die ontwerp van Elixir beïnvloed.
Die sintaksis lyk baie soos Ruby en is baie meer leesbaar as Erlang. Behalwe vir die makliker sintaksis, brei Elixir die vermoëns van Erlang uit om onder meer metaprogrammering, polimorfisme en inlyndokumentasie in te sluit..
Kort inleiding tot funksionele programmering
Elixir is, soos Erlang, 'n funksionele programmeringstaal. Dit verskil 'n bietjie van die meeste ander tale, wat byna almal noodsaaklik is en meestal objekgeoriënteerd.
Die meeste programmeringstale het 'n soort kodeblok-sintaksis wat 'n "funksie" genoem word. Of, in sommige objekgeoriënteerde tale word dit 'metodes' genoem, maar almal weet dat 'n metode slegs 'n 'funksie' is wat aan 'n voorwerp geheg is..
Maar is 'n funksie regtig 'n funksie?
In sagteware-ontwikkeling is ons gewoond aan funksies om iets te doen. Ons noem hierdie dinge "newe-effekte".
Maar in wiskunde het funksies nie newe-effekte nie. U definieer nie 'n sirkel met 'n funksie wat al die punte van 'n sirkel teken nie en verander ook die kursusnommer vir Intro na hipotetiese meetkunde..
In wiskunde is 'n funksie deterministies; as u enige spesifieke invoer x gee, sal dit altyd die presiese uitset y teruggee en niks anders doen nie.
Deur die newe-effekte toe te laat in die programmering, stel ons die toestand voor – die huidige toestand van die programomgewing. En die probleem met die staat is dat dit mettertyd kan verander.
'N Veranderlike kan miskien een ding beteken, en nog tien minute van nou af. En dit beteken dat 'n spesifieke funksieoproep met invoer x twee verskillende waardes van y op twee verskillende tye kan teruggee.
Is dit 'n probleem? Dit hang af. Nie een van die gewildste ontwikkelingstale is suiwer funksioneel nie, en dit is dus duidelik moontlik om allerhande dinge (of bykans alles) te bou met behulp van tale wat staatmaak op newe-effekte en wêreldwye toestand.
In 'n sterk verspreide stelsel wat altyd aan die gang is, kan dit egter 'n probleem wees. As 'n stelsel oor 'n paar dosyn (of 'n paar duisend) fisiese rekenaars versprei is, hoe versprei u dan die veranderinge aan die wêreldstaat?
As 'n stelsel wel ondergaan, hoe herstel u die wêreldtoestand vinnig? As 'n funksie-oproep verskillende waardes op verskillende tye kan teruggee, hoe kan u dan seker wees dat die toets wat u vandag doen, môre sal slaag??
Funksionele programmering poog om al hierdie probleme te vermy deur staatloos te wees. 'N Funksie-ontwerpte program is 'n versameling funksies wat heeltemal deterministies is, wat beteken dat die stelsel as geheel deterministies is. As u 'n spesifieke inset kry, word die uitset gewaarborg.
Hierdie soort wiskundige suiwerheid was lankal van belang vir akademiese rekenaarwetenskaplikes, maar die werklike wêreld van sagteware-ontwikkeling was grootliks ongeïnteresseerd – totdat almal skielik vanweë die behoeftes van die internet belanggestel het.
Funksionele programmering is een van die belangrikste huidige neigings in die ontwikkeling van webtoepassings.
As u regtig 'n draai by Elixir wil kry, sal u funksionele programmering moet regkry. Hier is waar om te begin.
Funksionele programmeringsartikel op Wikipedia: 'n baie diepgaande oorsig van die onderwerp.
'N Praktiese inleiding tot funksionele programmering
Basiese beginsels van funksionele programmering: waaroor dit gaan?
Wat is funksionele programmering?.
Funksionele programmering; Wat? Hoekom? Wanneer?
Funksionele programmering vanuit eerste beginsels
Die vreugde van funksionele programmering
Snitlys: funksionele programmering – basiese konsepte verduidelik.
Suiwer funksionele datastrukture
Algoritmes: 'n funksionele programmeringsbenadering
'N Inleiding tot funksionele programmering deur Lambda Calculus
Funksionele denke: paradigma oor sintaksis
Diskrete wiskunde en funksionele programmering.
Daar is baie hulpbronne in baie vorme om u te help om Elixir te bemeester.
Die eerste plek om aanlyn na Elixir te begin kyk, is die amptelike webwerf Elixir.
Amptelike gids vir aanvang
30 Dae van Elixir
Elixir School: Lesse oor die Elixir-programmeringstaal.
Video Guide to Elixir
Études vir Elixir
Elixir Cheat Sheet.
Phoenix: 'n webontwikkelingsraamwerk vir Elixir. En mis hierdie wonderlike boek oor Phoenix, mede-outeur van die skepper van Phoenix en die skepper van Elixir.
Awesome Elixir: 'n lys saamgestel uit die gemeenskap met wonderlike projekte vir Elixir.
Weeklikse Elixir Digest
Boeke oor Elixir
Programmering van Elixir: Funksioneel |> Gelyktydig |> Pragmaties |> Fun
Metaprogrammering Elixir: Skryf minder kode, kry meer gedoen (en om pret te hê!)
Elixir in aksie
Ons stel Elixir bekend: Aan die begin van funksionele programmering
Moet ek Elixir leer??
As u belangstel om aan die nuutste webtoepassings te werk, veral dié wat 'n groot aantal gelyktydige gebruikers bedien, is Elixir beslis die moeite werd om te weet.
Alhoewel dit nog steeds 'n betreklik skaars programmeringstaal is, groei die Erlang-gemeenskap vinnig, veral namate die vraag na mobiele oplossings, webtoepassings en naatlose aanlyn samewerking toeneem.
Alhoewel op baie maniere onkonvensioneel, die ingeboude ondersteuning vir gelyktydigheid en verspreiding, hoë skaalbaarheid en foutverdraagsaamheid maak Erlang 'n baie aantreklike taal in ons voortdurend verbonde wêreld.
Maar dit kan beter wees om op Elixir te konsentreer. Dit hang af van presies wat u wil doen. Ongeag, dit is albei wonderlike tale.