Чем плох Паскаль?
От: Cicero www.ya.ru
Дата: 13.06.19 14:54
Оценка: +2 -3
Очень часто это слышу: Паскаль(иногда конкретизируют: Turbo Pascal) не подходят для обучения программированию.
Обычно аргументов нет. Самый "сильный" аргумент — это несовременный!

Давайте обсудим и выработаем обоснованные аргументы.

Во первых нужно конкретизировать:
для обучения где? в общеобразовательной школе? в ВУЗе? в ВУЗе которые готовят именно программистов?
как первый язык программирования? как второй?

Выскажу свое мнение:
Для обучения в школе как первый язык программирования с которым человек встречается Паскаль очень даже подходит.
Причем если не позволяет "железо" более современные версии вполне подойдет и Turbo Pascal 5.5.
На Turbo Pascal вполне можно обучать и элементы ООП.

Почему:
Говоря двумя словами: потому что в Паскале минимум неоднозначности синтаксиса.
ИМХО это научит контролировать код более строго.
O tempora! O mores!
Re: Чем плох Паскаль?
От: Klikujiskaaan КНДР  
Дата: 13.06.19 15:14
Оценка: +4 :))) :))
Здравствуйте, Cicero, Вы писали:

C>Почему:

C>Говоря двумя словами: потому что в Паскале минимум неоднозначности синтаксиса.
C>ИМХО это научит контролировать код более строго.

В лиспе еще меньше + SICP и HTDP.
А паскаль не нужен по причине того, что после него надо учить другой ЯП для подключения пупса к станку.
Re[2]: Чем плох Паскаль?
От: Слава  
Дата: 13.06.19 15:24
Оценка:
Здравствуйте, Klikujiskaaan, Вы писали:

K>для подключения пупса к станку.


Простите, что?
Re[3]: Чем плох Паскаль?
От: TMU_1  
Дата: 13.06.19 15:48
Оценка: +8
K>>для подключения пупса к станку.
С>Простите, что?



Имеется в виду, очевидно, что паскаль — не промышленный язык. Имеется в виду, очевидно, что после школьного курса джавы, к примеру, человека можно было бы ставить к станку (здесь сатанинский смех).
Re: Чем плох Паскаль?
От: AlexRK  
Дата: 13.06.19 16:45
Оценка: 4 (2) +11 -1
Здравствуйте, Cicero, Вы писали:

C>Очень часто это слышу: Паскаль(иногда конкретизируют: Turbo Pascal) не подходят для обучения программированию.

C>Обычно аргументов нет. Самый "сильный" аргумент — это несовременный!

Паскаль ничем не плох. Он прост и строг, для начального обучения программированию это очень хорошие качества.
Re: Чем плох Паскаль?
От: Джеффри  
Дата: 13.06.19 17:10
Оценка: +7
Здравствуйте, Cicero, Вы писали:

C>Давайте обсудим и выработаем обоснованные аргументы.


Вставлю свои 5 копеек. Кстати, я сам начинал учить программирование с Турбо Паскаля и у меня остались самые теплые воспоминания о нем

Из плюсов:

* Типичный императивный язык программирования, можно и в процедурное, можно и в ООП.
* Простой синтаксис, который позволяет новичку абстрагироваться от некоторых низкоуровневых аспектов (например, работа со строками организована намного проще, чем в С) и сосредоточиться на алгоритмах программы. Но в то же время при необходимости к ним тоже можно обратиться — указатели, динамическое выделение памяти.

Из минусов:

* Не С-подобный синтакс — если человек продолжит дальше учить программирование, ему придется отвыкать от begin/end, case, := и т.д. Не критично, мне в свое время наоборот помогло понять, что синтаксический сахар это одно, а концепции, которые лежат в основе языков — это другое. Но некоторых может раздражать.
* Имижд старого языка и, как уже отмечали выше, его тупиковость. Т.е. если человек продолжит профессионально учить программирование дальше, то ему придется учить "настоящий" язык. Так может лучше начать с С или даже сразу с базового С#, не углубляясь в дебри сразу? Если человек не будет профессионально программировать, может быть все таки выучить что-то более прикладное? Например, Питон или тот же VBA для продвинутой работы с Эксель.
* Нет возможности легко разрабатывать UI, пусть даже и очень простой (Turbo Vision не предлагать). Иногда для ребенка может быть намного интересней сделать программу с окошком и кнопкой, похожую на реальное приложение, чем делать консольную утилиту с выводом в командную строку.
* Наследие MS DOS — не знаю можно ли сейчас вообще легко запустить IDE на новых версиях Виндоус, объяснять почему длина имени файла не может быть больше 8 символов, возиться с кодировками и т.д.
Re: Чем плох Паскаль?
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 13.06.19 17:18
Оценка: +5 -1
Изучая промышленный язык, школьник может понемногу участвовать в интересных проектах и использовать огромную общедоступную базу знаний. Изучая Паскаль, он может только копировать с доски.
Ce n'est que pour vous dire ce que je vous dis.
Re: Чем плох Паскаль?
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 13.06.19 17:30
Оценка: +5
Здравствуйте, Cicero, Вы писали:

Для изучения нужен язык на котором можно решать реальные задачи. В моем случае сначала был фортран для решения задач по математике и физике, потом бейсик и паскаль на ДВК 2, для задач на кафедре обогащения (руд цветных металлов). Выбор пал на паскаль из-за скорости выполнения и самого языка. Затем турбо-паскаль, Delphi, 1C, C#.
Я это к чему. Просто изучать язык не имеет смысла. Но например TypeScript в составе ангулара или C# в составе Unity или MonoGame
То есть ученик реально видит для чего нужно программирование и заражается им
и солнце б утром не вставало, когда бы не было меня
Отредактировано 13.06.2019 17:33 Serginio1 . Предыдущая версия .
Re: Чем плох Паскаль?
От: vsb  
Дата: 13.06.19 17:40
Оценка: -1
Паскаль плох тем, что не применяется на практике. Лет 15 назад ещё как-то применялся в дельфи, сейчас совсем сдох. А в остальном хороший язык, да, особенно если ограничиваться оригинальным подмножеством, а не турбо-паскалем. Если нужно учить человека программированию всерьёз, например в университете, паскаль это хороший вариант.
Re[2]: Чем плох Паскаль?
От: AlexRK  
Дата: 13.06.19 17:41
Оценка: +3 -2
Здравствуйте, Джеффри, Вы писали:

Д>* Не С-подобный синтакс


Ряд современных языков не имеет Ц-подобного синтаксиса — Rust, Swift, Kotlin, Scala. В общем, спорный момент.

Д>* Имижд старого языка и, как уже отмечали выше, его тупиковость. Т.е. если человек продолжит профессионально учить программирование дальше, то ему придется учить "настоящий" язык.


Верно.

Д>Так может лучше начать с С или даже сразу с базового С#, не углубляясь в дебри сразу?


Не лучше. В сишарпе нельзя не углубляться в дебри (пусть даже они там и не такие дебристые, как в Ц++).

Д>Если человек не будет профессионально программировать, может быть все таки выучить что-то более прикладное? Например, Питон или тот же VBA для продвинутой работы с Эксель.


За этим надо идти в ПТУ, а не в ВУЗ.

Д>* Нет возможности легко разрабатывать UI, пусть даже и очень простой (Turbo Vision не предлагать). Иногда для ребенка может быть намного интересней сделать программу с окошком и кнопкой, похожую на реальное приложение, чем делать консольную утилиту с выводом в командную строку.


В целом да, хотя есть лазарус, вроде в нем лепить можно, но сам не пробовал.

Д>* Наследие MS DOS — не знаю можно ли сейчас вообще легко запустить IDE на новых версиях Виндоус, объяснять почему длина имени файла не может быть больше 8 символов, возиться с кодировками и т.д.


FreePascal работает на любых платформах и полностью совместим с трубопаскалем.
Re: Чем плох Паскаль?
От: Слава  
Дата: 13.06.19 18:17
Оценка: +2 -1
Здравствуйте, Cicero, Вы писали:

C>Очень часто это слышу: Паскаль(иногда конкретизируют: Turbo Pascal) не подходят для обучения программированию.


Моей основной претензией к Паскалю было отсутствие возможности самостоятельно сделать подобие Read/Write с переменным числом аргументов. Си это мог. Дальше, уже после знакомства с winapi CreateFile и сишным файловым API (даже в Borland C под DOS), меня очень раздосадовало отсутствие в файловых функциях паскаля всех возможностей создания-открытия файлов с учётом их присутствия, вроде CreateIfNotExists, CreateNew. То есть, операционка это может, даже DOS пресловутый, а в Паскаль это почему-то не завезли.

Для обучения программированию я бы предложил брать Аду. Тот же паскаль, только вполне подойдёт для написания чего угодно, работающего поверх чего захочешь.

Вот уж язык — промышленней некуда, и плюсы пресловутые в некоторых случаях до сих пор с Адой сравнимы только условно. Там, где начинается всякая низкоуровневая высоконадёжная жесть, вместо плюсов берут обычный Си, ну а Ада-то будет побогаче си. И Ада точно так же может влезть в 64 байта на каком-нибудь особо мелком чипе. Для больших систем Ада тоже даёт больше возможностей, чем голый Си.
Re: Чем плох Паскаль?
От: elmal  
Дата: 13.06.19 18:53
Оценка: +7 -3 :))
Здравствуйте, Cicero, Вы писали:

C>Очень часто это слышу: Паскаль(иногда конкретизируют: Turbo Pascal) не подходят для обучения программированию.

C>Обычно аргументов нет. Самый "сильный" аргумент — это несовременный!
Аргументы:
1) Многословный. Чтобы написать простейшую вещь, нужно очень много кода;
2) Нет нормального современного IDE. Нужны средства автоматического рефакторинга, удобной навигации по коду, поиск зависимостей, легкие быстрые переименования, выделения функции, метода, интерфейса, переменной и т.д;
3) Низкоуровневый. Нет нормальных удобных библиотек. Все пиши на низком уровне, сам, на массивах и указателях. В итоге имеем, что за неимением нормальных библиотек, новички для решения простейших задач городят тормозные громоздкие спагетти велосипеды, с квадратичной сложностью вместо константной;
4) Не поддерживаются концепции, которые современные программисты должны знать. Функциональная парадигма, распараллеливание, конкуррентность, асинхронность, реактивное программирование, итераторы, метапрограммирование — сейчас это база, которую нужно знать даже новичкам. И легче всего это делать сверху вниз, сразу прививая нормальный стиль.
5) В современном мире паскаль прививает крайне хреновый стиль программирования. Только недавно сделали возможность объявлять переменные по месту использования;
6) Куча граблей на ровном месте. Юникоды и т.д, приходится воевать с тем, о чем в других языках уже давно не задумываешься.
7) Трудности с написанием нормального современного UI. Набросать формочку и прямо в обработчике кнопки фигачить всю логику — это ни хрена не современный UI. Формируется по умолчанию такой стиль у новичков, что потом их либо хрен будут брать на работу, либо они потратят много времени и сил и переучатся практически с нуля. Сил приходится прикладывать настолько много, что быстрее полного нуля научить заново, чем переучивать того, кто говнокодил десятилетиями. Полюбуйтесь на нашего главного православного, его именно паскаль сгубил, его теперь хрен переучишь, если он не научился программировать на юниорском уровне за 20 лет, хрен он когда научится теперь.
8) Оторванность от современных реалий. Нет нормальной литературы, современных библиотек на все случаи жизни. Вот если тебе нужно какую нидь кластеризацию k means по быстрому сделать, чтоб на видюхе считалось — что, будешь с нуля писать все?
9) Новичкам нужно быстро что то сделать чтобы было красиво. Графику подрубить быстро, текстурочку, чтоб со звуками и т.д. Быстро и просто не получится даже на продвинутых паскалях. Да, будет проще, чем в 80-е годы, но много геморройнее, чем даже на JavaScript. На котором всякие 3d крайне легко делать.
10) Community. Всякие паскали уже все давно забыли как страшный сон. Задашь какой вопрос на форуме — хрен тебе кто ответит, это давно уже не актуально. Будешь на грабли наступать самостоятельно и абсолютно бессмысленно.

Хватит. Язык был неплох для обучения в 80-х годах. Какая то применимость была в 90-е. Уже в двухтысячном от него нужно было держаться как можно дальше, появились языки много лучше. В 2019-м даже мысли не может быть такое использовать для обучения. Еще б бейсик ранних 80-х бы вспомнили, с переменными f1 и строковыми вида $b5, с ограничениями на максимальную длину переменной, с редакторированием по строчкам, со всякими rename, gosub, goto . После таких ужасов прямой путь на ассемблер, чтоб на ассемблере не казалось все так страшно. Вот только ниша ассемблера в современном мире весьма узка, и начинать с него нет никакой необходимости.
Re: Чем плох Паскаль?
От: Cyberax Марс  
Дата: 13.06.19 19:00
Оценка: +4 -3 :)
Здравствуйте, Cicero, Вы писали:

C>Очень часто это слышу: Паскаль(иногда конкретизируют: Turbo Pascal) не подходят для обучения программированию.

C>Обычно аргументов нет. Самый "сильный" аргумент — это несовременный!
Самый сильный аргумент — он просто уродливый.

Если изучать программирование, то есть две цели:
1) Общеобразовательная.
2) Обучение для программистов.

Если цель просто общеобразовательая, то Паскаль тупо переусложнён. В нём есть типы, но нет простых вещей типа удобного вектора и хэш-карты. Есть непонятные ограничения типа объявления переменных в начале, невнятный файловый ввод/вывод и т.п.

Так же нет нормальной современной графики, так что ребёнок нельзя написать красивую анимированную программу. Нет нормальной руссификации и т.д. Среда разработки по нынешним меркам просто убога — школьники пишут простыни вообще без отступов.

Для обучения программистов всё вышесказанное, плюс к этому добавляется железный барьер — работа с динамическими структурами вообще совсем никакая. Указатели в Паскале придумали какие-то извращенцы. Каких-либо полезных библиотек под Паскаль тоже нет — вывести JPEG-изображение или добавить звук в программу просто не получится.

В современном варианте было бы лучше что-то типа Питона с графической средой. Или как вариант: https://www.apple.com/swift/playgrounds/ — лучшее, что я вообще видел для детей.
Sapienti sat!
Re[2]: Чем плох Паскаль?
От: Слава  
Дата: 13.06.19 19:10
Оценка:
Здравствуйте, Cyberax, Вы писали:

C> работа с динамическими структурами вообще совсем никакая. Указатели в Паскале придумали какие-то извращенцы.


Что там не так с указалями? Арифметика указателей есть, кастуешь указатель к integer и стреляй себе в ногу делай с ним чего хочешь, потом обратно кастуй. Linked list сделать можно, дерево — тоже.
Re: Чем плох Паскаль?
От: _ABC_  
Дата: 13.06.19 19:25
Оценка: +3
Здравствуйте, Cicero, Вы писали:

C>Почему:

C>Говоря двумя словами: потому что в Паскале минимум неоднозначности синтаксиса.
C>ИМХО это научит контролировать код более строго.
А почему ты решил, что это важнейшая задача первоначального обучения в школе?

Может быть ты сначала перечислишь нам список тех задач, которые должно решить первоначальное обучение программированию в общеобразовательной школе? А уж там можно решать, подходит ли Турбо Паскаль, или нет?

Вдруг среди важных задач совершенно внезапно стоит такая мелочь, как не отпугнуть от программирования среднестатистического современного ребенка... Не, ну вдруг?
Re: Чем плох Паскаль?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 13.06.19 19:26
Оценка: 4 (3) +6
Здравствуйте, Cicero, Вы писали:

C>Почему:

C>Говоря двумя словами: потому что в Паскале минимум неоднозначности синтаксиса.

Это шутка такая, да?

Точку с запятой можно ставить перед end и после begin, а можно не ставить. Но нельзя — перед else. Очень логично, да.

Одиночные предложения можно заворачивать в begin-end, а можно не заворачивать. Сначала рассказываем, как ставить одно предложение после if или внутри while, а потом переучиваем на то, что их надо ставить чуть ли не всегда.

Зато repeat — until почему-то само образует блок. "Дети, это невозможно понять, это надо запомнить".

Всякие read/writeln могут иметь первым параметром файл, а могут и не иметь. Следите за руками и не удивляйтесь, что вообще перегрузки функций нет, а тут она почему-то есть. Что не позволено простому быку, позволено Юпитеру. Кстати, что это за синтаксис такой write(a:3:2), и почему он работает только тут?
Ещё и функции с переменным числом параметров вдруг самозародились? (Я про Паскаль, а не про всякие поздние Delphi.)

Синтаксис цикла — for i := 1 to 10, например. Сначала ":=" несловесной лексемой, затем почему-то "to" — словесной. А назад — downto. Кстати, если я хочу шаг 2? "Петрику, слухай пісню про комбайн"?

if a=1 or b>0... ой, не то получилось. Надо подвыражения в скобки заключать, потому что у or почему-то приоритет выше.

Идентификаторы регистронезависимые. Потом долго пытаешься понять, почему boo и Boo начали неожиданно путаться. И не надо рассказывать, что плохое именование. Тот, кто только учится, в своём коде не успевает за эти следить.

И это только то, через что я сам "продирал" своих учеников, когда им было необходимо научиться этому кошмару.

C>ИМХО это научит контролировать код более строго.


Сказки-то какие, страсть

Чесслово — по сравнению с Паскалем даже Go лучше. И вот там, кстати, настоящая осмысленная строгость (порой даже слишком).

Вирт, кстати, часть этих огрехов Pascal исправил, создав Modula. Но упёртым баранам из всяких Borland было на это плевать.
Re[2]: Чем плох Паскаль?
От: Слава  
Дата: 13.06.19 19:32
Оценка: :)
Здравствуйте, netch80, Вы писали:

N>Вирт, кстати, часть этих огрехов Pascal исправил, создав Modula.


Вы забыли ещё про синтаксический оверхед написать.
Re: Чем плох Паскаль?
От: velkin Россия  
Дата: 13.06.19 19:38
Оценка: +2
Здравствуйте, Cicero, Вы писали:

C>Обычно аргументов нет. Самый "сильный" аргумент — это несовременный!


Недостатки языка Pascal:
1. касательно парадигм программирования — только процедурное программирование
2. касательно библиотек алгоритмов — практически отсутствуют

ВУЗы правда применяют и гораздо более худшие варианты обучения, например, использование C++ до стандарта ISO/IEC 14882:1998 года. Вот где настоящее вредительство и издевательство над учащимися.

Но самый большой недостаток на мой взгляд это учебная программа по Pascal. Обычно она заканчивается изучением синтаксиса языка на примерах сильно отличных от реальности. Можно ли сделать что-либо полезное на Pascal? Да, можно, но этому учить не будут. Напротив, после подобного обучения может создастся ощущение бесполезности данной реализации языка.

В принципе Structured Text имеет паскалеподобный синтаксис, потому нельзя сказать, что изучение Pascal не будет иметь применение и в реальной жизни. Хотя, когда писал о полезных программах на Pascal, то имел в виду не только промышленное программирование.

Если же говорить о каких-либо особых преимуществах Pascal перед другими языками программирования, то их нет.
Re[3]: Чем плох Паскаль?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 13.06.19 19:53
Оценка:
Здравствуйте, Слава, Вы писали:

С>Здравствуйте, netch80, Вы писали:


N>>Вирт, кстати, часть этих огрехов Pascal исправил, создав Modula.


С>Вы забыли ещё про синтаксический оверхед написать.


Ну тут уже я на нём не настаивал, вопрос спорный. Если речь про то, что begin — end надо было бы заменить на {}, то да, есть такое. Но в линии Modula, Ada сделали иначе — например,

if условие then
  тело
else
  тело2
end


что по-своему тоже неплохо, хотя и заметно иначе. Главное — что скобки обязательны. Скобки типа {} сейчас обязательны в Go, Swift, ещё много где, и это хорошо (для C++ на текущей работе их форсируют через uncrustify).

Если про стиль объявления переменных, то я, наоборот, категорически везде хотел бы видеть

var x: int;

или пусть даже

var x int // Go

чем

int x;

потому что последнее хорошо только в простых случаях, а в сложных оно приводит ко всяким хитровывернутым

typedef int (*foo)(double)[3];

которые ещё надо уметь разобрать "изнутри".

То же про необходимость слов procedure и function (хотя можно было бы всё таки сократить до function, func, fn).

Если про слово div, то опять таки я за принципиальное разделение двух видов деления на уровне синтаксиса.

Собственно из оверхеда остаётся только ":=" вместо "=". Ну да, с простым "=" было бы лучше (а особенно когда в сочетании со всякими +=).
Re[2]: Чем плох Паскаль?
От: Pzz Россия http://pzz.livejournal.com/
Дата: 13.06.19 21:45
Оценка: +3
Здравствуйте, Cyberax, Вы писали:

C>В современном варианте было бы лучше что-то типа Питона с графической средой. Или как вариант: https://www.apple.com/swift/playgrounds/ — лучшее, что я вообще видел для детей.


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