5 nya programmeringsspråk du bör kunna

För vissa människor att lära sig ett nytt programmeringsspråk är ett överskott som bäst bör undvikas. Varför, åh varför, hävdar de, behöver vi ännu ett språk?

Har vi inte tillräckligt redan?

Får inte de befintliga verktygen jobbet gjort?

Och så finns det de outtröttliga sökare som hoppar på möjligheten att prova nya saker och snubbla på ädelstenar. Att lära sig är ett självändamål, och de behöver inte mycket övertygande för att bränna bort sina helger med att bygga ett konsolbaserat kortspel på det oklara, nya språket.

Oavsett vilket läger du tillhör finns det något bortom diskussion: vi vill alla lägga tid på något som kommer att ha en ljus framtid.

För människorna i det gamla lägret har deras befintliga favoritspråk redan massor av fart och kommer att fortsätta ha en ljus framtid. För dem måste jag påminna dem om att deras nu mogna föredragna utvecklingsverktygskedja en gång var ”kool-aid” som många vägrade att dricka. Och så är det idag; ny teknik läggs till för att lösa nya problem eller för att lindra smärtan vid utveckling.

Om något gör detta radikalt nog, är chansen stor att det kommer att fortsätta att ta mindshare och nå toppen. När det händer vill du inte bli kvar. 🙂

Och till dem som gillar att springa med de glänsande prylarna, en varning: att ha roligt är viktigt som programmerare, men vi måste vara försiktiga så att vi inte slösar bort vår energi planlöst.

Säker, Brainfuck är ett otroligt skruvat, pusselliknande, roligt litet språk, men det är osannolikt att du kommer att tjäna på det på allvar. Du vill ha något som är nytt, vettigt och har en solid grund.

Hur dessa språk valdes ut

Språkval är ett skrämmande jobb, särskilt när nya språk övervägs för framtida fördelar i anställning och tillfredsställelse. Varje språkförfattare är fast övertygad om att de har byggt ett perfekt språk som möjligt och löst alla problem som finns att besvara. Hur skär man då?

För det här inlägget fokuserade jag på några parametrar för att hålla min sökning inom rimliga gränser.

Utgivningsdatum

Jag undvek särskilt språk som är väldigt, väldigt nya.

Nytt, jag menar språk som är mindre än 5-6 år gamla när det skrivs, och speciellt de som inte har nått stabilitet (1.0 release, alltså). Detta utesluter tyvärr några riktiga pärlor som Kristall, Men jag hoppas kunna komma tillbaka till detta och skriva om dess framgång någon gång. 🙂

Ett kodavsnitt i Crystal (”Fast as C, Slick as Ruby”)

För mig är 5-12 år den söta punkten, det vill säga när ett språk har stabiliserats, och fler finesser håller på att utarbetas. Nu finns det givetvis undantag från denna regel, och dessa kommer att övervägas i förekommande fall.

Den här är en no-brainer men blir ofta ignorerad när vi blir upphetsade över något nytt. Nu, för många människor, är stödet från ett stort företag tillräckligt med prejudikat för framgång, men det är inte alltid sant.

Ja, Apples Objective-C och nu Swift blomstrade eftersom dessa var de enda alternativen i ett mycket kontrollerat ekosystem, men Facebooks D och Hacka (en ful version av ett redan fult språk, enligt min mening) förblir lite mer än experiment.

Den idealiska kombinationen skulle vara ett språk som backas upp av ett stort, stabilt företag och exploderar i popularitet (som React).

Men kärnan i saken är fortfarande gemenskapen. Om ett språk inte skapar en buzz, och det inte finns tillräckligt med utvecklare för att utbilda och popularisera, kommer det inte att klättra upp ur sin GitHub-grav.

För mig utesluter detta mogna, fascinerande språk som Racket och Erlangeftersom de har hållit sig platt på tillväxtkurvan.

Fokuserad, väldefinierad USP

Det tredje jag är ute efter är ett tydligt mål för språket. Till exempel, en bättre version av PHP som fixar namnproblem och kompilerar till inbyggt PHP fungerar inte för mig.

Fördelarna är helt enkelt för små för att motivera sprickorna om alla försöker flytta till det. Med denna måttstock kan jag inte låta bli att avfärda försök som CoffeeScriptoch många andra liknande kompilerings-till-JavaScript-språk.

Ärligt talat, jag är skyldig att avfärda syntaxförbättringar omedelbart. Historien har visat att användbarhet överträffar vänlighet när det kommer till språk, så om alla nya språk fokuserar på är en trevligare upplevelse, är jag rädd att det inte kommer med på den här listan.

Tydlig, konsekvent syntax

Ja jag vet. Jag sa bara att syntaxen inte spelar någon roll. Tja, för att vara exakt sa jag att ”förbättringar endast för syntax” spelar ingen roll. Men som sagt, syntax är fortfarande en av de betydelsefulla faktorerna i programmerarens produktivitet och underhållsbarhet, så det är något som kommer att finnas med i mina beräkningar här.

Tillsammans med syntax kommer idén om konsekvens. Funktionsnamn, modulstrukturering etc. är nyckelsaker som ett språk inte har råd att göra fel. Det är 2018, för guds skull, och ytterligare en PHP-liknande språkdesign skulle vara synd för oss alla. Så, utan vidare, låt oss börja med våra fem bästa rekommendationer.

1. Julia

För folket på MIT var språken tillgängliga för datavetenskap i bästa fall en kompromiss. Python, trots all sin tydlighet och popularitet, saknade infödda konstruktioner för att hantera dataobjekt. Eftersom Python också var ett tolkat språk var det långsamt för dem (inte biblioteken, märk väl, eftersom de mestadels är skrivna i C).

Men det kanske största avbrottet var den klumpiga samtidighetsmodellen och avsaknaden av en parallell datormodell, varav den senare är en stapelvara i superdatorer.

Som ett resultat, Julia föddes.

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

Julia utmärker sig på numerisk beräkning. Dess syntax är utmärkt för matematik, många numeriska datatyper stöds och parallellism är tillgänglig direkt. Julias multipelutskick är en naturlig passform för att definiera antal och arrayliknande datatyper.

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

För att det ska vara enkelt är Julia brinnande snabb och tvingar inte till strikt skrivning. Här är några riktmärken:

De officiella Julia-riktmärkena

Som ni ser är Julia något sämre än C men blåser Java och Python ur vattnet. Och vilken typ av ögongodis erbjuder Julia?

Tja, här är implementeringen av en funktion för att beräkna hypotenusan för en rätvinklig triangel:

Slutligen, medan de flesta av Julia ekosystem är kraftigt lutad mot matematiskt arbete, tror jag att det har en ljus framtid för allmänt bruk.

Det är det första språket, såvitt jag vet, som har förstklassigt stöd för parallell beräkning, så det kommer inte att vara någon överraskning att se det bli mer populärt inom webb- och IoT-domänerna.

2. Rost

Om du har provat de nya webbläsarversionerna av Firefox vet du att det äntligen, efter år av arbete, ser ut som att de kan ta bort vissa marknadsandelar från Chrome.

Om webbläsaren känns lätt och snabb och renderas snabbt, är allt tack vare språket Mozilla speciellt utvecklat: Rost.

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

För människor som är frustrerade över C++:s överbelastade design- och minneshanteringsutmaningar, kommer Rust som en frisk fläkt.

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

Kortfattad och elegant, enligt mig. 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 gå efter C++? Det är den nya minnesmodellen. I stället för att förlita sig på den gamla new()/delete()-dansen introducerar Rust idén om ägande.

Istället för att allokera och komma åt minne direkt, ”lånar” Rust-variabler från 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 officiella handlingar att lära sig mer.

Poängen är att detta resulterar i 100% minnessäkerhet utan behov av en sophämtare, 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 på 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 en perfekt tid. Rust är ett plan som har lyft, men det finns fortfarande tid att gå ombord när det är på väg mot stjärnorna!

Lära sig Rost från Dmitri Nesteruk.

3. Elixir

Bland språk som fokuserar på utvecklarglädje har förstaplatsen permanent reserverats för Ruby. Det är ett språk som läser som poesi och har tillräckligt med genvägar för att minska mental friktion i storleksordning.

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

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

Jag började använda Erlang mer och mer och med erfarenhet märkte jag att jag saknade några konstruktioner tillgängliga på 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ärkt 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, stridsbeprö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 allt tack vare Erlang.

I ännu enklare termer, vad det betyder är detta. Om du bygger ett realtidssystem som chatt, är Elixir mycket mindre RAM-hungrig och stabil ä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 fortfarande ha tillräckligt med RAM för att köra 2D-spel!

Elixir kodavsnitt

Syntaxmässigt kopierar Elixir skamlöst Ruby, och dess dominerande webbramverk, Phoenix, kopierar skamlöst Rails. Jag skulle säga att det också är bra, för tillsammans med Laravel, Grails, Masonite, etc., 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 åtminstone inte.

Till sist, Elixir är en av de tekniker som är uppfriskande, trevliga och förbannat praktiska. Flera Ruby (och även icke-Ruby) butiker flyttar 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 snart skulle ersättas av Elixir. Jag måste säga att jag håller med dem. 🙂

4. Kotlin

I/O 2017 släppte Google en bomb över den intet ont anande folkmassan. Företaget meddelade formellt Kotlin som det primära språket för Android-utveckling, vilket skickar chockvågor genom branschen.

Nu, att Google aktivt har letat efter att ersätta Java kommer inte som någon överraskning efter att ha blivit biten av en Oracle-process; antagandet av Kotlin var dock något oväntat, och det finns fortfarande en god chans att Google snart kommer ut med sin virtuella maskin. För närvarande njuter dock Kotlin av en uppgång.

Kotlin utvecklades av JetBrains, ett företag mer känt för sin svit med vansinnigt bra kodredigerare. En av dem, IntelliJ IDEA, utgör grunden för Android Studio. Designmålen för Kotlin är säkerhet, koncisitet och 100 % interoperabilitet med Java.

Mer än något annat arbetar Kotlin-kompilatorn extra hårt för att eliminera eventuella nollpekare-undantag som är så vanliga i Java-världen. Det tar också ner den ökända Java-talligheten ganska mycket, vilket kommer att vara en lättnad för många.

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

Bildkredit: hype.codes

Kotlin-koden är betydligt kortare och har mycket mindre kognitiv överbelastning att plöja igenom.

Men låt oss få en sak klart: Kotlin är extremt osannolikt att ersätta Java, även om det snabbt håller på att bli en favorit. Jag tror att tio år senare kommer små till medelstora team inte att se längre än till Kotlin, medan stora grupper kommer att fortsätta använda Java enbart på grund av äldre skäl.

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

5. TypeScript

Gud vet att jag var tvungen att hålla tillbaka mig för den här platsen! Allt inom mig skrek ”Alm! Elm!”, men oavsett hur revolutionerande dess idéer är eller hur gudomlig syntaxen är, är Elm ännu inte att se som ett mainstream-alternativ för front-end-arbete. 🙁 Hur som helst, låt oss gå vidare till det som är mainstream: TypeScript.

JavaScript är som vilda bär: fult och osmakligt, men du måste stå emot det om du vill överleva djungeln av front-end-utveckling. Många försök gjordes att ersätta den (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 utmärkta chanser som du har hört talas om TypeScript: Angular var det första ramverket som omfattade det från version 2 och framåt, och folk var snabba att notera. 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 sin födelse!

Här är förbättringarna som TypeScript ger till tabellen:

✓ Stark skrivning: Slutligen är en sträng inte ett nummer, och ett nummer är inte ett objekt, vilket inte är en tom array!

✓ Typkontroll av kompileringstid: Om din kod kompileras korrekt är den mer eller mindre garanterat fri från JavaScript-runtimens vårtor.

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

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

✓ Asynkronisera/vänta: Nyckelorden och mönstren för asynkronisera/vänta är grundläggande, så du slipper krångla med löften och återuppringningar!

Namnutrymmen, generika, tupler . . . Jag skulle kunna fortsätta och fortsätta, men det borde vara tillräckligt att säga att TypeScript konverterar en av de värsta utvecklingsupplevelserna till en av de bästa.

TypeScript-kodavsnitt

Effekten av TypeScript kan inte förnekas. Det drev liknande försök som Googles Dart ur fältet (även om det försöker en comeback genom Flutter, ett ramverk för mobilutveckling), och öppnade JS-utvecklarnas ögon för fördelarna med starkare typer.

Som ett resultat har betydande bibliotek som React, D3, Vue (även 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 en nod kan förbättra sin samtidighetshistoria och korrigera sin usla minneshantering, kommer den att vara för evigt).

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

Bästa nyheten? TypeScript är en liten språk att lära sig med betydande fördelar i framtiden. Om du är en mellanliggande JavaScript-utvecklare, kommer du att plocka upp tillräckligt med TypeScript inom två dagar för att överföra all din befintliga kod!

Slutsats och ansvarsfriskrivning

Specifika språk vinner lika mycket popularitet som de i den här artikeln men har av olika anledningar inte inkluderats i listan. Här är en snabb titt:

  • Golang: Redan etablerat som ett mainstream, om inte mycket populärt, språk. Jag tror vid det här laget att Golang har flera konkurrenter som kommer att hålla sin marknadsandel låg.
  • R: R är redan hett bland dataforskare, och det är osannolikt att det lockar applikationsutvecklare särskilt mycket. Dessutom får vi inte glömma att maskininlärningsbibliotek sakta börjar ta sig in i alla större språk (för guds skull, även PHP har dem nu!), så allt du behöver göra är att vänta ett tag. 🙂
  • Swift: Apple har ett järngrepp om sitt ekosystem, och Swift är det enda språket som finns tillgängligt där. Tidigare var mål C i ropet, som Swift är 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 gå vidare 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 ut och utforska och satsa stort på framtiden. Om du faller i det senare lägret bör ett av dessa fem språk stå 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 eftersom det inte är så mycket. Om du redan kan några programmeringsspråk kan du lära dig något av dessa inom max två månader och spendera 5-6 timmar i veckan. Medan den lycka och den monetära avkastningen som kan genereras i framtiden kommer att vara flera gånger större.

Har jag missat något kritiskt språk här? Eller kanske jag har fel på språken som anges här? Om så är fallet, vänligen lämna en kommentar och hjälp mig att förbättra. 🙂