Oliko se Alexander Pope, joka sanoi: "Toivo syntyy ikuisesti ihmisen rinnassa"? Pope oli runoilija, ei hakkeri, mutta uskon, että hän ymmärtäisi uuden ohjelmointikielen löytämiseen liittyvän odotuksen. Hän tiesi, että ohjelmistokehittäjät odottavat ikuisesti, että tämä kieli ainutlaatuisine Unicode-merkkien yhdistelmäineen ratkaisee lopulta kaikki ongelmamme ja tekee koodaamisesta helppoa muutamalla napsautuksella.
Paavi varmasti ymmärtäisi halun uuteen syntaksiin, niin intuitiiviseen, että meidän tarvitsee vain kuvitella vastaus ja nähdä se loogisiksi säännöiksi, jotka ovat ihmeellisiä, yksityiskohtaisia ja ennen kaikkea oikeita. Hän arvostaisi sormissamme olevaa kaipuuta pyöritellä uutta koodia, joka näyttää yhtä vaivattomalta ja tyylikkäältä kuin kolmoisakseli, sisäänpäin suuntautuva kolme ja puoli hauen asennossa tai jättiläispujottelu olympialaisissa.
Useimpia nykyaikaisia kieliä ei kuitenkaan ole suunniteltu mielijohteelle tai koodaustaitomme osoittamiseen. Ne on tehty vastauksena yleiseen ongelmaan, jonka tekijät ovat innokkaita ratkaisemaan. Vaikka useimmat kehittäjät jatkavat päivittäisen koodauksen tekemistä yhdellä tai useammalla vanhemmalla, vakiintuneemmalla kielellä, etsimme jatkuvasti uusia työkaluja, jotka auttavat meitä ratkaisemaan koodausongelmamme. Voimme nähdä tämän suuntauksen erityisesti verkkoaluekohtaisten kielten eli DSL:ien nousussa. Nämä kielet ovat kompakteja ja keskittyneitä. Niitä ei ole tarkoitettu yleiskäyttöön. Mutta jotkut voivat ansaita erityisen paikan työkalupakkissasi juuri tästä syystä.
Tässä on 11 uudempaa kieltä, jotka ovat löytäneet paikkansa. Jotkut ovat DSL-yhteyksiä, jotka on suunniteltu tekemään yhtä asiaa ja tekemään sen hyvin. Toiset näennäisesti haluavat pelastaa maailman. Vaikka ne eivät olisikaan sitä, mitä tarvitset juuri nyt, heillä kaikilla on jotain opetettavaa tietokoneidemme saamisesta tekemään sitä, mitä ne tekevät, mutta paremmin.
Reactive Clojure
Kun naidat Clojuren Reactin kanssa, saat tämän: järjestelmän, jossa yhdistyvät kaikki reaktiivisten etuosien mahdollisuudet ja Clojuren vankka, toiminnallinen vahvuus. Parhaimmillaan Reactive Clojure antaa sinun koota monimutkaisen kokoelman käyttöliittymäkomponentteja ja yhdistää ne funktioiden kanssa. Reactive-kehys täyttää tiedot ja varmistaa, että sovellusdata kulkee sujuvasti komponenttien ja tietokannan välillä. Clojure tuo toiminnallisen perustan, joka mahdollistaa myös tavanomaisesta poikkeavat käyttötapaukset – ja virheenkorjauksen.
Onko se taivaassa tehty ottelu? Aika kertoo. Reactive Clojure on hyvä vaihtoehto liimakoodin kirjoittamiseen, joka pitää yhdessä käyttöliittymäkomponentit. Sen monisäikeinen malli sopii luonnollisesti monimutkaisille ja reaktiivisille kojelaudoille, jotka raportoivat useista tehtävistä samanaikaisesti.
Nikkeli
Yksi ohjelmoijien pelaamista ironisista peleistä siirtää suurimman osan työstämme asetustiedostoihin. Nämä tiedostot, jotka on usein koodattu JSON-, YAML- tai jopa XML-muotoon, ovat hyvä koodausidea, joka on metastasoitunut monimutkaiseksi rituaaliksi. Joissakin tapauksissa sinun ei tarvitse edes kirjoittaa varsinaista koodia; heiluttele loputtomasti erilaisia määritystiedostoja tehdäksesi mitä tarvitset.
On siis järkevää, että meillä on Nickel: ohjelmointikieli asetustiedostojen luomiseen. Nickel on kuin mallipohja, jossa on upotettu logiikka, jonka avulla voit luoda konfiguraatiotiedostoja, jotka eivät ole staattisia. Parametri voi olla yksi arvo viikon aikana ja erilainen viikonloppuisin. Kun se suoritetaan, Nickel luo uuden määritystiedoston, joka sopii kaikkiin sen vastaanottamiin parametreihin.
Nikkelin rakenne on suurelta osin toimiva, ja tyyppitarkistus on saatavilla, jos se auttaa. Suuri teema on "oikeus", koska hyvin kirjoitettu nikkelikoodin osa takaa melko lailla sen, että tulos noudattaa sekä syntaktisia sääntöjä että kaikkia muita sääntöjä, jotka sinun on valvottava. Nickelin kääntäjällä voit kirjoittaa sopimuksia ja tarkistaa sitten, että tulos noudattaa niitä. Toki koodin kirjoittamisessa on jotain hauskaa luodaksesi määritystiedostoja, jotka sitten hallitsevat koodiasi. Mutta se on erittäin käytännöllinen ratkaisu modernille arkkitehtuurille.
Kobra
Kobran luojat halusivat kielen, joka avasi koneoppimisen insinööreille, tutkijoille ja muille ei-ammattimaisille koodaajille. Tuloksena on se, mitä he kutsuvat visuaaliseksi koneoppimiskieleksi. Kobran editori muodostaa koodin kaltaisia sekvenssejä vedä ja pudota -laatoilla, jotka edustavat tilastollisen analyysin ja koneoppimisen yleisiä sisäänrakennettuja rutiineja. Prosessi tuntuu R:ltä, jossa tietokehykset on rakennettu taulukkotiedoista ja kokoelma graafisia näyttötoimintoja kojelaudoiden ja papereiden luomista varten.
Bicep
Yksi pilven hyödyllisimmistä ominaisuuksista on kyky käynnistää ja purkaa palvelimia datapiikin käsittelemiseksi. Kesti kerran viikkoja, ennen kuin tietokeskuksen laitteistotiimi hankki, asensi, testasi ja konfiguroi koneen. Nyt pilven avulla voit tehdä kaiken tämän minuuteissa tai jopa sekunneissa.
Monet devops-tiimit ovat alkaneet kirjoittaa koodia eri pilvien tukemiin sovellusliittymiin. Microsoft päätti mennä hieman pidemmälle ja luoda yksinkertaistetun kielen koneiden käynnistämiseksi Azuressa osana infrastruktuuri-as-code -filosofiaansa.
Kieli, nimeltään Bicep, tarjoaa tehokkaan, ilmoittavan muodon useimpien erilaisten bittien täsmentämiseen, joita kehittäjä saattaa haluta kääntää uudessa tapauksessa. Jotkut perustyyppisuojaukset voivat auttaa estämään virheitä, ja VS Codessa on saatavilla syntaksitietoinen editori. Kieli itsessään on suunniteltu korkeamman asteen ajatteluun infrastruktuurista, ja siinä on vahvasti deklaratiivinen rakenne, jonka avulla voit sisällyttää ohjeet missä tahansa järjestyksessä ja antaa sitten Azuren resurssienhallinnan optimoida suoritus.
Frink
Ystävä väittää, että hänen yksi vaatimus pankin valinnassa on varmistaa, että pankin kirjanpito-ohjelmisto käyttää kokonaislukuja pennien laskemiseen eikä liukulukuja dollarin murto-osille. Liukulukuvirheiden vaarat ovat hyvin tiedossa ja liian suuret. Kuinka monta vikaa on aiheuttanut numeroiden heitteleminen huolimattomasti?
Frink on "yksikkötietoinen" kieli, joka on luotu juuri tätä ongelmaa varten. Jokainen Frinkin muuttuja ei sisällä vain numeroa, vaan myös mittayksikön osoitusta, oli se sitten tonneja, wattia, jalkoja tai metrejä. Yksikkömuunnos on helppoa Frink-määritystiedoston ansiosta. Frinkin ydinmekanismi käyttää myös mielivaltaisia tarkkuuslukuja vähentääkseen pyöristysongelmia. Se on kuin tyypin tarkistus, mutta numeerisia mittayksiköitä varten.
Faust
Äänen synteesi saattaa tuntua kapealta painopisteeltä, mutta se on erittäin hyödyllinen pelikehityksessä, virtuaalitodellisuudessa ja kaikissa sovelluksissa, joissa on hyvä äänenlaatu. Anna Faust, verkkotunnuskohtainen kieli, joka on saanut nimensä toiminnallisen äänivirran yhdistelmästä. Faustin rakenne on puhtaasti toiminnallinen, ja kaikki sen toiminnot muodostavat äänenkäsittelyputken. Sen takaosa hajottaa tulevan äänen numeeriseen esitykseen, ja itse koodi on joukko toimintoja, jotka voidaan muodostaa tai yhdistää lopputulokseen. Voit esimerkiksi luoda kaiun tai kaiun jakamalla koodin ulostulon ja lisäämällä viiveen. Faustin koodi on käännetty C++-, C-, LLVM-bittikoodiksi, WebAssembly-, Rust- ja muutamalle muulle kielelle, joten voit käyttää sitä lähes kaikissa projekteissa.
Melrōse ja Glicol
Jokainen koodin kirjoittaja tietää, kuinka ohjelmoija perustaisi bändin: Sen sijaan, että julkaiset mainoksen löytääksesi rumpalin ja sitten haastattelet kaikkia vastaajia, kirjoita vain koodi. rumpukoneen rytmit. Kun se on tehty, voit yhtä hyvin korvata kaikki muut bändin jäsenet aliohjelmilla. Voit jopa rakentaa koko sinfoniaorkesterin sillä tavalla.
Melrōse ja Glicol ovat kaksi musiikin ohjelmointikieltä, jotka on suunniteltu tähän musiikin luontityyliin. Molempien avulla voit luoda monimutkaisia sävellyksiä vain muutamalla näppäinpainalluksella. Melrōse toimii korkealla tasolla länsimaisessa musiikissa tavallisen 12-äänisen oktaavin ympärillä. Nuotit on ryhmitelty sekvensseihin ja ohjelmisto hoitaa suuren osan scuut-työstä, kuten transponoinnin. Lähtö menee mille tahansa MIDI-yhteensopivalle instrumentille ja koodi voi myös reagoida MIDI-portin kautta tuleviin signaaleihin, joten Melrōse-koodi voi olla bändin jäsen.
Glicol on ruosteeseen perustuva työkalu, joka suorittaa suuren osan samoista tehtävistä, mutta alemmalla tasolla. Koodi integroituu digitaaliseen signaalinkäsittelyyn ja tarjoaa laajan valikoiman musiikkivaihtoehtoja. Työkalu on suunniteltu tuottamaan selainvalmiita ääniä avoimen lähdekoodin äänimoottorilla. Glicolin kehittäjä sanoo, että kielellä on "alhainen pääsymaksu ja korkeat enimmäismäärät", mikä rohkaisee yhteistyötä muiden kaikentasoisten kanssa.
WebAssembly ja Wase
Tehokkain tapa lähettää ohjeet tietokoneelle on koodata ne binäärimuodossa ja rajoittaa ne suoritinten käyttämiin perustoimintoihin. Jokaisella sirulla on oma suosikki binäärisyntaksinsa, ja joillakin kielillä, kuten Pascalilla tai Javalla, on neutraali binaarimuoto, joka on tarkoitettu toimimaan paikallisessa virtuaalikoneessa. WebAssembly (Wasm) seuraa näitä jalanjälkiä tarjoten verkkoselaimille valmiiksi sulatetun binäärikoodin yhdistettynä tekstiin vakiomuodossa. WebAssemblyn tavoitteena on korvata verkkosovellusten selkärangan muodostava pienennetty JavaScript-koodi jollain, joka on entistä valmiimpi suoritettavaksi ja lähes alkuperäisellä nopeudella.
Monet kehittäjät käyttävät WebAssemblya kirjoittamatta sitä suoraan käyttämällä kääntäjiä, jotka muuntavat korkeamman tason kielet WebAssemblyksi, joka toimii selaimissa. Suunnitelmissa on myös luoda matalan tason kieliä, jotka paljastavat suuren osan WebAssemblyn perusrakenteesta ihmisen luettavassa muodossa. Wase on yksi tällainen vaihtoehto, joka tarjoaa C:n kaltaisen syntaksin vahvalla kirjoituksella.
WebAssembly löytää käyttöä myös verkkoselaimien ulkopuolelta yleisenä tapana koodata ohjeita Javan JVM:n kaltaisella pinokoneella. Esimerkiksi Redpanda on suoratoistotietoalusta, joka tarjoaa kehittäjille mahdollisuuden muokata tai muokata tietoja, kun se tulee WebAssemblyssa kirjoitetun koodin avulla.
Java 17
Teknisesti Java ei ole uusi kieli. Todellakin, yksi suurimmista asioista Javassa on, että sen kehittäjät ovat tehneet hienoa työtä ylläpitäessään yhteensopivuutta vanhempien versioiden kanssa. On yleensä melko helppoa kääntää 10 tai jopa 20 vuotta vanhaa koodia uusimmille JVM:ille. Koodin toimivuutta ei taata, mutta se on silti helpompi kääntää kuin melkein mikään muu kieli. Java-tiimillä on miljoonia integraatiotestejä, ja se näkyy.
Lisään tähän luetteloon Java 17:n, koska se on niin modernisoitu, että se olisi melkein tunnistamaton 1990-luvun aikamatkailijalle. Java 17:ssä on niin monia lisäominaisuuksia ja laajennuksia, jotka muuttavat koodiamme.
Jotkut, kuten parannettu satunnaislukugeneraattori tai tiukempi liukulukumatematiikan semantiikka, käsittelevät erittäin monimutkaisen numeerisen koodin kirjoittamisen haasteita. Laskentajärjestelmiä kirjoittavat kehittäjät voivat päästä eroon käyttämällä kokonaislukuja senttimäärän pitämiseen, mutta tekoälyalgoritmeja ja monimutkaista lineaarista algebraa käsittelevät tarvitsevat liukuluku.
Toiset, kuten vahva kapselointi ja laajennettu kytkinsemantiikka, tuovat kurinalaisuutta ja joustavuutta ydinkieleen. Kaiken kaikkiaan on helpompaa kuin koskaan kirjoittaa vahvempaa, turvallisempaa ja turvallisempaa koodia kaikkien näiden parannusten ansiosta. Se on edelleen Java ytimessä, mutta lisäominaisuudet vaikuttavat.