Чому C переважав над Паскалем? [зачинено]


67

Я розумію, що у 1980-х, а може бути, і в 1990-х роках Паскаль і С були в значній мірі головними у ролі виробничих мов.

Чи остаточна смерть Паскаля пов'язана лише з нехтуванням Делфі Борланда ? Або було більше, наприклад, невдача чи, можливо, щось із сутністю не було з Паскалем (будь-які сподівання на його відродження?).

Мене цікавлять історичні факти та спостереження, які можна підкріпити, а не подобатися і не подобається.


10
Якщо у вас є лише одна компанія, яка банкрутує, яка підтримує мову, з якою ви працюєте, це однозначно не допоможе (я говорю про до-Net Borland).
Let_Me_Be

48
Відповідь одним словом: Unix.
SK-логіка

4
Ага. Що таке C?
Lieven Keersmaekers

8
врешті-решт паскаль втрачається, оскільки він використовує 1-ма рядки.
Пітер Б

7
@jk: Не кажучи вже про те, що в ISO Pascal рядки могли мати будь-яку довжину, але рядки різної довжини мали різний тип. Для великої літери будь-якого рядка вам знадобиться 256 функцій. Щоб додати два випадкових рядки, вам знадобляться тисячі!
MSalters

Відповіді:


43

Паскаль програв битву здебільшого через:

  • Багатослів’я ( if ... then begin ... end, var A: array[0..15] of Integer)
  • Взаємно незрозумілі діалекти та офіційний стандарт
  • Менш вражаючі об'єктно-орієнтовані розширення
  • Найуспішніший і практичний діалект - Turbo Pascal - ніколи не переносився на інші платформи, крім DOS / Windows. Плюс Borland ніколи не відкривав джерела компілятора.
  • "Остання надія" Паскаля - Delphi - позивалася Borland як платформа для розробки баз даних, орієнтована на корпоративне середовище. Це був невдалий маркетинговий крок (зроблений маркетинговими людьми, напевно), адже креативні інженери ненавидять як бази даних, так і корпоративне середовище. Потім відмова Delphi для Linux, Kylix.
  • Apple перейшла на C, а згодом на Objective-C і, таким чином, вона вбила Pascal як мову ОС

19
Перехід Apple на Objective-C відбувся довго, довго після того, як він перестав використовувати Паскаль. Оригінальна операційна система та бібліотеки Macintosh були написані за допомогою Pascal, але Apple запропонувала хорошу підтримку для C незабаром після введення Mac, і перейшла на C на початку 90-х. Apple прийняла Objective-C, коли придбала NeXT, що сталося після повернення Стіва Джобса в кінці 90-х.
Калеб

36
Я не думаю, що багатослів’я є відповідним аргументом. Оскільки код читається більше, ніж писемне багатослів’я має переваги.
johannes

14
Чи не є багатослівність саме те, що сьогодні пропагується в мовах (python vs. perl)?
Грак

7
Я не думаю, що багатослів’я були причиною, навпаки, це одна із сильних сторін Паскаля.

9
Це неправильно. Турбо Паскаль мав широкий успіх. Основна проблема полягала в тому, що ви могли використовувати його лише в DOS / Windows.

44

C - основа Unix. У 80-х і 90-х роках Unix привертає все більше уваги. Сьогодні деякий аромат Unix є у вашому смартфоні.


15
Не тільки UNIX. Windows та його ядра були написані в основному на C. Не кажучи вже про C ++, що вийшов сильним, що також повинно зробити C хоча б трохи популярнішим.
Ям Маркович

2
@ SK-логіка Вийшла в 1984 році. Я б не сказав, що до цього часу C перейняв світ. У вас були Smalltalk, Pascal та інші, які використовувались майже всюди (не кажучи вже про COBOL).
Ям Маркович

3
@Yam: Unix і C були широко поширені в 80-х. Коли я вчився в університеті (на початку дев’яностих), Unix і C були «платформою», над якою хотів би працювати кожен серйозний розробник. Unix був реалізований в C, тому не було б Unix без C. Smalltalk, Pascal і COBOL не відігравали такої важливої ​​ролі.
Джорджіо

2
@Giorgio Дійсно після того, як Денніс Рітче та Брайан Керніган зробили C стабільним, вони переписали UNIX на C, отже, це значно полегшує порти на інші типи машин.
Ям Маркович

2
@ Steve314 Хороші бали. Однак, наскільки я міг бачити, більш ранні ядра Windows були також розроблені разом з Assembler. В Асамблеї конвенція, що закликає, за визначенням не застосовується жодним чином (звідси слово "конвенція"). Тож здається, що той факт, що він отримав назву "Конвенція виклику Паскаля", не обов'язково означає, що його запровадили винахідник мови програмування Pascal або що Windows була розроблена в Pascal. EDIT: Я щойно прочитав ваш останній коментар. Я думаю, що у нас немає нічого розумного додати тут. :)
Ям Маркович

34

Есе " Чому Паскаль не є моєю улюбленою мовою " Брайана В. Керніган висвітлює основні моменти критики.

C набагато більш універсальний і розширюваний. Деякі люди навіть дізналися, як зробити (своєрідне) об’єктно-орієнтоване програмування за допомогою C ! Також вбудований асемблер та інші низькорівневі функції зробили його важливою мовою для програмування систем.


9
Якщо я добре пам’ятаю, Turbo Pascal (моя, до речі, перша мова програмування) підтримував інтерактивний асемблер. Я бачив твір Керніган раніше. Але чи не скоро його критика застаріла?
Конрад Моравський

2
@Morawski, TP - з 80-х, C - з 70-х. Він прийшов пізніше, ніж на десятиліття.
SK-логіка

9
@Morawski: Більше того, Turbo Pascal був лише однією реалізацією Pascal. Стандарт описував мову, яка не була особливо корисною, тому розробникам доводилося вводити невеликі розширення, щоб люди могли писати корисні програми. Фрагментація, ймовірно, була проблемою тут.
Девід Торнлі

@ SK-логіка, PASCAL був вперше визначений у 1970 році, а перші компілятори були доступні тоді. Турбо Паскаль виявив приблизно. 1984 рік, після того як Джим Тайсон збанкрутував, коли попит на JRT Pascal FAR випереджав його здатність поставляти товар. Turbo Pascal був спочатку розглядається з великою підозрою , тому що все пам'ятали ОГД Паскаль і LOT людей отримав спалені ім.
Джон Р. Стром

@ JohnR.Strohm, я відповідав на коментар Конрада щодо вбудованого асемблера в TP.
SK-логіка

23

Незважаючи на те, що це не виключне використання, Паскаль був розроблений для навчання програмуванню, а не для того, щоб насправді використовувати як основну мову.

Delphi та Object Pascal змінили це. Але в той час було вже пізно.


4
Однак BASIC не розроблений і для професійних цілей, але він живий і б'є
Конрад Моравський

11
@Morawski: Дійсно? Крім VB?

5
@Let_Me_Be Я пам’ятаю досить багато додатків для Windows, написаних на Borland (Object) Pascal або Delphi. Це було набагато простіше, ніж писати їх на C / C ++. Я думаю, що C # і Java зараз обслуговують цей домен.
Quant_dev

11
Паскаль досить скоро став справжньою мовою загального призначення. Ніхто не повинен був чекати Delphi. Я не бачу, як викладання (або здатність викладати) багатьох людей мовою програмування, коли вони молоді, тягне за собою остаточну смерть. Зовсім навпаки.
Ям Маркович

10
@Morawski Єдиною причиною того, що про BASIC (ну, VB) все ще говорять і використовуються сьогодні, є те, що перший продукт Microsoft був інтерпретатором BASIC (майже впевнений, що це не компілятор), і вони продовжували штовхати його за горло. Якби вони вибрали Паскаля, ми б говорили про VP.Net. Світ також би менше смокче.
MetalMikester

18

Я не думаю, що C переважав над Паскалем. Для більшості програмістів Java переважала над Pascal. Категорія програмістів, які раніше програмували на Pascal, тепер вибирала б Java (або C #) для тієї ж роботи. Ті, хто раніше програмував на C, застрягли з C (і C ++).

Загибель Паскаля - це IMHO, в основному спричинене тим, що Borland дотримується свого режиму роботи з графічним інтерфейсом, тоді як його клієнти перейшли на Інтернет. Borland ніколи не мав по-справжньому привабливої ​​пропозиції для розробки на стороні сервера. Тільки за останні кілька років, коли Delphi помер у всіх практичних цілях, ті, хто застряг із Delphi, перейшли до C #. C / C ++ завжди був іншим натовпом, ніж натовп Pascal / Java / C #, я думаю, хлопці C (++) набагато більше технічного / низького рівня.


19
Загибель Борленда була задовго до необхідності розробки веб-сторінок. Їх помилка була простою: вони забули про те, що зробило їх в першу чергу лідерами (дешеві, швидкі, ефективні компілятори, доступні широкій масі) і вскочили у дорогі, корпоративні інструменти (де Microsoft та інші вже мали хороший старт.) Borland's традиційний натовп повинен був перейти на щось інше.
MetalMikester

@MetalMikester, ось якась правда класу А. Вони відкинули маленьких незалежних розробників, переслідуючи «великі гроші» в корпоративних продажах. І, на жаль, ще є щось, що залишилося, навіть з новими власниками.
GrandmasterB

але, маючи на увазі, їм довелося одночасно зіткнутися з відсутністю хорошого варіанту розвитку веб-застосувань (що випливає з тривалого наполягання на тому, щоб клієнт / сервер все в своїй продуктовій лінійці).
jwenting

2
Java та C # мають синтаксис C і дуже схожі на C, а не на Pascal ... Також Java адресована програмістам на C ++.
m3th0dman

11

Щоб придумати це: C - це портативний асемблер, PASCAL - це навчальна мова.

Цей розділ у вікіпедії насправді висвітлює його.

редагувати:
Здавалося б, деякі тут неправильно розуміють мою відповідь. Або власне питання.
Це питання стосується популярності. І причина, чому C в кінцевому рахунку більш популярна, ніж PASCAL, полягає в тому, що одна була розроблена і продана як портативна мова, яка наближається до металу, а інша була розроблена і продана як навчальна мова, забезпечуючи багато безпеки та чіткості.
Зрештою, це навіть не має значення, чи то, чи то мова провалила поставлені для неї цілі, чи зробила непередбачені досягнення. І той, хто намагається вивести різницю в популярності від переваги C над PASCAL, явно неправильно.
Ключове значення цього питання полягає в історії та істерії, яка в ній пов'язана.


2
Але навіть Вікі-запис, на який ви посилаєтесь, визнає цеmany 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).
Конрад Моравський

@Morawski: Незважаючи на те, що Apple, можливо, зазнала величезних зусиль з розвитку в той час, і, можливо, створила продукцію, значною мірою випереджаючи альтернативи, їх ринкова частка була слабкою. Ні Apple, ні PASCAL не є поганими (адже PASCAL була моєю першою мовою, і мені це досі подобається). Але обидва не змогли задовольнити потреби реальності галузі.
back2dos

4
@ S.Lott Чудовий, тому це портативний асемблер PDP-11. Яка актуальність зараз? Чому я повинен піклуватися про PDP-11 у 2011 році? C не є портативним асемблером x86 жодним чином.
Quant_dev

1
А Лісп - мова для дослідження ШІ, і що?
mojuba

1
@mojuba: "оригінальне призначення мови може бути або не бути актуальним" - з цим я повністю згоден. Моя думка полягала в тому, що в даному випадку це було актуально . ;)
back2dos

5

Протягом 70-х та на початку 80-х років компілятори С були відносно легкими для персональних комп’ютерів, хоча більшість лише складали підмножину C (саме тому ви побачите стільки різних рекламних компіляторів "крихітних С" у старих журналах ). Паскаль був ще більш громіздкою мовою ще в ті часи, коли лише найбагатші комп'ютерні любителі мали жорсткі диски (а жорсткий диск на 5 мег - кілька сотень доларів). Для Apple 2 (мого першого комп’ютера, і це навіть не було «плюсом»), запуск Pascal вимагав придбати додаткову карту пам’яті (для цього було потрібно 64 кб оперативної пам’яті!), А для завантаження було потрібно кілька дискети, тоді як «крихітний C» компілятори вміщуються на одній дискеті (і може обійтися за допомогою 16 кб оперативної пам’яті).

Паскаля викладали в навчальних програмах з інформатики, тоді як С був здебільшого самоучки (іноді викладався в навчальних програмах з електротехніки). Паскаль отримав репутацію серед ковбойських кодерів за те, що вони були "мовою неволі та дисципліни", що, на мою думку, було незаслуженим, оскільки вони ніколи не зустрічалися ADA .

Основними драйверами Pascal у 80-х були Apple (оскільки API використовували стандарти виклику Pascal) та Borland. Компілятори Borbo "Turbo", мабуть, були найкращими доступними на ринку, і ліцензія "як книга" зробила їх набагато популярнішими, ніж компанії з більш жорстокими ліцензуваннями.

Borland втратив лідерство на ринку розробок, коли Microsoft найняла своїх провідних розробників та керівників проектів (таких як Hejlsberg, Gross та понад 35 інших), врешті-решт розвиваючи .NET та Visual Studio. Через кілька років Borland та Microsoft врегулювали позов, але Borland так і не відновився від втрати. На мою думку, Delphi в цей час почала в’янути (оскільки люди, які зосереджували увагу та їздили на роботу), і зміна генерального директора одночасно відібрала Borland від компанії-компілятора в компанію ALM (управління життєвим циклом додатків) , змінивши своє ім'я на Inprise через пару років. Попіл Borland зараз належить Micro Focus.


Мікрофокус? Коли це сталося? Я думав, що ним належить Embarcadero (ким би вони не були), принаймні за останні кілька років. Якщо Delphi належить компанії, яка "славиться", це інструменти COBOL ...
Steve314

@ Steve314, The "CodeGear" підрозділ було продано Embarcadero в 2008 році, і Micro Focus купив іншу частину Борланд в 2009 році en.wikipedia.org/wiki/Borland#Later_Borland_years
Tangurena

1
Гаразд, але Borland розробив компілятори, бібліотеки та IDE (Delphi, the Builders), і він розробив певний бла-бла, про який ніхто ніколи не піклувався. Ти мені кажеш, що хтось піклувався про бла-бла-бла, щоб його кремірувати?
Стів314

5

Святі кури, це однобічне навантаження вуй, де всі люди, які зайшли на цей сайт, у кого була улюблена мова Delphi?

Майже всі згадують про Борланда, а 2/3 людей вважають, що Дельфи вигнали відро. Ну, вибачте, люди, Embarcadero придбав CodeGear підрозділ Borland кілька років тому (для грошей, а не для благодійності), і вони робили кілька дивовижних речей, об'єднуючи кілька досить дивовижних інструментів у свої досить дивовижні IDE та створюючи досить дивовижну платформу для розвитку крос-платформи В ОБ'ЄКТНОМУ ПАСКАЛІ. Не кажучи вже про Lazarus та FreePascal з боку відкритого коду речей.

Отже, якщо це історичне запитання, чому C переважав над Паскалем, то гаразд, це прийнятна претензія для початку питання. Але авторство коду в Object Pascal зростає, я не знаю, що індекс TIOBE означає для нього дуже багато, але повинно бути зрозуміло, що люди все ще пишуть код у Object Pascal і інтерес шипить, коли Embarcadero випускає нові інструменти, тому фактичні люди, зацікавлені у написанні нового (а не лише збереження старого) коду, зацікавлені у Delphi.

Я не впевнений, що ви можете сказати те саме для будь-якого, що стосується C.


3
Він повинен бути мертвим. Тільки люди, які все ще мають привід використовувати його, - це такі, як я, які застрягли в ньому через безліч існуючих програм VCL. Увесь Delphi / C ++ Builder IDE розпався з найсучасніших у безладний, баггічний безлад за останні 5 років. Файли довідки та документація відсутні. Відладчик звичайно бентежить. Якщо відкласти IDE вбік, насправді немає причин використовувати версію Object Pascal над C ++, якщо вам не потрібна зворотна сумісність. Основна перевага C ++ в цьому випадку полягає в тому, що він дозволить вам перенести свій код, щоб уникнути шаленого IDE.

1
Що стосується C, то насамперед це повністю домінуюча мова у всьому вбудованому секторі, і всі нові інструменти, створені для C. Весь Windows та Linux - це C. Весь пух на смарт-телефоні написаний на C ароматах. C або C ++ домінує майже в кожній області застосування, де використовується програмування. Стандарт C ++ отримує істотне оновлення. Нові безпечні підмножини MISRA як для C, так і для C ++ є успішними для вбудованих додатків, колишній перетворюється на галузевий фактичний стандарт. Так що ні ... немає ніяких сплесів інтересів, є постійно високий інтерес.

2
@Lundin, ви жартуєте, я використовував Delphi 7 протягом останніх 4 років, остаточно оновлений до 2009 року, а також працює в XE2. Нарешті, мені не потрібно перезапускати IDE кожні 5 або 6 версій, щоб зберегти свої точки проходу. Крім того, Embarcadero створив спосіб використання коду Delphi для програм для Android та iOS, який є новим, але досить класним, перевага полягає в тому, що ним повністю керує приватна компанія, тому вдосконалення фактично переходять у руки розробників. .
Пітер Тернер

1
Хоча я насправді не програміст на ПК, я використовую Builder сюди-сюди з середини 90-х. Він постійно вдосконалювався, поки десь там, де повернув Codegear, потім якась передача, мабуть, зламалася, бо зараз вона гірша, ніж це було 10 років тому. У всякому разі, це поза темою, оскільки Delphi / Builder почали вимирати задовго до фіаско Codegear / Embarcadero.

1

Я вважаю, що C та основні мови, що походять з нього, C ++, Java та C #, були охоплені найбільшими компаніями програмного забезпечення, такими як Microsoft та Sun / Oracle, та в різних стеках розробки. Як результат, вона стала "рідною мовою" Windows, Apple OS та Unix.

Паскаль, незважаючи на найкращі та часто неправильні зусилля Borland, не досяг такого рівня проникнення на ринок.


3
Це, мабуть, викликає питання: чому C перейшов у найбільші компанії? MacOS почався з Pascal і став більш сприятливим для C Що було причиною цього?
Девід Торнлі

1
@DavidThornley - я думаю, що багато з цим було пов'язано з наймом найвищих досвідчених програмістів. C, поєднаний з збіркою, був мовою вибору для основних програм для ПК, починаючи з середини 1980-х. Прийнявши базу C, це зробило наймання кваліфікованих програмістів набагато простіше та дешевше (без перепідготовки тощо).
jfrankcarr

3
Але ви просто відсунули питання на один шар назад. Чому переключилися найвидатніші досвідчені програмісти? Чому C була мовою вибору? Кнут зробив свої перші грамотні програми з програмування на Паскалі, потім перейшов на C. Чому? Дізнатися, хто саме керував перемиканням, може бути корисним, але питання задає причини.
Девід Торнлі

Я працював у двох програмних компаніях ще в 80-х роках, не в ролі програміста, а в ролі підтримки. На основі того, що я можу пригадати, я підозрюю, що перехід від MASM до C був простішим для тих, хто вже вглиб програми MASM. Я пам’ятаю неприязнь до Turbo Pascal, яку програмісти, з якими я працював, називали іграшкою мовою, і ви не хотіли запускати їх на QuickBasic. Я навчився MASM та C спочатку через тиск з боку однолітків. Це також може бути фактором, хоча це не доходить до власне генезису цього.
jfrankcarr

Наприкінці 80-х, початку 90-х, С вже користувався великою популярністю. Ви можете знайти компілятор як стандартний модуль у будь-якій реалізації UNIX (а UNIX була операційною системою, над якою хотіли працювати більшість програмістів). Я не кажу, що він був більш популярним, ніж Паскаль, але був дуже популярний. Тож C ++, Java та C # популярні тому, що C був, а не навпаки.
Джорджіо

0

Паскаль тільки коли-небудь став популярним в єдиному досить обмеженому середовищі PC / DOS.

Вже тоді на ПК було запущено стільки програм MicroFocus COBOL, скільки було програм Pascal.

C був основою операційної системи UNIX та всіх операційних систем MS / Windows.

Поєднання ефективного виконання обмеженого обладнання та, власний доступ до базових бібліотек ОС та GUI, ймовірно, були основними причинами успіху C. Паскаль ніколи насправді не зламав на вікнах, і Delphi приїхала занадто пізно, щоб змінити значення.


Я думаю, що ваш коментар ".. і всі операційні системи MS / Windows" може бути фактично невірним. Windows спочатку був розроблений та кодований у PASCAL. З en.wikipedia.org/wiki/Talk:X86_calling_conventions : "Я просто думав, що я зважуся тут. Я переглянув ключове слово __pascal у Посібнику користувача Watcom C / C ++ і зрозуміло, що: __паскаль конвенції про виклики використовується для ОС / 2 API 1.x та Microsoft Windows 3.x "
Джон Р. Стром

@ JohnR.Strohm Конвенції та мови реалізації викликів не обов'язково одна й та сама. Microsoft використовувала C, ймовірно, деякий час вже в 1993 році (Windows 3.1 випущена в 1992 році). Джерело свого роду
CVn

IIRC на початку 80-х Microsoft багато використовувала Xenix внутрішньо, і, ймовірно, почала працювати на C таким чином. Це, і (Turbo) Паскаль, зрештою, був продуктом вбивства небезпечного конкурента, Борленда. Тоді різниця у розмірах між Microsoft та іншими великими програмними компаніями, такими як Lotus, Borland ... ще не була величезною.
wazoox
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.