Nesen notikuÅ”ajÄ Open Source Technology Summi (OSTS)
SistÄmas programmÄÅ”ana ir programmatÅ«ras izstrÄde un pÄrvaldÄ«ba, kas kalpo kÄ platforma lietojumprogrammu izveidei, nodroÅ”inot pÄdÄjo mijiedarbÄ«bu ar procesoru, operatÄ«vo atmiÅu, ievades/izvades ierÄ«cÄm un tÄ«kla aprÄ«kojumu. SistÄmas programmatÅ«ra rada Ä«paÅ”u abstrakciju saskarÅu veidÄ, kas palÄ«dz izveidot lietojumprogrammatÅ«ru, neiedziļinoties detaļÄs par to, kÄ pati aparatÅ«ra darbojas.
Pats Triplets sistÄmu programmÄÅ”anu definÄ kÄ "visu, kas nav lietojumprogramma". Tas ietver tÄdas lietas kÄ BIOS, programmaparatÅ«ra, sÄknÄÅ”anas ielÄdÄtÄji un operÄtÄjsistÄmas kodoli, dažÄda veida iegults zema lÄ«meÅa kods un virtuÄlÄs maŔīnas ievieÅ”ana. Interesanti, ka Triplets uzskata, ka tÄ«mekļa pÄrlÅ«kprogramma ir arÄ« sistÄmas programmatÅ«ra, jo pÄrlÅ«kprogramma jau sen ir kļuvusi par vairÄk nekÄ ātikai programmuā, kļūstot par atseviŔķu vietÅu un tÄ«mekļa lietojumprogrammu platformu.
AgrÄk lielÄkÄ daļa sistÄmas programmu, tostarp BIOS, sÄknÄÅ”anas ielÄdes un programmaparatÅ«ra, tika rakstÄ«tas montÄžas valodÄ. SeÅ”desmitajos gados tika uzsÄkti eksperimenti, lai nodroÅ”inÄtu aparatÅ«ras atbalstu augsta lÄ«meÅa valodÄm, kÄ rezultÄtÄ tika izveidotas tÄdas valodas kÄ PL/S, BLISS, BCPL un ALGOL 1960.
Tad 1970. gados Deniss RiÄijs izveidoja C programmÄÅ”anas valodu Unix operÄtÄjsistÄmai. Izveidots B programmÄÅ”anas valodÄ, kurai pat nebija maŔīnrakstÄ«Å”anas atbalsta, C bija piepildÄ«ta ar jaudÄ«gÄm augsta lÄ«meÅa funkcijÄm, kas bija vislabÄk piemÄrotas operÄtÄjsistÄmu un draiveru rakstÄ«Å”anai. VairÄki UNIX komponenti, tostarp tÄ kodols, galu galÄ tika pÄrrakstÄ«ti C valodÄ. PÄc tam daudzas citas sistÄmas programmas, tostarp Oracle datubÄze, liela daļa Windows pirmkoda un operÄtÄjsistÄmas Linux, tika pÄrrakstÄ«tas arÄ« C valodÄ.
C ir saÅÄmis milzÄ«gu atbalstu Å”ajÄ virzienÄ. Bet kas tieÅ”i lika izstrÄdÄtÄjiem pÄriet uz to? Triplets uzskata, ka, lai motivÄtu izstrÄdÄtÄjus pÄriet no vienas programmÄÅ”anas valodas uz citu, pÄdÄjai vispirms ir jÄnodroÅ”ina jaunas iespÄjas, nezaudÄjot vecÄs iespÄjas.
PirmkÄrt, valodai ir jÄpiedÄvÄ "saprÄtÄ«gi iespaidÄ«gas" jaunas funkcijas. "ViÅÅ” nevarÄtu bÅ«t labÄks. Tam ir jÄbÅ«t ievÄrojami labÄkam, lai attaisnotu pÄrejas veikÅ”anai nepiecieÅ”amÄs pÅ«les un inženierijas laiku, āviÅÅ” skaidro. SalÄ«dzinot ar montÄžas valodu, C bija daudz ko piedÄvÄt. Tas atbalstÄ«ja zinÄmÄ mÄrÄ tipam droÅ”u darbÄ«bu, nodroÅ”inÄja labÄku pÄrnesamÄ«bu un veiktspÄju ar augsta lÄ«meÅa konstrukcijÄm un kopumÄ Ä£enerÄja daudz lasÄmÄku kodu.
OtrkÄrt, valodai ir jÄnodroÅ”ina atbalsts vecajÄm funkcijÄm, kas nozÄ«mÄ, ka pÄrejas uz C vÄsturÄ izstrÄdÄtÄjiem bija jÄbÅ«t pÄrliecinÄtiem, ka tÄ ir ne mazÄk funkcionÄla kÄ montÄžas valoda. Triplets skaidro: "Jauna valoda var bÅ«t ne tikai labÄka, bet arÄ« tikpat laba." Papildus tam, ka C ir ÄtrÄks un atbalsta jebkuru datu tipu, ko varÄtu izmantot montÄžas valoda, C bija arÄ« tas, ko Triplets sauca par "aizbÄgÅ”anas lÅ«ku", proti, tas atbalstÄ«ja montÄžas valodas koda ievietoÅ”anu sevÄ«.
Triplets uzskata, ka C tagad kļūst par to, kas bija montÄžas valoda pirms daudziem gadiem. "C ir jaunais montÄtÄjs," viÅÅ” paziÅo. Tagad izstrÄdÄtÄji meklÄ jaunu augsta lÄ«meÅa valodu, kas ne tikai atrisinÄs C uzkrÄjuÅ”Äs problÄmas, kuras vairs nevar novÄrst, bet arÄ« piedÄvÄs aizraujoÅ”as jaunas iespÄjas. Å Ädai valodai ir jÄbÅ«t pietiekami saistoÅ”ai, lai izstrÄdÄtÄji uz to pÄrietu, tai jÄbÅ«t droÅ”ai, jÄnodroÅ”ina automÄtiska atmiÅas pÄrvaldÄ«ba un daudz kas cits.
āJebkurai valodai, kas vÄlas bÅ«t labÄka par C, ir jÄpiedÄvÄ daudz vairÄk nekÄ tikai bufera pÄrpildes aizsardzÄ«ba, ja tÄ patieÅ”Äm vÄlas bÅ«t pÄrliecinoÅ”a alternatÄ«va. IzstrÄdÄtÄjus interesÄ lietojamÄ«ba un veiktspÄja, rakstot kodu, kas ir paÅ”saprotams un veic vairÄk darba mazÄkÄs rindÄs. JÄrisina arÄ« droŔības jautÄjumi. VienkÄrÅ”a lietoÅ”ana un veiktspÄja iet roku rokÄ. Jo mazÄk koda jums ir jÄraksta, lai kaut ko sasniegtu, jo mazÄka iespÄja pieļaut kļūdas neatkarÄ«gi no tÄ, vai tas ir saistÄ«ts ar droŔību vai ne,ā skaidro Triplets.
Rust un C salÄ«dzinÄjums
Jau 2006. gadÄ Greidons HoÄrs, Mozilla darbinieks, sÄka rakstÄ«t Rust kÄ personisku projektu. Un 2009. gadÄ Mozilla sÄka sponsorÄt Rust izstrÄdi savÄm vajadzÄ«bÄm, kÄ arÄ« paplaÅ”inÄja komandu, lai turpinÄtu attÄ«stÄ«t valodu.
Viens no iemesliem, kÄpÄc Mozilla bija ieinteresÄta jaunÄ valodÄ, ir tas, ka Firefox tika rakstÄ«ts vairÄk nekÄ 4 miljonos C++ koda rindiÅu un tajÄ bija diezgan daudz kritisku ievainojamÄ«bu. Rust tika veidots, domÄjot par droŔību un vienlaicÄ«bu, padarot to par ideÄlu izvÄli daudzu Firefox komponentu pÄrrakstÄ«Å”anai Quantum projekta ietvaros, lai pilnÄ«bÄ pÄrveidotu pÄrlÅ«kprogrammas arhitektÅ«ru. Mozilla arÄ« izmanto Rust, lai izstrÄdÄtu Servo, HTML renderÄÅ”anas dzinÄju, kas galu galÄ aizstÄs paÅ”reizÄjo Firefox renderÄÅ”anas dzinÄju. Daudzi citi uzÅÄmumi ir sÄkuÅ”i izmantot Rust saviem projektiem, tostarp Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu un daudzi citi.
RÅ«sa atrisina vienu no svarÄ«gÄkajÄm C valodas problÄmÄm. TÄ piedÄvÄ automÄtisku atmiÅas pÄrvaldÄ«bu, lai izstrÄdÄtÄjiem nebÅ«tu manuÄli jÄpieŔķir un pÄc tam jÄatbrÄ«vo tÄ katram lietojumprogrammas objektam. Rust atŔķiras no citÄm mÅ«sdienu valodÄm ar to, ka tajÄ nav atkritumu savÄcÄja, kas automÄtiski izÅem no atmiÅas neizmantotos objektus, kÄ arÄ« tai nav nepiecieÅ”amÄs izpildlaika vides, piemÄram, Java Runtime Environment for Java. TÄ vietÄ Rust izmanto Ä«paÅ”umtiesÄ«bu, aizÅÄmuma, atsauces un mūža jÄdzienus. āRustÄ ir sistÄma, kÄ deklarÄt izsaukumus uz objektu, lai norÄdÄ«tu, vai Ä«paÅ”nieks to lieto vai tikai aizÅemas. Ja jÅ«s vienkÄrÅ”i aizÅematies objektu, kompilators tam sekos lÄ«dzi un nodroÅ”inÄs, ka oriÄ£inÄls paliek vietÄ, kamÄr vien uz to atsaucaties. Rust arÄ« nodroÅ”inÄs objekta izÅemÅ”anu no atmiÅas, tiklÄ«dz tÄ lietoÅ”ana bÅ«s pabeigta, ievietojot kodÄ atbilstoÅ”u izsaukumu kompilÄÅ”anas laikÄ bez papildu laika,ā stÄsta Triplets.
VietÄjÄ izpildlaika trÅ«kumu var uzskatÄ«t arÄ« par Rust pozitÄ«vo iezÄ«mi. Triplett uzskata, ka valodas, kurÄs tas darbojas, ir grÅ«ti izmantot kÄ sistÄmu programmÄÅ”anas rÄ«kus. KÄ viÅÅ” skaidro: "Jums ir jÄinicializÄ Å”is izpildlaiks, lai varÄtu izsaukt jebkuru kodu, jums ir jÄizmanto Å”is izpildlaiks, lai izsauktu funkcijas, un pats izpildlaiks var palaist papildu kodu aiz muguras neparedzÄtÄs reizÄs."
Rust arÄ« cenÅ”as nodroÅ”inÄt droÅ”u paralÄlo programmÄÅ”anu. TÄs paÅ”as funkcijas, kas nodroÅ”ina atmiÅas droŔību, ļauj izsekot, piemÄram, kuram pavedienam pieder kÄds objekts un kurus objektus var nodot starp pavedieniem un kuriem ir nepiecieÅ”ama bloÄ·ÄÅ”ana.
Visas Ŕīs funkcijas padara Rust pietiekami pÄrliecinoÅ”u, lai izstrÄdÄtÄji to izvÄlÄtos kÄ jaunu sistÄmu programmÄÅ”anas rÄ«ku. TomÄr paralÄlÄs skaitļoÅ”anas ziÅÄ Rust joprojÄm nedaudz atpaliek no C.
Triplett iecerÄjis izveidot Ä«paÅ”u darba grupu, kas koncentrÄsies uz nepiecieÅ”amo funkciju ievieÅ”anu Rust, lai tas pilnÄ«bÄ varÄtu pielÄ«dzinÄties, pÄrspÄt un aizstÄt C sistÄmu programmÄÅ”anas jomÄ. IN
Var pieÅemt, ka FFI/C Parity grupa pirmÄm kÄrtÄm koncentrÄsies uz Rust daudzpavedienu atbalsta uzlaboÅ”anu, BFLOAT16 ā peldoÅ”Ä komata formÄta atbalsta ievieÅ”anu, kas parÄdÄ«jies jaunajos Intel Xeon Scalable procesoros, kÄ arÄ« stabilizÄÅ”anas montÄžu. koda ievietoÅ”ana.
Avots: 3dnews.ru