"Зэв бол системийн програмчлалын ирээдүй, Си бол шинэ ассемблер" - Intel-ийн тэргүүлэх инженерүүдийн нэгний хэлсэн үг.

Саяхан болсон Нээлттэй эхийн технологийн дээд хэмжээний уулзалтад (OSTS) Жош ТриплеттIntel-ийн ахлах инженер , түүний компани Rust-ийг ойрын ирээдүйд систем болон доод түвшний хөгжилд ноёрхож байгаа Си хэлтэй "паритет"-д хүрэхийг сонирхож байна гэжээ. Түүний хэлсэн үгэндээ "Intel and Rust: The Future of Systems Programming" гэсэн гарчигтай тэрээр мөн системийн програмчлалын түүх, Си хэл хэрхэн анхдагч системийн програмчлалын хэл болсон, Rust-ийн ямар онцлог шинж чанарууд нь Си хэлнээс илүү давуу талтай болох, хэрхэн бүрэн гүйцэд хийж болох талаар ярьсан. програмчлалын энэ талбарт С-г орлуулах.

"Зэв бол системийн програмчлалын ирээдүй, Си бол шинэ ассемблер" - Intel-ийн тэргүүлэх инженерүүдийн нэгний хэлсэн үг.

Системийн програмчлал гэдэг нь хэрэглээний програмуудыг бий болгох платформ болж, процессор, RAM, оролт/гаралтын төхөөрөмж, сүлжээний төхөөрөмжтэй харилцан үйлчлэлцэх боломжийг олгодог програм хангамжийг боловсруулах, удирдах явдал юм. Системийн програм хангамж нь техник хангамж өөрөө хэрхэн ажилладаг талаар нарийн ширийн зүйлийг судлахгүйгээр хэрэглээний програм хангамжийг бий болгоход туслах интерфейс хэлбэрээр тусгай хийсвэрлэлийг бий болгодог.

Триплетт өөрөө системийн програмчлалыг "програм биш бүх зүйл" гэж тодорхойлдог. Үүнд BIOS, програм хангамж, ачаалагч болон үйлдлийн системийн цөм, төрөл бүрийн суулгагдсан доод түвшний код, виртуал машины хэрэгжилт зэрэг зүйлс орно. Сонирхолтой нь, вэб хөтөч нь аль эрт "зөвхөн программ" биш, бие даасан "вэб сайт болон вэб програмын платформ" болсон тул вэб хөтөч нь системийн програм хангамж гэж Триплетт үзэж байна.

Өмнө нь BIOS, ачаалагч, програм хангамж зэрэг ихэнх системийн программуудыг ассемблер хэлээр бичдэг байсан. 1960-аад онд туршилтууд өндөр түвшний хэлнүүдэд техник хангамжийн дэмжлэг үзүүлж эхэлсэн нь PL/S, BLISS, BCPL, ALGOL 68 зэрэг хэлүүдийг бүтээхэд хүргэсэн.

Дараа нь 1970-аад онд Деннис Ричи Unix үйлдлийн системд зориулсан Си програмчлалын хэлийг бүтээжээ. Бичлэгийн дэмжлэггүй В програмчлалын хэлээр бүтээгдсэн C нь үйлдлийн систем болон драйверуудыг бичихэд хамгийн тохиромжтой өндөр түвшний хүчирхэг функцээр дүүрэн байв. UNIX-ийн хэд хэдэн бүрэлдэхүүн хэсэг, түүний дотор цөм нь С хэл дээр дахин бичигдсэн. Дараа нь Oracle мэдээллийн сан, Windows-ийн эх кодын ихэнх хэсэг, Линукс үйлдлийн систем зэрэг бусад олон системийн программууд мөн Си хэл дээр бичигдсэн.

С энэ чиглэлд асар их дэмжлэг авсан. Гэхдээ хөгжүүлэгчид үүн рүү шилжихэд яг юу нөлөөлсөн бэ? Хөгжүүлэгчдийг нэг програмчлалын хэлнээс нөгөө хэл рүү шилжүүлэхэд түлхэц өгөхийн тулд эхлээд хуучин функцуудыг алдалгүйгээр шинэ боломжуудыг өгөх ёстой гэж Триплетт үзэж байна.

Нэгдүгээрт, хэл нь "боломжийн гайхалтай" шинэ боломжуудыг санал болгох ёстой. "Тэр үүнээс илүү байж чадахгүй. Шилжилтийг хийхэд шаардагдах хүчин чармайлт, инженерийн цагийг зөвтгөх нь илүү дээр байх ёстой "гэж тэр тайлбарлав. Ассемблер хэлтэй харьцуулахад Си хэлэнд санал болгох зүйл их байсан. Энэ нь зарим төрлийн аюулгүй байдлыг дэмжиж, өндөр түвшний бүтэцтэй илүү сайн зөөвөрлөх чадвар, гүйцэтгэлийг хангаж, ерөнхийдөө илүү унших боломжтой кодыг үүсгэсэн.

Хоёрдугаарт, хэл нь хуучин функцуудыг дэмжих ёстой бөгөөд энэ нь Си руу шилжсэн түүхэнд хөгжүүлэгчид энэ нь ассемблер хэлээс дутуугүй функцтэй гэдэгт итгэлтэй байх ёстой гэсэн үг юм. Триплетт тайлбарлахдаа: "Шинэ хэл зүгээр л илүү сайн байж чадахгүй, бас сайн байх ёстой." Си нь илүү хурдан бөгөөд ассемблер хэл ашиглаж болох аливаа өгөгдлийн төрлийг дэмжихээс гадна Триплеттийн нэрлэсэн "зугтах хаалт" буюу ассемблер хэлний кодыг өөртөө оруулахыг дэмждэг байсан.

"Зэв бол системийн програмчлалын ирээдүй, Си бол шинэ ассемблер" - Intel-ийн тэргүүлэх инженерүүдийн нэгний хэлсэн үг.

Триплетт Си хэл одоо олон жилийн өмнө ассемблер хэл болж байна гэж үзэж байна. "С бол шинэ ассемблер" гэж тэр мэдэгдэв. Одоо хөгжүүлэгчид Си хэл дээр хуримтлагдсан, засч залруулах боломжгүй асуудлуудыг шийдэхээс гадна сэтгэл хөдөлгөм шинэ боломжуудыг санал болгох өндөр түвшний шинэ хэл хайж байна. Ийм хэл нь хөгжүүлэгчдийг түүн рүү шилжүүлэхэд хангалттай анхаарал татахуйц байх ёстой, аюулгүй байх ёстой, санах ойн автомат удирдлагатай байх ёстой гэх мэт.

“С-ээс илүү байхыг хүсдэг аливаа хэл нь үнэхээр гайхалтай хувилбар байхыг хүсч байгаа бол зөвхөн буферийн халих хамгаалалтаас илүүг санал болгох ёстой. Хөгжүүлэгчид ашиглах чадвар, гүйцэтгэлийг сонирхож, код бичих нь өөрөө ойлгомжтой бөгөөд цөөн мөрөнд илүү их ажил хийдэг. Аюулгүй байдлын асуудлыг бас анхаарч үзэх хэрэгтэй. Ашиглахад хялбар байдал, гүйцэтгэл нь хамт ажилладаг. Та ямар нэгэн зүйлд хүрэхийн тулд бага код бичих тусам аюулгүй байдалтай холбоотой ч бай, алдаагүй ч гэсэн алдаа гаргах боломж багасна” гэж Триплетт тайлбарлав.

Rust болон C-ийн харьцуулалт

2006 онд Mozilla-ийн ажилтан Грэйдон Хоар "Rust"-ийг хувийн төсөл болгон бичиж эхэлсэн. Мөн 2009 онд Mozilla өөрийн хэрэгцээнд зориулж Rust-ийг хөгжүүлэх ажлыг ивээн тэтгэж эхэлсэн бөгөөд хэлийг цаашид хөгжүүлэхийн тулд багаа өргөжүүлсэн.

Mozilla шинэ хэлийг сонирхож байгаагийн нэг шалтгаан нь Firefox нь 4 сая гаруй мөр C++ кодоор бичигдсэн бөгөөд маш олон чухал сул талуудтай байсан явдал юм. Rust нь аюулгүй байдал, зэрэгцэн оршдог байдлыг харгалзан бүтээгдсэн бөгөөд энэ нь хөтөчийн архитектурыг бүрэн өөрчлөхийн тулд Quantum төслийн хүрээнд Firefox-ын олон бүрэлдэхүүн хэсгүүдийг дахин бичихэд тохиромжтой сонголт болсон. Mozilla нь Rust программыг Servo-г хөгжүүлэхэд ашиглаж байгаа бөгөөд энэ нь эцсийн эцэст одоогийн Firefox-ын дүрслэх хөдөлгүүрийг орлох болно. Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu болон бусад олон компаниуд Rust-ийг төсөлдөө ашиглаж эхэлсэн.

Rust нь Си хэлний хамгийн чухал асуудлуудын нэгийг шийддэг. Энэ нь автомат санах ойн менежментийг санал болгодог тул хөгжүүлэгчид үүнийг програмын объект бүрт гараар хуваарилж, дараа нь чөлөөлөх шаардлагагүй болно. Rust нь орчин үеийн бусад хэлнүүдээс ялгарах зүйл нь санах ойноос ашиглагдаагүй объектуудыг автоматаар устгадаг хог цуглуулагчгүй, мөн Java-д зориулсан Java Runtime Environment гэх мэт үүнийг ажиллуулахад шаардлагатай ажиллах орчны орчин байхгүй байгаа явдал юм. Үүний оронд Rust нь өмчлөх, зээлэх, лавлагаа, амьдралын хугацаа гэсэн ойлголтуудтай. "Rust нь тухайн объект руу дуудлага зарлах системтэй бөгөөд эзэмшигч нь үүнийг ашиглаж байна уу эсвэл зүгээр л зээлж байна уу гэдгийг харуулах системтэй. Хэрэв та объектыг зүгээр л зээлж авбал хөрвүүлэгч үүнийг хянаж, эх хувь нь таны лавлагаатай хэвээр байх болно. Rust нь тухайн объектыг ашиглаж дууссаны дараа шууд санах ойноос устгаж, хөрвүүлэх үед нэмэлт хугацаагүйгээр код руу холбогдох дуудлагыг оруулах болно" гэж Триплетт хэлэв.

Төрөлхийн ажиллах цаг байхгүй байгаа нь Rust-ийн эерэг шинж чанар гэж үзэж болно. Триплетт түүний ажиллаж байгаа хэлийг системийн програмчлалын хэрэгсэл болгон ашиглахад хэцүү гэж үзэж байна. Түүний тайлбарласнаар: "Та ямар нэгэн код дуудахаасаа өмнө энэ ажиллах цагийг эхлүүлэх ёстой. Та функцуудыг дуудахдаа энэ ажиллах цагийг ашиглах ёстой бөгөөд ажиллах хугацаа өөрөө гэнэтийн үед таны ар талд нэмэлт код ажиллуулж болно."

Rust нь аюулгүй зэрэгцээ програмчлалыг хангахыг хичээдэг. Санах ойг аюулгүй болгодог ижил функцууд нь аль утас нь ямар объектыг эзэмшдэг, ямар объектыг хэлхээ хооронд дамжуулж болох, аль нь цоожтой байх зэрэг зүйлсийг хянаж байдаг.

Эдгээр бүх боломжууд Rust-ийг хөгжүүлэгчид системийн програмчлалын шинэ хэрэгсэл болгон сонгоход хангалттай болгодог. Гэсэн хэдий ч зэрэгцээ тооцооллын хувьд Rust C-ээс бага зэрэг хоцорсон хэвээр байна.

Triplett нь Rust-д шаардлагатай функцуудыг нэвтрүүлэхэд чиглэгдсэн тусгай ажлын хэсэг байгуулахаар төлөвлөж байгаа бөгөөд ингэснээр системийн програмчлалын салбарт C-тэй бүрэн тэнцэх, давж, орлуулах боломжтой болно. IN Reddit дээрх утас, хэлсэн үгэндээ зориулж тэрээр "FFI/C Parity бүлэг байгуулагдах шатандаа байгаа бөгөөд хараахан ажлаа эхлээгүй байна" гэж хэлсэн бөгөөд одоогоор тэрээр аливаа асуултад хариулахад бэлэн байгаа бөгөөд ирээдүйд тэрээр яаралтай төлөвлөгөөг нийтлэх болно. бүх сонирхогч талуудад зориулсан түүний санаачилгын нэг хэсэг болгон Зэвийг хөгжүүлэх.

FFI/C Parity групп нь юуны түрүүнд Rust-ийн олон урсгалтай дэмжлэгийг сайжруулах, Intel Xeon Scalable шинэ процессоруудад гарч ирсэн хөвөх цэгийн формат болох BFLOAT16-ийн дэмжлэгийг нэвтрүүлэх, түүнчлэн угсралтыг тогтворжуулахад чиглэнэ гэж таамаглаж болно. код оруулах.



Эх сурвалж: 3dnews.ru

сэтгэгдэл нэмэх