5 nye programmeringsspråk du bør kunne

For noen mennesker er det best å unngå å lære et nytt programmeringsspråk. Hvorfor, å hvorfor, hevder de, trenger vi enda et språk?

Har vi ikke nok allerede?

Får ikke de eksisterende verktøyene jobben gjort?

Og så er det de utrettelige søkerne som hopper på muligheten til å prøve nye ting og snuble over edelstener. Læring er et mål i seg selv, og de trenger ikke mye overbevisning for å brenne bort helgene sine med å bygge et konsollbasert kortspill på det obskure, nye språket.

Uansett hvilken leir du tilhører, er det noe utover debatt: Vi ønsker alle å bruke tid på noe som vil ha en lys fremtid.

For folket i den gamle leiren har deres favorittspråk allerede tonnevis av fart og vil fortsette å ha en lys fremtid. For dem må jeg minne dem på at deres nå modne foretrukne utviklingsverktøykjede en gang var «kool-aid» som mange nektet å drikke. Og slik er det i dag; ny teknologi legges til for å løse nye problemer eller for å lette smerten ved utvikling.

Hvis noe gjør dette radikalt nok, er sjansen stor for at det vil fortsette å ta mindshare og nå toppen. Når det skjer, ønsker du ikke å bli etterlatt. 🙂

Og til de som liker å løpe med de skinnende tingene, en advarsel: å ha det gøy er viktig som programmerer, men vi må passe på å ikke kaste bort energien vår uten mål.

Sikker, Brainfuck er et utrolig vridd, puslespillaktig, morsomt lite språk, men du vil neppe ha nytte av å forfølge det seriøst. Du vil ha noe som er nytt, fornuftig og har et solid fundament.

Hvordan disse språkene ble valgt

Språkvalg er en skremmende jobb, spesielt når nye språk vurderes for fremtidige fordeler i arbeid og tilfredshet. Hver språkforfatter er fast overbevist om at de har bygget det perfekte språket som er mulig og løst alle problemene det er å svare på. Hvordan kutter du da?

For dette innlegget fokuserte jeg på noen få parametere for å holde søket mitt innenfor rimelige grenser.

Utgivelsesdato

Jeg unngikk spesifikt språk som er veldig, veldig nye.

Ny, jeg mener språk som er mindre enn 5-6 år gamle i skrivende stund, og spesielt de som ikke har nådd stabilitet (1.0-utgivelse, altså). Dette utelukker dessverre noen ekte perler som Krystall, Men jeg håper å komme tilbake til dette og skrive om suksessen en dag. 🙂

En kodebit i Crystal («Fast as C, Slick as Ruby»)

For meg er 5-12 år sweet spot, som er når et språk har stabilisert seg, og flere finesser er under arbeid. Nå er det selvfølgelig unntak fra denne regelen, og disse vil bli vurdert der det er aktuelt.

Denne er en no-brainer, men blir ofte ignorert når vi blir begeistret for noe nytt. Nå, for mange mennesker, er støtten til et stort selskap nok presedens for suksess, men det er ikke alltid sant.

Ja, Apples Objective-C og nå Swift trivdes fordi disse var de eneste alternativene i et svært kontrollert økosystem, men Facebooks D og Hack (en stygg versjon av et allerede stygt språk, etter min mening) forblir lite mer enn eksperimenter.

Den ideelle kombinasjonen ville være et språk støttet av et stort, stabilt selskap og eksploderende i popularitet (som React).

Men sakens kjøtt er fortsatt fellesskapet. Hvis et språk ikke skaper en buzz, og det ikke er nok utviklere til å utdanne og popularisere, kommer det ikke til å klatre ut av GitHub-graven.

For meg utelukker dette modne, fascinerende språk som Rekkert og Erlangettersom de har holdt seg flate på vekstkurven.

Fokusert, veldefinert USP

Det tredje jeg ser etter er et klart mål for språket. For eksempel, en bedre versjon av PHP som fikser navneproblemer og kompilerer til opprinnelig PHP, fungerer ikke for meg.

Fordelene er bare for små til å rettferdiggjøre sprekkene hvis alle prøver å flytte til det. Med denne målestokken kan jeg ikke la være å avvise forsøk som CoffeeScriptog mange andre lignende kompilerings-til-JavaScript-språk.

Ærlig talt, jeg er nødt til å avvise forbedringer som kun gjelder syntaks umiddelbart. Historien har vist at nytten trumfer vennlighet når det kommer til språk, så hvis alle nye språk fokuserer på er en hyggeligere opplevelse, er jeg redd det ikke kommer inn på denne listen.

Klar, konsistent syntaks

Ja jeg vet. Jeg sa bare at syntaks ikke betyr noe. Vel, for å være presis sa jeg at «forbedringer kun for syntaks» spiller ingen rolle. Men når det er sagt, er syntaks fortsatt en av de viktige faktorene i programmeringsproduktivitet og vedlikeholdsvennlighet, så det er noe som definitivt kommer med i mine beregninger her.

  Slik bruker du innendørskart på Google Maps

Sammen med syntaks kommer ideen om konsistens. Funksjonsnavn, modulstrukturering osv. er nøkkelting et språk ikke har råd til å ta feil. Det er 2018, for guds skyld, og nok et PHP-lignende språkdesign ville vært synd for oss alle. Så, uten videre, la oss komme i gang med våre fem beste anbefalinger.

1. Julia

For folkene ved MIT var språkene som er tilgjengelige for datavitenskap i beste fall et kompromiss. Python, på tross av all sin klarhet og popularitet, manglet innfødte konstruksjoner for å håndtere dataobjekter. Dessuten, som et tolket språk, var Python treg for dem (ikke bibliotekene, vel å merke, da de stort sett er skrevet i C).

Men kanskje det største avslaget var den klønete samtidighetsmodellen, og mangelen på en parallell databehandlingsmodell, hvor sistnevnte er en stift i superdatabehandling.

Som et resultat, Julia var født.

Julia nådde sin stabile utgivelse 29. september 2018, knapt noen dager før denne artikkelen ble skrevet (snakk om timing!). Her er hva den offisielle nettsiden har å si om dens evner:

Julia utmerker seg på numerisk databehandling. Syntaksen er flott for matematikk, mange numeriske datatyper støttes, og parallellitet er tilgjengelig umiddelbart. Julias multiple sending passer naturlig for å definere tall- og array-lignende datatyper.

Syntaksmessig kan Julia sees på som en kombinasjon av Python og C. Ja, det er nok første gang et språk har siktet mot begge disse egenskapene og lykkes.

For å gjøre det enkelt, er Julia lynrask og påtvinger ikke streng skriving. Her er noen benchmarks:

De offisielle Julia-referansene

Som du kan se, er Julia litt verre enn C, men blåser Java og Python opp av vannet. Og hva slags øyegodteri tilbyr Julia?

Vel, her er implementeringen av en funksjon for å beregne hypotenusen til en rettvinklet trekant:

Til slutt, mens de fleste av Julia økosystem er sterkt vippet mot matematisk arbeid, tror jeg det har en lys fremtid for allmenn bruk.

Det er det første språket, så vidt jeg vet, som har førsteklasses støtte for parallell databehandling, så det vil ikke være noen overraskelse å se det få mer popularitet i web- og IoT-domener.

2. Rust

Hvis du har prøvd de nye nettleserutgivelsene av Firefox, vet du at endelig, etter mange års arbeid, ser det ut til at de kan være i stand til å ta noen markedsandeler fra Chrome.

Hvis nettleseren føles lett og rask og gjengis raskt, er alt takket være språket Mozilla spesialutviklet: Rust.

Å si at Rust har en lys fremtid vil være løgn; språket er allerede en stor suksess, og hvis du ikke har hørt om det ennå, er det fordi bruksområdet er spesialisert, og målet skummelt: å erstatte C++! Ja, vi har endelig et språk som ikke bare er i stand til å gjøre dette, men som allerede gjør det.

For folk som er frustrerte over C++s overbelastede design- og minnehåndteringsutfordringer, kommer Rust som et friskt pust.

Slik ser et Rust-program ut:

Konsis og elegant, etter min mening. Rust følger den funksjonelle programmeringsmetoden, som gjør koden din mer komponerbar, og det er ingen objektorienterte hierarkier å kjempe med.

Så, hva gir Rust motet til å gå etter C++? Det er den nye minnemodellen. I stedet for å stole på den gamle new()/delete()-dansen, introduserer Rust ideen om eierskap.

I stedet for å allokere og få tilgang til minne direkte, «låner» Rust-variabler fra hverandre, med strenge begrensninger satt av kompilatoren. Det overordnede konseptet er for komplisert til å forklare med noen få ord, så sjekk gjerne ut offisielle dokumenter å lære mer.

Poenget er at dette resulterer i 100 % minnesikkerhet uten behov for en søppeloppsamler, noe som er en stor sak.

Rust har tatt systemprogrammeringsverdenen med storm. Den støttes allerede på noen plattformer, driver nettlesere og gjengivelsesmotorer som raskt erstatter C/C++-kode på produksjonssystemer, og brukes til å skrive operativsystemer.

Jada, det er ikke alles kopp te å lage en annen nettleser eller enhetsdriver, men Rust sprer seg allerede til andre domener. Vi har allerede flere fullt funksjonelle, latterlig raske nettrammeverk i Rust, og flere og flere applikasjonsbiblioteker utvikles.

Ærlig talt, hvis du er interessert i en spennende fremtid, er Rust det perfekte språket, og nå er det en perfekt tid. Rust er et fly som har lettet, men det er fortsatt tid til å komme om bord når det går mot stjernene!

  De 5 letteste nettleserne

Lære Rust fra Dmitri Nesteruk.

3. Eliksir

Blant språk som fokuserer på utviklerlykke, har førsteplassen blitt permanent reservert for Ruby. Det er et språk som leser som poesi og har nok snarveier til å redusere mental friksjon etter størrelsesorden.

Ikke så rart at Rails-rammeverket fortsetter å dominere full stack-utvikling for seriøse utviklere og startups. Men ikke alle var fornøyd med Rails, spesielt en av kjerneutviklerne – José Valim. Jeg tror skaperen selv best forklarer opprinnelsen til dette språket i en intervju:

Det er en lang historie, men jeg skal prøve å gjøre det kort og godt. Tilbake i 2010 jobbet jeg med å forbedre Rails-ytelsen når jeg jobbet med flerkjernesystemer, ettersom maskinene og produksjonssystemene våre sender med flere og flere kjerner. Imidlertid var hele opplevelsen ganske frustrerende ettersom Ruby ikke gir det riktige verktøyet for å løse samtidighetsproblemer. Det var da jeg begynte å se på andre teknologier og til slutt ble jeg forelsket i Erlang Virtual Machine.

Jeg begynte å bruke Erlang mer og mer, og med erfaring la jeg merke til at jeg manglet noen konstruksjoner tilgjengelig på mange andre språk, inkludert funksjonelle. Det var da jeg bestemte meg for å lage Elixir, som et forsøk på å bringe forskjellige konstruksjoner og utmerket verktøy på toppen av Erlang VM.

Og se, Eliksir var født!

Akkurat som Scala forbedrer Java-språket, men retter seg mot den samme virtuelle maskinen under (JVM), drar Elixir nytte av den flere tiår gamle, kampprøvde virtuelle maskinen Erlang.

Nå er en diskusjon om Erlang utenfor rammen av denne artikkelen, men det minste du bør vite er at det er telekomindustriens best bevarte hemmelighet: hvis telefonnettverkene våre er mye mer pålitelige enn våre nettbaserte systemer, er alt takket være Erlang.

I enda enklere termer, hva det betyr er dette. Hvis du bygger et sanntidssystem som chat, er Elixir mye mindre RAM-sulten og stabil enn Ruby (eller PHP, Python og Java, for den saks skyld).

En maskin som kjører Ruby og maksimalt har 10 000 samtidige tilkoblinger kan enkelt håndtere 200 000 når du bruker Elixir og fortsatt ha nok RAM til å kjøre 2D-spill!

Elixir-kodebit

Syntaksmessig kopierer Elixir Ruby skamløst, og dets dominerende nettrammeverk, Phoenix, kopierer Rails skamløst. Jeg vil si at det også er en god ting, for sammen med Laravel, Grails, Masonite, etc., når vi et punkt der alle språk har Rails-lignende rammer som kan lette overgangen. Noen vil kanskje spotte «manglen på originalitet», men jeg klager i det minste ikke.

Til slutt, Eliksir er en av de teknologiene som er forfriskende, hyggelige og forbannet praktiske. Flere Ruby (og til og med ikke-Ruby) butikker flytter til Elixir, og store selskaper som Pinterest bruker det i produksjon med ekstremt tilfredsstillende resultater.

Mange tror at Node.js var et provisorisk forsøk på samtidighet og snart ville bli erstattet av Elixir. Jeg må si meg enig med dem. 🙂

4. Kotlin

I 2017 I/O slapp Google en bombe over den intetanende mengden. Selskapet kunngjorde formelt Kotlin som det primære språket for Android-utvikling, og sender sjokkbølger gjennom bransjen.

Nå, at Google aktivt har vært ute etter å erstatte Java, kommer ikke som noen overraskelse etter å ha blitt bitt av et Oracle-søksmål; Adopsjonen av Kotlin var imidlertid noe uventet, og det er fortsatt en god sjanse for at Google snart kommer ut med sin virtuelle maskin. Foreløpig nyter Kotlin imidlertid en bølge.

Kotlin ble utviklet av JetBrains, et selskap bedre kjent for sin pakke med vanvittig gode koderedigerere. En av dem, IntelliJ IDEA, danner grunnfjellet i Android Studio. Designmålene til Kotlin er sikkerhet, konsisitet og 100 % interoperabilitet med Java.

Mer enn noe annet jobber Kotlin-kompilatoren ekstra hardt for å eliminere alle null-peker-unntak som er så vanlige i Java-verdenen. Det tar også ned den velkjente Java-omtalen ganske mye, noe som vil komme som en lettelse for mange.

Her er en fantastisk kodesammenligning mellom Java og Kotlin:

Bildekreditt: hype.codes

Kotlin-koden er betydelig kortere og har mye mindre kognitiv overbelastning å pløye gjennom.

Men la oss få en ting klart: Kotlin er ekstremt usannsynlig å erstatte Java, selv om det raskt blir en favoritt. Jeg tror at ti år senere vil små til mellomstore team ikke se lenger enn til Kotlin, mens store grupper vil fortsette å bruke Java kun på grunn av eldre årsaker.

Når det er sagt, har Kotlin en ekstremt lys fremtid da den gjør alt som Java gjør, kan slå seg sammen med Java-kode uten at noen legger merke til det, og er mye mer behagelig!

5. TypeScript

Gud vet at jeg måtte beherske meg for dette stedet! Alt inni meg skrek «Alm! Elm!”, men uansett hvor revolusjonerende ideene dens er eller hvor guddommelig syntaksen er, er Elm ennå ikke sett på som et mainstream-alternativ for front-end-arbeid. 🙁 Uansett, la oss gå videre til det som er mainstream: TypeScript.

  Slik legger du til musikk i Google Slides

JavaScript er som ville bær: stygt og usmakelig, men du må tåle det hvis du ønsker å overleve jungelen av frontend-utvikling. Det ble gjort mange forsøk på å erstatte den (og mest sannsynlig vil den nye WebAssembly-standarden lykkes), men det som virkelig fanget alles oppmerksomhet var supersettet utviklet av Microsoft.

Det er gode sjanser du har hørt om TypeScript: Angular var det første rammeverket som omfavnet det fra versjon 2 og utover, og folk var raske til å legge merke til det. Det er fordi TypeScript legger til noen sårt tiltrengte og fantastiske superkrefter til det mest kjente programmeringsspråket i verden.

Ja, det er endelig mulig å skrive innfødt JavaScript-kode uten å lide og forbanne sin fødsel!

Her er forbedringene som TypeScript bringer til bordet:

✓ Sterk skriving: Til slutt, en streng er ikke et tall, og et tall er ikke et objekt, som ikke er en tom matrise!

✓ Typekontroll av kompileringstid: Hvis koden din kompileres riktig, er den mer eller mindre garantert fri for vortene til JavaScript-kjøringen.

✓ Klasser og moduler: Ja, klasser er standard i ES6, men de er inkludert i TypeScript også, i tillegg til et pent modulsystem.

✓ Typeslutning: For komplekse typer kan typen lett finnes ut av kompilatoren, noe som sparer deg for hodepine.

✓ Asynkron/vent: Nøkkelordene og mønstrene for async/vent er grunnleggende, så du slipper å rote rundt med løfter og tilbakeringinger!

Navneområder, generiske medisiner, tupler . . . Jeg kunne fortsette og fortsette, men det burde være tilstrekkelig å si at TypeScript konverterer en av de verste utviklingsopplevelsene til en av de beste.

TypeScript-kodebit

Virkningen av TypeScript kan ikke benektes. Det presset lignende forsøk som Googles Dart ut av feltet (selv om det forsøker et comeback gjennom Flutter, et mobilutviklingsrammeverk), og åpnet øynene til JS-utviklere for fordelene med sterkere typer.

Som et resultat har betydelige biblioteker som React, D3, Vue (til og med jQuery!) nå en TypeScript-versjon, og i de beste programvarebutikkene rundt om i verden blir all JavaScript-kode skrevet som TypeScript-kode. TypeScript-hoder er nå også tilgjengelige for Node.js (ærlig talt, hvis en node kan forbedre samtidighetshistorien og lappe den elendige minnebehandlingen, vil den vare evig).

Du kan bli overrasket over å vite at skaperen av Node.js, etter offentlig beklager skapelsen hans, jobber med en ny kjøretid (det er ingen offisiell nettside for øyeblikket; bare GitHub-repoen) som har TypeScript som primærspråk.

Den beste nyheten? TypeScript er en liten språk å lære med betydelige fordeler i fremtiden. Hvis du er en middels JavaScript-utvikler, vil du hente nok TypeScript innen to dager til å overføre all eksisterende kode!

Konklusjon og ansvarsfraskrivelse

Spesifikke språk vinner like mye popularitet som de i denne artikkelen, men har ikke blitt inkludert i listen av ulike årsaker. Her er en rask titt:

  • Golang: Allerede etablert som et mainstream, om ikke veldig populært, språk. Jeg tror på dette tidspunktet at Golang har flere konkurrenter som vil holde markedsandelen lav.
  • R: R er allerede hot blant dataforskere, og det er usannsynlig å tiltrekke seg applikasjonsutviklere mye. Dessuten må vi ikke glemme at maskinlæringsbiblioteker sakte går inn i alle større språk (for guds skyld, selv PHP har dem nå!), så alt du trenger å gjøre er å vente en stund. 🙂
  • Swift: Apple har et jerngrep på økosystemet sitt, og Swift er det eneste språket som er tilgjengelig der. Tidligere var mål C raseriet, slik Swift er nå. Jeg anser det som juks og nekter derfor å inkludere det her. 😀

Fremtiden er alltid usikker, og en måte å gå frem i karrieren på er å holde seg til det som allerede fungerer og nekte å bli «distrahert». Hvis du gjør det, er Java, PHP, Python, Ruby, etc., alle utmerkede språk å holde seg til. Men for noen av oss er ikke normen nok. De vil ut og utforske og satse stort på fremtiden. Hvis du faller i sistnevnte leir, bør ett av disse fem språkene stå øverst på oppgavelisten din.

Til slutt, når du prøver å vurdere et språk, ikke la innsatsen overvelde deg fordi det ikke er så mye. Hvis du allerede kan noen programmeringsspråk, kan du lære hvilket som helst av disse innen maks to måneder, og bruke 5-6 timer i uken. Mens lykken og den økonomiske avkastningen som kan genereres i fremtiden vil være flere ganger mer.

Savnet jeg noe kritisk språk her? Eller kanskje jeg har noe galt med språkene som er oppført her? I så fall, vennligst legg igjen en kommentar og hjelp meg med å forbedre meg. 🙂