Почему С преобладал над Паскалем? [закрыто]

68

Насколько я понимаю, в 1980-х, а возможно, и в 1990-х, Паскаль и Си были в значительной степени непосредственными, как производственные языки.

Является ли окончательная кончина Паскаля только из-за пренебрежения Борланда Дельфи ? Или что-то еще, например, невезение или что-то не так с Паскалем (есть надежды на его возрождение?).

Меня интересуют исторические факты и наблюдения, которые можно подтвердить, а не симпатии и антипатии.

Конрад Моравский
источник
10
Если у вас есть только одна компания-банкрот, которая поддерживает язык, с которым вы работаете, это определенно не поможет (я говорю о до-Net Borland).
Let_Me_Be
48
Одним словом ответ: Unix.
SK-logic
4
Да. Что такое C?
Ливен Керсмакерс
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 как язык ОС
mojuba
источник
19
Переключение Apple на Objective-C произошло долгое время после того, как она перестала использовать Pascal. Оригинальная операционная система и библиотеки Macintosh были написаны с использованием Pascal, но Apple предложила хорошую поддержку C вскоре после появления Mac и перешла на C в начале 90-х. Apple приняла Objective-C, когда приобрела NeXT, что произошло после возвращения Стива Джобса в конце 90-х.
Калеб
36
Я не думаю, что многословие является уместным аргументом. Поскольку код читается больше, чем написанное, многословие имеет преимущества.
Йоханнес
14
Разве многословие не является тем, что пропагандируется в современных языках (Python против Perl)?
Ладья
7
Я не думаю, что многословие было причиной, напротив, это одна из сильных сторон Паскаля.
9
Это неверно Турбо Паскаль был широко успешным. Основная проблема заключалась в том, что вы могли использовать его только в DOS / Windows.
44

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

mouviciel
источник
16
Не только UNIX. Windows и ее ядра были написаны в основном на C. Не говоря уже о том, что C ++ становится все сильнее, что также должно было сделать C по крайней мере немного более популярным.
Ям Маркович
2
@ SK-logic. Он вышел в 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 разрабатывались также и на Ассемблере. В Ассамблее соглашение о вызовах по определению никак не применяется (отсюда и слово «соглашение»). Таким образом, похоже, что тот факт, что он получил название «Соглашение о вызовах Pascal», не обязательно означает, что он был впервые изобретен языком программирования Pascal или что Windows была разработана на Pascal. РЕДАКТИРОВАТЬ: Я только что прочитал ваш недавний комментарий. Я думаю, у нас нет ничего умного, чтобы добавить здесь на данный момент. :)
Ям Маркович
35

Эссе « Почему Паскаль не мой любимый язык » Брайана Кернигана освещает основные моменты критики.

С гораздо более универсален и расширяем. Некоторые люди даже узнали, как делать (своего рода) объектно-ориентированное программирование на C ! Кроме того, встроенный ассемблер и другие низкоуровневые функции сделали его важным языком для системного программирования.

Феликс Домбек
источник
9
Если я хорошо помню, Turbo Pascal (кстати, мой первый язык программирования) поддерживал встроенный ассемблер. Я видел эссе Кернигана раньше. Но разве его критика не устарела в ближайшее время?
Конрад Моравский
2
@Morawski, TP с 80-х, C с 70-х. Это произошло более чем на десять лет позже.
SK-logic
9
@Morawski: Более того, Turbo Pascal был только одной реализацией Pascal. Стандарт описывал язык, который не был особенно полезен, поэтому разработчикам приходилось вставлять свои собственные небольшие расширения, чтобы люди могли писать полезные программы. Фрагментация, вероятно, была проблемой здесь.
Дэвид Торнли
@ SK-logic, PASCAL был впервые определен в 1970 году, и тогда были доступны первые компиляторы. Турбо Паскаль появился ок. В 1984 году, после того, как Джим Тайсон обанкротился, спрос на JRT Pascal FAR превысил его способность поставлять продукцию. Turbo Pascal первоначально рассматривался с большим подозрением, потому что все помнили JRT Pascal, и МНОГИЕ люди были сожжены этим.
Джон Р. Штром
@ JohnR.Strohm, я отвечал на комментарий Конрада относительно встроенного ассемблера в TP.
SK-logic
23

Хотя это не было эксклюзивное использование, Pascal был разработан для обучения программированию, а не для использования в качестве основного языка.

Delphi и Object Pascal изменили это. Но в то время было уже поздно.

Позволь мне быть
источник
4
Тем не менее, Бейсик не был предназначен для профессиональных целей, но он жив и здоров
Конрад Моравский
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

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

Смерть Паскаля, по-моему, в основном вызвана тем, что Borland придерживается своего графического интерфейса, а его клиенты переходят в Интернет. У Borland никогда не было действительно привлекательного предложения для разработки на стороне сервера. Только в последние несколько лет, когда Delphi умерла для всех практических целей, те, кто придерживался Delphi, перешли на C #. Я думаю, что C / C ++ всегда отличался от толпы Pascal / Java / C #, поскольку ребята из C (++) были более технически / низкоуровневыми.

Яап
источник
19
Кончина Борланда была задолго до необходимости веб-разработки. Их ошибка была проста: они забыли о том, что сделало их лидером в первую очередь (дешевые, быстрые, эффективные компиляторы, доступные для широких масс) и прыгнули на дорогие корпоративные инструменты (где у Microsoft и других уже был хороший старт). Традиционная толпа должна была перейти к чему-то другому.
MetalMikester
@MetalMikester, это правда о степени А Они отбросили мелких независимых разработчиков, преследуя «большие деньги» в корпоративных продажах. И, к сожалению, кое-что еще осталось, даже с новыми владельцами.
GrandmasterB
Тем не менее, им пришлось столкнуться с отсутствием хороших возможностей для разработки веб-приложений в одно и то же время (из-за долгой настойчивости на клиент-серверном оборудовании в их линейке продуктов).
jwenting
2
Java и C # имеют синтаксис C и очень похожи на C, а не на Pascal ... также Java была адресована программистам C ++.
m3th0dman
11

Подчеркнем: C - портативный ассемблер, PASCAL - образовательный язык.

Этот раздел в Википедии хорошо освещает это.

Редактировать:
Казалось бы, некоторые здесь неправильно понимают мой ответ. Или на самом деле, скорее вопрос.
Этот вопрос о популярности. И причина, по которой С в конечном итоге более популярна, чем PASCAL, заключается в том, что один был спроектирован и продан как переносимый язык, близкий к металлическому, в то время как другой был спроектирован и продан как образовательный язык, обеспечивающий большую безопасность и ясность.
В конечном счете, даже не имеет значения, был ли язык провален перед поставленными целями или достиг непредвиденных результатов. И любой, кто пытается вывести разницу в популярности из превосходства C над PASCAL, просто ошибается.
Ключ к этому вопросу лежит в истории и истерии, связанной с ним.

back2dos
источник
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
А Лисп - это язык для исследования ИИ, ну и что?
Моджуба
1
@mojuba: «оригинальная цель языка может быть или не иметь отношения» - это то, с чем я полностью согласен. Моя точка зрения заключалась в том, что в данном случае это было актуально . ;)
back2dos
5

В течение 70-х и начала 80-х годов компиляторы C были относительно просты в использовании для персональных компьютеров, хотя большинство из них делали только подмножество C (именно поэтому в старых журналах вы увидите так много разных объявлений о «крошечных C» -компиляторах). ). Pascal был более громоздким и громоздким языком в те времена, когда только самые богатые любители компьютеров имели жесткие диски (а жесткий диск объемом 5 мегабайт стоил несколько сотен долларов). Для Apple 2 (мой первый компьютер, и это был даже не «плюс»), для запуска Pascal требовалось приобрести дополнительную карту памяти (для этого требовалось 64 КБ ОЗУ!) И потребовалось несколько дискет для загрузки, в то время как «крошечный C» компиляторы помещаются на одной дискете (и могут обойтись с 16k RAM).

Паскаль преподавали в учебных программах по информатике, в то время как C в основном преподавали самостоятельно (иногда преподавали в электротехнических программах). Паскаль получил репутацию среди ковбойских программистов за то, что он «язык рабства и дисциплины», который, как я думал, был незаслуженным, поскольку они никогда не встречали ADA .

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

Borland потерял свое лидерство на рынке разработки, когда Microsoft наняла своих ведущих разработчиков и руководителей проектов (таких как Hejlsberg, Gross и более чем 35 других), в конечном итоге разработав .NET и Visual Studio. Borland и Microsoft урегулировали иск пару лет спустя, но Borland так и не оправился от потери. По моему мнению, в то время Delphi начала увядать (так как люди, которые уделяли этому внимание и были привлечены к работе), а смена генерального директора в то же время отвела Borland из компиляторной компании в компанию ALM (управление жизненным циклом приложений). , изменив свое имя на Inprise пару лет спустя. Пепел Борланда теперь принадлежит Micro Focus.

Tangurena
источник
Микро Фокус? Когда это произошло? Я думал, что это принадлежало 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), и он разработал несколько бла-бла-бла, о которых никто никогда не заботился. Вы говорите мне, что кто-то достаточно заботился о бла-бла-бла, чтобы кремировать его?
Steve314
5

Черт возьми, это односторонняя нагрузка хулигана, где все люди, которые начали на этом сайте, у которых Delphi был их любимым языком?

Почти все упоминают о Borland, и 2/3 людей считают, что Delphi пнул ведро. Что ж, ребята, Embarcadero несколько лет назад купил подразделение CodeGear компании Borland (за деньги, а не на благотворительность), и они делали довольно удивительные вещи, объединяя некоторые довольно удивительные инструменты в их довольно удивительную IDE и создавая довольно удивительную платформу. для кроссплатформенной разработки в OBJECT PASCAL. Не говоря уже о Lazarus и FreePascal на стороне открытого исходного кода.

Итак, если это исторический вопрос, почему C преобладал над Pascal, тогда ОК, это приемлемое требование для начала вопроса. Но авторство кода в Object Pascal растет, я не знаю, что индекс TIOBE для него очень много значит, но должно быть ясно, что люди все еще пишут код в Object Pascal и интересуются, когда Embarcadero выпускает новые инструменты, поэтому фактические люди, заинтересованные в написании нового (не просто поддерживающего старого) кода, заинтересованы в Delphi.

Я не уверен, что вы можете сказать то же самое для всего, что связано с C.

Питер Тернер
источник
3
Это должно быть мертвым. Единственные люди, у которых все еще есть причина использовать это, - те как я, кто застрял с этим из-за большого количества существующих приложений VCL. Вся интегрированная среда разработки Delphi / C ++ за последние 5 лет превратилась в дерьмовый, глючный беспорядок. Файлы справки и документация не существуют. Отладчик просто смущает. Если вы отложите IDE в сторону, на самом деле нет причин использовать версию Object Pascal поверх C ++, если только вам не нужна обратная совместимость. Основным преимуществом C ++ в этом случае является то, что он позволит вам переносить код для выхода из дурацкой IDE.
1
Что касается C, то, во-первых, он является полностью доминирующим языком во всем встраиваемом секторе, и все новые инструменты для него созданы для C. Вся Windows и Linux - это C. Все проблемы со смартфонами написаны на языках Си. C или C ++ доминирует практически во всех областях приложения, где используется программирование. Стандарт C ++ получает серьезное обновление. Новые безопасные подмножества MISRA как на C, так и на C ++ успешно применяются для встроенных приложений, первый из которых стал отраслевым стандартом де-факто. Так что нет ... нет спайков интереса, есть постоянно высокий интерес.
2
@Lundin, ты шутишь, я пользуюсь Delphi 7 последние 4 года, наконец-то обновленный до 2009 года и работающий в XE2. Наконец, мне не нужно перезапускать IDE каждые 5 или 6 сборок, чтобы сохранить мои точки останова. Кроме того, Embarcadero создал способ использования Delphi Code для программ для Android и iOS, который является новым, но довольно классным, преимущество в том, что им полностью управляет частная компания, поэтому улучшения фактически превращают его в руки разработчиков. ,
Питер Тернер
1
Хотя я не программист на ПК, я использую Builder туда и обратно с середины 90-х годов. Он неуклонно улучшался до тех пор, пока где-то не свернул Codegear, а затем, очевидно, сломалось некоторое снаряжение, потому что сейчас оно хуже, чем 10 лет назад. Во всяком случае, это не по теме, поскольку Delphi / Builder начал вымирать задолго до провала Codegear / Embarcadero.
1

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

Паскаль, несмотря на лучшие и часто ошибочные усилия Borland, не достиг такого уровня проникновения на рынок.

jfrankcarr
источник
3
Похоже, это вызывает вопрос: почему C вступил во владение крупнейшими компаниями? MacOS начал с Pascal и стал более дружественным к Си. Какова была причина этого?
Дэвид Торнли
1
@DavidThornley - я думаю, что многое из этого было связано с наймом опытных программистов высшего уровня. C, смешанный со сборкой, был языком выбора для основных приложений для ПК, начиная с середины 1980-х годов. Внедрение базы C позволило значительно упростить и удешевить работу опытных программистов (без переподготовки и т. Д.).
jfrankcarr
3
Но вы только что отодвинули вопрос назад на один слой. Почему первоклассные опытные программисты переключились? Почему язык C был выбран? Кнут сделал свои первые грамотные вещи в программировании на Паскале, затем переключился на C. Почему? Выяснение того, кто именно руководил переключением, может быть полезным, но вопрос требует причин.
Дэвид Торнли
Я работал в двух софтверных компаниях еще в 80-х годах, не в роли программиста, а в роли поддержки. Исходя из того, что я могу вспомнить, я подозреваю, что переход от MASM к C был легче для тех, кто уже глубоко в программировании MASM. Я помню неприязнь к Turbo Pascal, которую программисты, с которыми я работал, называли игрушечным языком, и вы не хотели начинать их с QuickBasic. Я изучил MASM и C сначала из-за давления со стороны сверстников. Это также может быть фактором, хотя это не доходит до его фактического происхождения.
jfrankcarr
В конце 80-х, начале 90-х годов C был уже очень популярен. Вы можете найти компилятор в качестве стандартного модуля в любой реализации UNIX (а UNIX была ОС, с которой большинство программистов хотели работать). Я не говорю, что он был более популярным, чем Паскаль, но он был очень популярен. Таким образом, C ++, Java и C # популярны, потому что C был, а не наоборот.
Джорджио
0

Паскаль только когда-либо стал популярным в одной довольно ограниченной среде PC / DOS.

Даже тогда на ПК было запущено столько приложений MicroFocus COBOL, сколько было паскалей.

C был базовым для операционной системы UNIX и всех операционных систем MS / Windows.

Сочетание эффективного выполнения на ограниченном оборудовании и нативный доступ к базовым библиотекам ОС и GUI, вероятно, были основными причинами успеха C. Паскаль никогда не взламывал его на окнах, и Дельфи прибыл слишком поздно, чтобы что-то изменить.

Джеймс Андерсон
источник
Я думаю, что ваш комментарий "... и все операционные системы MS / Windows" может быть фактически неверным. Windows изначально была разработана и закодирована в PASCAL. Из en.wikipedia.org/wiki/Talk:X86_calling_conventions : «Просто подумал, что буду взвешивать здесь. Я посмотрел ключевое слово __pascal в Руководстве пользователя Watcom C / C ++, и стало ясно, что: __pascal для соглашений об использовании использовался для OS / 2 1.x и API Microsoft Windows 3.x "
Джон Р. Стром
@ JohnR.Strohm Соглашения о вызовах и языки реализации не обязательно совпадают. Вероятно, Microsoft использовала C в течение некоторого времени уже в 1993 году (Windows 3.1 была выпущена в 1992 году). Источник в своем роде
CVn
IIRC в начале 80-х Microsoft много использовала Xenix для внутреннего использования, и, вероятно, начала работать на C таким образом. Это, и (Турбо) Паскаль, в конце концов, был убийственным продуктом опасного конкурента, Борланда. Тогда разница в размерах между Microsoft и другими крупными компаниями-разработчиками программного обеспечения, такими как Lotus, Borland ... еще не была огромной.
wazoox