Почему не Pascal

В школах и вузах России до сих пор много где преподают алгоритмы / программирование на Pascal. Это плохо. До того, как объяснить, почему плохо, объясню, почему до сих пор.
Во-первых, у образования нет денег. Школы и вузы нищие. Потому никакого обновления парка машин, никакой смены программы (как жили на советской, так и живут с лёгкими переделками), никаких новых учителей информатики. Уж тем более никакой массовой закупки лицензий.
Во-вторых, отечественное образование — замкнутый на себя мир, в котором царицами тётки с бигудями из ГорОНО, а богами седовласые дядьки из министерства. В массе своей их волнует вовсе не образование, уж тем более не какой-то там мировой прогресс. Были бы бумажки вовремя заполнены, карманы шелестели, ну и регалии звенели.
В-третьих, много где работает принцип “деды наши на Pascal учились, мы учились, вот и вам сойдёт”. Попробуй объясни ностальгирующему по молодости мужику, почему то, что он задорно делал 25 лет назад на уроках информатики (мечтая о ясноглазой практикантке пединститута), в 2017 году уже олдовенько примерно так же, как пятидюймовые дискетки.
В-четвёртых, система образования готовит не программистов. Это старая проблема, о которой говорят и пишут с 90-х. Опять же, наследие СССР, в котором делали умеющих программировать математиков и физиков, но даже не собирались делать программирующих программистов. Отсюда следующий блок эссе.

Почему плохо? Потому, что…
Программисты не используют Pascal. Если вы пойдёте работать в какой-нибудь ГосЦНИИПрорабПроект, вероятно, будет Delphi, да, но… кхм.
Школьники и студенты России тратят самое горячее для головы время на то, что им никогда нигде не пригодится. А если школьник или студент толковый, он решает узнать чуть больше. Тут его ждёт некоторое разочарование.
Кто тут у нас считает, что Pascal хорош для преподавания алгоритмов? Ну айда в магазин (или на трекер). Стивенс, Скиена, Лафоре, Клейнберг, Тардос, Дасгупта, КЛРШ, Седжвик… ой, не Pascal. Кнут вообще свой язык сделал, потому в сторонке. Вовсю в ходу либо псевдокод (который тоже не на базе Pascal, к слову, давненько уже используется), либо Python/Java/C++.
Может, школьник или студент прикоснётся к новинкам индустрии (да даже старинкам)? Хм… Что у Pascal с парадигмами вроде OOP или FP? Виртуальные машины? Сборка мусора? Асинхронность? Многопоточность? JIT? Подозреваю, что фанаты что-то прикрутили в FreePascal, но почему бы не получить всё это из коробки без костылей?
Хорошо, школьник или студент на ближайшем заборе прочитал о том, что в природе существуют штуки вроде NoSQL. Упс, а драйверов нет даже к MongoDB. Года три-четыре назад вроде как пытались делать, а потом забили. Бяда…
Может, лет до тридцати человек яростный дурак, потому может осилить только Pascal? Ну… На Amazon в топе продаж учебники типа “Python for Kids” и “JavaScript for Kids”. У них вот чёт получается.
Статьи в журналах, конференции, видео на YouTube, бурление на форумах. Могу продолжать бесконечно. Трижополлиард мест, где нет Pascal и уже не будет.

Да и с позиции именно обучения у меня претензии.
Алгоритмы сами по себе нафиг не нужны, если не готовить философов, потрясённых красотою концепций. Если делаете программистов, алгоритмы должны применяться. В идеале к чему-нибудь реальному.
Ассоциативный массив? Отлично. Давайте на нём сваяем примитивное кеширование перед базой данных. Сначала без кеширования, потом с кешированием, обстреляем всё и увидим, как няшно же.
Графы? Тоже неплохо. Давайте загрузим граф связей друзяшек из Twitter или Facebook, проанализируем связи и заодно выгрузим в Excel. Нет, никак? На Pascal это займёт год?
Может, братве и сестртве с горящими глазами подсунуть веселящую задачу написать свой язык программирования (да тот же Lisp)? На базовом уровне это задача для школьников по нынешним временам, да и реально весёлая. На Python или JavaScript решается достаточно легко, заодно можно подсунуть тему автоматов и алгоритмов на строках. Как там у Pascal со сроками решения?

Искренне не понимаю, как можно быть сторонником преподавания чего-либо на базе этого маргинального языка. Он был хорош до 90-х. Потом появились мобильные телефоны, интернеты, языки следующих поколений, автомобили Tesla и даже пиво “Балтика” (дотошным — 1992 год).
Как если бы вас учили вождению на Запорожце. Важны же принципы, да? Запорожец тоже машина. Четыре колеса. Двигатель. Дверцы хлопают. Очень простой. Вон ща из гаража в стотысячный раз выкатим, пыль смахнём и айда на улицы, из трубы попукивая. А на KIA, Daewoo и Hyundai пусть мажоры учатся.
Как-то так. В топку Pascal, короче.

Дональд Кнут

Не все знают, кто такой Дональд Кнут. Надо, чтобы все.
Кнут — автор классического “Искусства программирования”. Труд большей части его жизни (издаётся с 1968 года по 2015 год). Учебник / справочник алгоритмов, разобранных до мельчайших запчастей (и математически подкреплённых), снабжённый мегатонной упражнений. На текущий момент англоязычный оригинал в издании занимает 4 полных тома с дополнением — 3К+ страниц.
Вы обязаны читать / решать Кнута, если:

  • Хотите стать Б-гом алгоритмической разработки.
  • Хотите действительно понять какой-либо алгоритм [из тех, что описаны в ИП].
  • Хотите быть полноценным программистом.
  • Хотите получить перед глазами планку, на которую стоит взбираться.

Наконец, некоторые главы можно просто читать, возвращаясь к ним по мере профессионального развития.


Если Кнут настолько полезен, почему о нём потихоньку [в xUSSR] забывают? Не напоминают же про воду, воздух и колбасу. Фигня в том, что…
Во-первых, каждое новое поколение разработчиков всё менее нуждается в знании алгоритмов. Если вы получаете хорошее образование, обязательно узнаете и про Кнута. Если не получаете, оно вариативно. Научитесь прикладывать библиотеку к компоненте, подхватите из мануалов несколько интересных слов, с десяток раз споткнётесь об оптимизацию чего-нибудь. Но субъективно кажется, что только один из тысячи разработчиков сейчас сталкивается даже с теоретической нуждой в реализации собственных алгоритмов сортировки, например. Отсюда и забвение.
Во-вторых, Кнут не Мурзилка. Иные страницы надо раз двадцать прочесть, чтобы дошло. Современный вектор обучения — он развлекающий. Авторы танцуют, поют, кидают шарики и обливают читателей шампанским. Читатели тоскуют в потолок и мычат “многа букаф… чёт я ни асиливаю… а есть видос минут на десять?” Кнут (как и некоторые другие условно его “академического поколения”) не про это. Он по мере сил разбавляет тексты, но всё же нацелен на того, кто не ленивый, не дурак и кому абзац с формулами не выносит читательскую способность на месяц вперёд.
В-третьих, он дорого стоит. Со всеми скидками сейчас четыре переведённых тома влетят в 10К рублей. Это автоматически вышибает из потенциальных клиентов тех же студентов — самую целевую аудиторию Кнута. Когда же студент находит работу (возможность оплатить дорогую профессиональную библиотеку), продолжение “академической” учёбы в приоритетах заметно понижается. Йоу, чувак, у тебя дедлайн, но забей и выполни пять упражнений на комбинаторику, ага.
В-четвёртых, его не рекламируют. “Искусство программирования” занимает нишу, которая осваивается теми, кто знает о том, что ИП существует. Если книги нет в баннерах, в обзорах, в блогах, в почтовом спаме, на обложке Playboy, то в современном медиа-мире книги нет. При этом можно быть одной из “the best twelve physical-science monographs of the [XX] century by American Scientist”. Всё чаще при упоминании Кнута слышу “а кто это?”

Хоть скачайте. На трекерах есть. Но в бумаге он читабельнее.
И это… Не запускайте голову. Нельзя, чтобы болото цвело. А Кнут — отличное лекарство от такой фигни. На всю жизнь хватит.