პატივცემული, მაგრამ დუნე C++-ის ჩანაცვლების მიზნით, Google-ის მკვლევარებმა წარმოადგინეს სრულიად ახალი „ექსპერიმენტული“ ღია კოდის პროგრამირების ენა სახელწოდებით Carbon.
Carbon შეიძლება იყოს C++-ის მემკვიდრე ენა, რომელიც უზრუნველყოფს დეველოპერებისთვის მარტივ საწყის წერტილს უფრო ახალ ენაზე, რომელიც მიმართავს განვითარების თანამედროვე კონცეფციებს, როგორიცაა მეხსიერების უსაფრთხოება და გენერიკა.
ეს იქნება მსგავსი, როგორ ააშენა Microsoft-მა Typescript JavaScript-ისა და Kotlin-ის განახლებისთვის Java-ში სისუსტეების გასაძლიერებლად.
Google-მა წლების განმავლობაში შეიმუშავა პროგრამირების მრავალი ენა, რომელთაგან ზოგიერთმა მნიშვნელოვანი პოპულარობა და პოპულარობა მოიპოვა.
მაგალითად, Golang (ან უბრალოდ Go) შეიქმნა იმისათვის, რომ ხელი შეუწყოს სერვერების და განაწილებული სისტემების შექმნას და შემდგომში იქნა მიღებული ფართო საზოგადოების მიერ.
ისარი პროგრამირების ენა, რომელიც შეიქმნა JavaScript-ის შემცვლელად, ცნობილი არ გახდა Flutter-ის გაშვებამდე.
ჩენდლერ კარუტმა, Google-ის თანამშრომელმა, წარმოადგინა თავისი იდეა ახალი პროგრამირების ენის შესახებ, სახელწოდებით Carbon, 19 წლის 2022 ივლისს, Cpp North კონვენციაზე ტორონტოში. კონორ ჰოექსტრას მიხედვით, რომლებიც დაესწრნენ და ჩაწერეს სლაიდები.
სცენარის დასადგენად, კარუტმა აჩვენა, თუ როგორ ჰყავდათ შთამომავლები დღევანდელ პროგრამირების რამდენიმე ენას, რომლებიც დეველოპერებს საშუალებას აძლევს სწრაფად იყვნენ პროდუქტიულები და ასევე ისარგებლონ თანამედროვე ენის დიზაინით.
დავიწყოთ Carbon პროგრამირების ენის ზოგადი გაცნობით, მისი მახასიათებლების ჩათვლით, Google-ის გამოგონების მიზანი და სხვა.
კარბონის პროგრამირების ენის შესავალი
19 წლის 2022 ივლისს Google-მა გამოავლინა Carbon, როგორც უახლესი პროგრამირების ენა, რომელიც მან შექმნა. ის გამიზნული იყო C++ ექსპერიმენტულად ჩანაცვლება.
მადლობა ა გენერიკების სისტემა, რაც გამორიცხავს თითოეული ინსტანციის კოდის ორჯერ გადამოწმების აუცილებლობას, Carbon აშენდება თანამედროვე პროგრამირების კონცეფციების საფუძველზე.
წლის ბოლომდე დიზაინი გეგმავს საბაზისო ოპერატიული ვერსიის (ვერსია 0.1) უზრუნველყოფას.
მეხსიერების მთლიანობა არის გადამწყვეტი ელემენტი, რომელიც აკლია C++-ს. უსაფრთხოების ხარვეზების ერთ-ერთი მთავარი წყარო არის მეხსიერების წვდომის პრობლემები.
დინამიური საზღვრების შემოწმების შემუშავება, არაინინიციალიზებული მდგომარეობების უფრო მეტი თვალყურის დევნება და ნაგულისხმევი გამართვის აგების რეჟიმი კარბონის გუნდის მიზანია. შემქმნელები აპირებენ შექმნან უსაფრთხო Carbon ქვეჯგუფი დროთა განმავლობაში.
თუმცა, შემდეგი არის ახალი პროგრამირების ენის ზოგიერთი გადამწყვეტი მახასიათებელი:
- ტიპების დასასახელებლად გამოიყენეთ გამონათქვამები.
- ძლიერი გენერიკა განმარტების შემოწმებით
- ტიპები სპეციალურად ახორციელებენ ინტერფეისებს
- შესავალი ფრაზები და ძირითადი გრამატიკა
- პოინტერები შეუზღუდავი წვდომისა და მუტაციის საშუალებას იძლევა.
- ფუნქციის შეყვანის პარამეტრების მნიშვნელობები მხოლოდ წაკითხვადია.
- root სახელთა სივრცე არის პაკეტი.
- API-ების იმპორტი შესაძლებელია მათი პაკეტის სახელების გამოყენებით.
- მეთოდი გამოცხადებულია ექსპლიციტური ობიექტის პარამეტრის მეშვეობით.
- კლასები საბოლოოა ნაგულისხმევად; არის მხოლოდ ერთი მემკვიდრეობა
ნახშირბადის თვისებები
თანამედროვე და განვითარებადი
- კარბონის ვერსიებს შორის განახლებები მარტივია და ინსტრუმენტებზე დაფუძნებული.
- ძლიერი ენის საფუძველი, განსაკუთრებით თუ იყენებდით C++ და მარტივი სწავლისთვის
- უფრო უსაფრთხო საფუძვლები და ნაბიჯ-ნაბიჯ მიდგომა მეხსიერებისთვის უსაფრთხო ქვეჯგუფის მიმართ
მივესალმებით ღია წყაროების საზოგადოებას
- საზოგადოება, რომელიც ცდილობს იყოს თბილი, მისაღები და მიმზიდველი
- მისი მიზნები და პრიორიტეტები არის განსხვავებული და ძლიერი მმართველობა
- ყოვლისმომცველი სტრატეგია შემდგენელით, ბიბლიოთეკებით, დოკუმენტაციით, ხელსაწყოებით, პაკეტის მენეჯმენტით და სხვა
სწრაფი და თავსებადი C++-თან
- იმუშავეთ ერთად C ++ კოდი თქვენ უკვე გაქვთ, მათ შორის მემკვიდრეობა და შაბლონები
- LLVM-ით, C++-თან შესადარებელი შესრულება და დაბალი დონის წვდომა ბიტებსა და მისამართებზე
- ნაგებობები, რომლებიც სწრაფი და მასშტაბირებადია და თავსებადია თქვენს არსებულ C++ build სისტემებთან
რატომ შექმნა Google-მა Carbon პროგრამირების ენა?
შესრულებისთვის კრიტიკული პროგრამული უზრუნველყოფა კვლავ ძირითადად იწერება C++-ში, რომელსაც აქვს უზარმაზარი და გაფართოებული კოდების ბაზა და ინვესტიციები.
თუმცა, მას უჭირს წინსვლა და დეველოპერების მოთხოვნების დაკმაყოფილება, როგორც ზემოთ აღინიშნა, ძირითადად წლების განმავლობაში ტექნოლოგიური დავალიანების დაგროვების გამო.
უაღრესად რთულია C++-ის თანდათანობითი გაუმჯობესება მის მიერ დარიცხული ტექნიკური დავალიანების და ასევე მისი ევოლუციის პროცესის სირთულეების გამო.
ამ საკითხების გადაჭრის იდეალური მიდგომაა დავიწყოთ ძლიერი ენობრივი საფუძვლით, როგორიცაა თანამედროვე გენერიკების სისტემა, მოდულური კოდის სტრუქტურა და თანმიმდევრული, პირდაპირი სინტაქსი, ვიდრე პირდაპირ მემკვიდრეობით მივიღოთ C ან C++ ტრადიცია.
Go, Swift, Kotlin, Rust და მრავალი სხვა თანამედროვე ენა უკვე გვთავაზობს განვითარების გამორჩეულ გამოცდილებას. დეველოპერებმა, რომლებსაც შეუძლიათ გამოიყენონ ერთ-ერთი ამ მიმდინარე ენა, უნდა გამოიყენონ.
სამწუხაროდ, C++-დან მიღება და მიგრაცია ძლიერ შეფერხებულია ამ ენების დიზაინით. ეს დაბრკოლებები მოიცავს შესრულების ზედმეტ ხარჯებს და პროგრამული უზრუნველყოფის იდიომატური დიზაინის მოდიფიკაციას.
Carbon არ არის C++ ეტაპობრივი გაუმჯობესების მცდელობა; უფრო სწორად, ეს არის მემკვიდრე ენის სტრატეგია. მისი ყურადღება გამახვილებულია C++ თავსებადობაზე, ისევე როგორც ფართო მიღებასა და მიგრაციაზე დეველოპერებისთვის და კოდების ბაზებისთვის, რომლებიც ამჟამად იყენებენ C++-ს.
C++ შემცვლელ ენას უნდა ჰქონდეს:
- C++-თან შედარებადი შესრულება დეველოპერებისთვის გადამწყვეტი მახასიათებელია.
- მართვადი სწავლის მრუდი და ინფორმირებულობის დონე C++ პროგრამისტებისთვის
- მიგრაცია, რომელიც მასშტაბირებადია და შეიცავს რამდენიმე წყაროდან წყაროს იდიომატურ C++ კოდის თარგმანს.
- მსგავსი ექსპრესიულობა და მხარდაჭერა მიმდინარე პროგრამული უზრუნველყოფის არქიტექტურისა და დიზაინისთვის.
- ურთიერთთანამშრომლობა C++-თან, რომელიც არის უწყვეტი და ორმხრივი, რაც საშუალებას აძლევს ნებისმიერ ბიბლიოთეკას, მიიღოს Carbon დანარჩენი სტეკის პორტის გარეშე.
ამ სტრატეგიით Google ამატებს ეკოსისტემას, რომელიც უკვე არსებობს C++-ისთვის და აერთიანებს მიმდინარე ინვესტიციებს, კოდების ბაზებსა და განვითარების საზოგადოებებს.
რამდენიმე ენამ მიიღო ეს მიდგომა სხვადასხვა ეკოსისტემებისთვის და Carbon ცდილობს C++-ის მსგავსი ფუნქციის შესრულებას ამ სიტუაციებში:
- ჯავა – კოტლინი
- JavaScript – TypeScript
- C++ - ნახშირბადი
C++ VS Carbon Code
Carbon-ს უნდა ჰქონდეს დაბალი სწავლის მრუდი, თუ უკვე ხართ C++ დეველოპერი. იგი შედგება გრამატიკული კონსტრუქციების ფიქსირებული ნაკრებისგან, რომელიც უნდა ჟღერდეს ბუნებრივად და იყოს მარტივი წასაკითხად და გასაგებად.
C++ კოდის მაგალითი:
ეს ნახშირბადის კოდი შეესაბამება:
ნახშირბადი ჟანგის წინააღმდეგ
კიდევ ერთი თანამედროვე ენა, რომელიც შექმნილია მეხსიერების უსაფრთხო შესრულების აპლიკაციების მოთხოვნების დასაკმაყოფილებლად, ეწოდება Rust.
რატომ უბრალოდ არ გამოიყენოთ Rust?
მიუხედავად იმისა, რომ ზოგიერთი ამტკიცებს, რომ Rust, რომელიც დაიწყო, როგორც Mozilla-ს პროექტი და შემდგომში გაიზარდა საზოგადოების დიდი მიმდევარი, არის C++-ის მემკვიდრე, Carruth-ს ეჭვი ეპარება, არის თუ არა პარალელი ძალაში.
Rust უდავოდ ფანტასტიური ენაა, რომლითაც უნდა დაიწყოს ახალი პროექტი, მაგრამ რადგან მას არ აქვს ისეთი ენების „ორმხრივი თავსებადობა“, როგორიცაა Java და Kotlin, რთულია მასზე თანდათან გადასვლა.
კარუტმა წაიკითხა ლექცია CPP North-ში და მოუწოდა ადამიანებს, რომლებიც უკვე იყენებდნენ Rust-ს, გააგრძელონ ეს. დეველოპერებმა, რომლებსაც უკვე აქვთ დიდი C++ კოდების ბაზები, რომელთა გადაყვანაც რთულია Rust-ზე, უნდა გამოიყენონ Carbon.
კერძოდ, Carbon არის ის, რასაც Carruth მოიხსენიებს, როგორც "მემკვიდრე ენა", რომელიც აგებულია არსებული ეკოსისტემის თავზე, ამ შემთხვევაში C++.
ამ მიზნით, კარბონი სრულად თავსებადია მიმდინარე C++ კოდთან, მაშინაც კი, თუ მას აქვს მრავალი მიზანი Rust-თან, როგორიცაა პროგრამისტების დახმარება „შესრულებით კრიტიკული აპლიკაციების“ შექმნაში.
გარდა ამისა, ის გამიზნულია C++-დან Carbon-ზე გადაადგილების რაც შეიძლება მარტივი გახადოს.
დასკვნა
საბოლოოდ, კარბონის ენის შემქმნელებმა ცდილობდნენ ყურადღება მიაქციონ შექმნის პროცესს. პროექტის კოდი ხელმისაწვდომია მოთხოვნისთვის და ღიად ინახება Githubდა მისი კულტურა განისაზღვრება, როგორც ინკლუზიური და ღია როგორც კერძო მოქალაქეებისთვის, ასევე IT სექტორისთვის.
Carbon-ის გუნდი ფიქრობდა, რომ Carbon უნდა ყოფილიყო ავტონომიური პროექტი, რომელსაც მართავს საზოგადოება და არა მხოლოდ Google-ის მიერ მოწოდებული პროექტი, რათა მომავალში განვითარებულიყო.
კარუტმა დასძინა, რომ მიუხედავად მრავალი IT ბიზნესის ინტერესისა, ეს კონცეფცია ჯერ კიდევ ექსპერიმენტულ ეტაპზეა.
დატოვე პასუხი