Singeli: Paras molemmista maailmoista
Miksi matalan tason ohjelmointi tuntuu välttämättömältä pahalta
Suorituskyky on kriittistä. Kun tekoäly-inferenssi, datankäsittely ja reaaliaikaiset sovellukset vaativat jokaista pisaraa tehoa mitä laitteistosta saa irti, matalan tason ohjelmointi pysyy tarpeellisena taitona. Mutta rehellisesti sanottuna – C-kielen kirjoittaminen, manuaalinen muistinhallinta ja osoittimien kanssa painiminen eivät ole asioita, joista useimmat kehittäjät uneksivat iltaisin.
Ongelma on, että perinteiset korkean tason kielet eivät usein pysty antamaan tarvittavaa kontrollia. Kun tarvitset SIMD-optimointeja, räätälöityjä muistilayoutseja tai hienojakoista instruktiotason hallintaa, abstraktiot alkavat vuotaa.
Singeli: Abstraktio ilman anteeksipyyntöä
Singeli kääntää tämän narratiivin päälaelleen. Sen sijaan, että lähdettäisiin korkealta tasolta ja paljastettaisiin monimutkaisuutta vähitellen, Singeli mahdollistaa korkean tason, luettavan koodin kirjoittamisen, joka kääntyy erittäin optimoituu matalan tason tuotokseksi.
Ajattele sitä domaanikohtaisen kielenä upotettuna osana työnkulkuasi – sellaisena, joka on suunniteltu erityisesti laskentaintensiivisille operaatioille. Avainhavainto on, että sinun ei pitäisi joutua valitsemaan kehittäjäkokemuksen ja koneen tehokkuuden välillä.
Mitä Singeli tekee toisin?
Toisin kuin yleiskäyttöiset korkean tason kielet, jotka piilottavat laitteistoyksityiskohdat, Singeli omaksuu ne – tekemättä sinusta byrokratian orjaa.
- Jäsennelty matalan tason kontrolli: Määritä datalayoutit, instruktiojonot ja muistipääsykaavat deklaratiivisilla rakenteilla
- Automaattinen vektorisointi: Anna kääntäjän selvittää paras SIMD-strategia kohdearkkitehtuurille
- Luettava tuloste: Toisin kuin jotkut kääntäjät, jotka tuottavat sekavaa konekoodia, Singeli pyrkii pitämään generoidun koodin ymmärrettävänä
- Kaavamainen kompositio: Rakenna monimutkaisia operaatioita yksinkertaisemmista primitiiveistä
Käytännön vaikutukset
Verkkopalveluiden kehittäjille implikaatiot ovat mielenkiintoisia. Vaikka et todennäköisesti kirjoita koko API-kerrosta uudelleen Singelillä, laskentaintensiiviset komponentit – kuvankäsittely, datamuunnokset, kryptografiset operaatiot – voisivat hyötyä merkittävästi.
NameOceanilla olemme nähneet kehittäjien vaativan yhä enemmän sekä suorituskykyä että yksinkertaisuutta. Ala liikkuu kohti kieliä ja työkaluja, jotka poistavat väärän dikotomian "nopean" ja "helposti kirjoitettavan" välillä.
Suurempi trendi: Abstraktiokerrokset, jotka todella toimivat
Singeli edustaa laajempaa liikettä kehittäjätyökaluissa: abstraktioikerroksia, jotka eivät petä sinua kun suorituskyky on kriittistä. Näimme tämän Rustin omistajuusmallin myötä, joka teki systeemitason ohjelmoinnista turvallisempaa. Näemme sen nyt WebAssemblyn myötä, joka tuo lähes natiivimoodan nopeuden selaimiin.
Kysymys ei ole enää siitä, tarvitaanko matalan tason suorituskykyä – sitä tarvitaan aina. Kysymys on, voimmeko rakentaa parempia siltoja ihmisen luettavan koodin ja koneen tehokkaan suorituksen välille.
Singeli viittaa siihen, että vastaus on yhä useammin kyllä.