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.