В детстве (ну, то есть - в детстве. Лет в 10) я читал
Charles Wetherell's "Etudes for Programmers". Фраза о реализации
игры "Жизнь" меня вгоняла в ступор : "Многократный просмотр большого массива для вычисления нового поколения - это тривиальный подход, программистская мысль должна найти более эффективное решение". И : "Что произойдёт с колонией если она выйдет за границы обрабатываемого поля? Возможно вы захотите попробовать какой-нибудь алгоритм отслеживающий только занятые клетки."
Каждый раз когда я пытался представить это, мозг раздувался от напряжения но в итоге бессильно отступал. А ведь из книжек про Модулу-2 и паскаль я уже знал как минимум про linked lists - но осиливал додуматься только до каким-то образом динамически расширяемого массива. А всё потому, что никто вовремя не дал по рукам
Кнутом, я думаю.
Вообще, бейсиковое мышление это такая штука от которой избавляются долго и мучительно. Паскаль лишь немного лучше. Я бы бейсику (а не всяким вонючим черепашкам лого) учил в первом-втором классе, а дальше сразу руби или петон. Хотя можно начинать с "тупорылого" джаваскрипта типа как писали в 90-х, а потом показывать как на самом деле на нём можно. Ну и в ВУЗе уже, как обычно - "забудьте всё что знаете", и вот вам лисп.
Проблема даже не в парадигме. А в том что, например, хэшмапы и листы с итераторами, работу со строками, да блин printf элементарный, лучше бы сразу воспринимать как примитивы. Желающие на факультативе отдельно учатся их эффективно реализовывать.
Да, а про Life я задумался сегодня по дороге на работу.
( Первая мысль: )