«Rust-ը համակարգի ծրագրավորման ապագան է, C-ն նոր հավաքողն է»՝ Intel-ի առաջատար ինժեներներից մեկի ելույթը

Վերջերս բաց կոդով տեխնոլոգիաների գագաթնաժողովում (OSTS) Ջոշ ԹրիպլետIntel-ի ավագ ինժեներն ասում է, որ իր ընկերությունը շահագրգռված է, որ Rust-ը հասնի «հավասարության» C լեզվի հետ, որը դեռևս գերիշխում է համակարգերի և ցածր մակարդակի զարգացման մոտ ապագայում: Իր ելույթում «Intel and Rust. Systems Programming-ի ապագան» խորագրի ներքո նա նաև խոսեց համակարգերի ծրագրավորման պատմության մասին, թե ինչպես է C-ն դարձել համակարգերի լռելյայն ծրագրավորման լեզու, Rust-ի որ առանձնահատկություններն են նրան առավելություն տալիս C-ի նկատմամբ և ինչպես կարող է այն ամբողջությամբ: փոխարինել C-ին ծրագրավորման այս ոլորտում:

«Rust-ը համակարգի ծրագրավորման ապագան է, C-ն նոր հավաքողն է»՝ Intel-ի առաջատար ինժեներներից մեկի ելույթը

Համակարգային ծրագրավորումը ծրագրային ապահովման մշակումն ու կառավարումն է, որը ծառայում է որպես կիրառական հավելվածներ ստեղծելու հարթակ՝ ապահովելով վերջիններիս փոխազդեցությունը պրոցեսորի, RAM-ի, մուտքային/ելքային սարքերի և ցանցային սարքավորումների հետ: Համակարգային ծրագրաշարը ստեղծում է հատուկ աբստրակցիա ինտերֆեյսների տեսքով, որոնք օգնում են ստեղծել կիրառական ծրագրակազմ՝ առանց խորանալու այն մանրամասների մեջ, թե ինչպես է աշխատում սարքավորումը:

Ինքը՝ Տրիպլետը, համակարգերի ծրագրավորումը սահմանում է որպես «այն բան, որը հավելված չէ»: Այն ներառում է այնպիսի բաներ, ինչպիսիք են BIOS-ը, որոնվածը, բեռնիչները և օպերացիոն համակարգի միջուկները, տարբեր տեսակի ներկառուցված ցածր մակարդակի կոդեր և վիրտուալ մեքենաների ներդրում: Հետաքրքիր է, որ Triplett-ը կարծում է, որ վեբ զննարկիչը նաև համակարգային ծրագրակազմ է, քանի որ զննարկիչը վաղուց դարձել է ավելին, քան «պարզապես ծրագիր»՝ դառնալով ինքնուրույն «հարթակ կայքերի և վեբ հավելվածների համար»:

Նախկինում համակարգային ծրագրերի մեծ մասը, ներառյալ BIOS-ը, bootloaders-ը և որոնվածը, գրված էին անսամբլի լեզվով: 1960-ական թվականներին փորձերը սկսեցին ապահովել ապարատային աջակցություն բարձր մակարդակի լեզուների համար, ինչը հանգեցրեց այնպիսի լեզուների ստեղծմանը, ինչպիսիք են PL/S, BLISS, BCPL և ALGOL 68:

Հետո, 1970-ականներին, Դենիս Ռիչին ստեղծեց C ծրագրավորման լեզուն Unix օպերացիոն համակարգի համար։ Ստեղծված B ծրագրավորման լեզվով, որը նույնիսկ չուներ մուտքագրման աջակցություն, C-ն լցված էր հզոր բարձր մակարդակի գործառույթներով, որոնք լավագույնս հարմար էին օպերացիոն համակարգեր և դրայվերներ գրելու համար: UNIX-ի մի քանի բաղադրիչներ, ներառյալ նրա միջուկը, ի վերջո վերաշարադրվեցին C-ով: Հետագայում, շատ այլ համակարգային ծրագրեր, ներառյալ Oracle տվյալների բազան, Windows-ի աղբյուրի կոդի մեծ մասը և Linux օպերացիոն համակարգը, նույնպես գրվեցին C-ով:

Գ-ն հսկայական աջակցություն է ստացել այս ուղղությամբ: Բայց կոնկրետ ի՞նչն է ստիպել ծրագրավորողներին անցնել դրան: Թրիպլետը կարծում է, որ ծրագրավորողներին մի ծրագրավորման լեզվից մյուսին անցնելու մոտիվացիայի համար վերջիններս պետք է նախ նոր հնարավորություններ տրամադրեն՝ չկորցնելով հին հնարավորությունները։

Նախ, լեզուն պետք է առաջարկի «ողջամտորեն տպավորիչ» նոր առանձնահատկություններ: «Նա ավելի լավը չէր կարող լինել: Անցում կատարելու համար անհրաժեշտ ջանքերն ու ինժեներական ժամանակը արդարացնելու համար պետք է զգալիորեն ավելի լավ լինի», - բացատրում է նա: Համեմատած անսամբլի լեզվի հետ՝ C-ն առաջարկելու շատ բաներ ուներ: Այն աջակցում էր որոշակիորեն անվտանգ վարքագծին, ապահովում էր ավելի լավ շարժունակություն և կատարում բարձր մակարդակի կառուցվածքներով և ընդհանուր առմամբ ստեղծեց շատ ավելի ընթեռնելի կոդ:

Երկրորդ, լեզուն պետք է ապահովի հին հատկանիշների աջակցությունը, ինչը նշանակում է, որ C-ին անցման պատմության ընթացքում մշակողները պետք է վստահ լինեին, որ այն ոչ պակաս ֆունկցիոնալ է, քան assembly լեզուն: Թրիպլետը բացատրում է. «Նոր լեզուն չի կարող պարզապես ավելի լավը լինել, այն պետք է նաև նույնքան լավը լինի»: Ի հավելումն ավելի արագ լինելու և աջակցելու տվյալների ցանկացած տեսակի, որը կարող էր օգտագործել անսամբլի լեզուն, C-ն նաև ուներ այն, ինչ Triplett-ն անվանում էր «փախուստի ելք», այսինքն՝ այն աջակցում էր իր ներսում անսամբլի լեզվի կոդի տեղադրմանը:

«Rust-ը համակարգի ծրագրավորման ապագան է, C-ն նոր հավաքողն է»՝ Intel-ի առաջատար ինժեներներից մեկի ելույթը

Թրիպլետը կարծում է, որ C-ն այժմ դառնում է այն, ինչ անսամբլի լեզուն էր շատ տարիներ առաջ: «C-ն նոր հավաքողն է», - հայտարարում է նա: Այժմ մշակողները փնտրում են նոր բարձր մակարդակի լեզու, որը ոչ միայն կլուծի C-ում կուտակված խնդիրները, որոնք այլևս հնարավոր չէ շտկել, այլև կառաջարկի հետաքրքիր նոր հնարավորություններ։ Նման լեզուն պետք է բավականաչափ գրավիչ լինի, որպեսզի ծրագրավորողներն անցնեն դրան, պետք է ապահով լինի, ապահովի հիշողության ավտոմատ կառավարում և շատ ավելին:

«Ցանկացած լեզու, որը ցանկանում է ավելի լավը լինել, քան C-ն, պետք է շատ ավելին առաջարկի, քան պարզապես բուֆերային գերհոսքից պաշտպանություն, եթե այն իսկապես ցանկանում է լինել համոզիչ այլընտրանք: Մշակողները հետաքրքրված են օգտագործելիությամբ և կատարողականությամբ, գրելով կոդ, որն ինքնըստինքյան է և ավելի շատ աշխատանք է կատարում ավելի քիչ տողերում: Անվտանգության հարցերը նույնպես պետք է լուծվեն: Օգտագործման հեշտությունն ու կատարումը ձեռք ձեռքի տված են: Ինչքան քիչ կոդ պետք է գրեք ինչ-որ բանի հասնելու համար, այնքան քիչ հնարավորություն կունենաք սխալներ թույլ տալու՝ անվտանգության հետ կապված, թե ոչ»,- բացատրում է Թրիպլետը:

Rust-ի և C-ի համեմատությունը

Դեռ 2006 թվականին Mozilla-ի աշխատակից Գրեյդոն Հոարը սկսեց գրել Rust-ը որպես անձնական նախագիծ։ Իսկ 2009-ին Mozilla-ն սկսեց հովանավորել Rust-ի մշակումը սեփական կարիքների համար, ինչպես նաև ընդլայնեց թիմը՝ լեզուն ավելի զարգացնելու համար:

Mozilla-ի նոր լեզվով հետաքրքրված պատճառներից մեկն այն է, որ Firefox-ը գրված էր ավելի քան 4 միլիոն տող C++ կոդով և ուներ բավականին շատ կարևոր խոցելիություններ: Rust-ը կառուցվել է անվտանգության և միաժամանակության նկատառումներով, ինչը այն դարձնում է իդեալական ընտրություն Firefox-ի շատ բաղադրիչներ վերաշարադրելու համար՝ որպես Quantum նախագծի մաս՝ զննարկիչի ճարտարապետությունն ամբողջությամբ վերափոխելու համար: Mozilla-ն նաև օգտագործում է Rust-ը Servo-ի մշակման համար՝ HTML-ի մատուցման շարժիչ, որն ի վերջո կփոխարինի ներկայիս Firefox-ի մատուցման շարժիչին: Շատ այլ ընկերություններ սկսել են օգտագործել Rust-ը իրենց նախագծերի համար, այդ թվում՝ Microsoft-ը, Google-ը, Facebook-ը, Amazon-ը, Dropbox-ը, Fastly-ն, Chef-ը, Baidu-ն և շատ ավելին:

Rust-ը լուծում է C լեզվի ամենակարևոր խնդիրներից մեկը: Այն առաջարկում է հիշողության ավտոմատ կառավարում, որպեսզի մշակողները ստիպված չլինեն ձեռքով տեղաբաշխել և ազատել այն հավելվածի յուրաքանչյուր օբյեկտի համար: Rust-ին տարբերվող այլ ժամանակակից լեզուներից այն է, որ այն չունի աղբահանող սարք, որն ավտոմատ կերպով հեռացնում է չօգտագործված առարկաները հիշողությունից, ինչպես նաև այն գործելու համար պահանջվող գործարկման միջավայրը, ինչպես Java Runtime Environment-ը Java-ի համար: Փոխարենը, Ռաստը ունի սեփականության, փոխառության, հղումների և կյանքի տևողության հասկացությունները: «Rust-ն ունի օբյեկտի զանգեր հայտարարելու համակարգ, որը ցույց է տալիս, թե սեփականատերն օգտագործում է այն, թե պարզապես փոխառում է այն: Եթե ​​դուք պարզապես վերցնում եք օբյեկտ, ապա կոմպիլյատորը կհետևի դրան և կապահովի, որ բնօրինակը մնա տեղում այնքան ժամանակ, քանի դեռ դուք հղում եք անում դրան: Rust-ը նաև կապահովի, որ օբյեկտը կհեռացվի հիշողությունից, հենց որ դրա օգտագործումն ավարտվի՝ կոմպիլյացիայի ժամանակ կոդում համապատասխան զանգ մտցնելով առանց լրացուցիչ ժամանակի»,- ասում է Թրիպլետը:

«Native runtime»-ի բացակայությունը նույնպես կարելի է համարել Rust-ի դրական հատկանիշ: Տրիպլետը կարծում է, որ այն լեզուները, որոնց վրա աշխատում է, դժվար է օգտագործել որպես համակարգերի ծրագրավորման գործիքներ: Ինչպես նա բացատրում է. «Դուք պետք է նախաստորագրեք այս գործարկման ժամանակը, նախքան որևէ կոդ կանչեք, դուք պետք է օգտագործեք այս գործարկման ժամանակը գործառույթներ կանչելու համար, և գործարկման ժամանակը ինքնին կարող է անսպասելի ժամանակ գործարկել լրացուցիչ կոդ ձեր հետևում»:

Rust-ը նույնպես ձգտում է ապահովել անվտանգ զուգահեռ ծրագրավորում: Նույն հատկանիշները, որոնք ապահովում են հիշողությունը անվտանգ, հետևում են այնպիսի բաների, ինչպիսիք են, թե որ առարկան է պատկանում, և որ առարկաները կարող են փոխանցվել թելերի միջև, և որոնք կողպման կարիք ունեն:

Այս բոլոր հատկանիշները Rust-ին բավականաչափ գրավիչ են դարձնում մշակողների համար՝ այն ընտրելու որպես համակարգերի ծրագրավորման նոր գործիք: Այնուամենայնիվ, զուգահեռ հաշվարկների առումով Rust-ը դեռ մի փոքր զիջում է C-ին:

Triplett-ը մտադիր է ստեղծել հատուկ աշխատանքային խումբ, որը կկենտրոնանա Rust-ում անհրաժեշտ հատկանիշների ներդրման վրա, որպեսզի այն կարողանա լիովին հավասարվել, գերազանցել և փոխարինել C-ին համակարգերի ծրագրավորման ոլորտում: IN թեմա Reddit-ում, նվիրված իր ելույթին, նա ասաց, որ «FFI/C Parity խումբը ստեղծման փուլում է և դեռ չի սկսել աշխատանքը», առայժմ պատրաստ է պատասխանել ցանկացած հարցի, իսկ ապագայում անպայման կհրապարակի անմիջական ծրագրերը։ Ռաստի զարգացման համար՝ որպես իր նախաձեռնության մի մաս բոլոր շահագրգիռ կողմերի համար:

Կարելի է ենթադրել, որ FFI/C Parity խումբն առաջին հերթին կկենտրոնանա Rust-ում բազմաշերտ աջակցության բարելավման վրա, ներդնելով աջակցություն BFLOAT16-ի համար, լողացող կետի ձևաչափ, որը հայտնվել է նոր Intel Xeon Scalable պրոցեսորներում, ինչպես նաև կայունացնելով հավաքը: կոդի ներդիրներ:



Source: 3dnews.ru

Добавить комментарий