Skriv samtidig applikation med Erlang (och Elixir)

Avslöjande: Ditt stöd hjälper till att hålla webbplatsen igång! Vi tjänar en remissavgift för några av de tjänster vi rekommenderar på denna sida.


Erlang är ett allmänt programmeringsspråk designat för att bygga samtidiga applikationer.

Ursprungligen utvecklad för telekommunikationsapplikationer, det är ett mycket skalbart, funktionellt språk som är idealiskt för telekom, webbapplikationer, distribuerad datoranvändning, snabbmeddelanden, e-handel och andra tjänster som kräver en konstant anslutning och behöver hantera samtidigt input från en stort antal källor.

Erlang och Elixir

Några av de funktioner som gör Erlang attraktiv för moderna programmerare inkluderar:

  • Samtidighet, vilket gör att Erlang-program kan acceptera input från flera källor och fungera i den distribuerade miljön.

  • Feltolerans, vilket gör att system kan fortsätta fungera även om vissa delar av programmet misslyckas eller är felaktiga, vilket gör det till ett mycket användbart språk för miljöer som alltid är på, till exempel en webbgemenskap eller telekommunikationsplattform..

  • Laddning av hetkod, vilket gör att kod kan ändras och program uppdateras utan att behöva stoppa eller starta om systemet.

  • Meddelandeförvaring snarare än delade variabler, vilket gör att processer kan kommunicera med en högre grad av samtidighet.

  • Soporavfall som ger automatisk minneshantering för förbättrad hastighet och prestanda.

Erlang är inte lika lätt att hoppa in som vissa programmeringsspråk, eftersom det är syntax och funktionell design är mycket unik och skapar en skarp inlärningskurva för nya programmerare.

Historia

Erlangspråket utvecklades först 1986 av Ericsson-anställda Joe Armstrong, Robert Virding och Mike Williams.

Språket utformades för att förbättra befintliga telefoniapplikationer och påverkades starkt av PLEX-språket.

Den första versionen av Erlang implementerades i Prolog, men det visade sig vara för långsamt för telefonutbyten. För att lösa det utvecklade teamet den virtuella BEAM-maskinen 1992.

BEAM kompilerade Erlang-koden till C med mycket snabbare hastighet, vilket gjorde att Erlang snabbt kan gå från ett prototypspråk till verkliga applikationer. 1995 implementerades Erlang i ATM-utbytet, AXD.

1998 förbjöd emellertid Ericsson Radio Systems användningen av Erlang inom alla nya produkter eftersom den försökte flytta alla produkter till icke-äganderättspråk.

Den nya politiken fick Joe Armstrong, bland andra Erlang-programmerare, att avgå och ledde till slut till att laget släppte Erlang till den öppna källan världen senare samma år..

Inte längre en egenutvecklad produkt, och att få dragkraft i telekommunikationsvärlden, reverserade Ericsson senare sin inställning till Erlang och repeterade Armstrong.

Erlang används nu aktivt av telekommunikationsföretag över hela världen, inklusive T-Mobile, Whatsapp, Ubiquiti och IDT Corp. Ericsson fortsätter att behålla språket och använder det i Ericssons supportnoder och mobilnät, inklusive deras LTE-nätverk.

Resurser

Med tanke på det otroliga behovet av samtidig programmering, med webbaserade och mobila tekniker som expanderar hela tiden, fortsätter Erlang att växa i popularitet, och många seriösa utvecklare gör omkopplaren.

Som ett resultat finns det gott om gratis resurser online som hjälper dig att komma igång och ge hjälp på vägen.

  • Erlang.org: den officiella webbplatsen för Erlang, den här sidan innehåller nedladdning av programvara, dokumentation och användarhandböcker, länkar till online-resurser och gemenskaper och information om senaste nyheter och kommande Erlang-evenemang.

  • Erlang Central: den här community-driven webbplatsen har allt du behöver för att komma igång och fortsätta bygga din Erlang kunskap. Det är värdstudier, videor, en Wiki, jobbtavla och ett communityforum.

  • Mestadels Erlang: En vanlig podcast dedikerad till Erlang-saker. De diskuterar grundläggande programmeringskoncept, intervju nyckelförnyare och erbjuder råd till nya och erfarna Erlang-programmerare.

  • Erlang Factory: denna årliga tekniska konferens samlar Erlang-utvecklare från hela världen för att diskutera nya innovationer och teorier, och erbjuder en serie valfri 3-dagars intensiv utbildningskurser.

Böcker

Erlang skiljer sig helt från de flesta språk, och till och med erfarna programmerare kanske vill ha en praktisk guide tillgänglig för att hålla reda på några av dess excentriciteter. Oavsett om du har programmerat i flera år eller om du kastar dig själv i att designa nästa stora mobilapp, finns det en Erlang-titel för dig:

  • Programmering av Erlang: Software for a Concurrent World av Joe Armstrong: skriven av en av de ursprungliga författarna till Erlang, detta är den definitiva guiden till språket och dess användning i samtidiga miljöer som molnapplikationer, spel för flera användare och community-baserade webbplatser. Boken är utformad för individer med lite tidigare erfarenhet av funktionell eller parallell programmering och lär ut dessa koncept genom tutorials och exempel i verkliga världen.

  • Bygga webbapplikationer med Erlang av Zachary Kessin: designad för erfarna webbutvecklare med grundläggande Erlang-kunskap, och den här boken leder programmerare genom en serie enkla programmeringsprojekt för webbtjänster och förbereder dem för att bygga sina egna webbapplikationer och få dem online.

  • Lär dig lite Erlang för bra! Av Fred Herbert: som den humoristiska titeln antyder, medger denna bok glatt att Erlangs syntax är okonventionell, det är datastrukturer är ovanliga, och dess typsystem genererar generellt för många nykomlingar – vilket är exakt varför du behöver en guide till dess ovanliga , men ändå kraftfulla, konventioner. Det börjar långsamt med mycket grundläggande tekniker och bygger sig in i mer komplexa programmeringskoncept när läsaren blir anpassad till det nya språkets komplikationer. Om du inte behöver en fysisk kopia, har författaren också gjort boken tillgänglig gratis online.

  • Introduktion av Erlang: Komma igång i funktionsprogrammering av Simon St Laurent: Den här boken ägnar mycket tid åt installation och Erlangs skal och ser till att nya programmerare (eller de som är nya för Erlang) är helt bekväma med kommandoradgränssnittet och fortsätter sedan vidare att dela upp språket i mycket grundläggande begrepp och demonstrerar dem genom att skapa enkla program.

  • Design för skalbarhet med Erlang / OTP av Cesarini och Vinoski: den här boken är avsedd för erfarna Erlang-programmerare som vill utöka sin förståelse och använda Open Telecom Platform (OTP) för att designa och bygga kommersiella system som är både komplexa och skalbara.

Beyong Erland: Elixir

Elixir är ett relativt nytt språk, men har en lång historia. Och det hela började med Erlang.

Exlixer History

Sedan mitten av 1980-talet hade Erlang gjort ett bra jobb med vad det var utformat för att göra, främst designat telefoniapplikationer. Men snabbt fram tre decennier och tänk på behoven hos mycket skalbara webbapplikationer.

Pinterest, till exempel, levererar 14 000 aviseringar per sekund. Facebook måste få uppdateringar från och driva meddelanden tillbaka till 1,6 miljarder aktiva användare. Den här typen av hög samtidighet och hög tillgänglighet är exakt vad Erlang var designad för.

Och så har detta gamla warhorse telekomspråk plötsligt blivit trendigt och populärt igen. Förutom i en ny form.

Det visar sig att Erlang är riktigt svår att läsa och skriva. Det är inte förvånande eftersom det utvecklades för decennier sedan. Detta var innan “kul att använda” var en viktig faktor i språkdesign.

Erlang passar inte bra för den generation utvecklare som växte upp på Ruby och JavaScript. Förutom användbarhet har inte Erlang alla funktioner som kan behövas för moderna webbapplikationer.

Så 2012 skapade José Valim Elixir. Elixir-koden sammanställs till Erlang-bytekod och körs på Erlang-körtiden. Du kan till och med inkludera Erlang-kod direkt i Elixir (något analogt till hur du kan inkludera JavaScript i CoffeeScript).

Valim var en del av Ruby on Rails utvecklingsteam och författade till och med en bok om Rails utveckling. Ruby on Rails-teamet tar utvecklarupplevelsen mycket på allvar, och detta problem påverkade designen av Elixir.

Syntaxen är mycket lik Ruby och är mycket mer läsbar än Erlang. Förutom den enklare syntaxen, utvidgar Elixir Erlangs funktioner till att inkludera (bland annat) metaprogrammering, polymorfism och inline-dokumentation.

Kort introduktion till funktionell programmering

Elixir är, precis som Erlang, ett funktionellt programmeringsspråk. Detta skiljer sig lite från de flesta andra språk, som nästan alla imperativ och vanligtvis objektorienterade.

De flesta programmeringsspråk har någon form av kodblocksyntax som kallas en “funktion”. Eller, i vissa objektorienterade språk kallas de “metoder”, men alla vet att en metod bara är en “funktion” kopplad till ett objekt.

Men är en funktion verkligen en funktion?

I mjukvaruutveckling är vi vana att funktioner som gör något. Vi kallar dessa saker “biverkningar.”

Men i matematik har funktioner inte biverkningar. Du definierar inte en cirkel med en funktion som plottar alla cirkelens punkter och ändrar också kursnumret för Intro till hypotetisk geometri.

I matematik är en funktion deterministisk; med tanke på någon speciell ingång x kommer den alltid att returnera exakt utmatning y och inte göra något annat.

Genom att tillåta biverkningar i programmering introducerar vi tillstånd – det aktuella tillståndet för den löpande programmiljön. Och problemet med tillståndet är att det kan förändras över tid.

En variabel kan betyda en sak nu, och något annat på tio minuter. Och det betyder att ett visst funktionssamtal med ingång x kan returnera två olika värden på y vid två olika tidpunkter.

Är det ett problem? Det beror på. Inget av de mest populära utvecklingsspråken är rent funktionella, så det är helt klart möjligt att bygga alla möjliga saker (eller nästan allt) med hjälp av språk som bygger på biverkningar och globala tillstånd.

Men i ett mycket distribuerat, alltid på-system, kan detta vara ett problem. Om ett system är fördelat på flera dussin (eller flera tusen) fysiska datorer, hur sprider du ändringar i den globala staten till alla dem?

Om ett system går ner, hur återställer du snabbt det globala tillståndet? Om ett funktionssamtal kan returnera olika värden vid olika tidpunkter, hur kan du vara säker på att testet du kör idag fortfarande går i morgon?

Funktionell programmering försöker undvika alla dessa problem genom att vara statslös. Ett funktionellt utformat program är en samling funktioner som är helt deterministiska, vilket innebär att systemet som helhet är deterministiskt. Med utgångspunkt från en viss ingång garanteras utgången.

Den här typen av matematisk renhet har länge varit av intresse för akademiska datavetare, men mjukvaruutvecklingens verkliga värld har i stort sett varit ointresserad – tills plötsligt, på grund av internetbehov, har alla blivit intresserade.

Funktionell programmering är en av de viktigaste aktuella trenderna inom webbapplikationsutveckling.

Funktionella programmeringsresurser

Om du verkligen vill ta dig runt Elixir måste du ta dig runt funktionell programmering. Här börjar du.

  • artiklar

    • Funktionell programmeringsartikel på Wikipedia: en mycket djupgående översikt över ämnet.

    • Var inte rädd för funktionell programmering: en relativt lättförståelig förklaring av funktionell programmering, skriven för JavaScript-utvecklare.

    • En praktisk introduktion till funktionell programmering

    • Grundläggande funktionsprogrammering: Vad handlar det om?

    • Vad är funktionell programmering?.

  • videoklipp

    • Funktionell programmering; Vad? Varför? När?

    • Funktionell programmering från de första principerna

    • Joy of Functional Programming

    • Spellista: Funktionell programmering – Grundläggande begrepp förklarade.

  • Böcker

    • Rent funktionella datastrukturer

    • Algoritmer: en funktionell programmeringsstrategi

    • En introduktion till funktionell programmering genom Lambda Calculus

    • Funktionellt tänkande: Paradigm Over Syntax

    • Att bli funktionell

    • Diskret matematik och funktionell programmering.

Elixir resurser

Det finns många resurser i många former för att hjälpa dig behärska Elixir.

Online-resurser

Den första platsen att börja undersöka Elixir online är den officiella Elixir-språkwebbplatsen.

Handledningar
  • Officiell Komma igång

  • 30 dagar av Elixir

  • Elixir School: Lektioner om Elixir programmeringsspråk.

  • Videoguide till Elixir

  • Etudes för Elixir

  • Elixir Cheat Sheet.

Verktyg
  • Phoenix: en ram för webbutveckling för Elixir. Och missa inte denna fantastiska bok om Phoenix medförfattare av skaparen av Phoenix och skaparen av Elixir.

  • Awesome Elixir: community-kuraterad lista över fantastiska projekt för Elixir.

Gemenskap och fortsatt lärande
  • Elixir Forum

  • Elixir Subreddit

  • Elixir fontän

  • Elixir Digest varje vecka

  • Elixir Radar.

Böcker om Elixir

  • Programmering av Elixir: Functional |> Samtidig |> Pragmatisk |> Roligt

  • Metaprogrammering av Elixir: Skriv mindre kod, få mer gjort (och ha kul!)

  • Elixir i aktion

  • Introduktion av Elixir: Komma igång i funktionell programmering

  • Lärande Elixir

  • Elixir Cookbook.

Ska jag lära mig Elixir?

Om du är intresserad av att arbeta med banbrytande webbapplikationer, särskilt de som serverar ett stort antal samtidiga användare, är Elixir definitivt värt att veta.

Slutsats

Även om det fortfarande är ett relativt sällsynt programmeringsspråk växer Erlang-gruppen snabbt, särskilt när efterfrågan på mobila lösningar, webbapplikationer och sömlöst online-samarbete ökar.

Trots okonventionellt på många sätt gör det inbyggda stödet för samtidighet och distribution, hög skalbarhet och feltolerans Erlang ett mycket attraktivt språk i vår ständigt anslutna värld.

Men det kan vara bättre att fokusera på Elixir. Det beror på exakt vad du vill göra. Oavsett, de är båda bra språk.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map