5 nye programmeringssprog, du bør kende

For nogle mennesker er det bedst at undgå at lære et nyt programmeringssprog. Hvorfor, åh hvorfor, hævder de, har vi brug for endnu et sprog?

Har vi ikke allerede nok?

Får de eksisterende værktøjer ikke arbejdet gjort?

Og så er der de utrættelige søgere, der springer på muligheden for at prøve nye ting og snuble over ædelstene. Læring er et mål i sig selv, og de behøver ikke meget overbevisning for at brænde deres weekender af med at bygge et konsolbaseret kortspil på det obskure, nye sprog.

Lige meget hvilken lejr du tilhører, er der noget, der kan diskuteres: Vi ønsker alle at bruge tid på noget, der har en lys fremtid.

For folkene i den gamle lejr har deres foretrukne eksisterende sprog allerede masser af momentum og vil fortsat have en lys fremtid. For dem må jeg minde dem om, at deres nu modne foretrukne udviklingsværktøjskæde engang var “kool-aid”, som mange nægtede at drikke. Og sådan er det i dag; nye teknologier tilføjes for at løse nye problemer eller for at lette smerten ved udvikling.

Hvis noget gør dette radikalt nok, er chancerne for, at det vil fortsætte med at snuppe mindshare og nå toppen. Når det sker, ønsker du ikke at blive efterladt. 🙂

Og til dem, der kan lide at løbe med de skinnende ting, en advarsel: Det er vigtigt at have det sjovt som programmør, men vi skal passe på ikke at spilde vores energi formålsløst.

Jo da, Brainfuck er et utroligt forskruet, puslespilsagtigt, sjovt lille sprog, men du vil næppe få gavn af at forfølge det seriøst. Du vil have noget, der er nyt, fornuftigt og har et solidt fundament.

Hvordan disse sprog blev udvalgt

Sprogvalg er et skræmmende job, især når nye sprog overvejes for fremtidige fordele i beskæftigelse og tilfredshed. Hver sprogforfatter er fast overbevist om, at de har bygget det perfekte sprog som muligt og løst alle de problemer, der er at besvare. Hvordan skærer du så?

Til dette indlæg fokuserede jeg på et par parametre for at holde min søgning inden for rimelige grænser.

Udgivelses dato

Jeg undgik specifikt sprog, der er meget, meget nye.

Ny, jeg mener sprog, der er mindre end 5-6 år gamle i skrivende stund, og især dem, der ikke har nået stabilitet (1.0-udgivelse, altså). Dette udelukker desværre nogle ægte perler som Krystal, Men jeg håber at vende tilbage til dette og skrive om dets succes en dag. 🙂

Et kodestykke i Crystal (“Hurtig som C, Slick som Ruby”)

For mig er 5-12 år det søde punkt, som er, når et sprog har stabiliseret sig, og der arbejdes på flere raffinementer. Nu er der selvfølgelig undtagelser fra denne regel, og disse vil blive overvejet, hvor det er relevant.

Denne er en no-brainer, men bliver ofte ignoreret, når vi bliver begejstrede for noget nyt. Nu, for mange mennesker, er opbakning fra en stor virksomhed nok præcedens til succes, men det er ikke altid sandt.

Ja, Apples Objective-C og nu Swift trivedes, fordi disse var de eneste muligheder i et stærkt kontrolleret økosystem, men Facebooks D og Hack (et grimt bud på et allerede grimt sprog, efter min mening) forbliver kun lidt mere end eksperimenter.

Den ideelle kombination ville være et sprog, der understøttes af en stor, stabil virksomhed og eksploderer i popularitet (som React).

Men sagens kød er stadig fællesskabet. Hvis et sprog ikke skaber en buzz, og der ikke er nok udviklere til at uddanne og popularisere, kommer det ikke til at kravle ud af sin GitHub-grav.

For mig udelukker dette modne, fascinerende sprog som Ketsjer og Erlangda de har holdt sig fladt på vækstkurven.

Fokuseret, veldefineret USP

Den tredje ting, jeg leder efter, er et klart mål for sproget. For eksempel virker en bedre version af PHP, der løser navngivningsproblemer og kompilerer til native PHP, ikke for mig.

Fordelene er bare for små til at retfærdiggøre revnerne, hvis alle forsøger at flytte til det. Ud fra denne målestok kan jeg ikke lade være med at afvise forsøg som f.eks CoffeeScriptog mange andre lignende kompilerings-til-JavaScript-sprog.

Helt ærligt, jeg er forpligtet til at afvise forbedringer, der kun er syntaks, med det samme. Historien har vist, at anvendelighed overtrumfer venlighed, når det kommer til sprog, så hvis alle nye sprog fokuserer på er en mere behagelig oplevelse, er jeg bange for, at det ikke kommer med på denne liste.

Klar, konsekvent syntaks

Ja, det ved jeg. Jeg sagde bare, at syntaks ikke betyder noget. Nå, for at være præcis sagde jeg, at “kun syntaks-forbedringer” er ligegyldige. Men når det er sagt, forbliver syntaks en af ​​de væsentlige faktorer i programmørens produktivitet og vedligeholdelse, så det er noget, der er bundet til at indgå i mine beregninger her.

  Sådan tilpasser du topsteder i Microsoft Edge

Sammen med syntaks kommer ideen om konsistens. Funktionsnavngivning, modulstrukturering osv. er nøgleting, som et sprog ikke har råd til at tage fejl af. Det er 2018, for guds skyld, og endnu et PHP-lignende sprogdesign ville være en skam for os alle. Så lad os uden videre komme i gang med vores top fem anbefalinger.

1. Julia

For folk på MIT var de tilgængelige sprog til datavidenskab i bedste fald et kompromis. Python manglede på trods af sin klarhed og popularitet native konstruktioner til at håndtere dataobjekter. Da det også er et fortolket sprog, var Python langsom for dem (ikke bibliotekerne, vel at mærke, da de for det meste er skrevet i C).

Men måske den største afbrydelse var den klodsede samtidighedsmodel og manglen på en parallel computermodel, hvoraf sidstnævnte er en fast bestanddel i supercomputing.

Som resultat, Julia var født.

Julia nåede sin stabile udgivelse den 29. september 2018, knap et par dage før denne artikel blev skrevet (tal om timing!). Her er, hvad den officielle hjemmeside har at sige om dens muligheder:

Julia udmærker sig ved numerisk databehandling. Dens syntaks er fantastisk til matematik, mange numeriske datatyper er understøttet, og parallelitet er tilgængelig direkte fra boksen. Julias multiple afsendelse er en naturlig egnethed til at definere tal og array-lignende datatyper.

Syntaksmæssigt kan Julia ses som en kombination af Python og C. Ja, det er nok første gang, et sprog har rettet sig mod begge disse kvaliteter og lykkedes.

For at gøre tingene enkle, er Julia lynhurtig og påtvinger ikke streng indtastning. Her er nogle benchmarks:

De officielle Julia benchmarks

Som du kan se, er Julia lidt værre end C, men blæser Java og Python op af vandet. Og hvilken slags eye-candy tilbyder Julia?

Nå, her er implementeringen af ​​en funktion til at beregne hypotenusen af ​​en retvinklet trekant:

Endelig, mens de fleste af Julia økosystem er stærkt tiltet mod matematisk arbejde, tror jeg, at det har en lys fremtid for almene formål.

Det er det første sprog, så vidt jeg ved, der har førsteklasses understøttelse af parallel computing, så det vil ikke være nogen overraskelse at se det vinde mere popularitet på web- og IoT-domænerne.

2. Rust

Hvis du har prøvet de nye Firefox-browserudgivelser, ved du, at det endelig, efter mange års arbejde, ser ud til, at de måske kan tage nogle markedsandele fra Chrome.

Hvis browseren føles let og snappy og gengives hurtigt, er det hele takket være sproget Mozilla specielt udviklet: Rust.

At sige, at Rust har en lys fremtid, vil være løgn; sproget er allerede en stor succes, og hvis du ikke har hørt om det endnu, er det fordi dets anvendelsesområde er specialiseret, og dets mål skræmmende: at erstatte C++! Ja, vi har endelig et sprog, der ikke kun er i stand til at gøre dette, men som allerede gør det.

For folk, der er frustrerede over C++’s overbelastede design- og hukommelseshåndteringsudfordringer, kommer Rust som et frisk pust.

Sådan ser et Rust-program ud:

Kortfattet og elegant, efter min mening. Rust følger den funktionelle programmeringstilgang, som gør din kode mere komponerbar, og der er ingen objektorienterede hierarkier at kæmpe med.

Så hvad giver Rust modet til at gå efter C++? Det er den nye hukommelsesmodel. I stedet for at stole på den gamle new()/delete()-dans introducerer Rust ideen om ejerskab.

I stedet for at allokere og få adgang til hukommelse direkte, “låner” Rust-variabler fra hinanden med strenge begrænsninger, der er fastsat af compileren. Det overordnede koncept er for kompliceret til at forklare med få ord, så tjek gerne officielle dokumenter at lære mere.

Pointen er, at dette resulterer i 100 % hukommelsessikkerhed uden behov for en skraldeopsamler, hvilket er en big deal.

Rust har taget systemprogrammeringsverdenen med storm. Det er allerede understøttet på nogle platforme, driver browsere og gengivelsesmotorer, der hurtigt erstatter C/C++-kode på produktionssystemer og bliver brugt til at skrive operativsystemer.

Sikker på, det er ikke alles kop te at oprette en anden browser eller enhedsdriver, men Rust spreder sig allerede til andre domæner. Vi har allerede flere fuldt funktionelle, latterligt hurtige web-frameworks i Rust, og flere og flere applikationsbiblioteker udvikles.

Helt ærligt, hvis du er interesseret i en spændende fremtid, er Rust det perfekte sprog, og nu er det et perfekt tidspunkt. Rust er et fly, der er lettet, men der er stadig tid til at komme ombord, da det er på vej mod stjernerne!

  Sådan tilpasses tastaturgenveje på KDE Plasma 5

Lære Rust fra Dmitri Nesteruk.

3. Eliksir

Blandt sprog, der fokuserer på udviklerlykke, er førstepladsen permanent reserveret til Ruby. Det er et sprog, der læser som poesi og har nok genveje til at reducere mental friktion i størrelsesorden.

Det er derfor ikke underligt, at Rails-rammen fortsætter med at dominere fuld stack-udvikling for seriøse udviklere og startups. Men ikke alle var tilfredse med Rails, især en af ​​dets kerneudviklere – José Valim. Jeg tror, ​​at skaberen selv bedst forklarer tilblivelsen af ​​dette sprog i en interview:

Det er en lang historie, men jeg vil forsøge at gøre den kort og sød. Tilbage i 2010 arbejdede jeg på at forbedre Rails ydeevne, når jeg arbejdede med multi-core systemer, da vores maskiner og produktionssystemer sendes med flere og flere kerner. Men hele oplevelsen var ret frustrerende, da Ruby ikke leverer det rigtige værktøj til at løse samtidighedsproblemer. Det var da, jeg begyndte at se på andre teknologier, og jeg blev til sidst forelsket i Erlang Virtual Machine.

Jeg begyndte at bruge Erlang mere og mere, og med erfaring bemærkede jeg, at jeg manglede nogle konstruktioner, der var tilgængelige på mange andre sprog, inklusive funktionelle. Det var da, jeg besluttede at skabe Elixir, som et forsøg på at bringe forskellige konstruktioner og fremragende værktøj oven på Erlang VM.

Og se, Eliksir var født!

Ligesom Scala forbedrer Java-sproget, men retter sig mod den samme virtuelle maskine nedenunder (JVM), drager Elixir fordel af den årtier gamle, kampprøvede virtuelle Erlang-maskine.

Nu er en diskussion om Erlang uden for rammerne af denne artikel, men det mindste du bør vide er, at det er teleindustriens bedst bevarede hemmelighed: Hvis vores telefonnetværk er meget mere pålidelige end vores webbaserede systemer, er det alt sammen takket være Erlang.

I endnu enklere vendinger, hvad det betyder er dette. Hvis du bygger et real-time system som chat, er Elixir meget mindre RAM sulten og stabil end Ruby (eller PHP, Python og Java, for den sags skyld).

En maskine, der kører Ruby og maksimalt har 10.000 samtidige forbindelser, kan nemt klare 200.000, når du bruger Elixir og stadig have nok RAM til at køre 2D-spil!

Elixir-kodestykke

Syntaksmæssigt kopierer Elixir skamløst Ruby, og dets dominerende web-framework, Phoenix, kopierer skamløst Rails. Jeg vil også sige, at det er en god ting, for sammen med Laravel, Grails, Masonite osv. er vi ved at nå et punkt, hvor alle sprog har Rails-lignende rammer, som kan lette overgangen. Nogle vil måske håne “manglen på originalitet”, men jeg klager i det mindste ikke.

Langt om længe, Eliksir er en af ​​de teknologier, der er forfriskende, behagelige og forbandet praktiske. Adskillige Ruby (og endda ikke-Ruby) butikker flytter til Elixir, og store virksomheder som Pinterest bruger det i produktionen med yderst tilfredsstillende resultater.

Mange mennesker tror, ​​at Node.js var et midlertidigt forsøg på samtidighed og snart ville blive erstattet af Elixir. Jeg må sige, at jeg er enig med dem. 🙂

4. Kotlin

I 2017 I/O udløste Google en bombe over den intetanende skare. Det meddelte selskabet formelt Kotlin som det primære sprog for Android-udvikling, hvilket sender chokbølger gennem branchen.

Nu, at Google aktivt har søgt efter at erstatte Java, kommer ikke som nogen overraskelse efter at være blevet bidt af en Oracle-retssag; adoptionen af ​​Kotlin var dog noget uventet, og der er stadig en god chance for, at Google snart kommer ud med sin virtuelle maskine. For øjeblikket nyder Kotlin dog en stigning.

Kotlin blev udviklet af JetBrains, et firma bedre kendt for sin suite af sindssygt gode kodeeditorer. En af dem, IntelliJ IDEA, danner grundlaget for Android Studio. Designmålene for Kotlin er sikkerhed, kortfattethed og 100 % interoperabilitet med Java.

Mere end noget andet arbejder Kotlin-kompileren ekstra hårdt for at eliminere alle nul-pointer-undtagelser, der er så almindelige i Java-verdenen. Det tager også en hel del ned på den ordsprogede Java-omtale, hvilket vil komme som en lettelse for mange.

Her er en vidunderlig kodesammenligning mellem Java og Kotlin:

Billedkredit: hype.codes

Kotlin-koden er væsentligt kortere og har meget mindre kognitiv overbelastning at pløje igennem.

Men lad os få én ting klart: Det er ekstremt usandsynligt, at Kotlin erstatter Java, selvom det hurtigt er ved at blive en hurtig favorit. Jeg tror, ​​at ti år senere vil små til mellemstore teams ikke lede længere end til Kotlin, mens store grupper vil fortsætte med at bruge Java udelukkende på grund af ældre årsager.

Når det er sagt, har Kotlin en ekstremt lys fremtid, da den gør alt, hvad Java gør, kan fusionere med Java-kode uden at nogen bemærker det, og det er meget mere behageligt!

5. TypeScript

Gud ved, at jeg var nødt til at beherske mig for dette sted! Alt indeni mig skreg “Elm! Elm!”, men uanset hvor revolutionerende dens ideer er, eller hvor guddommelig syntaksen er, er Elm endnu ikke set som et mainstream-alternativ til frontend-arbejde. 🙁 Uanset hvad, lad os gå videre til det, der er mainstream: TypeScript.

  Hvor er WPS-knappen på Canon-printeren?

JavaScript er som vilde bær: grimt og usmageligt, men du er nødt til at mave det, hvis du ønsker at overleve junglen af ​​frontend-udvikling. Der blev gjort mange forsøg på at erstatte det (og højst sandsynligt vil den nye WebAssembly-standard lykkes), men det, der virkelig fangede alles opmærksomhed, var supersættet udviklet af Microsoft.

Der er gode chancer, som du har hørt om TypeScript: Angular var det første framework, der omfavnede det fra version 2 og frem, og folk var hurtige til at tage det til efterretning. Det er fordi TypeScript tilføjer nogle tiltrængte og fantastiske superkræfter til det mest berømte programmeringssprog i verden.

Ja, det er endelig muligt at skrive indfødt JavaScript-kode uden at lide og forbande sin fødsel!

Her er de forbedringer, som TypeScript bringer til bordet:

✓ Stærk skrivning: Endelig er en streng ikke et tal, og et tal er ikke et objekt, hvilket ikke er et tomt array!

✓ Kontrol af kompileringstid: Hvis din kode kompilerer korrekt, er den mere eller mindre garanteret fri for vorterne fra JavaScript-runtiden.

✓ Klasser og moduler: Ja, klasser er standard i ES6, men de er også inkluderet i TypeScript, udover et pænt modulsystem.

✓ Typeslutning: For komplekse typer kan typen let finde ud af compileren, hvilket sparer dig for hovedpine.

✓ Asynkron/vent: Nøgleord og mønstre for asynkron/afvent er fundamentale, så du skal ikke længere rode rundt med løfter og tilbagekald!

Navneområder, generiske stoffer, tupler . . . Jeg kunne blive ved og ved, men det burde være tilstrækkeligt at sige, at TypeScript konverterer en af ​​de værste udviklingsoplevelser til en af ​​de bedste.

TypeScript-kodestykke

Virkningen af ​​TypeScript kan ikke afvises. Det skubbede lignende forsøg som Googles Dart ud af feltet (selvom det forsøger et comeback gennem Flutter, en mobiludviklingsramme), og åbnede JS-udvikleres øjne for fordelene ved stærkere typer.

Som et resultat har betydelige biblioteker som React, D3, Vue (selv jQuery!) nu en TypeScript-version, og i de bedste softwarebutikker rundt om i verden bliver al JavaScript-kode skrevet som TypeScript-kode. TypeScript-headere er nu også tilgængelige for Node.js (helt ærligt, hvis en node kan forbedre sin samtidighedshistorie og lappe sin elendige hukommelseshåndtering, vil den vare evigt).

Du kan blive overrasket over at vide, at skaberen af ​​Node.js, efter offentligt beklager hans skabelse, arbejder på en ny køretid (der er ingen officiel hjemmeside på nuværende tidspunkt; kun GitHub-repoen), der har TypeScript som sit primære sprog.

Den bedste nyhed? TypeScript er en lille sprog at lære med betydelige fordele i fremtiden. Hvis du er en mellemliggende JavaScript-udvikler, vil du hente nok TypeScript inden for to dage til at overføre al din eksisterende kode!

Konklusion og ansvarsfraskrivelse

Specifikke sprog vinder lige så meget popularitet som dem i denne artikel, men er ikke blevet inkluderet på listen af ​​forskellige årsager. Her er et hurtigt kig:

  • Golang: Allerede etableret som et mainstream, hvis ikke meget populært, sprog. Jeg tror på dette tidspunkt, at Golang har flere konkurrenter, der vil holde sin markedsandel lav.
  • R: R er allerede hot blandt dataforskere, og det er usandsynligt, at det tiltrækker applikationsudviklere meget. Desuden må vi ikke glemme, at maskinlæringsbiblioteker langsomt er på vej ind i alle større sprog (for guds skyld, selv PHP har dem nu!), så det eneste du skal gøre er at vente et stykke tid. 🙂
  • Swift: Apple har et jerngreb om sit økosystem, og Swift er det eneste sprog, der er tilgængeligt der. Tidligere var mål C raseriet, som Swift er nu. Jeg betragter det som snyd og nægter derfor at inkludere det her. 😀

Fremtiden er altid usikker, og en måde at gå din karriere på er at holde fast i det, der allerede fungerer og nægte at blive “distraheret”. Hvis du gør det, er Java, PHP, Python, Ruby osv. alle fremragende sprog at holde sig til. Men for nogle af os er normen ikke nok. De vil ud og udforske og satse stort på fremtiden. Hvis du falder i sidstnævnte lejr, bør et af disse fem sprog stå øverst på din huskeliste.

Til sidst, når du prøver at vurdere et sprog, så lad ikke indsatsen overvælde dig, for det er ikke så meget. Hvis du allerede kender et par programmeringssprog, kan du lære et af disse inden for maks. to måneder og bruge 5-6 timer om ugen. Hvorimod den lykke og det monetære afkast, der kan genereres i fremtiden, vil være flere gange mere.

Gik jeg glip af noget kritisk sprog her? Eller måske er der noget galt med de sprog, der er anført her? Hvis ja, så skriv venligst en kommentar og hjælp mig med at forbedre mig. 🙂