Шел 2000 год, я был студентом инженерного дела в третьем семестре, изучая Структуры данных как один из основных предметов. Как обычный скамейщик запасных, я не обращал внимания на лекцию и планировал что-то важное с одним из друзей, сидящим рядом со мной.

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

Когда я закончил писать код, практически весь ряд передовых сказали: «это неправильно». Я снова посмотрел на доску, проверил декларацию, инициализацию и еще раз прогнал код всухую. Не хватало одной точки с запятой, я исправил. Вот и все. Ошибок больше нет.

Тем не менее лидеры скамейки запасных были единодушны в том, что я был неправ. Одна девушка любезно передала мне учебник. И просматривая код учебника, я понял, что он цитирует неэффективный код - вместо прямого получения адреса следующего узла он скопировал сохраненный адрес в следующий узел . Приведенный код не был неправильным, но он был не только излишне многословным, но и переводился в более медленную программу.

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

Я спросил одного из студентов, сидящих в первом ряду: «Вы знаете адрес?». Он ответил утвердительно.

«И я уверен, что регистратор колледжа знает ваш адрес». Да еще раз

«Итак, если ты передо мной, есть ли какая-то логика, чтобы регистратор колледжа узнал твой адресНЕТ

Та же аналогия объясняет здесь мою логику кода. К моему ужасу, оппоненты ответили: учебник правильный. Еще пятнадцать минут были потрачены на попытки убедить, но тщетно.

Наконец мой учитель спас меня: «Sarvex, ваш код может быть правильным, но какой смысл, если экзаменатор не может его понять». Тогда я не понимал этого утверждения, но осознал его смысл на выпускных экзаменах, когда получил 49 баллов из 100. Это была ошибка системы образования. Я хотел бросить инженерный колледж, но снова возобладал здравый смысл и сказал мне, чтобы я не торопился и просто проходил через систему.

Помимо неэффективного кода, книга была прекрасна, по крайней мере, она не была полной катастрофой, как одна из других книг - «Let Us C Яшаванта Канеткара ». Это был учебник для нашего курса программирования на языке C. И эта книга была самым большим злодеянием, которое мне пришлось пережить во время обучения.

Автор живого проспекта (брошюры) по Turbo C. Вопросы в конце любой главы в основном основывались на неопределенном поведении, и правильным ответом всегда была реализация Turbo C . В книге неопределенное поведение соотносится с взрывом монитора. Я уверен, что этот автор никогда не знал о книге Стандарты языка программирования C, не говоря уже о том, чтобы читать ее.

Программирование Интервью на этом этапе было хуже, каждый интервьюер в Индии был очарован книгой и любил задавать вопросы из нее. Когда мне задали один из этих вопросов, мне захотелось ответить: «Ты хочешь правильный ответ или Яшвант Канеткар? Потому что они разные »

Кто-то из языковой группы C получил эту книгу, и долгое время индийские программисты на языке C были посмешищем. Потребовалось много времени, чтобы убедить, что не все в Индии это читают!

Тем не менее, эта книга имела огромный успех, и я уверен, что где-то эта книга все еще является обязательным учебником.

На другом конце спектра - замечательная книга Дональда Кнута Искусство программирования. Автор начинает книгу с активной награды за каждую ошибку в книге. На задней обложке есть цитата Билла Гейтса - Если вы понимаете это, пришлите нам свое резюме. Увы, я не видел, чтобы кто-нибудь прописал это как учебник. Автор запланировал семь томов, но не смог их закончить. Для полного раскрытия - я прочитал книгу, не смог закончить, брал интервью у Microsoft, проработал там около пятнадцати месяцев.

У нас есть книга (Искусство программирования), учебник (Структуры данных с использованием C и C ++) и абсолютный мусор (Позвольте нам C). И мне интересно, нужно ли нам больше доказательств того, что учебники нас подвели?