Постепенность. Излагать материал следует мелкими, легко постигаемыми порциями. Высота одолеваемых учеником «ступенек» не должна вызывать ощущения тупика, – маленький успех окрыляет, вселяя уверенность.
Практичность. Программирование – инженерная наука. Теория и практика здесь неразделимы, «пропитывают» друг друга, – ученик не должен ощущать границ между ними. Букварь программиста должен сочетать в себе учебник и хрестоматию. Примеры программ должны быть либо простыми, либо очень простыми (по крайней мере, на первых порах). Необходимо показать полные решения задач с разъяснениями, – «учились бы, на старших глядя».
Поправка на возраст. Сюжеты задач в букваре должны учитывать психологию подростка, а он склонен учиться играючи. Хорошо, если примеры похожи на настоящие «взрослые» проекты (разумеется, упрощенные). Непоседу не увлечешь задачей в роде «посчитать по формуле такой то» или «найти сумму элементов массива». А вот полицейская база данных или экзаменующая программа – это серьезно! Разжечь аппетит юного инженера – едва ли не главная цель обучения.
Маловажное – за борт! От изложения некоторых второстепенных деталей языка лучше воздержаться. Например, можно «забыть» о записях с вариантами и не вспоминать о типизированных файлах. Не отвлекая внимания на эти детали, сосредоточиться на главном. Усвоив это главное, ученик доберёт остальное из «взрослых» учебников.
Вот, пожалуй, и все. В идеале такой букварь будет и самоучителем для подростка, и конспектом для преподавателя компьютерного кружка.
Что я могу ещё сказать?
Итак, цель поставлена, но достигнута ли? – судить читателям. Вкратце содержание книги таково.
В главах с 1-й по 4-ю после краткой обзорной информации даны практические рекомендации для подготовки рабочего места. Далее все подносимые порции теории немедленно воплощаются на практике.
В главах с 5-й по 31-ю рассматриваются простые типы данных и базовые алгоритмические структуры. Здесь же рассказано о текстовых файлах и даются основные сведения об организации среды программирования.
В главах с 32 по 35 подводится теоретическая черта под пройденным материалом и закладывается фундамент для перехода к сложным типам данных.
Главы с 36 по 58 повествуют о сложных типах данных и связанных с ними алгоритмах. Здесь рассмотрены множества, массивы, записи и динамические структуры.
В главах 59 и 60 раскрыт секрет разработки многофайловых проектов, а глава 61 знакомит с принципами объектно-ориентированного программирования.
Последняя 62-я глава – это попытка заглянуть в будущее и указать читателю дальнейшие цели и пути их достижения.
Полагая, что книга будет, на какое-то время, единственной помощницей новичка, автор счел нелишним включить несколько справочных приложений.
Итак, отойдя от общепринятого порядка изложения теории, я стремился вовлечь читателя в активное осмысление конструкций языка, приглашая его к соавторству с Никлаусом Виртом. «Почему в языке сделано именно так, а не иначе?» – этот вопрос то и дело встает перед учащимся. Решая задачи, он видит, что элементы языка не с потолка свалились, а придуманы для решения типовых проблем. Отсюда следует порядок изложения: 1) проблема, 2) размышление, 3) решение. Сначала ставится задача. Затем обсуждается, как её решить уже известными средствами языка, или почему её нельзя решить этими средствами. После этого даётся надлежащая порция теории, и приводится решение либо с новым применением уже известных конструкций языка, либо с привлечением новой конструкции. Напоследок подводится теоретический итог очередной главы. Так теория с практикой следуют рука об руку.
Несладко быть в шкуре новичка: там и сям натыкаешься на проблемы! Автор снабдил почти все решения полными листингами работающих программ с подробными пояснениями. Кому то они покажутся избыточными, назойливыми. Но согласится ли с этим паренек, корпящий над книгой где-нибудь в глухом поселке? Ведь для него, одинокого бойца, любая «непонятка» порой вырастает в неодолимую преграду!
Благодарности
Я признателен всем, кто высказался о «Песнях» на форумах и в личной переписке, — мы работали над книгой вместе! Особо благодарю форум freepascal.ru и моих читателей Артёма Проскурнёва и Владислава Джавадова, подаривших мне массу полезных советов.
Книга в форматах FB2 и HTML появилась трудами моих добровольных помощников. Один из них – Олег Авилов – подтолкнул нас к этой работе, а также сотворил новую обложку. Но основной вклад внёс пожелавший остаться неизвестным житель таёжного посёлка, затерянного в магаданских просторах! Скрипты уважаемого «navd» – так он назвал себя – сотворили чудеса!
Пишите, мой адрес все тот же: [email protected]
Свежую редакцию книги и сопутствующие файлы можно скачать здесь:
http://oleg.derevenets.com
Детям до 16–ти
«У меня есть мечта!» – признался один известный человек. А у кого её нет? Вы тоже мечтаете, и я знаю, о чем. В детстве мне хотелось поскорее вырасти, и я завидовал взрослым: никто им не указ, делай, что хочешь! Вы мечтаете о том же? Но как стать большим раньше назначенного природой срока? Наклеить усы и бороду? Пробовал, – не помогает. Или прибегнуть к «сильным» средствам: крепким напиткам и табаку? Даже не пытайтесь, – вы постареете, не повзрослев!
Со временем дошло до меня, что взрослый – это тот, кто владеет профессией и занят полезным делом. Стало быть, став профессионалом, можно повзрослеть? Хороших профессий полно, выбирайте любую. А не стать ли вам программистом? «В моем возрасте? Возможно ли?» – усомнятся некоторые. Так вот вам зеркало, смотрите, кто там? Сметливый человек с цепкой памятью и страстным желанием поскорее созреть! Кому, как не вам, взяться за это дело?
Согласны? Тогда уточним, кто такой программист. Некоторые склонны считать программистом любого, кто работает с компьютером. Питая глубокое уважение ко всем мастерам разных сфер: системным администраторам, дизайнерам сайтов и многим другим, мы не станем величать их программистами. Нет, программист – это волшебник, оживляющий бездыханные железки. Порой их называют хакерами или кодировщиками. Слово «хакер» мне не по душе, поскольку пристало к взломщикам программ и паролей. А кодирование? Это всего лишь часть работы программиста, состоящая в написании программы по готовому алгоритму. Нет, настоящий программист – не презренный «кодировщик», он видит шире и копает глубже.
Итак, я зову вас в программисты-профессионалы, а это значит, что с «чайниками» нам не по пути. Чем довольствуется «чайник»? – верхушками знаний, а мы устремимся к вершинам. И, пускай, эти вершины пока далеки, мы не помчимся за быстрым результатом, прыгая через три ступеньки. Нет, наши шаги будут основательными, а обретенные знания глубокими, – «небоскреб» вашего будущего должен опираться на прочный фундамент!
Со мной вы изучите язык программирования Паскаль – один из самых красивых и полезных. Он и его потомки – Модула, Ада, Оберон – неспроста слывут самыми надежными, – оборонка, космос и авиация предпочитают эти языки. Идеи, из которых они сотканы, благотворно повлияли на новейшее программирование. Прошедшего школу Паскаля отличает ясный, экономный и надежный стиль письма. Манера эта проявляется и тогда, когда программист пишет на иных языках.
Овладев Паскалем, вы откроете себе много дорог. Одна из них – основанная на Паскале мощная визуальная среда программирования Delphi. Другое направление – школьные олимпиады по программированию, где большинство участников тоже пишут на этом языке. В конце концов, Паскаль облегчит вам изучение и других языков. Так, освоение Паскаля станет первым и самым важным шагом к вашей мечте!
Глава 1
Путь далек у нас с тобою…