Փորձելով փոխարինել հարգարժան, բայց դանդաղ C++-ին, Google-ի հետազոտողները ներկայացրել են բոլորովին նոր «փորձարարական» բաց կոդով ծրագրավորման լեզու, որը կոչվում է Carbon:
Carbon-ը կարող է ծառայել որպես C++-ի իրավահաջորդ լեզու, որը մշակողների համար պարզ մեկնարկային կետ է ապահովում ավելի նոր լեզվի համար, որն անդրադառնում է զարգացման ժամանակակից հայեցակարգերին, ինչպիսիք են հիշողության անվտանգությունը և ընդհանուրը:
Սա նման կլինի այն բանին, թե ինչպես Microsoft-ը կառուցեց Typescript-ը՝ JavaScript-ը և Kotlin-ը թարմացնելու համար՝ Java-ում թույլ կողմերը ուժեղացնելու համար:
Google-ը տարիների ընթացքում մշակել է մի շարք ծրագրավորման լեզուներ, որոնցից մի քանիսը զգալի համբավ և հայտնիություն են ձեռք բերել:
Օրինակ, Golang-ը (կամ պարզապես Go) ստեղծվել է սերվերների և բաշխված համակարգերի ստեղծումը հեշտացնելու համար և այնուհետև ընդունվել է լայն հանրության կողմից:
Նետը ծրագրավորման լեզու, որը ստեղծվել է որպես JavaScript-ի փոխարինող, հայտնի դարձավ մինչև Flutter-ի գործարկումը:
Google-ի աշխատակից Չենդլեր Քարութը ներկայացրել է իր գաղափարը նոր ծրագրավորման լեզվի մասին, որը կոչվում է Carbon, 19 թվականի հուլիսի 2022-ին Տորոնտոյում Cpp North համաժողովում: ըստ Conor Hoekstra-ի, ովքեր ներկա էին և ձայնագրեցին սլայդները։
Սցենարը կարգավորելու համար Քարութը ցույց տվեց, թե ինչպես են մեր օրերի ծրագրավորման ամենասիրված լեզուներից մի քանիսը ժառանգներ ունեցել, որոնք ծրագրավորողներին հնարավորություն են տալիս արագորեն արդյունավետ լինել և նաև օգտվել ժամանակակից լեզուների դիզայնից:
Սկսենք Carbon ծրագրավորման լեզվի ընդհանուր ներածությունից, ներառյալ դրա առանձնահատկությունները, Google-ի կողմից դրա հայտնագործման նպատակը և այլն:
Ներածություն Carbon ծրագրավորման լեզվին
19 թվականի հուլիսի 2022-ին Google-ը բացահայտեց Carbon-ը՝ որպես իր ստեղծած նորագույն ծրագրավորման լեզու: Այն նախատեսված էր փորձնականորեն փոխարինել C++-ին։
Շնորհիվ a ջեներիկայի համակարգ, որը վերացնում է յուրաքանչյուր օրինակի համար կոդի կրկնակի ստուգման անհրաժեշտությունը, Carbon-ը կկառուցվի ժամանակակից ծրագրավորման հայեցակարգերի հիման վրա:
Մինչեւ տարեվերջ նախագծով նախատեսվում է տրամադրել հիմնական գործառնական տարբերակը (տարբերակ 0.1):
Հիշողության ամբողջականությունը կարևոր տարր է, որը բացակայում է C++-ից: Անվտանգության թերությունների առաջնային աղբյուրներից մեկը հիշողության հասանելիության խնդիրներն են:
Դինամիկ սահմանների ստուգումների զարգացումը, չնախապատրաստված վիճակների ավելի մեծ հետևումը և վրիպազերծման հիմնավոր կառուցման ռեժիմը բոլորն են Carbon թիմի նպատակները: Ստեղծողները մտադիր են ժամանակի ընթացքում ստեղծել անվտանգ Carbon ենթաբազմություն:
Այնուամենայնիվ, հետևյալն են նոր ծրագրավորման լեզվի որոշ կարևոր առանձնահատկություններ.
- Տեսակները անվանելու համար օգտագործեք արտահայտություններ:
- Ուժեղ ջեներիկներ՝ սահմանման ստուգումներով
- Տեսակները հատուկ իրականացնում են միջերեսներ
- ներածական արտահայտություններ և հիմնական քերականություն
- Ցուցիչները թույլ են տալիս անսահմանափակ մուտք և մուտացիա:
- Ֆունկցիայի մուտքագրման պարամետրերի արժեքները միայն կարդալու են:
- Արմատային անվանատարածքը փաթեթն է:
- API-ները կարող են ներմուծվել՝ օգտագործելով իրենց փաթեթի անվանումները:
- Մեթոդը հայտարարվում է բացահայտ օբյեկտի պարամետրի միջոցով:
- Դասերը լռելյայն վերջնական են. կա միայն մեկ ժառանգություն
Ածխածնի առանձնահատկությունները
Ժամանակակից և զարգացող
- Carbon տարբերակների միջև թարմացումները պարզ են և գործիքային:
- Ուժեղ լեզվական հիմքեր, հատկապես, եթե դուք օգտագործել եք C++, և հեշտ է սովորել
- Ավելի անվտանգ հիմքեր և քայլ առ քայլ մոտեցում հիշողության համար անվտանգ ենթաբազմությանը
Ողջունելով բաց կոդով համայնքին
- Համայնք, որը ձգտում է լինել ջերմ, ընդունելի և հրավիրող
- Նրա նպատակներն ու առաջնահերթությունները հստակ և ուժեղ կառավարումն են
- Ամբողջական ռազմավարություն՝ կոմպիլյատորով, գրադարաններով, փաստաթղթերով, գործիքներով, փաթեթների կառավարմամբ և այլն
Արագ և համատեղելի C++-ի հետ
- Աշխատեք հետ միասին C ++ ծածկագիր դուք արդեն ունեք, ներառյալ ժառանգությունը և կաղապարները
- LLVM-ով, C++-ի հետ համեմատելի կատարողականություն և բիթերի և հասցեների ցածր մակարդակի հասանելիություն
- Կառուցումներ, որոնք արագ և մասշտաբային են և համատեղելի ձեր գոյություն ունեցող C++ build համակարգերի հետ
Ինչու՞ Google-ը ստեղծեց Carbon ծրագրավորման լեզուն:
Արդյունավետության համար կարևոր ծրագրակազմը շարունակում է հիմնականում գրվել C++-ով, որն ունի հսկայական և ընդլայնվող կոդերի բազաներ և ներդրումներ:
Այնուամենայնիվ, այն դժվարանում է առաջխաղացնել և բավարարել ծրագրավորողների պահանջները, ինչպես նշվեց վերևում, հիմնականում պայմանավորված տարիների տեխնոլոգիական պարտքի կուտակմամբ:
Չափազանց դժվար է աստիճանաբար բարելավել C++-ը, քանի որ այն կուտակվել է տեխնիկական պարտքի, ինչպես նաև դրա էվոլյուցիայի գործընթացի հետ կապված դժվարությունների պատճառով:
Այս խնդիրների լուծման իդեալական մոտեցումն այն է, որ սկսենք ուժեղ լեզվական հիմքից, ինչպիսին է ժամանակակից ընդհանուր համակարգից, մոդուլային կոդի կառուցվածքից և հետևողական, պարզ շարահյուսությունից, այլ ոչ թե ուղղակիորեն ժառանգել C կամ C++ ավանդույթը:
Go, Swift, Kotlin, Rust և շատ այլ ժամանակակից լեզուներ արդեն առաջարկում են զարգացման ակնառու փորձ: Մշակողները, ովքեր ի վիճակի են օգտագործել այս ընթացիկ լեզուներից մեկը, պետք է:
Ցավոք սրտի, C++-ի ընդունումը և միգրացիան խստորեն խոչընդոտվում են այս լեզուների ձևավորումների պատճառով: Այս խոչընդոտները ներառում են կատարողականի վերին ծախսեր և ծրագրաշարի բառապաշարի փոփոխություններ:
Ածխածինը C++ աստիճանական բարելավման փորձ չէ. ավելի շուտ, դա հաջորդող լեզվական ռազմավարություն է: Դրա ուշադրությունը կենտրոնացած է C++ փոխգործունակության վրա, ինչպես նաև համատարած ընդունման և միգրացիայի վրա ծրագրավորողների և կոդերի բազաների համար, որոնք ներկայումս օգտագործում են C++:
C++ փոխարինող լեզուն պետք է ունենա՝
- C++-ի հետ համեմատելի կատարողականությունը ծրագրավորողների համար կարևոր հատկանիշ է:
- Կառավարելի ուսուցման կոր և ծանոթության մակարդակ C++ ծրագրավորողների համար
- Միգրացիա, որը մասշտաբային է և ներառում է աղբյուրից-աղբյուր իդիոմատիկ C++ կոդերի թարգմանություն:
- Նմանատիպ արտահայտիչություն և աջակցություն ընթացիկ ծրագրաշարի ճարտարապետության և դիզայնի համար:
- Համատեղելիություն C++-ի հետ, որն անխափան է և երկկողմանի, որը թույլ է տալիս ցանկացած գրադարան ընդունել Carbon-ը՝ առանց մնացած փաթեթը տեղափոխելու:
Այս ռազմավարությամբ Google-ը ավելացնում է էկոհամակարգը, որն արդեն գոյություն ունի C++-ի համար և ներառում է ընթացիկ ներդրումներ, կոդերի բազաներ և զարգացման համայնքներ:
Մի քանի լեզու որդեգրել են այս մոտեցումը տարբեր էկոհամակարգերի համար, և Carbon-ը փորձում է C++-ի նման գործառույթ կատարել հետևյալ իրավիճակներում.
- Java – Կոտլին
- JavaScript – TypeScript
- C++ - ածխածին
C++ VS Carbon Code
Ածխածինը պետք է ունենա ցածր ուսուցման կոր, եթե դուք արդեն C++ ծրագրավորող եք: Այն կազմված է քերականական կոնստրուկցիաների ֆիքսված շարքից, որը պետք է բնական հնչի և լինի պարզ՝ կարդալու և ըմբռնելու համար:
C++ կոդի օրինակ.
Ածխածնի այս ծածկագիրը համապատասխանում է.
Ածխածին ընդդեմ ժանգի
Մեկ այլ ժամանակակից լեզու, որը նախատեսված է հստակորեն բավարարելու հիշողության համար անվտանգ կատարողական հավելվածների պահանջները, կոչվում է Rust:
Ուրեմն ինչու պարզապես չօգտագործել Rust-ը:
Թեև ոմանք պնդում են, որ Rust-ը, որը սկսվել է որպես Mozilla-ի նախագիծ և այնուհետև հասցրել է ունենալ զգալի հանրային հետևորդներ, C++-ի իրավահաջորդն է, Քարութը կասկածում է, որ զուգահեռը դեռ ուժի մեջ է:
Rust-ը, անկասկած, ֆանտաստիկ լեզու է, որով կարելի է սկսել նոր նախագիծ, բայց քանի որ այն չունի Java և Kotlin-ի նման լեզուների «երկկողմանի փոխգործունակությունը», դժվար է դրան աստիճանաբար անցնելը:
Քարութը դասախոսություն կարդաց CPP North-ում և խրախուսեց այն մարդկանց, ովքեր արդեն օգտագործում էին Rust-ը, շարունակել դա անել: Մշակողները, որոնք արդեն ունեն C++ կոդերի զգալի բազաներ, որոնք դժվար է փոխարկել Rust-ին, պետք է օգտագործեն Carbon-ը:
Մասնավորապես, Carbon-ն այն է, ինչ Carruth-ը անվանում էր «հաջորդող լեզու», որը կառուցված է գոյություն ունեցող էկոհամակարգի վերևում, այս դեպքում՝ C++:
Այդ նպատակով Carbon-ը պետք է լիովին համատեղելի լինի ներկայիս C++ կոդի հետ, նույնիսկ եթե Rust-ի հետ ունի բազմաթիվ նպատակներ, օրինակ՝ օգնել ծրագրավորողներին «գործողության համար կարևոր հավելվածներ» ստեղծելու գործում:
Բացի այդ, նախատեսվում է հնարավորինս պարզեցնել C++-ից Carbon տեղափոխումը:
Եզրափակում
Վերջապես, Carbon լեզվի ստեղծողները ջանքեր գործադրեցին ուշադրություն դարձնելու ստեղծման գործընթացին: Ծրագրի կոդը հասանելի է հարցման համար և բաց պահվում է Github, և նրա մշակույթը սահմանվում է որպես ներառական և բաց ինչպես մասնավոր քաղաքացիների, այնպես էլ ՏՏ ոլորտի համար:
Carbon թիմը կարծում էր, որ Carbon-ը պետք է լինի ինքնավար նախագիծ, որը ղեկավարվում է համայնքի կողմից, և ոչ միայն Google-ի կողմից սնուցվող նախագիծ՝ ապագայում զարգանալու համար:
Կարութը հավելեց, որ չնայած ՏՏ ոլորտի մի շարք բիզնեսների հետաքրքրությանը, այս հայեցակարգը դեռ փորձնական փուլում է։
Թողնել գրառում