Информация об изменениях

Сообщение Re: Чем плох Паскаль? от 18.09.2019 5:17

Изменено 18.09.2019 8:38 Александр Кузнецов

Re: Чем плох Паскаль?
Здравствуйте, Cicero, Вы писали:

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

C>Обычно аргументов нет. Самый "сильный" аргумент — это несовременный!
Ну, на самом деле, это не самый сильный, это чуть ли не единственный весомый аргумент. Но зато реально мощный.
Паскаль в своё время создавался Виртом в том числе как язык обучения. Глупо после этого утверждать, что он для обучения не подходит. Тут формлально переплюнуть Паскаль могут разве что языки, изначально создававшиеся только для обучения, типа того же Scratch.

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


C>Во первых нужно конкретизировать:

C>для обучения где? в общеобразовательной школе? в ВУЗе? в ВУЗе которые готовят именно программистов?
На самом деле надо делить не по школа/ВУЗ/программисты, а по "не надо будет изучать дальше", "надо будет уметь что-то простенькое склепать" и "надо будет заниматься промышленной разработкой".
Первым на сам язык — фиолетово. Вообще фиолетово. Они в равной степени НЕ будут учить C, Pascal, Basic, Java, JavaScript, Pyton и всё остальное. Единственный момент — пробовать как-то увлечь этих ребят и перевести их хотя бы в "умею склепать что-то простенькое". Но тут точно не пойдёт древний Паскаль. Нужно что-то простое, с возможностью быстро запрограммировать графику и разные визуальные вау-эффекты. Что-нибудь типа Scratch. Тогда есть шансы.
Со вторыми сложнее. Обычно "надо уметь что-нибудь простенькое склепать" очень сильно зависит от конкретного набора задач. Грубо, если постоянно работаешь с фотошопом, то надо ориентироваться на умение писать простенькие плагины, фильтры, батч команды и т.д. Админам нужны скриптовые языки баша, или повершела, а условным бухгалтерам — макросы в экселе. Поэтому я бы в принципе отказался бы от практики "а давайте зафигачим какую-то общую информатику с программированием на "какой-то язык"" в любом ВУЗе. Тут скорее специализированная информатика нужна, а не обобщенная.
А вот с программистами всё гораздо проще, на самом деле. Подавляющее большинство современных языков имеют С-подобный синтаксис, нравится это, или нет. И Паскаль тут для старта обучения, на мой взгляд, не подходит категорически. Да, у него есть заточенные под обучение "плюшки", но все эти плюшки полностью нивелируются необходимостью через 1-2 семестра переучиваться на другой синтаксис. Просто овчинка не стоит выделки.

C>как первый язык программирования? как второй?

Как второй — 100% нет. Ну разве что если первый — Basic ))). Как первый — я своё мнение уже написал.

C>Выскажу свое мнение:

C>Для обучения в школе как первый язык программирования с которым человек встречается Паскаль очень даже подходит.
Ответил выше. Если есть цель подсадить как можно больше народу на печеньки программирования, то лучше что-нибудь типа Scratch. Если "тупо следуем программе", то лучше начинать с С-подобных языков.

C>Причем если не позволяет "железо" более современные версии вполне подойдет и Turbo Pascal 5.5.

Тут другая проблема. Железо в школах худо-бедно обновляется. Но рано или поздно речь заходит про использование графической подсистемы. А у современных компов большие проблемы с разрешением прямого доступа к видеопамяти, прерываниям и т.д. В результате на том же турбо паскале запустить графику нормально невозможно уже лет пятнадцать как (и на Borland C++ 3.1 и иже с ним — аналогично). Нужны спец эмуляторы и прочее, либо переход на что-то типа дельфи.

C>На Turbo Pascal вполне можно обучать и элементы ООП.

ООП на турбо паскале, кстати, довольно примитивен. Да, базовые концепции показать можно, но их и на JS показать тоже формально можно (но не нужно).

C>Почему:

C>Говоря двумя словами: потому что в Паскале минимум неоднозначности синтаксиса.
Да и шут с ней, с неоднозначностью. Проблемы того, что на C можно написать конструкцию вида a > b ? ++c : (d < e) > 0 решаются однократным показом такой конструкции и обещанием "отрывать руки" тому, кто напишет подобное. И всё. С остальными — то же самое. Реальная проблема для старта обучения на С/С++ только одна — возможность случайно нахимичить с памятью. Но и она решаема. Аналогичных проблем для старта на том же C# не знаю в принципе.

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

Поверьте, ничто так не учит контроллировать, например, выход за границу массива, как старый добрый С. В идеале, ещё на 95-98-й винде, где не было контроля за памятью процесса ))) За кодом и утечками памяти начинаешь следить очень быстро )))
Также ИМХО, но цель первого языка программирования не в том, чтобы научиться строго контроллировать код. Его цель — сделать процесс вхождения в программирование максимально простым и понятным и, одновременно, максимально облегчить дальнейшее обучение. У меня есть список "типовых" ошибок студентов, начинавших обучение с C и с C#, и я точно знаю, что части этих ошибок в Паскале у них не было бы (хотя были бы некоторые другие, но я готов согласиться, что их было бы меньше). Но у меня также есть и наглядный пример того, что делают к середине второго курса студенты, которые стартовали с Паскаля, а потом переучивались на C, и что делают те, кто сразу стартовал с C. Разница очень заметна.
Re: Чем плох Паскаль?
Дубляж.