bash.im ithappens.me zadolba.li
4608

Антииндийский код

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

История эта произошла со мной, когда я учился на первом курсе МИРЭА. Очередная лаба по программированию: матрица N×N с рандомными числами, задающими расстояние, в которой надо было провести расчет кратчайшего пути из {1; 1} в {N; N}. Первая версия программы была напичкана циклами и массой условий. Работала быстро — ну, насколько это позволял третий «пень». Тётечка-преподаватель, оценив код, сказала, что надо бы оптимизировать. Почесав репу, я изрядно переписал код: количество циклов сократилось вдвое, а условий — втрое. «Всё равно много», — сказала тетечка.

Десятая версия выглядела примерно так:

i := 0;
while ((48 условий) and (i <= N*N)) do inc(i);

Только после этого я получил зачёт и фразу, которая вьелась мне в мозг: «Памяти много не бывает!»