Dlaczego większość programów Linuksa jest napisanych w C? Dlaczego nie są napisane w C ++, który jest nowszy?
Dlaczego większość programów Linuksa jest napisanych w C? Dlaczego nie są napisane w C ++, który jest nowszy?
Odpowiedzi:
Było wiele dyskusji na ten temat. Głównie przyczyna jest filozoficzna. C został wymyślony jako prosty język do programowania systemu (nie tyle do programowania aplikacji). Istnieje wiele argumentów przemawiających za użyciem C ++, ale jest ich tyle samo, że nie używają C ++ i trzymają się C.
Ostatecznie jest to problem historyczny. Większość elementów aplikacji jest napisanych w C, ponieważ większość elementów jądra jest napisana w C. A ponieważ większość rzeczy była napisana w C, ludzie używają oryginalnych języków.
W tym momencie ktoś może zapytać „OK, więc dlaczego jądro jest napisane w C i nie jest przeniesione do C ++?” . Zostało to omówione na kerneltrap jakiś czas temu. Jednym miłym wyjaśnieniem, które można zacytować z tego wątku, jest odpowiedź yoshi314 (cytowanie bezpośrednio):
to dlatego, że prawie każda aplikacja c ++ potrzebuje osobnej standardowej biblioteki c ++ do działania. więc musieliby przenieść go do jądra i wszędzie oczekiwać dodatkowego obciążenia.
c ++ jest bardziej złożonym językiem, co oznacza, że kompilator tworzy z niego bardziej złożony kod. z tego powodu stwierdzenie, że problem wynika z błędu kompilatora, zamiast błędu kodu jest łatwiejsze w c.
również język c jest bardziej prosty i łatwiej jest śledzić jego reprezentację asemblera, co często jest łatwe do przewidzenia.
c ++ jest bardziej wszechstronny, ale c jest bardziej odpowiedni dla rzeczy niskiego poziomu lub osadzonych.
Z drugiej strony „większość programów Linuksa” jest dość myląca. Spójrz na aplikacje graficzne. Python staje się coraz bardziej popularny, szczególnie w środowiskach GUI w systemie Linux. O tym samym, co dzieje się z Windows i .NET.
Po przeczytaniu następującego e-maila od Linusa Torvaldsa, twórcy Linuksa. Nie mogę przestać myśleć, że powyższa odpowiedź jest nieprawidłowa. Wydaje mu się, że programiści C ++ nie są dobrymi programistami systemowymi . I że dodatkowe funkcje w C ++ często powodują więcej problemów w długim okresie w porównaniu do korzyści, które przynoszą w krótkim okresie. Chociaż można się z nim nie zgodzić, trudno przecenić wpływ, jaki wywarł na system operacyjny Linux.
C++
jest nowszy niżC
, ale to trochę nieistotne. Są to różne języki.