Rust kopiuje C, C++, obala koronę Legacy
C i C++ należą obecnie do najbardziej rozpowszechnionych języków programowania w branży oprogramowania, a ponad 6,3 miliona programistów używa tego języka do kodowania niemal wszystkiego. Teraz jest inny język, który okazał się godnym konkurentem dla C i C++; Rdza.
Opracowany przez pracownika Mozilla Research, Graysona Hoare’a, Rust rozwinął się w ciągu ostatnich 15 lat swojego istnienia. Od przejęcia przez gigantów technologicznych, takich jak AWS, Meta i Atlassian, po wspieranie ekosystemów Web3, takich jak Ethereum i Solana, Rust szybko staje się supergwiazdą w świecie programistów.
Co więcej, język ten był również wybierany jako najbardziej lubiany język programowania w ankiecie dla programistów Stack Overflow w ciągu ostatnich siedmiu lat. Ale co sprawia, że ten język jest tak kochany i potężny i czy ma możliwość zastąpienia C?
Wnuk C
Język zapożyczył najlepsze elementy z wielu języków programowania, takie jak łatwa w użyciu składnia C i C++ wraz z funkcjonalnym charakterem języków takich jak Haskell. To fragmentaryczne podejście zaowocowało tym, że Rust zebrał wiele ukochanych przez programistów funkcji, jednocześnie skupiając się na szybkim wykonaniu i bezpiecznym kodzie.
W poście na blogu ogłaszającym wydanie Rust 1.0 zespół powiedział: „[Rust’s] system typów. . . stanowi udoskonalenie i kodyfikację najlepszych praktyk wypracowanych przez pokolenia programistów C i C++”.
Pobierz naszą aplikację mobilną
Oprócz swojego dziedzictwa z innych języków, Rust ma pewne własne cechy zmieniające grę. Na przykład Rust ma szczegółowy dostęp do kodu niskiego poziomu, jednocześnie balansując na granicy między możliwościami a abstrakcją dzięki możliwościom wysokiego poziomu. Język oferuje również solidny optymalizator i wykorzystuje wiele abstrakcji o zerowych kosztach, aby skrócić czas działania.
Język został zbudowany od podstaw, aby umożliwić programowanie współbieżne, zabójczą funkcję, która sprawia, że jest niezbędny w dziedzinie HPC. Rust jest również bardzo skoncentrowany na zmuszaniu programistów do tworzenia kodu bezpiecznego dla pamięci, ponieważ nie ma wbudowanego wyrzucania elementów bezużytecznych.
Zamiast tego program zachęca do technik pożyczania i pożyczania pamięci, wraz z jasno określonymi regułami określającymi, kiedy zmienna zostanie usunięta z pamięci. Koncentracja na bezpieczeństwie pamięci ogranicza liczbę błędów w produkcie końcowym, oszczędzając czas i zasoby, jeśli chodzi o wdrażanie.
Z drugiej strony C i C++ cierpią z powodu pełzania funkcji spowodowanego latami przypadkowych aktualizacji. W tych starych językach brakuje również funkcji, które większość programistów uważa za oczywiste we współczesnych językach, takich jak łatwa integracja bibliotek, wydajne techniki zarządzania pamięcią i sprawdzanie czasu wykonywania. Użytkownik Reddit, Matthieum, doskonale podsumowuje to w komentarzu, stwierdzając:
„C++ to bałagan. To nie jest niczyja wina, naprawdę, głównie historyczny wypadek, ale jest to coś, za co płacisz na co dzień. W C było za mało szaleństwa, więc twórcy C++ postanowili dodać trochę więcej. Czy mówiłem o bezpieczeństwie pamięci? Wyścigi danych? Nie. Naprawdę nie ma sensu. Aby ujarzmić C++, trzeba spojrzeć w otchłań”.
Brak wyrzucania elementów bezużytecznych w Rust nie tylko sprawia, że programy działają szybciej, ale także czyni go realnym zamiennikiem C. Co więcej, jego charakter jako języka omijającego granicę między wysokim i niskim poziomem sprawia, że dobrze pasuje do aplikacji które już używają C i C++.
Czy C zostanie zdegradowany do przeszłości?
Rust ma wiele możliwości C i C++, wraz z podobną składnią. Co więcej, ze względu na samoistnie bezpieczny charakter języka, nawet nowi programiści mogą tworzyć złożony kod bez martwienia się o błędy powodujące uszkodzenie aplikacji. Oprócz tego Rust zawiera również „Cargo”, system kompilacji i menedżera pakietów, dzięki czemu importowanie kodu jest łatwe.
W ciągu ostatnich kilku lat giganci technologiczni również postanowili zintegrować Rust z wieloma swoimi ofertami. AWS FireCracker VMM jest całkowicie oparty na Rust, a wiele innych usług, takich jak S3, EC2, CloudFront i Route 53, używa Rust do wdrażania. Język został również wprowadzony do jądra Linuksa, podczas gdy Azure w dużej mierze przestawił się na używanie Rust nad C, powołując się na obawy dotyczące bezpieczeństwa.
Patrząc na możliwości Rusta, jest wysoce prawdopodobne, że ten język może w niedalekiej przyszłości zastąpić C. Społeczność Rust stworzyła również zasoby do przenoszenia kodu C/C++ do Rust, a inny członek stworzył Corrode, warstwę translacji między C i Rust.
Jednak, jak widać w przypadku starszych języków, takich jak Fortran i COBOL, branża ma dużą bezwładność, gdy odchodzi od starych systemów. Według ostatnich szacunków w środowisku produkcyjnym znajduje się około 10 miliardów wierszy kodu C++. Oznacza to, że istnieje równie silna siła przeciw przejściu na jakikolwiek język inny niż C++.
Jednak przy wystarczającym rozmachu Rust może stać się status quo językiem programowania przyszłości, a C i C++ zostaną oddelegowane do ich prawowitej starszej pozycji.