Этюды для программистов | страница 4



Студенты, выполняющие лабораторный практикум, смогут оценить четкие формулировки задач. (Сколько несчастных поклялось никогда в жизни и близко к машине не подходить после отчаянных попыток разобрать неряшливые формулировки, нечетко отпечатанные на ротапринте.) Те же студенты, которые могли сами выбирать задачи (как в курсе, послужившем основой этой книги), оценят разнообразие предоставляемого им здесь выбора — ни одному преподавателю не хватило бы энергии подготовить столько задач. Разумеется, наш сборник, равного которому по объему еще не было, окажется полезным тем, кто повышает свою квалификацию самостоятельно. Отдельные этюды могут послужить источником методов программирования для лиц, уже окончивших учебные заведения.

Как и всегда в подобных случаях, книга не могла быть написана без помощи многих и многих людей. Джордж Майкл впервые выдвинул идею обучения на задачах (которая теперь нашла признание во многих других учебных заведениях). Студенты нескольких групп охотно испытывали задачи, предлагая исправления и даже новые темы. Хэнк Молл написал программу форматирования текстов, при помощи которой была подготовлена рукопись книги, и всегда был готов по мере надобности вносить в свою программу изменения. Рукопись с включенными в нее иллюстрациями была напечатана изящными шрифтами благодаря программе Джона Битти. Обе эти программы позволили лучше представить себе окончательный внешний вид книги, что очень помогло автору при ее создании. Многие мои друзья читали, обсуждали и критиковали книгу и ободряли автора. Наконец, перфораторщицы Ливерморской лаборатории не только никогда не жаловались на плохой почерк, а всегда быстро возвращали готовые колоды карт, да еще с исправленными орфографическими ошибками. Не будь всех этих помощников — не было бы и книги; лишь благодаря их участию она увидела свет.

Чарлз Уэзерелл

1.

Что бы это значило?

или Как читать книгу

Преподавание программирования — дело почти безнадежное, а его изучение — непосильный труд. Преподаватель может всячески возиться со студентами, читать лекции, делать критические замечания, направлять по верному пути. Студент[3] может все тщательно записывать, запоминать, читать, сдавать зачеты, дискутировать хоть до двух часов ночи. Но все усилия тщетны, если студент не будет практиковаться в написании программ, поскольку навык программирования (как, впрочем, и всякий навык) дается только практикой. Более того, учиться надо на «настоящих» программах, а не на упрощенных примерах, вроде тех, которыми изобилует большинство руководств по языкам программирования. Сколько ни бренчи чижика, вторым Рубинштейном не станешь. Точно так же долбежка языка APL вряд ли поможет вам достичь высот в программировании. Поэтому в настоящей книге представлены довольно объемистые задачи. В качестве учебных проектов они вполне подойдут новичкам, стремящимся стать сначала просто грамотными программистами, а затем и специалистами высокого класса.