10 języków programowania, według indeksu TIOBE, wydaje się być pod silnym wpływem C:
1. Java
Język wywodzi się w dużej mierze ze składni C i C ++, ale ma prostszy model obiektowy i mniej udogodnień niskiego poziomu. - wikipedia.org
2. C.
C jest jednym z najczęściej używanych języków programowania wszech czasów i jest bardzo mało architektur komputerowych, dla których kompilator C nie istnieje. - wikipedia.org
3. C #
Podczas opracowywania systemu .NET Framework biblioteki klas zostały pierwotnie napisane przy użyciu systemu kompilatora kodów zarządzanych o nazwie Simple Managed C (SMC). W styczniu 1999 r. Anders Hejlsberg utworzył zespół w celu stworzenia nowego języka w tym czasie o nazwie Cool, co oznaczało „obiektowy język zorientowany obiektowo”. - wikipedia.org
4. C ++
Został on opracowany przez Bjarne Stroustrup od 1979 roku w Bell Labs jako rozszerzenie języka C. - wikipedia.org
5. Cel-C
Objective-C to refleksyjny, obiektowy język programowania, który dodaje wiadomości w stylu Smalltalk do języka programowania C. - wikipedia.org
6. PHP
Przepisał te skrypty jako pliki binarne Common Gateway Interface (CGI) języka programowania C, rozszerzając je, aby dodać możliwość pracy z formularzami internetowymi i komunikowania się z bazami danych, i nazwał tę implementację „osobistą stroną domową / interpretatorem formularzy” lub PHP / FI. - wikipedia.org
8. Python
Python został opracowany pod koniec lat 80., a jego wdrożenie rozpoczęło w grudniu 1989 r. Guido van Rossum w CWI w Holandii jako następca języka programowania ABC (sam zainspirowany przez SETL) zdolnego do obsługi wyjątków i współpracy z systemem operacyjnym Amoeba. - wikipedia.org
ABC (język programowania) Jego projektanci twierdzą, że programy ABC są zwykle około jednej czwartej wielkości równoważnych programów Pascal lub C i są bardziej czytelne. - wikipedia.org
9. Perl
Perl pożycza funkcje z innych języków programowania, w tym C, skryptów powłoki (sh), AWK i sed. - wikipedia.org
10. JavaScript
JavaScript używa składni, na którą ma wpływ C. - wikipedia.org
Wygląda na to, że większość z nich pożycza składnię od C i / lub jest pod silnym wpływem kilku innych sposobów, przynajmniej na początku. Czemu?
źródło
Odpowiedzi:
Wraz z pojawieniem się UNIX w 1970 roku, jego standardowy język programowania systemów C szybko stał się lingua franca świata programowania. Przez pewien czas C było praktycznie obowiązkowe dla każdego programisty. Jako taki fakt, że C wpłynął na prawie każdy język programowania, który pojawił się po nim w ten czy inny sposób, nie jest zaskakujący z dwóch powodów:
Ale istniały inne języki, i nadal tak jest, niektóre nawet przed C - istnieje rodzina LISP (CL, Clojure i Schemat są najpopularniejszymi nowoczesnymi dialektami), rodzina ML (z kilkoma nowoczesnymi dialektami), jest cała armia Dialekty BASIC (VB.NET i VBA są nowoczesnymi implementacjami), jest Pascal i jego krewni (Delphi jest najbardziej znany) i wiele języków „dziwnych”, które wywarły wpływ na wiele innych języków i same wymyśliły kilka rzeczy; przykłady obejmują Go, Python, Lua, Haskell (i jego poprzednik, Miranda), Prolog i Erlang. Chociaż żadnego z tych języków (oprócz Pythona) nie ma w pierwszej dziesiątce, wiele z nich ma stabilną bazę użytkowników i aktywną społeczność; z pewnością nie odejdą.
Należy również zauważyć, że wielkość wpływu C w tych językach różni się bardzo, od prawie 100% kompatybilnych języków C C ++ i Objective-C, aż do Pythona (który celowo rezygnuje z wielu funkcji składniowych C). I to tylko składnia: pod względem semantyki większość języków na tej liście nie ma wiele wspólnego z C. Przytłaczająca większość ma wbudowane zarządzanie pamięcią w język, a co za tym idzie, semantykę kopiowania, przekazywanie argumentów itp. są bardzo różne. Na przykład JavaScript ma silny wpływ semantyczny ze Schematu, a jego składnia została zaprojektowana tak, aby przypominać Javę (która z kolei opiera swoją składnię bitów na kawałki na C, ale nie na semantykę). Inne różnice (z wyjątkiem C ++ i Objective-C, które są w większości kompatybilne wstecz z C) obejmują obsługę błędów, reguły zakresu,
#include
) oraz fakt, że wiele z tych języków jest „zwirtualizowanych”, tzn. działają one na interpretera, kompilatorze JIT lub maszynie wirtualnej.Nawiasem mówiąc, Python ma pewien wpływ na C, ale z pewnością nie jest oparty na C. Zarówno składnia, jak i semantyka różnią się dość radykalnie od C, i to z założenia. Python pożycza tylko funkcje z C, w których inne alternatywy są równie „dobre” (jak w „Zen of Python” - wpisz
import this
interpreter python).Co do przyszłości programowania; prognozy są różne. Wpływ C nie ustępuje, ale ostatnie zmiany w sprzęcie (powszechne stają się maszyny wielordzeniowe, wydajne procesory graficzne, procesor przestaje być typowym wąskim gardłem wydajności, szybkie niezawodne połączenia sieciowe itp.) Wymagają radykalnie różnych podejść do programowania ogólnie. Każdy, kto kiedykolwiek napisał wielowątkową aplikację rozproszoną w imperatywnym języku, może powiedzieć, że jest to niezwykle trudne, podczas gdy języki takie jak Haskell mają funkcje, które usuwają większość typowych problemów i oferują bardziej abstrakcyjne i bardziej uporządkowane podejście do przetwarzania rozproszonego, współbieżnego i równoległego. (czystość jest ważną koncepcją w tym kontekście). Nowsze języki programowania (np. C # lub D) zawierają już wiele funkcji obsługujących taki idiom. W każdym przypadku,
źródło
To bardzo przypomina pytanie, dlaczego angielski jest dominującym językiem w USA. Dlaczego nie hiszpański lub francuski? Kontrolowali więcej terytorium USA niż kolonie angielskie. Dlaczego nie holenderski? Pierwsza stolica USA znajdowała się w byłej kolonii holenderskiej. Nie jestem pewien, czy może być na to „odpowiedź”.
Jednak oś czasu „Historia języków komputerowych” ( http://www.levenez.com/lang/ ) zawiera wszystkie możliwe odpowiedzi.
źródło
Jeśli utworzysz nowy język programowania, zastosowanie składni podobnej do popularnych istniejących języków ułatwi uczenie się nowym użytkownikom. Zwłaszcza jeśli wiele pojęć jest podobnych w różnych językach.
Myślę też, że składnia w stylu C jest stosunkowo łatwa do odczytania. Aby porównać z Pascalem, użycie symboli „{” i „}” dla bloków kodu jest bardziej czytelne niż „początek” i „koniec”, które są optycznie bardzo podobne do identyfikatorów. Python jest jeszcze bardziej czytelny, ale włączenie białych znaków w składni otwiera nowy zestaw problemów z edycją. Kolejny przykład: Lisp i JavaScript dzielą się kilkoma pomysłami, ale kiedy to samo jest napisane w składni w stylu C, jest mniej niejasne.
Jestem pewien, że wiele osób nie zgodziłoby się z drugim akapitem, ponieważ każdy ma swój ulubiony język, ale myślę, że popularność składni w stylu C jest częściowo historycznym zbiegiem okoliczności, ale częściowo pokazuje również, że autorzy C zrobili kilka dobrych decyzje.
źródło
Języki programowania ewoluują w czasie, podobnie jak języki naturalne, przy czym niektóre starsze języki wpływają na tę ewolucję silniej niż inne, podczas gdy inne zanikają, a ich wpływ jest trudniejszy do prześledzenia na poziomie powierzchni, czyli składni.
Wpływ C pochodzi z wielu źródeł - jest niski, szeroko rozpowszechniony, ma wsparcie zarówno w środowiskach Unix, jak i Microsoft. To także przetrwanie najsilniejszego problemu - łatwo zauważyć, że zwięzła składnia podobna do C miała większą atrakcyjność niż pełna składnia wywodząca się z Algolu Pascala i innych konkurentów C w latach 70. i 80. Dlatego został szeroko przyjęty przez języki, które pojawiły się po nim.
Przy obecnym wzroście znaczenia programowania wielowątkowego i językach funkcjonalnych, które są do niego szczególnie odpowiednie, powiedziałbym, że w przyszłości ich wpływ wzrośnie. Przykład: Python, który nawet stworzył tę listę w pytaniu.
Ładny widok osi czasu historii języka do przemyślenia
źródło
Większość wymienionych języków nie ma praktycznie nic wspólnego z C poza nieistotnymi podobieństwami składniowymi. Jedynymi dwoma rzeczywistymi pochodnymi C są Objective-C i C ++.
źródło