Sa pagsisikap na palitan ang kagalang-galang ngunit matamlay na C++, ipinakilala ng mga mananaliksik ng Google ang isang bagong "pang-eksperimentong" open source na programming language na tinatawag na Carbon.
Maaaring magsilbi ang Carbon bilang isang kahalili na wika sa C++, isa na nagbibigay ng isang simpleng panimulang punto para sa mga developer sa isang mas bagong wika na tumutugon sa mga kontemporaryong konsepto ng pag-unlad tulad ng kaligtasan ng memorya at mga generic.
Ito ay magiging katulad ng kung paano binuo ng Microsoft ang Typescript upang i-update ang JavaScript at Kotlin upang palakasin ang mga kahinaan sa Java.
Nakabuo ang Google ng ilang mga programming language sa buong taon, ang ilan sa mga ito ay nakakuha ng makabuluhang katanyagan at katanyagan.
Halimbawa, ang Golang (o Go lang) ay binuo upang mapadali ang paglikha ng mga server at distributed system at pagkatapos ay tinanggap ng pangkalahatang publiko.
Ang Dart programming language, na ginawa bilang kapalit ng JavaScript, ay hindi naging kilala hanggang sa paglunsad ng Flutter.
Si Chandler Carruth, isang empleyado ng Google, ay nagpakita ng kanyang ideya para sa isang bagong programming language na tinatawag na Carbon noong Hulyo 19, 2022, sa Cpp North convention sa Toronto, ayon kay Conor Hoekstra, na dumalo at nagrekord ng mga slide.
Upang maitakda ang senaryo, ipinakita ni Carruth kung paano nagkaroon ng mga inapo ang ilan sa mga pinakagustong programming language sa kasalukuyan na nagbibigay-daan sa mga developer na mabilis na maging produktibo at makinabang din mula sa kontemporaryong disenyo ng wika.
Magsimula tayo sa isang pangkalahatang pagpapakilala ng Carbon programming language, kasama ang mga feature nito, ang layunin ng pag-imbento nito ng Google, at higit pa.
Panimula sa Carbon Programming language
Noong Hulyo 19, 2022, inihayag ng Google ang Carbon bilang ang pinakabagong programming language na nilikha nito. Ito ay inilaan upang palitan ang C++ sa eksperimentong paraan.
Salamat sa isang sistema ng generics, na nag-aalis ng pangangailangan na i-double check ang code para sa bawat instantiation, ang Carbon ay itatayo sa pundasyon ng mga modernong konsepto ng programming.
Sa pagtatapos ng taon, plano ng disenyo na magbigay ng pangunahing bersyon ng pagpapatakbo (bersyon 0.1).
Ang integridad ng memorya ay isang mahalagang elemento na nawawala ang C++. Ang isa sa mga pangunahing pinagmumulan ng mga bahid sa seguridad ay ang mga isyu sa pag-access sa memorya.
Ang pagbuo ng mga dynamic na bounds checks, higit na pagsubaybay sa mga hindi nasimulang estado, at isang masusing default na debug build mode ay lahat ng layunin ng Carbon team. Nilalayon ng mga creator na lumikha ng secure na Carbon subset sa paglipas ng panahon.
Gayunpaman, ang mga sumusunod ay ilang mahahalagang katangian ng bagong programming language:
- Upang pangalanan ang mga uri, gumamit ng mga expression.
- Malakas na generic na may mga pagsusuri sa kahulugan
- Ang mga uri ay partikular na nagsasagawa ng mga interface
- mga parirala sa panimula at pangunahing gramatika
- Nagbibigay-daan ang mga pointer para sa walang limitasyong pag-access at mutation.
- Ang mga value para sa mga parameter ng pag-input ng function ay read-only.
- Ang root namespace ay ang package.
- Maaaring ma-import ang mga API gamit ang kanilang mga pangalan ng package.
- Ang isang paraan ay ipinahayag sa pamamagitan ng isang tahasang object parameter.
- Ang mga klase ay pinal bilang default; iisa lang ang mana
Mga Tampok ng Carbon
Moderno at umuunlad
- Ang mga upgrade sa pagitan ng mga bersyon ng Carbon ay simple at nakabatay sa tool.
- Malakas na batayan ng wika, lalo na kung gumamit ka ng C++, at simpleng matutunan
- Mas ligtas na mga pundasyon at isang hakbang-hakbang na diskarte sa isang subset na ligtas sa memorya
Pagtanggap sa komunidad ng open source
- Isang komunidad na nagsusumikap na maging mainit, pagtanggap, at kaakit-akit
- Ang mga layunin at priyoridad nito ay naiiba at malakas na pamamahala
- Isang all-in-one na diskarte na may compiler, mga aklatan, dokumentasyon, mga tool, pamamahala ng package, at higit pa
Mabilis at tugma sa C++
- Magtrabaho kasama ang C ++ code mayroon ka na, kasama ang inheritance at mga template
- Sa LLVM, maihahambing ang pagganap sa C++ at mababang antas ng access sa mga bit at address
- Mga build na mabilis at nasusukat at tugma sa iyong umiiral nang C++ build system
Bakit binuo ng Google ang Carbon programming language?
Ang software na kritikal sa pagganap ay patuloy na karamihan ay nakasulat sa C++, na mayroong napakalaki at lumalawak na mga codebase at pamumuhunan.
Gayunpaman, nagkakaroon ito ng problema sa pagsulong at pagtugon sa mga hinihingi ng mga developer tulad ng nabanggit sa itaas, higit sa lahat ay dahil sa pag-iipon ng mga taon na halaga ng teknolohikal na utang.
Napakahirap na unti-unting pagbutihin ang C++ dahil sa teknikal na utang na naipon nito pati na rin ang mga paghihirap sa proseso ng ebolusyon nito.
Ang perpektong diskarte sa paglutas ng mga isyung ito ay magsimula sa isang matibay na pundasyon ng wika, tulad ng isang kontemporaryong generics system, modular code structure, at pare-pareho, diretsong syntax, sa halip na direktang magmana ng tradisyon ng C o C++.
Ang Go, Swift, Kotlin, Rust, at marami pang iba pang mga kontemporaryong wika ay nag-aalok na ng pambihirang karanasan sa pag-unlad. Dapat gamitin ng mga developer na may kakayahang gumamit ng isa sa mga kasalukuyang wikang ito.
Sa kasamaang-palad, ang pag-aampon at paglipat mula sa C++ ay lubhang nahahadlangan ng mga disenyo ng mga wikang ito. Kasama sa mga hadlang na ito ang overhead ng pagganap at mga pagbabago sa idiomatic na disenyo ng software.
Ang carbon ay hindi isang pagtatangka na unti-unting pagbutihin ang C++; sa halip, ito ay isang kahalili na diskarte sa wika. Ang focus nito ay sa C++ interoperability, pati na rin ang malawakang pagtanggap at paglipat para sa mga developer at codebase na kasalukuyang gumagamit ng C++.
Ang isang kapalit na wika ng C++ ay dapat mayroong:
- Ang pagganap na maihahambing sa C++ ay isang mahalagang katangian para sa mga developer.
- Isang napapamahalaang curve ng pag-aaral at antas ng pagiging pamilyar para sa mga programmer ng C++
- Migration na nasusukat at may kasamang ilang source-to-source idiomatic C++ na pagsasalin ng code.
- Katulad na pagpapahayag at suporta para sa arkitektura at disenyo ng kasalukuyang software.
- Interoperability sa C++ na seamless at bidirectional, na nagpapahintulot sa anumang library na gamitin ang Carbon nang hindi kinakailangang i-port ang natitirang bahagi ng stack.
Sa diskarteng ito, idinaragdag ng Google ang ecosystem na mayroon na para sa C++ at isinasama ang mga kasalukuyang pamumuhunan, codebase, at development na komunidad.
Ang ilang mga wika ay nagpatibay ng diskarteng ito para sa iba't ibang ecosystem, at ang Carbon ay naglalayong gumanap ng katulad na function sa C++ sa mga sitwasyong ito:
- Java – Kotlin
- JavaScript – TypeScript
- C++ – Carbon
C++ VS Carbon Code
Ang Carbon ay dapat magkaroon ng mababang curve sa pag-aaral kung isa ka nang developer ng C++. Binubuo ito ng isang nakapirming hanay ng mga konstruksyon ng gramatika na nararapat na natural at madaling basahin at unawain.
Isang halimbawa ng C++ code:
Ang Carbon code na ito ay tumutugma sa:
Carbon vs Rust
Ang isa pang kontemporaryong wika na malinaw na idinisenyo upang matugunan ang mga kinakailangan ng memory-safe na mga application sa pagganap ay tinatawag na Rust.
Kaya bakit hindi na lang gamitin ang Rust?
Bagama't ang ilan ay nangangatuwiran na ang Rust, na nagsimula bilang isang proyekto ng Mozilla at kasunod na lumaki upang magkaroon ng malaking pampublikong tagasunod, ay isang kahalili sa C++, nagdududa si Carruth kung ang parallel ay wasto pa rin.
Walang alinlangan na ang Rust ay isang kamangha-manghang wika upang magsimula ng isang bagong proyekto, ngunit dahil kulang ito sa "bidirectional interoperability" ng mga wika tulad ng Java at Kotlin, mahirap itong unti-unting lumipat dito.
Nagbigay ng lecture si Carruth sa CPP North at hinikayat ang mga taong gumagamit na ng Rust na patuloy na gawin ito. Dapat gumamit ng Carbon ang mga developer na mayroon nang malalaking C++ codebase na mahirap i-convert sa Rust.
Sa partikular, ang Carbon ay ang tinutukoy ni Carruth bilang isang "successor language," na itinayo sa ibabaw ng isang umiiral na ecosystem, sa pagkakataong ito C++.
Para sa layuning iyon, ang Carbon ay nilalayong maging ganap na tugma sa kasalukuyang C++ code, kahit na marami itong layunin sa Rust, tulad ng pagtulong sa mga programmer sa paglikha ng "mga application na kritikal sa pagganap."
Bilang karagdagan, nilayon nitong gawing simple hangga't maaari ang paglipat mula sa C++ patungo sa Carbon.
Konklusyon
Sa wakas, nagsikap ang mga tagalikha ng wikang Carbon na bigyang-pansin ang proseso ng paglikha. Ang code ng proyekto ay magagamit para sa kahilingan at bukas na nakaimbak sa Github, at ang kultura nito ay tinukoy bilang inklusibo at bukas sa parehong mga pribadong mamamayan at sa sektor ng IT.
Naisip ng koponan ng Carbon na ang Carbon ay kailangang maging isang autonomous na proyekto na hinihimok ng komunidad at hindi lamang isang proyekto na pinalakas ng Google upang umunlad sa hinaharap.
Idinagdag ni Caruth na sa kabila ng interes mula sa ilang mga negosyo sa IT, ang konseptong ito ay nasa pang-eksperimentong yugto pa rin.
Mag-iwan ng Sagot