Legjobb válasz
Attól függ, hogy mit ért “rendszerprogramozás” és “legjobb” alatt.
Például az ATS (http://www.ats-lang.org/) megfelelhet az összes kritériumnak és még sok másnak is – biztonságos nyelv, magas szintű egyidejűségi funkciókkal, egy funkcionális funkció támogatásával, de nem megbízásával stílus és nagyon jó teljesítmény. Még akkor is, ha a papíron az egyik legjobb, nem biztos, hogy a legjobb, mert nincs elég ember, és “másnak” tűnik.
A másik irányban a C különféle okokból rettenetes. A kézi memóriakezelés hatalmas hibaforrás, és még nehezebb helyrehozni egyidejű környezetben. Azáltal, hogy fogalmilag közel marad a fémhez, nem hagyja el absztrakt módon, amely lehetővé teszi a működő kód gyorsabb előállítását, és arra ösztönzi, hogy olyan szinten írjon dolgokat, amelyet nehéz párhuzamosítani. Másrészről, ez lehet a legjobb rendszerprogramozási nyelv, ha olyan hardveren kell futtatnia, ahol más fordítók kevéské válnak, vagy ha rendszermag-programozókat kell alkalmaznia.
Bár fáj nekem, hogy kimondjam, mivel alapvetően nem értek egyet a tervezés több aspektusával, érdemes egy pillantást vetni a Go-ra. Úgy tűnik, hogy a tervezési kritériumok meglehetősen jól illeszkednek az Ön követelményeihez.
Válasz
Úgy tűnik, hogy az, amit követ, egy “nyelv”, amely mindkettőt absztrakcióval látja el, hogy ne kelljen aggódnia. a benne rejlő bonyolultságokról (azaz nincs szükség a párhuzamosság felépítésére a semmiből), ugyanakkor legyen nagy teljesítményű és erőforrás-gazdaságos. És mivel ez a “System” feladata, képesnek kell lennie arra, hogy közvetlenül összekapcsolja az összes hardvert. olyasmi, ahol a nehéz emelés nagy része már el van rendezve (vagy a nyelv, vagy az elérhető könyvtárak, vagy esetleg mindkettő kifejezésében). Emellett a virtuális gép helyett natív fordítóra lenne szükség.
Ha ez ez az eset, amiben biztosan nem vagyok biztos a „legjobbban”. Számos alternatíva létezik, még az általam ismert kiscsoportok közül is sok. Ha „valóban” el akarsz jutni a „legjobbhoz”, akkor minden előzetes elképzelés nélkül létre kell hoznod az összes nyelv listáját. Ezután kezdj el finomodni kihagyással – azaz menjen át minden követelményen, és hagyja ki (vagy legalább lépjen lejjebb a listán) azokat, ahol a nyelv (vagy eszközei) kevesebb, mint megfelelő a követelményhez.
Az absztrakciós követelmények valószínűleg eltávolítanák a C és a listáról, talán a C ++ új frissítései még mindig futásban tartják.
Valamennyi virtuális gép valószínűleg valamilyen szempontból meghibásodik (ne feledje, de feltétlenül szükség van valamire, legalább egy részének natívá történő átalakítását / átalakítását). Tehát azok a Java / PVM / DotNet / stb. valószínűleg a nyelvcsalád is elhagyható.
A hardveres linkek jó néhányat eltávolíthatnak, bár vegye figyelembe, hogy nem lehetetlen egynél több nyelvet (vagy nyelvcsaládot) használni a megkerüléshez Pl. még lehetetlen is használni a C-t a teljes rendszerfeladat-halomba – az összes rendszer legalább néhány indítórészét összeállításban írják, majd ezen felül sok rendszert magasabb szinttel írnak a “C” részek. A legtöbb esetben “csak a már elkészítettek felhasználásával és / vagy hozzáadásával lehet jobban megfelelni azoknak a helyeknek, ahol beilleszkednek. Tehát valószínűleg (ugyanebben az értelemben) beszerezhet egy könyvtárat /” plugint ” amely lehetővé teszi, hogy bármely nyelv közvetlenül befolyásolja a hardvert. Az, hogy ez eltávolítja-e az olyan dolgokat, mint a teljesítmény vagy az erőforrás-megtakarítás, más kérdés, amely tesztelésre és alternatív kombinációs gondolkodásra szorul (pl. Készít-e atomlemez-hozzáférési rutint C-ben, amelyet Lisp-ben egy színész “szálból” hívnak, és esetleg felmerülhet-e rezsi minden atomhívás a saját erőforrásait használja, és a teljesítmény valószínűleg elvész a CFFI hívások miatt.
És akkor a fehér elefánt (és a C fő oka, hogy ilyen mindenütt jelen van) a példa: Sokkal nehezebb kipróbálni valamit valamilyen más nyelven, ahol a mintákat nehéz megtalálni vagy akár nem is létezik. Mindig rendkívül nehéz elsőként megtenni, ahelyett, hogy csak ugyanazt csinálnád, csak “az utadat”.
Ha ezen az úton halad, valószínűleg nagyon gyorsan nem szüntetné meg a hatalmas nyelvek nagy darabjait. A legidőigényesebb lépés azonban az lenne, ha megvizsgálnánk az egyes nyelveket, hogy megtudjuk, hogyan viszonyulnak másokhoz az egyes követelmények tekintetében. Ezért a legtöbb nem zavarná és csak ragaszkodjon valamihez a C-hez, bár (hosszú távon) ez azt jelentheti, hogy gyorsabban képesek lennének valami “jobbat” elkészíteni.