А.С. Кронрод
Беседы о программировании
М.: Едиториал УРСС, 2004. 248 с.

В наше суетливое время стиль поведения action автоматически вынуждает программистов учиться и действовать на избранном поприще быстро и без оглядки на прошлое. Для большинства людей, причастных к данному роду деятельности, это чревато отсутствием глубоких представлений о том, чем они занимаются. Поэтому появление книг, подобных «Беседам о программировании», написанной А.С. Кронродом и предназначавшейся для «застольных бесед, если, конечно, стол письменный, а собеседник — программист-профессионал», представляет собой редкое событие, заслуживающее пристального внимания всех, кто желает овладеть тайнами эффективного программирования.

По существу данная работа, написанная более 40 лет назад, но, к сожалению, до сих пор не издававшаяся, положила начало обмену мнениями по поводу стиля программирования. И пусть современные издатели относят эту замечательную книгу к разделу «История развития программирования», по нашему мнению, она и сегодня представляет практический интерес для широкого круга учащихся и специалистов, а кроме того, является достойным вкладом в отражение того пути, который прошли отечественные программисты. 15 предложенных вниманию читателей бесед, несмотря на некоторую архаичность рассматриваемых в них представлений, поучительны и для современников, потому что имеют отношение к вечным проблемам, с которыми приходится сталкиваться программистам во все времена. И что из того, что аргументы, приводимые автором в беседах, основываются на аппаратной платформе начала 50-х годов прошлого века (трехадресные вычислительные машины скромной конфигурации)? Но они связаны с глубоким проникновением в содержание деятельности программиста и системным представлением о ее эффективности.

Так, первые беседы автора о начальных шагах программирования посвящены замечательным открытиям известного математика А.Л. Брудно, который придумал (так представляет это событие А.С. Кронрод) запись программ в содержательных обозначениях и блочное программирование и активно использовал это в работе на ЭВМ М-2. Блочное программирование было и остается важным способом, используемым при отладке больших программ. Представление основной и отладочных программ как единого целого существенно повысило эффективность процесса отладки. Также при написании программ для организации этого процесса стало понятно, что необходимо требовать принятия однозначных правил перехода к машинным кодам, иначе будет трудно завершить их отладку.

Следующий выделенный автором книги шаг в развитии программирования — появление библиотеки стандартных программ, которые могли рассматриваться как независимо от требующейся для решения с их помощью задач информации, так и в совокупности с ней. Описываемые в книге события относятся ко времени, когда ЭВМ были «маленькими» (это прежде всего касается объема их памяти), что почти каждый раз заставляло заниматься рациональным размещением части программы и необходимых данных в отпущенном объеме памяти. Поэтому у программистов была своя «Книга рекордов Гиннесса», где, например, фиксировались самые короткие программы. Соответствующие примеры программ для ЭВМ М-20 приведены в Приложении 1 «Бесед».

В трех беседах книги говорится о том, как совершенствование процесса программирования влияло на архитектуру ЭВМ, на состав ее команд и устройство так называемой длинной памяти. Одна из этих бесед посвящена авторским соображениям сорокалетней давности о путях к «машинам завтра», в частности об адресности машин и микропрограммировании.

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

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

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

Напомнив постоянный эпиграф из Леонтия Магницкого ко многим беседам «А ищи всех паче Разума в задаче», хочу посоветовать читателям не упустить радость знакомства с этой удивительной книгой. Ну а к числу ее «недостатков» могу отнести лишь тот необходимый труд, который придется затратить на ее чтение.

1136