Top.Mail.Ru
? ?
Ни о какой безапелляционности в моих высказываниях не может быть и речи! [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

полвека паскаля [апр. 28, 2021|01:07 am]
Anatoly Vorobey
[Tags|]

А еще в прошлом году, оказывается, исполнилось 50 лет языку программирования Паскаль. В связи с этим Никлаус Вирт (дай бог долгой жизни) опубликовал ностальгически-историческую статью 50 Years of Pascal, которую я прочитал с интересом и рекомендую. Для сравнения: Паскаль появился в 1970-м году, язык Си в 1972-м, Питон в 1991-м, Java (первый публичный релиз) в 1996-м.

Я научился программировать в самом конце 80-х; как и многие в то время, я сначала научился писать на Паскале (и много работал в Turbo Pascal, потрясающе быстрой и удобной для того времени - да и для нашего, если подумать! - интерактивной среде), и только пару лет спустя перешел на Си. Время от времени задумывался о сравнительной популярности этих языков. Если вас тоже интересует этот вопрос, то одним из важнейших исторических документов, который и сейчас интересно перечитать, это Why Pascal is Not My Favorite Programming Language (1981) Брайана Кернигана.

Не все, о чем пишет Керниган, одинаково важно, и мне кажется, что его критическое эссе не дает достаточно полного представления о том, насколько Си и Pascal в те годы были на самом деле похожи - сходств намного больше, чем различий, если сравнивать с другими популярными тогда языками. Мне кажется, что наиболее существенными причинами того, что к середине 90-х Паскаль почти полностью перешел в нишевый статус (да, я помню про Дельфи, но это исключение, которое подтверждает правило) была относительная гибкость Си, легкость, с которой по сравнению с Паскалем в нем можно нарушать абстракции, и благодаря этому - то, как Си естественным образом был и системным языком, и языком для приложений более высокого уровня. Ну и C++ подключился в какой-то момент. Как-то так.
СсылкаОтветить

Comments:
Страница 1 из 2
<<[1] [2] >>
[User Picture]From: french_man
2021-04-27 10:22 pm
Наверное, я не стал программистом потому, что Паскаль был единственным языком, который мне нравился.
(Ответить) (Thread)
[User Picture]From: occuserpens
2021-04-27 10:43 pm
По смутным отдаленным вопспоминаниям, Паскаль был какой-то нециничный, чем он мне сразу не понравился :)
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: spamsink
2021-04-27 10:33 pm
В конце 70-х — начале 80-х Паскаль с минимумом модификаций: функцией REF (аналог унарного &) и PTR (аналог каста к (void*)), а также аналога ассемблерной вставки и пары syntactic sugar мелочей вовсю использовался в СССР как системный язык (аналога varargs не нажили, правда).

Основное отличие Паскаля от Си, которое его и сгубило — это не относительная трудность нарушения абстракций, а полное отсутствие модульности в стандартном языке.
(Ответить) (Thread)
[User Picture]From: curious_me_007
2021-04-27 11:02 pm
Несколько лет в 90-е работала с системой (дописывала ее), которая была написана на специфической версии риал тайм Паскаля. Как же красиво она была сдизайнирована по модулям. До сих пор вспоминаю с удовольствием.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: benjamin_vn
2021-04-27 10:36 pm
Одной из причин, почему я так и не стал программировать на C, были эти дурацкие фигурные скобки. Ужасно меня раздражали даже просто при рассматривании кода.
(Ответить) (Thread)
[User Picture]From: occuserpens
2021-04-27 10:40 pm
[наиболее существенными причинами того, что к середине 90-х Паскаль почти полностью перешел нишевый статус (да, я помню про Дельфи, но это исключение, которое подтверждает правило) была относительная гибкость C, легкость, с которой по сравнению с Паскалем в нем можно нарушать абстракции, и благодаря этому - то, как C естественным образом был и системным языком, и языком для приложений более высокого уровня.]

Никому и в голову не пришло написать оперaционку на Паскале, вот в чем дело, ИМО.
(Ответить) (Thread)
[User Picture]From: spamsink
2021-04-27 10:46 pm
И правильно, что не пришло. Разумные люди пишут операционки на языках, позволяющих раздельную компиляцию модулей.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: alta_voce
2021-04-27 11:13 pm
В начале 80-х? Я тоже!
(Ответить) (Thread)
From: (Anonymous)
2021-04-27 11:23 pm
самое мерзкое, что мы приобрели при повальном переходе на С -- это условие в круглых скобках

казалось бы обилие круглых скобок и так мешает чтению любых выражений, но нет, чтобы не писать then после if и do после while заставляют навешивать ещё пару скобок

в результате невинные выражения типа (a && (a[b] == c)) || !d становятся нечитаемыми: ((a && (a[b] == c)) || !d)

а поезд уже не остановить, и джава и джаваскрипт переняли эту гадость, и даже некоторые питонисты тоже умудряются так писать, и SQL-щики тоже в своих CASE-WHEN ...
(Ответить) (Thread)
[User Picture]From: archaicos
2021-04-27 11:31 pm
Можно отделить внешние скобки пробелами. Также можно разбить выражение на несколько коротких или выровнять чтобы подчеркнуть структуру.
(Ответить) (Parent) (Thread)
[User Picture]From: yyi
2021-04-28 02:05 am
мне казалось что Паскаль неплох для обучения программированию, хотя потом стоит еще несколько языков с другими парадигмами освоить. ну и работать лучше на других языках (в зависимости от вкуса и цели) — возможно совсем уже третьих ;)
(Ответить) (Thread)
[User Picture]From: shadow_ru
2021-04-28 03:41 am
Мне лично никогда не нравилась эта попытка Паскаля усидеть на двух стульях. Мне всегда казалось, что либо лучше сразу учить на "промышленном" языке вроде C, Python, Java, C#, либо сначала на очень простом и сугубо академическом вроде Scheme, а потом всё равно на "промышленном".
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: pulkin
2021-04-28 02:09 am
Хе-хе, я в резюме пишу n лет на разработки на компилируемом языке со статической типизацией )
(Ответить) (Thread)
[User Picture]From: kray_zemli
2021-04-28 02:43 am
Была ещё какая-то модула-2, но полностью прошла мимо меня.
(Ответить) (Thread)
From: (Anonymous)
2021-04-28 04:43 am
bullshit
(Ответить) (Parent) (Thread)
[User Picture]From: livelight
2021-04-28 05:22 am
На первом курсе у нас практиковался холивар C vs Pascal. Принадлежность к той или иной стороне зависела обычно от того, с чем человек уже был знаком заранее. Я к тому моменту хорошо знал C, а учили нас в первом семестре на Pascal.
(Ответить) (Thread)
From: (Anonymous)
2021-04-28 05:55 am
На русском грамотно писать Си, а не букву лат. Ц

См. википедию к примеру.
(Ответить) (Thread)
[User Picture]From: avva
2021-04-28 06:13 am
Спасибо, сейчас исправлю.
(Ответить) (Parent) (Thread)
[User Picture]From: ran_khar
2021-04-28 05:59 am
А я вот с Алгола 60 начинала. Хоть команды М222 не пришлось.
(Ответить) (Thread)
[User Picture]From: sleeping_death
2021-04-28 06:22 am
Хочешь многофункциональный UI - делай его в делфи. это не относится напрямую к языку, но так получилось, что именно на object pascal написано максимальное количество визуальных библиотек.
(Ответить) (Thread)
[User Picture]From: gianthare
2021-04-28 07:33 am

Отличная фраза из статьи Кернигана: I found relatively little use for pointers.
Я понимаю, он имеет в виду конкретно пойнтеры в паскале конкретно в той программе, что он писал. And yet...

Я не помню проблем с фиксированным размером стрингов (да и массивов тоже, хотя объявления массивов выглядят знакомо). Наверное, я писал не на стандартном паскале.

(Ответить) (Thread)
[User Picture]From: riki_koen
2021-04-28 10:34 am
«к середине 90-х Паскаль почти полностью перешел в нишевый статус (да, я помню про Дельфи, но это исключение, которое подтверждает правило


Извините, что придираюсь к словам, но:
* какое правило подтвержает исключение [Дельфи]?
* каким образом оно [исключение] это делает?

(Заранее простите, не хочу никого обижать, но накипело.)
(Ответить) (Thread)
[User Picture]From: livelight
2021-04-28 01:01 pm
Очевидно же! Если бы не было исключений в этом великом вымирании продуктов на Паскале, то Паскаль бы совсем кончился. А выжившие исключения как раз таки и занимают свои ниши, подтверждая правило, что Паскаль перешёл в нишевый статус!
(Ответить) (Parent) (Thread)
Страница 1 из 2
<<[1] [2] >>