Mikä on paras ' järjestelmä ' ohjelmointikieli, joka yhdistää toiminnallisuuden, samanaikaisuuden ja suorituskyvyn suotuisasti?


Paras vastaus

Se riippuu siitä, mitä tarkoitat termillä ”järjestelmien ohjelmointi” ja ”paras”.

Esimerkiksi ATS (http://www.ats-lang.org/) saattaa täyttää kaikki kriteerit ja paljon muuta – se on turvallinen kieli, jolla on korkeatasoiset samanaikaisuusominaisuudet, tuki toiminnalliselle toiminnalle, mutta ei mandaattia tyyli ja erittäin hyvä suorituskyky. Vaikka se onkin yksi paperin parhaista, se ei ehkä ole ”paras”, koska sitä ei ole tarpeeksi ihmisiä ja se näyttää ”erilaiselta”.

Toiseen suuntaan C on kauhea monista syistä. Manuaalinen muistinhallinta on valtava virhelähde ja sitä on vielä vaikeampaa saada oikeaan aikaan samanaikaisessa ympäristössä. Pysymällä käsitteellisesti lähellä metallia se jättää sinut ilman kykyä abstrakti tavoilla, joiden avulla voit tuottaa toimivan koodin nopeammin, ja se kannustaa kirjoittamaan asioita tasolle, jota on vaikea rinnastaa. Toisaalta se voi olla paras järjestelmän ohjelmointikieli, jos sinun on käytettävä laitteistoa, jossa muita kääntäjiä on vähän, tai jos sinun on palkattava ytimen ohjelmoijia.

Vaikka minusta on tuskallista sanoa, koska olen eri mieltä periaatteessa useista sen suunnittelun näkökohdista, kannattaa ehkä katsoa Go. Näyttää siltä, ​​että heidän suunnittelukriteerinsä sopivat melko hyvin vaatimuksiisi.

Vastaus

Vaikuttaa siltä, ​​että olet ”kieli”, joka antaa sinulle abstraktit, jotta sinun ei tarvitse huolehtia. Tietoja monimutkaisuudesta (ts. ei tarvitse rakentaa samanaikaisuutta tyhjästä), mutta myös korkean suorituskyvyn ja resurssitehokkuuden.Ja koska se on ”System” -tehtävä, sen pitäisi pystyä yhdistämään suoraan kaikkiin laitteistoihin. Haluat siis jotain, jossa suurin osa raskaasta nostamisesta on jo selvitetty (joko kielen tai käytettävissä olevien kirjastojen idioomeissa tai ehkä molemmissa). Lisäksi se tarvitsee natiivikääntäjän virtuaalikoneen sijaan.

Jos tämä tässä tapauksessa en todellakaan ole varma ”parhaasta”. Siellä on monia vaihtoehtoja, jopa monet tuntemani pienet ryhmät. Jos ”todella” haluat päästä ”parhaisiin”, sinun on luotava luettelo kaikista kielistä – ilman ennakkoluuloja. Aloita sitten tarkentaminen jättämällä huomiotta – ts. käydä läpi kaikki vaatimukset ja jättää pois (tai ainakin siirtyä luettelossa matalammaksi) ne, joissa kieli (tai sen työkalut) ovat vähemmän kuin riittävät vaatimukseen.

Abstraktiovaatimukset todennäköisesti poistavat C: n ja Se on luettelosta, ehkä C ++: n uudet päivitykset pitävät sitä silti käynnissä.

Kaikki virtuaalikoneisiin perustuvat toiminnot todennäköisesti epäonnistuvat jossakin suhteessa (huomaa ei välttämättä, mutta tarvitset jotenkin ainakin osien valmistamisesta / muuntamisesta alkuperäisiksi). Joten ne Java / PVM / DotNet / jne. Kieliperhe voidaan todennäköisesti jättää myös pois.

Laitteistolinkit saattavat poistaa melko harvat, vaikka huomaa, että ei ole mahdotonta käyttää useampaa kuin yhtä kieltä (tai kieliperhettä) kiertämiseen Esimerkiksi on jopa mahdotonta käyttää C: tä koko järjestelmätehtävien pinoa varten – ainakin osa kaikkien järjestelmien käynnistysosista kirjoitetaan kokoonpanona, ja sitten sen päälle monet järjestelmät on kirjoitettu korkeammalla tasolla ”C” -annokset. Useimmissa tapauksissa tilanne on vain käyttää jo tehtyjä ja / tai lisätä siihen parhaiten soveltuvia paikkoja, joissa ne sopivat. Joten voit todennäköisesti (samalla tavalla) hankkia kirjaston / ”laajennuksen” mikä sallii minkä tahansa kielen vaikuttaa suoraan laitteistoon. Poistetaanko tämä sitten suorituskyvyn tai resurssitehokkuuden kaltaiset asiat, on eri asia, joka tarvitsisi testausta ja vaihtoehtoista yhdistelmäajattelua (esim. Teetkö atomilevyjen käytön rutiinin C: ssä, jota kutsutaan näyttelijän ”säikeestä” Lispissä ja mahdollisesti aiheutuu ylimääräisiä jokainen atomi-puhelu käyttää omia resurssejaan ja mahdollisesti suorituskyky menetetään CFFI-puheluiden vuoksi).

Ja sitten valkoinen norsu (ja tärkein syy C on niin läsnä) on esimerkkejä: Se on paljon vaikeampaa kokeilla jotain jollakin muulla kielellä, josta näytteitä on vaikea löytää tai joita ei ole lainkaan. On aina erittäin vaikeaa olla ensimmäinen tekemässä sen sijaan, että tekisit vain saman asian, vain ”omalla tavallasi”.

Jos valitset tämän reitin, luultavasti poistaisit hyvin nopeasti suuret palat siitä valtavasta kieliluettelosta. Eniten aikaa vievä toimenpide olisi kuitenkin tutkia kutakin kieltä selvittääkseen, miten se suhtautuu muihin vaatimuksiin nähden. Siksi useimmat eivät häiritse ja vain pitää kiinni jonkinlaisesta C: stä, vaikka (pitkällä tähtäimellä) se voi tarkoittaa, että he ”pystyvät tekemään jotain” parempaa ”nopeammin.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *