Maciej Olanicki
Maciej OlanickiRedakcja Bulldogjob

Współtwórczyni Rusta: C nie jest już językiem programowania

Czy C jest „za duże, by upaść”? Programistka tworząca Rusta i Swifta zwraca uwagę na ciekawy problem.
4.04.20223 min
Współtwórczyni Rusta: C nie jest już językiem programowania

Bez C nie sposób sobie wyobrazić funkcjonowania dzisiejszego świata. To właśnie w tym języku powstał Linux, niemal w całości Windows i pakiet Office, a zatem i Excel, bez którego cywilizacja najpewniej ległaby w gruzach ;) Tym ciekawiej wypadają opinie, według których C… nie jest już językiem programowania.

C to już nie język

Takiego zdania jest Aria Beingessner, programistka, inżynierka oprogramowania, o której z pewnością można powiedzieć, że sroce spod ogona nie wypadła. Współtworzyła ona bowiem zarówno implementacje Rusta, potencjalnego następcy C i C++ na pozycji najważniejszego niskopoziomowego języka programowania, jak i Swifta, oczka w głowie Apple, dzięki któremu pisanie aplikacji na iOS-a, macOS-a i iPadOS-a ma być nieporównywalnie przyjemniejsze, niż na inne platformy.

Opublikowana przez programistkę i dostępna tutaj opinia rzecz jasna jest dość przewrotna i prowokacyjna, niemniej sprawnie soczewkuje kwestie mogące budzić zainteresowanie. 

C – lingua franca IT

Beingessner, znana także jako Gankra, jest bowiem zdania, że ranga C w dzisiejszym programowaniu jest zbyt wysoka. W praktyce wymusza ona na twórcach innych języków, aby stosowali różne zabiegi i mechanizmy zapewniające kompatybilność z C, który to język jest zazwyczaj językiem środowiska uruchomieniowego. 

Autorka wpisu nie pozostaje gołosłowna i przytacza konkretne techniczne problemy, jakie napotkała na swojej drodze dopasowywania się do warunków dyktatu prowadzonego przez oprogramowanie napisane w C. Na potrzeby przykładu stworzyła ona fikcyjny język programowania i zbudowała scenariusz, w którym próbuje uruchomić plik na systemie linuksowym, gdzie przecież wszystko jest plikiem.

Aby sięgnąć interfejsu systemu operacyjnego, konieczne jest oczywiście przygotowanie go samodzielnie w… C, a jakże. Na nic sam nowy język, czy jego kompilator, nie sposób przecież liczyć na społeczność, która będzie przygotowywać nowy interfejs na potrzeby każdego nowo powstałego języka. 

W rezultacie opisywany przez Beingessner język musi mieć warstwę abstrakcji pozwalającą na wywoływanie funkcji. I właśnie to jej się nie podoba, a nawet pozwala na twierdzenia, że C to już nie język programowania, lecz protokół. I to kiepski, bo według niej pozbawiony ABI, trudny do parsowania i  rozgałęziony na kilka konkurujących ze sobą standardów.  

Nic lepszego niż C nie powstało (?)

C stało się więc interfejsem, czy też – idąc za myślą autorki – protokołem wymaganym, by komunikować się ze sprzętem. I C ma na tę komunikację całkowity monopol. Wszak jak mawia Linus Torvalds: „nic lepszego niż C nie powstało”. Niemniej ten otwarty krytyk C++ w kodzie niskopoziomowym, ale też umiarkowany entuzjasta wprowadzenia współtworzonego przez Beingessner Rusta do jądra Linuksa, niechybnie potwierdził stawiane przez programistkę tezy.

Stwierdzenie, że nic lepszego niż C nie powstało, nie jest równoważne ze stwierdzeniem, że C jest „dobre”. Torvalds i kierowana przez niego społeczność po prostu nie ma szerokiego wyboru języków, którymi C można byłoby zastąpić. Siłą rzeczy potwierdza to zatem, że aby robić cokolwiek związanego z programowaniem niskopoziomowym, czy też zaprojektować nowy język programowania, znajomość C będzie niezbędna i niezastąpiona w zasadzie od lat 70. minionego wieku. 

To ciekawe spojrzenie na problem, który pokazuje, jak bardzo – poprzez systematyczne umacnianie i betonowanie swojej pozycji – jedna „technologia”, w tym przypadku język programowania, może uzależnić od siebie cały świat.

<p>Loading...</p>