Сейчас так программированию не учат. Обзор книги Пола и Харви Дейтела "Как программировать на C"

Пост опубликован в блогах iXBT.com, его автор не имеет отношения к редакции iXBT.com

Читать про художественную литературу интересно и увлекательно, соглашусь. Однако даже среди «скучных» учебников можно отыскать что-то любопытное. Я бы даже сказал — самобытное. В моём случае речь идёт о книге по программированию на языке C. Авторы попытались угодить новичкам и профессионалам в этой индустрии, снабдив своё произведение обширным читательским инструментарием. Например, в книге полно советов, рекомендаций, упражнений и прочих вещей, заготовленных на каждый случай.


Как программировать на C
Автор: Old Paladin

Как по мне — у них получился весьма добротный самоучитель. Более того, авторы рекомендуют использовать свою книгу не только обучающимся, но и преподавателям. Например, как подспорье (или даже как основу) при составлении учебного материала. Но несмотря на все эти многочисленные достоинства, книга имеет ряд огрехов, с которыми необходимо мириться. И дело не только в переводе технических терминов. Там есть и более не очевидные вещи, как бы сейчас сказали — с нюансом. Мы обязательно рассмотрим их ниже, чтобы вы смогли составить своё собственное мнение о книге.

А сейчас — поехали.

Пара слов об авторах

Учебник примечателен уже тем, что над ним работали сразу два автора. И речь идёт не про классический дуэт в виде двух коллег по цеху, а про родственников: отца и сына.

Отца зовут Харви Дейтел и судя по описанию из его же книги — это очень крутой мужик. Мало того, что он является председателем компании Deitel & Associates, Inc, так он ещё и свыше 40+ лет занимается компьютерными дисциплинами, 20 из которых — преподавание в высших учебных заведениях. А профильное образование для себя этот дядька получил в Массачусетском технологическом институте. И словно бы этого мало, Харви умудрился получить ещё и степень доктора философии в Бостонском университете.

Что касается его работ — то они были переведены на 10+ языков, среди которых числится даже урду (индоевропейский язык), японский и китайский (традиционный и упрощённый).

Теперь уделим внимание его сыну — Полу Дейтелу. Чтобы быть ровней своему отцу, этот парень занимает сразу две должности: пост исполнительного вице-президента и главного инженера в компании Deitel & Associates, Inc. Он тоже обучался в Массачусетском технологическом институте, где изучал информационные технологии. Помимо прочего, Полу поручено заниматься обучением сотрудников больших компаний, среди которых числится IBM, Boeing и даже NASA. Они обращаются в компанию Дейтелов для повышения классификации своих работников. И опять-же, судя по описанию из книги — у него это хорошо получается.


Это конечно не реклама книги, но получить знания от таких авторов — достойно.

Структура книги

Если коротко — то очень удобная. Знаете, такая, в стиле программистов, где всё логично и понятно.

Если же разворачивать свою мысль, то вот что мы имеем. В начале каждой главы, помимо её порядкового номера и темы, указаны т.н. цели. Под ними понимается, чего именно должен достичь (научиться) будущий программист, когда закончит прохождение этой главы.

Глава 2
Автор: Old Paladin

Затем идёт планы главы. В нём указано, с чего мы начнём и чем закончим. Все подзаголовки имеют не только уникальные имена, но и порядковые номера. Это помогает легко ориентироваться по главе, читая только те моменты, которые действительно нужны.

План шестой главы
Автор: Old Paladin

В конце каждой главы написана краткая сводка по всей рассматриваемой теме. Ну, краткость конечно относительная, ведь язык сложный, а материал достаточно подробный и всё уместить в пару строк сложно. Но этот блок всё-равно сделан короче, что позволяет по-быстрому освежить свою память. Ещё там есть терминология, которая является выжимкой ключевых слов, а также упражнения для самоконтроля и тесты по написанию кода. Последнее, увы, не имеет проверки. Но оно и понятно, ведь и без того раздувшаяся книга (1000+ страниц), стала бы ещё толще, будь в ней расписан код всех тестовых программ.

Упражнения для самоконтроля
Автор: Old Paladin

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

В общем, как я и говорил в начале — всё доступно, понятно и логично.

Основные моменты

Теперь хочу рассказать вам про подход авторов к предоставляемой информации. Я понимаю, что этот обзор могут читать НЕ программисты, поэтому для простоты возьму примеры из первых двух глав. Этого будет вполне достаточно, чтобы показать трепетное отношение Дейтелов к своим читателям.


Значит смотрите, начинающим программистам важно понимать, какие вообще технологии существуют и для чего конкретно они будут писать код. Авторы данного учебника вполне осознают важность этого нюанса, благодаря чему посвятили первую главу компьютерам. Например, оттуда можно узнать про их внутреннюю организацию: блок памяти (он же SSD, HDD и пр.), процессор (CPU) и т. д. Или про этапы выполнения программы: с момента её поиска и запуска на ПК до выполнения ею каких-то действий: представьте себе какой-нибудь калькулятор, Steam, или блокнот.

Более того, там также рассказывается про работу интернета. Буквально в пару слов, но тем не менее. А ещё Дейтелы приводят параллель между родственными языками программирования. Например, вы знали, что от C произошёл C++, а уже от того C# и Java?

Вторая же глава отсылает нас к первым попыткам программирования. В ней авторы не просто приводят парочку лёгких программ, а прямо-таки объясняют каждый их шаг. Даже такой для заезженной программки как «Hello World», состоящей всего из 12 строк, у Дейтелов припасено несколько объяснений. Например, вот вам типичный комментарий на языке программирования C:

/* функция main начинает исполнение программы */

Казалось бы, чего тут мусолить? Слеш и звёздочка — это начало комментария, а звёздочка и слэш — конец. Но авторы этого учебника подробно объяснили эту конструкцию языка. Т. е. для чего это используется, как на это смотрит редактор кода, а затем и компьютер? И для чего комментарии нужны самому программисту?

А теперь представьте более сложные вещи и распространите их на всю книгу. Вот такое у Дейтелов отношение к предоставляемой информации. Минус только один — редакторы кода и прочие вещи читатели должны найти сами, увы.

Качество физического издания, цена и актуальность

Тут тоже начнём с минусов. Обложка у книги твёрдая, но вот сами листы газетного качества. Они отдают желтизной, их неприятно трогать и они легко рвутся. Шрифт приемлемый, но мелковат. Также в книге встречаются множественные опечатки и иногда — склеенные слова. Что-то вроде этого: «ясловоиясклеен».

По поводу цены не скажу за других, но сам я эту книгу в 2015 брал за 1215 рублей. На маркетплейсах её вроде сейчас не найти.

Ценник в 1215 рублей
Автор: Old Paladin

Что касается актуальности — ну, она чутка устарела. Многие вещи уже работают иначе, а сам C уже не так популярен среди программистов. Если кому интересно, то на нём чаще всего пишут программы для различной техники: от самоделок на Arduino до бытовых приборов (умных и не очень). Это связано с тем, что в этих вещах мало как оперативной, так и постоянной памяти. А язык C как раз-таки позволяет писать оптимизированный код, который экономит все эти вещи. Это если совсем по-простому.

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

Заключение

Какой итог можно подвести после всего вышесказанного? По моему мнению, данная книга — достаточно уникальная среди себе подобных. Да, её материал и рассматриваемый язык уже не так актуальны, но она по сей день способна заложить фундамент в головах начинающих программистов. Особенно если они решат связать свою жизнь с тем IT-сектором, где применяется C и ему подобные языки программирования.

А что вы скажите насчёт этой книги? Есть ли она в вашей домашней библиотеке? Или у ваших знакомых? Стали бы вы читать её сейчас? Поделитесь своим мнением в комментариях!