5 nya programmeringsspråk du bör kunna

By rik

För en del individer representerar inlärningen av ett nytt programmeringsspråk en onödig komplikation, något som helst bör undvikas. De undrar varför ytterligare ett språk behövs, argumenterar för att det redan finns tillräckligt och ifrågasätter om befintliga verktyg inte räcker till.

Sedan finns det de rastlösa upptäckarna som ivrigt omfamnar möjligheten att utforska det nya och potentiellt finna värdefulla resurser. För dem är lärande ett mål i sig, och det krävs inte mycket övertygelse för att de ska ägna sina helger åt att bygga ett textbaserat kortspel på ett okänt, nytt språk.

Oavsett vilken kategori du identifierar dig med, finns det en odiskutabel sanning: vi vill alla investera vår tid i något som har en lovande framtid.

De som föredrar det beprövade har redan sina favoritprogrammeringsspråk med bra momentum och en säker framtid. Men man bör påminna sig om att deras nuvarande mogna verktygskedja en gång betraktades som något tvivelaktigt som många avvisade. Nya tekniker dyker ständigt upp för att lösa nya problem eller underlätta utvecklingsprocessen.

Om en ny teknik är tillräckligt banbrytande, är det sannolikt att den kommer att få fotfäste och nå toppen. När det händer vill du inte bli lämnad utanför. 🙂

Å andra sidan bör de som älskar att testa de senaste nyheterna också vara försiktiga. Det är viktigt att ha roligt som programmerare, men det är lika viktigt att undvika att slösa bort sin energi utan mål.

Visst, Brainfuck är ett otroligt nördigt, pusselliknande och roligt litet språk, men det är osannolikt att det kommer att leda till någon betydande nytta. Du behöver något som är både nytt och vettigt och har en solid grund.

Urvalskriterier för dessa språk

Valet av programmeringsspråk är en utmanande uppgift, särskilt när man överväger nya språk för framtida karriärmöjligheter och tillfredsställelse. Varje språkskapare tror stenhårt att de har skapat det perfekta språket och löst alla existerande problem. Hur väljer man då?

I den här artikeln fokuserade jag på specifika parametrar för att göra urvalsprocessen mer hanterbar.

Lanseringsdatum

Jag undvek avsiktligt att inkludera de allra senaste språken.

Med nya språk menar jag de som är mindre än 5-6 år gamla vid tidpunkten för skrivandet, speciellt de som inte har uppnått stabilitet (med andra ord, en 1.0-utgåva). Detta utesluter tyvärr en del riktiga pärlor som Crystal, men jag hoppas kunna återkomma till detta och skriva om dess framgång vid ett annat tillfälle. 🙂

För mig är 5–12 år den ideala perioden, tiden då ett språk har stabiliserats och fler detaljer förfinas. Naturligtvis finns det undantag från denna regel, och dessa kommer att beaktas i relevanta fall.

Detta är en självklarhet som ofta glöms bort när vi blir entusiastiska över något nytt. För många är stödet från ett stort företag tillräckligt bevis för framgång, men det är inte alltid fallet.

Ja, Apples Objective-C och nu Swift har blomstrat eftersom de var de enda alternativen i ett mycket kontrollerat ekosystem, men Facebooks D och Hack (enligt mig en ful version av ett redan fult språk) förblir mer eller mindre experimentella.

Den perfekta kombinationen vore ett språk som stöds av ett stort, stabilt företag och som upplever en explosionsartad ökning i popularitet (som React).

Men i grund och botten handlar det om communityn. Om ett språk inte skapar engagemang och det inte finns tillräckligt med utvecklare som kan utbilda och sprida det, kommer det inte att resa sig från sin GitHub-grav.

Detta utesluter för mig mogna, fascinerande språk som Racket och Erlang, eftersom deras tillväxtkurva har varit platt.

Fokuserat och tydligt syfte

Det tredje jag letar efter är ett tydligt syfte med språket. Till exempel, en bättre version av PHP som åtgärdar namngivningsproblem och kompileras till inbyggt PHP fungerar inte för mig.

Fördelarna är helt enkelt för små för att motivera en förändring om alla försökte byta till det. Med det i åtanke måste jag avvisa försök som CoffeeScript och många andra liknande språk som kompileras till JavaScript.

Ärligt talat måste jag omedelbart avvisa syntaxförbättringar. Historien har visat att användbarhet överträffar enkelhet när det gäller språk, så om alla nya språk bara fokuserar på en trevligare upplevelse kommer det inte att hamna på den här listan.

Tydlig och konsekvent syntax

Jag vet. Jag sa precis att syntaxen inte spelar någon roll. Tja, för att vara exakt sa jag att ”enbart syntaxförbättringar” inte spelar någon roll. Men som sagt, syntaxen är fortfarande en av de viktigaste faktorerna för programmerarens produktivitet och underhållsvänlighet, så det är något som jag kommer att ta hänsyn till här.

Tillsammans med syntaxen kommer tanken på konsekvens. Funktionsnamn, modulstrukturering etc. är viktiga faktorer som ett språk inte får göra fel. Det är 2018, för guds skull, och ytterligare en PHP-liknande språkkonstruktion vore synd. Så, utan vidare, låt oss börja med våra fem främsta rekommendationer.

1. Julia

För forskarna på MIT var de tillgängliga språken för datavetenskap i bästa fall kompromisser. Python, med all sin tydlighet och popularitet, saknade inbyggda konstruktioner för att hantera dataobjekt. Eftersom Python också är ett tolkat språk var det långsamt för dem (inte biblioteken, eftersom de mestadels är skrivna i C).

Men det kanske största problemet var den otympliga samtidighetmodellen och avsaknaden av en parallell datormodell, som är en grundläggande del av superdatorer.

Som ett resultat föddes Julia.

Julia nådde sin stabila release den 29 september 2018, knappt några dagar innan den här artikeln skrevs (prata om tajming!). Här är vad den officiella webbplatsen säger om dess kapacitet:

Julia är enastående inom numeriska beräkningar. Dess syntax är utmärkt för matematik, många numeriska datatyper stöds och parallellism är tillgänglig direkt. Julias multiple dispatch passar naturligt för att definiera nummer och arrayliknande datatyper.

Syntaxmässigt kan Julia ses som en kombination av Python och C. Ja, det är troligtvis första gången ett språk har strävat efter båda dessa egenskaper och lyckats.

Enkelt uttryckt är Julia snabbt och kräver inte strikt typning. Här är några riktmärken:

Som du ser är Julia något sämre än C men presterar betydligt bättre än Java och Python. Och vad erbjuder Julia för godbitar?

Här är implementeringen av en funktion för att beräkna hypotenusan i en rätvinklig triangel:

Slutligen, medan majoriteten av Julias ekosystem är starkt inriktat på matematiskt arbete, tror jag att det har en lovande framtid för allmänt bruk.

Det är det första språket, vad jag vet, som har förstklassigt stöd för parallella beräkningar, så det blir ingen överraskning om det blir mer populärt inom webb- och IoT-områdena.

2. Rust

Om du har testat de nya webbläsarversionerna av Firefox vet du att det äntligen, efter år av arbete, verkar som att de kan ta en del marknadsandelar från Chrome.

Om webbläsaren känns lätt och snabb och renderas snabbt, är allt tack vare språket som Mozilla utvecklade specifikt: Rust.

Att säga att Rust har en ljus framtid vore en underdrift; språket är redan en stor framgång, och om du inte har hört talas om det ännu beror det på att dess tillämpningsområde är specialiserat och dess mål är skrämmande: att ersätta C++! Ja, vi har äntligen ett språk som inte bara kan göra det här utan redan gör det.

För de som är frustrerade över C++:s komplexa design och utmaningar med minneshantering kommer Rust som en frisk fläkt.

Så här ser ett Rust-program ut:

Kortfattat och elegant, enligt min mening. Rust följer det funktionella programmeringssättet, vilket gör din kod mer komponerbar, och det finns inga objektorienterade hierarkier att brottas med.

Så, vad ger Rust modet att utmana C++? Det är den nya minnesmodellen. Istället för att förlita sig på den gamla new()/delete()-rutinen introducerar Rust tanken på ägande.

Istället för att allokera och komma åt minne direkt, ”lånar” Rust-variabler av varandra, med strikta restriktioner från kompilatorn. Det övergripande konceptet är för komplicerat för att förklara med några få ord, så kolla gärna in den officiella dokumentationen för att lära dig mer.

Poängen är att detta resulterar i 100% minnessäkerhet utan behov av en skräpsamlare, vilket är en stor sak.

Rust har tagit systemprogrammeringsvärlden med storm. Det stöds redan på vissa plattformar, driver webbläsare och renderingsmotorer, ersätter snabbt C/C++-kod i produktionssystem och används för att skriva operativsystem.

Visst, det är inte allas kopp te att skapa ytterligare en webbläsare eller enhetsdrivrutin, men Rust sprider sig redan till andra domäner. Vi har redan flera fullt fungerande, löjligt snabba webbramverk i Rust, och fler och fler applikationsbibliotek utvecklas.

Ärligt talat, om du är intresserad av en spännande framtid är Rust det perfekta språket, och nu är det ett perfekt tillfälle. Rust är ett flygplan som har lyft, men det finns fortfarande tid att gå ombord när det är på väg mot stjärnorna!

Lär dig Rust från Dmitri Nesteruk.

3. Elixir

Bland språk som fokuserar på utvecklarnas upplevelse har Ruby permanent reserverat förstaplatsen. Det är ett språk som läser som poesi och har tillräckligt med genvägar för att minska mentala friktionen avsevärt.

Det är därför inte konstigt att Rails-ramverket fortsätter att dominera full stack-utveckling för seriösa utvecklare och nystartade företag. Men inte alla var nöjda med Rails, speciellt inte en av dess kärnutvecklare – José Valim. Jag tror att skaparen själv bäst förklarar uppkomsten av språket i en intervju:

Det är en lång historia, men jag ska försöka göra den kort och koncis. Redan 2010 arbetade jag med att förbättra Rails prestanda när det gäller flerkärniga system, eftersom våra datorer och produktionssystem levereras med fler och fler kärnor. Men hela upplevelsen var ganska frustrerande eftersom Ruby inte tillhandahåller rätt verktyg för att lösa samtidighetsproblem. Det var då jag började titta på andra teknologier och så småningom blev kär i Erlang Virtual Machine.

Jag började använda Erlang mer och mer och med erfarenheten märkte jag att jag saknade några konstruktioner som finns tillgängliga i många andra språk, inklusive funktionella. Det var då jag bestämde mig för att skapa Elixir, som ett försök att ta med olika konstruktioner och utmärkta verktyg ovanpå Erlang VM.

Och se, Elixir föddes!

Precis som Scala förbättrar Java-språket men riktar sig mot samma virtuella maskin under (JVM), utnyttjar Elixir den decennier gamla, beprövade virtuella maskinen Erlang.

Nu ligger en diskussion om Erlang utanför ramen för den här artikeln, men det minsta du bör veta är att det är telekombranschens bäst bevarade hemlighet: om våra telefonnät är mycket mer tillförlitliga än våra webbaserade system är det tack vare Erlang.

Enklare uttryckt betyder det här. Om du bygger ett realtidssystem, till exempel en chatt, är Elixir mycket mindre RAM-krävande och stabilare än Ruby (eller PHP, Python och Java, för den delen).

En maskin som kör Ruby och maxar på 10 000 samtidiga anslutningar kan enkelt hantera 200 000 när du använder Elixir, och den har fortfarande tillräckligt med RAM för att köra ett 2D-spel!

Syntaxmässigt kopierar Elixir skamlöst Ruby, och dess dominerande webbramverk, Phoenix, kopierar skamlöst Rails. Jag skulle säga att det är bra också, för tillsammans med Laravel, Grails, Masonite osv. når vi en punkt där alla språk har Rails-liknande ramverk som kan underlätta övergången. Vissa kanske hånar ”bristen på originalitet”, men jag klagar inte.

Slutligen är Elixir en av de tekniker som är uppfriskande, trevliga och förbaskat praktiska. Flera Ruby (och även icke-Ruby) företag går över till Elixir, och stora företag som Pinterest använder det i produktionen med extremt tillfredsställande resultat.

Många tror att Node.js var ett provisoriskt försök till samtidighet och att det snart kommer att ersättas av Elixir. Jag måste säga att jag håller med dem. 🙂

4. Kotlin

På I/O 2017 släppte Google en bomb över en ovetande folkmassa. Företaget meddelade formellt Kotlin som det primära språket för Android-utveckling, vilket sände chockvågor genom branschen.

Att Google aktivt har letat efter en ersättare till Java kommer inte som någon överraskning efter att ha blivit indragen i en rättstvist med Oracle; valet av Kotlin var dock något oväntat, och det finns fortfarande en bra chans att Google snart kommer att lansera sin virtuella maskin. För tillfället njuter dock Kotlin av en uppgång.

Kotlin utvecklades av JetBrains, ett företag som är mest känt för sin serie av fantastiska kodredigerare. En av dem, IntelliJ IDEA, är grunden för Android Studio. Designmålen för Kotlin är säkerhet, koncishet och 100 % interoperabilitet med Java.

Framför allt annat arbetar Kotlin-kompilatorn hårt för att eliminera potentiella null-pointer-undantag som är så vanliga i Java-världen. Det minskar också den ökända Java-verboseiteten betydligt, vilket kommer att vara en lättnad för många.

Här är en underbar kodjämförelse mellan Java och Kotlin:

Kotlin-koden är betydligt kortare och har mycket mindre kognitiv belastning att hantera.

Men låt oss vara tydliga med en sak: Kotlin kommer sannolikt inte att ersätta Java, även om det snabbt håller på att bli en favorit. Jag tror att om tio år kommer små till medelstora team inte att se längre än till Kotlin, medan stora grupper fortsätter att använda Java bara av historiska skäl.

Med det sagt har Kotlin en mycket ljus framtid eftersom den gör allt som Java gör, kan kombineras med Java-kod utan att någon märker det och är mycket trevligare!

5. TypeScript

Jag måste verkligen hålla tillbaka mig på den här platsen! Allt inom mig skrek ”Elm! Elm!”, men oavsett hur revolutionerande idéerna är eller hur gudomlig syntaxen är, är Elm ännu inte ett mainstream-alternativ för frontend-arbete. 🙁 Hur som helst, låt oss gå vidare till det som är mainstream: TypeScript.

JavaScript är som vilda bär: fult och oaptitligt, men du måste hantera det om du vill överleva djungeln av frontend-utveckling. Många försök gjordes att ersätta det (och troligen kommer den nya WebAssembly-standarden att lyckas), men det som verkligen fångade allas uppmärksamhet var supersetet som utvecklats av Microsoft.

Det finns goda chanser att du har hört talas om TypeScript: Angular var det första ramverket som antog det från och med version 2, och folk var snabba att lägga märke till det. Det beror på att TypeScript lägger till några välbehövliga och fantastiska superkrafter till det mest kända programmeringsspråket i världen.

Ja, det är äntligen möjligt att skriva inbyggd JavaScript-kod utan att lida och förbanna dess skapelse!

Här är de förbättringar som TypeScript bidrar med:

✓ Stark typning: Äntligen är en sträng inte ett tal, och ett tal är inte ett objekt, som inte är en tom array!

✓ Typkontroll vid kompilering: Om din kod kompileras korrekt är den mer eller mindre garanterat fri från JavaScript-körfel.

✓ Klasser och moduler: Ja, klasser är standard i ES6, men de ingår också i TypeScript, tillsammans med ett snyggt modulsystem.

✓ Typinferens: För komplexa typer kan typen enkelt härledas av kompilatorn, vilket sparar en hel del huvudvärk.

✓ Async/await: Nyckelorden och mönstren för async/await är grundläggande, så du behöver inte krångla med löften och callbacks!

Namnrymder, generiska typer, tupler. . . Jag skulle kunna fortsätta, men det borde räcka med att säga att TypeScript omvandlar en av de värsta utvecklingsupplevelserna till en av de bästa.

Effekten av TypeScript är obestridlig. Det avfärdade liknande försök som Googles Dart (även om det försöker göra comeback genom Flutter, ett ramverk för mobilutveckling) och öppnade upp ögonen på JS-utvecklare för fördelarna med starkare typning.

Som ett resultat har betydande bibliotek som React, D3, Vue (till och med jQuery!) nu en TypeScript-version, och i de bästa mjukvarubutikerna runt om i världen skrivs all JavaScript-kod som TypeScript-kod. TypeScript-rubriker är nu också tillgängliga för Node.js (ärligt talat, om Node kan förbättra sin samtidighet och rätta till sin dåliga minneshantering, kommer den att leva vidare för alltid).

Du kanske blir förvånad över att veta att skaparen av Node.js, efter att offentligt ha beklagat sin skapelse, arbetar med en ny körtid (det finns ingen officiell webbplats just nu, bara GitHub-repot) som har TypeScript som sitt primära språk.

Bästa nyheten? TypeScript är ett litet språk att lära sig med betydande fördelar i framtiden. Om du är en medelstor JavaScript-utvecklare kommer du att lära dig tillräckligt mycket TypeScript på två dagar för att överföra all din befintliga kod!

Slutsats och ansvarsfriskrivning

Vissa språk vinner popularitet, som de i den här artikeln, men av olika anledningar har de inte inkluderats i listan. Här är en kort översikt:

  • Golang: Redan etablerat som ett mainstream-språk, om än inte särskilt populärt. Jag tror att Golang just nu har flera konkurrenter som kommer att hålla dess marknadsandel nere.
  • R: R är redan populärt bland dataforskare, och det är osannolikt att det lockar applikationsutvecklare i någon större utsträckning. Dessutom får vi inte glömma att maskininlärningsbibliotek långsamt börjar göra intåg i alla större språk (för guds skull, till och med PHP har dem nu!), så det är bara att vänta. 🙂
  • Swift: Apple har ett järngrepp om sitt ekosystem, och Swift är det enda språket som är tillgängligt där. Tidigare var Objective-C populärt, och Swift är det nu. Jag anser att det är fusk och vägrar därför att ta med det här. 😀

Framtiden är alltid osäker, och ett sätt att fortsätta med din karriär är att hålla fast vid det som redan fungerar och vägra att bli ”distraherad”. Om du gör det är Java, PHP, Python, Ruby etc. alla utmärkta språk att hålla fast vid. Men för vissa av oss räcker inte normen. De vill utforska och satsa stort på framtiden. Om du identifierar dig med det senare lägret bör ett av de här fem språken finnas högst upp på din att göra-lista.

Slutligen, när du försöker bedöma ett språk, låt inte ansträngningen överväldiga dig, för det är faktiskt inte så mycket. Om du redan kan några programmeringsspråk kan du lära dig något av dessa på max två månader om du lägger ner 5-6 timmar i veckan. Samtidigt kommer glädjen och den monetära avkastningen i framtiden att vara mångfalt större.

Har jag missat något viktigt språk här? Eller kanske har jag fel i språken som nämns här? Om så är fallet, lämna gärna en kommentar och hjälp mig att bli bättre. 🙂