Dlaczego C ma przewagę nad Pascalem? [Zamknięte]

67

Rozumiem, że w latach 80., a być może także w latach 90., Pascal i C byli praktycznie głównymi językami produkcyjnymi.

Czy ostateczna śmierć Pascala wynika wyłącznie z zaniedbania Delphi przez Borlanda ? A może było coś więcej, na przykład pech, czy może coś z natury nie tak z Pascalem (czy jest nadzieja na jego odrodzenie?)

Interesują mnie fakty historyczne i obserwacje, które można poprzeć, a nie upodobania.

Konrad Morawski
źródło
10
Jeśli w zasadzie masz tylko jedną bankrutującą firmę, która obsługuje język, z którym pracujesz, to na pewno nie pomaga (mówię o pre-Net Borland).
Let_Me_Be
48
Odpowiedź na jedno słowo: Unix.
SK-logic
4
Huh Co to jest C?
Lieven Keersmaekers
8
ostatecznie pascal stracił, ponieważ używa ciągów opartych na 1.
Pieter B
7
@jk: Nie wspominając o tym, że w ISO Pascal łańcuchy mogą mieć dowolną długość, ale łańcuchy o różnych długościach mają różne typy. Aby wpisać dowolny ciąg, potrzebujesz 256 funkcji. Aby dołączyć dwa losowe ciągi, potrzebujesz tysięcy!
MSalters

Odpowiedzi:

43

Pascal przegrał bitwę głównie z powodu:

  • Szczegółowość ( if ... then begin ... end, var A: array[0..15] of Integer)
  • Niezrozumiałe dla siebie dialekty i oficjalny standard
  • Mniej niż imponujące rozszerzenia obiektowe
  • Najbardziej udany i praktyczny dialekt - Turbo Pascal - nigdy nie był przenoszony na platformy inne niż DOS / Windows. Plus Borland nigdy nie otworzył źródeł kompilatora.
  • „Ostatnia nadzieja” Pascala - Delphi - została pozycjonowana przez Borland jako platforma do tworzenia baz danych skierowana do środowisk korporacyjnych. Był to niefortunny ruch marketingowy (podejrzewany przez marketingowców), ponieważ kreatywni inżynierowie nienawidzą zarówno baz danych, jak i środowisk korporacyjnych. Potem awaria Delphi dla Linuksa, Kylix.
  • Apple przeszedł na C, a następnie na Objective-C i tym samym zabił Pascala jako język systemu operacyjnego
mojuba
źródło
19
Zmiana Apple'a na Objective-C nastąpiła długo, długo po tym, jak przestała używać Pascala. Oryginalny system operacyjny Macintosh i biblioteki zostały napisane przy użyciu Pascala, ale Apple zaoferował dobrą obsługę C wkrótce po wprowadzeniu Maca i przeszedł na C na początku lat 90-tych. Apple przyjęło Objective-C, kiedy nabył NeXT, co miało miejsce po powrocie Steve'a Jobsa pod koniec lat 90-tych.
Caleb
36
Nie sądzę, by gadatliwość była istotnym argumentem. Ponieważ kod jest czytany więcej niż pisana gadatliwość ma zalety.
johannes
14
Czy gadatliwość nie jest dokładnie tym, co jest dziś zalecane w językach (python vs. perl)?
Wież
7
Nie sądzę, by gadatliwość była przyczyną, przeciwnie, jest to jedna z mocnych stron Pascala.
9
To jest niepoprawne. Turbo Pascal odniósł duży sukces. Głównym problemem było to, że można go było używać tylko w systemie DOS / Windows.
44

C jest podstawą Uniksa. W latach 80. i 90. Unix zyskiwał coraz większą uwagę. Dzisiaj jakiś smak Uniksa jest w twoim smartfonie.

mouviciel
źródło
15
Nie tylko UNIX. Windows i jego jądra zostały napisane głównie w C. Nie wspominając już o silnym C ++, co również musiało sprawić, że C był co najmniej nieco bardziej popularny.
Yam Marcovic
2
@ SK-logic Wyszło na świat w 1984 roku. Nie powiedziałbym, że do tego czasu C przejął świat. Miałeś, że Smalltalk, Pascal i inni używali prawie wszędzie (nie wspominając o COBOL).
Yam Marcovic
3
@Yam: Unix i C były już szeroko rozpowszechnione w latach 80-tych. Kiedy studiowałem na uniwersytecie (początek lat dziewięćdziesiątych), Unix i C były „platformą”, na której każdy poważny programista chciałby pracować. Unix został zaimplementowany w C, więc nie byłoby Unixa bez C. Smalltalk, Pascal i COBOL nie odgrywały tak istotnej roli.
Giorgio
2
@Giorgio Rzeczywiście po tym, jak Dennis Ritche i Brian Kernighan ustabilizowali C, ponownie napisali UNIX w C, co znacznie ułatwia przenoszenie na inne typy maszyn.
Yam Marcovic
2
@ Steve314 Dobre punkty. Jednak, o ile mogłem zobaczyć, wcześniejsze jądra systemu Windows zostały również opracowane przy użyciu Assemblera. W Zgromadzeniu konwencja wywoływania z definicji nie jest w żaden sposób egzekwowana (stąd słowo „konwencja”). Wygląda więc na to, że nazwa „konwencja wywoływania Pascala” niekoniecznie oznacza, że ​​została ona zapoczątkowana przez wynalazcę języka programowania Pascal lub że system Windows został opracowany w języku Pascal. EDYCJA: Właśnie przeczytałem twój ostatni komentarz. Chyba nie mamy tutaj nic inteligentnego do dodania. :)
Yam Marcovic
34

Esej, dlaczego Brian W. Kernighan nie jest moim ulubionym językiem, obejmuje główne punkty krytyki.

C jest znacznie bardziej wszechstronny i rozszerzalny. Niektóre osoby nawet dowiedziały się, jak wykonać (rodzaj) programowanie obiektowe w C ! Ponadto wbudowany asembler i inne funkcje niskiego poziomu uczyniły go ważnym językiem do programowania systemów.

Felix Dombek
źródło
9
Jeśli dobrze pamiętam, Turbo Pascal (nawiasem mówiąc, mój pierwszy język programowania) obsługiwał wbudowany asembler. Widziałem wcześniej esej Kernighana. Ale czy jego krytyka wkrótce nie wygasła?
Konrad Morawski
2
@ Morawski, TP pochodzi z lat 80., C pochodzi z lat 70. Przyszło ponad dziesięć lat później.
SK-logic
9
@Morawski: Ponadto Turbo Pascal było tylko jedną implementacją Pascala. Standard opisywał język, który nie był szczególnie użyteczny, więc implementatorzy musieli wprowadzić własne małe rozszerzenia, aby ludzie mogli pisać użyteczne programy. Fragmentacja była tutaj prawdopodobnie problemem.
David Thornley
@ SK-logic, PASCAL został po raz pierwszy zdefiniowany w 1970 roku, a wtedy dostępne były pierwsze kompilatory. Turbo Pascal pokazał ok. 1984, po tym, jak Jim Tyson zbankrutował, gdy popyt na JRT Pascal FAR przekroczył jego zdolność do dostarczania produktu. Turbo Pascal początkowo oglądany z dużą podejrzliwością, ponieważ każdy pamiętał JRT Pascal, a LOT ludzi dostał spalone przez nią.
John R. Strohm,
@ JohnR.Strohm, odpowiadałem na komentarz Konrada dotyczący wbudowanego asemblera w TP.
SK-logic
23

Chociaż nie był to wyłączny użytek, Pascal został zaprojektowany do nauczania programowania, a nie jako język podstawowy.

Delphi i Object Pascal to zmieniły. Ale wtedy było już za późno.

Zostaw mnie w spokoju
źródło
4
Jednak BASIC nie został również zaprojektowany do celów profesjonalnych, ale wciąż żyje i kopie
Konrad Morawski
11
@Morawski: Naprawdę? Oprócz VB?
5
@ Let_Me_Be Pamiętam sporo aplikacji Windows napisanych w Borland (Object) Pascal lub Delphi. Było to o wiele łatwiejsze niż pisanie ich w C / C ++. Myślę, że C # i Java obsługują teraz tę domenę.
quant_dev
11
Pascal wkrótce stał się prawdziwym językiem ogólnego zastosowania. Nikt nie musiał czekać na Delphi. Nie rozumiem, jak nauczanie (lub umiejętność nauczania) wielu ludzi języka programowania, gdy są młodzi, pociąga za sobą jego ostateczny upadek. Wręcz przeciwnie.
Yam Marcovic
10
@Morawski Jedynym powodem, dla którego BASIC (cóż, VB) jest nadal używany i używany, jest to, że pierwszym produktem Microsoftu był interpreter języka BASIC (całkiem pewien, że nie był to kompilator) i ciągle pchali go sobie do gardła. Gdyby zamiast tego wybrali Pascala, rozmawialibyśmy o VP.Net. Świat też ssałby mniej.
MetalMikester
18

Nie sądzę, żeby C zwyciężył nad Pascalem. Dla większości programistów Java przeważała nad Pascalem. Kategoria programistów, którzy wcześniej programowali w Pascalu, wybrałaby teraz Java (lub C #) dla tego samego zadania. Ci, którzy zwykli programować w C, utknęli w C (i C ++).

Upadek Pascala jest spowodowany przez IMHO, głównie dlatego, że Borland trzyma się swojego sposobu pracy z GUI, podczas gdy klienci przechodzą do sieci. Borland nigdy nie miał naprawdę atrakcyjnej oferty na rozwój po stronie serwera. Tylko w ciągu ostatnich kilku lat, kiedy Delphi nie żyje ze wszystkich praktycznych celów, ci, którzy utknęli z Delphi, przeszli do C #. C / C ++ zawsze był innym tłumem niż tłum Pascal / Java / C #, myślę, że faceci C (++) byli bardziej skupieni na technice / niskim poziomie.

Jaap
źródło
19
Upadek Borlanda był na długo przed potrzebą tworzenia stron internetowych. Ich błąd był prosty: zapomnieli o tym, co sprawiło, że stali się liderem (tanie, szybkie, wydajne kompilatory dostępne dla mas) i wskoczyli do drogich narzędzi korporacyjnych (gdzie Microsoft i inni mieli już dobry start). Borland's tradycyjny tłum musiał przejść do czegoś innego.
MetalMikester
@MetalMikester, to prawda. Odrzucili małych, niezależnych programistów, ścigając „duże pieniądze” w sprzedaży korporacyjnej. I, niestety, zostało ich trochę, nawet z nowymi właścicielami.
GrandmasterB
powiedziawszy, musieli jednocześnie poradzić sobie z brakiem dobrej opcji rozwoju aplikacji internetowych (wynikającej z długiego nalegania na klient / serwer wszystkiego w swojej linii produktów).
jwenting
2
Java i C # mają składnię C i są bardzo podobne do C, a nie do Pascala ... również Java była adresowana do programistów C ++.
m3th0dman
11

Aby go stępić: C to przenośny asembler, PASCAL to język edukacyjny.

Ta sekcja na Wikipedii dobrze to opisuje.

edytuj:
Wydaje się, że niektórzy tutaj źle zrozumieli moją odpowiedź. A właściwie raczej pytanie.
To pytanie dotyczy popularności. Powodem, dla którego C jest ostatecznie bardziej popularny niż PASCAL, jest to, że jeden został zaprojektowany i wprowadzony na rynek jako przenośny język zbliżony do metalu, podczas gdy drugi został zaprojektowany i wprowadzony na rynek jako język edukacyjny, zapewniający wiele bezpieczeństwa i przejrzystości.
Ostatecznie nie ma nawet znaczenia, czy któryś język nie osiągnął wyznaczonych celów, czy też dokonał nieoczekiwanych osiągnięć. I każdy, kto próbuje wywnioskować różnicę popularności z wyższości C nad PASCAL, jest po prostu w błędzie.
Kluczem do tego pytania jest historia i związana z nią histeria.

back2dos
źródło
2
Ale nawet wpis w Wiki, do którego linkujesz, przyznaje, żemany major development efforts in the 1980s, such as for the Apple Lisa and Macintosh, heavily depended on Pascal (to the point where the C interface for the Macintosh operating system API had to deal in Pascal data types).
Konrad Morawski
@Morawski: Pomimo faktu, że Apple mógł w tym czasie przejść ogromne wysiłki rozwojowe i mógł stworzyć produkty znacznie wyprzedzające alternatywy, ich udział w rynku był titchy. Ani Apple, ani PASCAL nie jest zły (w rzeczywistości PASCAL był moim pierwszym językiem i nadal mi się podoba). Ale oba nie spełniły potrzeb rzeczywistości w branży.
back2dos 18.10.11
4
@ S.Lott Świetnie, więc to przenośny asembler PDP-11. Jakie jest teraz znaczenie? Dlaczego powinienem przejmować się PDP-11 w 2011 roku? C w żadnym wypadku nie jest przenośnym asemblerem x86.
quant_dev
1
A Lisp to język do badań nad AI, więc co?
mojuba
1
@mojuba: „oryginalny cel języka może, ale nie musi być istotny” - z tym całkowicie się zgadzam. Chodzi mi o to, że w tym przypadku było to istotne . ;)
back2dos 18.10.11
5

W latach 70. i na początku lat 80. kompilatory C były stosunkowo łatwe do zdobycia na komputery osobiste, chociaż większość zrobiła tylko podzbiór C (dlatego zobaczysz tak wiele różnych reklam „maleńkich kompilatorów C” w starszych czasopismach ). W czasach, gdy tylko najbogatsi hobbystycy komputerowi mieli dyski twarde, Pascal był jeszcze bardziej nieporęczny. W przypadku Apple 2 (mój pierwszy komputer, który nie był nawet „plusem”), uruchomienie Pascala wymagało zakupu dodatkowej karty pamięci (wymagało 64k pamięci RAM!) I załadowanie kilku dyskietek, podczas gdy „malutkie C” kompilatory mieszczą się na jednej dyskietce (i mogą sobie poradzić z 16k pamięci RAM).

Pascal był nauczany w programach komputerowych, podczas gdy C był głównie samoukiem (czasem w programach elektrotechnicznych). Pascal zyskał reputację wśród kowbojskich programistów jako „język niewoli i dyscypliny”, co, jak myślałem, było niezasłużone, ponieważ nigdy nie spotkali ADA .

Głównymi sterownikami Pascala w latach 80. były Apple (ponieważ interfejsy API korzystały ze standardów połączeń Pascal) i Borland. Kompilatory „Turbo” firmy Borland były prawdopodobnie najlepiej dostępne na rynku, a licencja „jak książka” sprawiła, że ​​stały się one znacznie bardziej popularne niż firmy z bardziej zawziętymi licencjami.

Borland stracił pozycję lidera na rynku programistycznym, gdy Microsoft zatrudnił swoich wiodących programistów i menedżerów projektów (takich jak Hejlsberg, Gross i ponad 35 innych), ostatecznie rozwijając .NET i Visual Studio. Borland i Microsoft rozstrzygnęli pozew kilka lat później, ale Borland nigdy nie wyzdrowiał po stracie. Moim zdaniem Delphi zaczęło w tym czasie zanikać (ponieważ ludzie, którzy skupili się na tym i skupili się na pracy, zostali zatrudnieni), a zmiana dyrektora generalnego w tym samym czasie przeniosła Borlanda z kompilatora do firmy ALM (zarządzanie cyklem życia aplikacji) , zmieniając nazwę na Inprise kilka lat później. Prochy Borlandu są teraz własnością Micro Focus.

Tangurena
źródło
Mikro Focus? Kiedy to się stało? Myślałem, że jest własnością Embarcadero (kimkolwiek są), przynajmniej przez ostatnie kilka lat. Jeśli Delphi jest własnością firmy, która jest „znana” z narzędzi COBOL ...
Steve314,
@ Steve314 The „CodeGear” podział został sprzedany Embarcadero w 2008 roku i Micro Focus kupił resztę Borland w 2009 roku en.wikipedia.org/wiki/Borland#Later_Borland_years
Tangurena
1
OK, ale Borland opracował kompilatory, biblioteki i środowiska IDE (Delphi, Konstruktorzy) i rozwinął trochę bla bla bla bla bla bla. Czy mówisz mi, że ktoś dbał wystarczająco o bla bla bla bla, aby go skremować?
Steve314,
5

Holy smokes to jednostronny ładunek hooey, gdzie są wszyscy ludzie, którzy zaczęli na tej stronie, którzy mieli Delphi jako swój ulubiony język?

Prawie wszyscy wspominają o Borland, a 2/3 osób uważa, że ​​Delphi kopnęło to. Przykro mi, Embarcadero kupił kilka lat temu jednostkę CodeGear w Borland (za pieniądze, nie na cele charytatywne) i robili niesamowite rzeczy, łącząc niesamowite narzędzia z ich niesamowitym IDE i tworząc niesamowitą platformę do rozwoju międzyplatformowego W OBIEKTU PASCAL. Nie wspominając już o Lazarusa i FreePascal po stronie open source.

Tak więc, jeśli jest to historyczne pytanie, dlaczego C przeważył nad Pascalem, to OK, to jest akceptowalne roszczenie, aby rozpocząć pytanie. Ale autorstwo kodu w Object Pascal rośnie, nie wiem, że indeks TIOBE wiele dla niego znaczy, ale powinno być jasne, że ludzie nadal piszą kod w Object Pascal i zainteresowanie rośnie, gdy Embarcadero wypuszcza nowe narzędzia, dlatego faktyczni ludzie zainteresowani pisaniem nowego (nie tylko utrzymywania starego) kodu są zainteresowani Delphi.

Nie jestem pewien, czy możesz powiedzieć to samo w odniesieniu do czegokolwiek związanego z C.

Peter Turner
źródło
3
Powinno być martwe. Jedynymi ludźmi, którzy wciąż mają powód, aby z niego korzystać, są tacy jak ja, którzy utknęli z nim z powodu wielu istniejących aplikacji VCL. Całe IDE Delphi / C ++ Builder rozpadło się ze stanu techniki w paskudny, buggy bałagan w ciągu ostatnich 5 lat. Pliki pomocy i dokumentacja nie istnieją. Debuger jest po prostu zawstydzający. Jeśli odłożysz IDE na bok, naprawdę nie ma powodu, aby używać wersji Object Pascal nad C ++, chyba że potrzebujesz wstecznej kompatybilności. Główną zaletą dla C ++ w tym przypadku jest to, że pozwoli ci przenieść swój kod, aby uciec od głupiego IDE.
1
Jeśli chodzi o C, to przede wszystkim jest to język całkowicie dominujący w całym sektorze osadzonym, a wszystkie nowe narzędzia są stworzone dla C. Cały system Windows i Linux to C. Cały puch smartfonów jest napisany w smakach C. C lub C ++ dominuje w prawie każdym obszarze aplikacji, w którym stosowane jest programowanie. Standard C ++ dostaje poważną aktualizację. Nowe bezpieczne podzbiory MISRA zarówno w C, jak i C ++ odnoszą sukcesy w przypadku aplikacji osadzonych, przy czym ten pierwszy stał się de facto standardem branżowym. Więc nie ... nie ma skoków zainteresowania, jest stale wysokie zainteresowanie.
2
@Lundin, żartujesz, używam Delphi 7 przez ostatnie 4 lata, w końcu zaktualizowałem do 2009 roku i pracuję również w XE2. Wreszcie nie muszę restartować IDE co 5 lub 6 kompilacji, aby zachować moje punkty przerwania. Ponadto Embarcadero stworzyło sposób korzystania z kodu Delphi dla programów na Androida i iOS, który jest nowy, ale jest całkiem fajny, zaletą jest to, że jest w całości zarządzany przez prywatną firmę, więc ulepszenia faktycznie trafiają w ręce programistów .
Peter Turner
1
Chociaż tak naprawdę nie jestem programistą na komputery PC, od połowy lat 90. używam Buildera tam iz powrotem. Stale się poprawiał, aż do momentu, w którym zmienił się w Codegear, a potem jakiś sprzęt najwyraźniej się zepsuł, ponieważ teraz jest gorzej niż 10 lat temu. W każdym razie jest to nie na temat, ponieważ Delphi / Builder zaczął wymierać na długo przed fiaskiem Codegear / Embarcadero.
1

Uważam, że C i główne języki z niego pochodzące, C ++, Java i C #, zostały uwzględnione przez największe firmy programistyczne, takie jak Microsoft i Sun / Oracle, oraz w różnych stosach programistycznych. W rezultacie stał się „językiem ojczystym” systemów Windows, Apple OS i Unix.

Pascal, pomimo najlepszych i często mylnych wysiłków Borlanda, nie osiągnął takiego poziomu penetracji rynku.

jfrankcarr
źródło
3
To wydaje się nasuwać pytanie: dlaczego C przejął kontrolę w największych firmach? MacOS zaczął od Pascala i stał się bardziej przyjazny dla C. Jaki był tego powód?
David Thornley
1
@DavidThornley - Myślę, że wiele z tego miało związek z zatrudnieniem doświadczonych programistów na najwyższym poziomie. C, zmieszany z asemblerem, był językiem wyboru dla głównych aplikacji komputerowych od połowy lat osiemdziesiątych. Dzięki przyjęciu bazy C, zatrudnianie wykwalifikowanych programistów stało się znacznie łatwiejsze i tańsze (brak przekwalifikowania itp.).
jfrankcarr
3
Ale właśnie odsunąłeś pytanie o jedną warstwę. Dlaczego wybrali się doświadczeni programiści? Dlaczego C był wybranym językiem? Knuth zrobił swoje pierwsze umiejętności programowania w Pascalu, a potem przestawił się na C. Dlaczego? Ustalenie, kto dokładnie doprowadził do przejścia, może być przydatne, ale pytanie wymaga uzasadnienia.
David Thornley
W latach 80. pracowałem w dwóch firmach programistycznych, nie jako programista, ale jako pomocnik. Na podstawie tego, co pamiętam, podejrzewam, że przejście z MASM do C było łatwiejsze dla tych, którzy już są głęboko w programowaniu MASM. Pamiętam niechęć do Turbo Pascala, z którym programiści, z którymi pracowałem, nazywali językiem zabawek, a ty nie chciałeś, żeby zaczęli korzystać z QuickBasic. Nauczyłem się najpierw MASM i C z powodu presji rówieśników. Może to być również czynnik, chociaż nie ma to wpływu na jego genezę.
jfrankcarr
Pod koniec lat 80., na początku lat 90., C był już bardzo popularny. Kompilator można znaleźć jako moduł standardowy w dowolnej implementacji UNIX (a UNIX był systemem operacyjnym, nad którym większość programistów chciała pracować). Nie twierdzę, że był bardziej popularny niż Pascal, ale był bardzo popularny. Więc C ++, Java i C # są popularne, ponieważ C było, a nie na odwrót.
Giorgio
0

Pascal stał się popularny tylko w jednym, raczej ograniczonym środowisku PC / DOS.

Nawet wtedy na komputerach PC działało tyle aplikacji MicroFocus COBOL, ile aplikacji pascal.

C był podstawową wersją systemu operacyjnego UNIX i wszystkich systemów operacyjnych MS / Windows.

Połączenie wydajnego wykonywania na ograniczonym sprzęcie oraz rodzimego dostępu do bazowych bibliotek systemu operacyjnego i GUI były prawdopodobnie głównymi przyczynami sukcesu C. Pascal nigdy tak naprawdę nie zhakował go w systemie Windows, a Delphi przybył za późno, by coś zmienić.

James Anderson
źródło
Myślę, że Twój komentarz „.. i wszystkie systemy operacyjne MS / Windows” może być niepoprawny. System Windows został pierwotnie zaprojektowany i zakodowany w języku PASCAL. From en.wikipedia.org/wiki/Talk:X86_calling_conventions : „Pomyślałem, że tutaj zważę. Poszukałem słowa kluczowego __pascal w Podręczniku użytkownika Watcom C / C ++ i jasne, że: dla systemu OS / użyto konwencji __pascal. 2 Interfejsy API 1.x i Microsoft Windows 3.x ”
John R. Strohm
@ JohnR.Strohm Konwencje wywoływania i języki implementacji niekoniecznie są takie same. Microsoft używał C prawdopodobnie od jakiegoś czasu już w 1993 r. (Windows 3.1 został wydany w 1992 r.). Źródło rodzaju
CVn
IIRC na początku lat 80. Microsoft często używał Xenixa wewnętrznie i prawdopodobnie zaczął w ten sposób C. I w końcu (Turbo) Pascal był zabójczym produktem niebezpiecznego konkurenta, Borlanda. W tamtych czasach różnica wielkości między Microsoftem a innymi dużymi firmami produkującymi oprogramowanie, takimi jak Lotus, Borland ... nie była jeszcze ogromna.
wazoox