URSS.ru Магазин научной книги
Обложка Кронрод А.С. Беседы о программировании Обложка Кронрод А.С. Беседы о программировании
Id: 34249
599 р.

Беседы о программировании Изд. 3

URSS. 2006. 248 с. ISBN 5-484-00413-6.
Типографская бумага

Аннотация

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


Предисловие
top

"Беседы о программировании" – это книга скорее не о том, как надо программировать, а о том, как развивалось программирование в нашей стране.

Если взглянуть на "Беседы" с современной точки зрения, то их, очевидно, следует отнести к разделу: "История развития программирования". Дело в том, что когда у нас стали появляться ЭВМ, многие не поняли, какое место в жизни людей займут компьютеры. А те, кто понял, разделились на две части: идти своим путем или копировать заграницу. Между этими группами людей шла ожесточенная борьба. Она-то и отображена в "Беседах о программировании". Скорее даже – "Беседы" являются элементом этой борьбы.

За кадрами книги остались бесконечные обращения автора "Бесед" в высокие инстанции – буквально крики души о том, что надо у НАС развивать строительство своих машин, надо привлекать сильных конструкторов и математиков – а они у нас есть – к разработке новых компьютеров. Было продемонстрировано не на словах, а на деле, что мы это можем, что мы сильнее. Например, наша машина М-20 обыграла в шахматы со счетом 3:1 машину из Стэнфорда.

Но победили те, которые решили копировать заграницу. Теперь все компьютеры иностранные, все "говорят" по-английски. И даже теорему Адельсон-Вельского и Ландиса, которую у нас коротко называют АВЛ, теперь читают АБЛ.

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

На наш взгляд, главное в "Беседах" – это задачи, о которых говорил А.С.Кронрод. Книга была написана в 1963 году. Теперь уже видно, по какому пути пошло программирование – по предложенному Кронродом или нет. А называл А.С. эти задачи – ИГРАМИ.

"Беседы о программировании" были посланы на рецензии разным людям. Рецензии было бы тоже интересно прочитать. Сторонники А.С., естественно, хвалили эту книгу. Противники – полемизировали. Но надо сказать, что все, даже разгромные, рецензии кончались словами: "Тем не менее, книгу надо напечатать!"

"Беседы о программировании" прошли обязательную тогда цензуру, и было напечатано 10 сигнальных экземпляров. И вдруг книга была запрещена. Кем? Математиками! Как говорил Кронрод "Иногда такие люди занимали должности даже и довольно высокие". Похоже было, что они не выдержали полемики, поднятой в этой книге. Но они не запрещали всю книгу: кто-то требовал уничтожить какой-нибудь параграф в "Беседе", кто-то – написать слово не с большой, а с маленькой буквы, и т.п.

Кронрод отказался им подчиниться. Книга издана не была.

Теперь – по прошествии более 30 лет с момента написания этой книги – многое будет в ней непонятно. Чтобы избежать этого, можно было бы в конце "Бесед" к каждой странице дать пояснения. Но, скорее всего, можно обойтись и без них. Просто: "Имеющий уши слышать – да слышит".

Теперь можно переходить к чтению "Бесед о программировании" Александра Семеновича Кронрода.


Оглавление
top
Предисловие (Кронрод Л. А.)
Беседа первая: Как А. Л. Брудно придумал программирование в содержательных обозначениях
 § 1.Что было сперва
 § 2.Что было потом
Беседа вторая: Что такое блочное программирование, которое велел нам придумать Брудно
 § 1.Структура больших программ
 § 2.Что мы на этом потеряли?
 § 3.Что мы при этом выиграли?
 § 4.Как обращаться к блокам.
Беседа третья: Кое-что об отладке программ
 § 1.Зачем программисту барабан?
 § 2.О росписи памяти и о контрольном суммировании
  Задачи
 § 3.Программы для работы с пульта
 § 4.Какими должны быть программы печати
 § 5.Об организации контрольных просчетов
 § 6.Один пример организации контрольного счета
Беседа четвертая: Еще кое-что об отладке программ
 § 1.Об отладочных программах
 § 2.Стандартизация обозначений
 § 3.Ячейка омега при отладке
 § 4.Немножко о кодировке
Беседа пятая: Про библиотеку стандартных программ
 § 1.Что должно быть в библиотеке
 § 2.Стандартные ячейки
 § 3.Что случится с программами, если мы изменим библиотечные подпрограммы?/
 § 4.Библиотечное ДЗУ
 § 5.Вызов библиотек
 § 6.Вызов со сдвигом
 § 7.Библиотечные карты
Беседа шестая: Про библиотеку стандартных программ (продолжение)
 § 1.Программы с информацией
 § 2.Система ИНФО-ГФК
 § 3.Про программу ИНТЕГРАЛ. Зачем эта программа должна быть совершенно стандартной
 § 4.Работа со случайными числами
Беседа седьмая: Что нужно переделать в трехадресной машине, чтобы было хорошо
 § 1.Машинно-выделенные ячейки
 § 2.Адреса для регистров
 § 3.Стоп при попытке передать управление
 § 4.Больше ДЗУ!
 § 5.Больше разрядов в коде команды!
 § 6.Какие команды нужно добавить и какие – убрать
 § 7.Обращение к функциям
 § 8.ФА и ФК
 § 9.Дополнительные логические команды
 § 10.Смешанная арифметика
 § 11.Передачи управления
 § 12.Тройная арифметика
 § 13.Запятая сверхдальнего плавания
 § 14.Специально про машину с регистром адреса
Беседа восьмая: Как в трехадресной машине устроить длинную память
 § 1.Как это, по-моему, нужно сделать
 § 2.Как это сделано на М-2
 § 3.Стоит ли все же применять блочную память?
 § 4.Какие изменения вносит длинная память в библиотеку
Беседа девятая: Пофантазируем о машинах нашего завтра или переменная адресность и микропрограммирование
 § 1.Как быть с памятью?
 § 2.А как же быть с разрядностью ячейки?/
 § 3.Об адресности машины
 § 4.Откуда взять столько кодов?
 § 5.Задание микропрограммы
 § 6.Распределение кодов у машины с микропрограммированием
 § 7.Еще о пользе микропрограмм
 § 8.Об этом же
 § 9.Чего не знал автор, когда писал первые 8 параграфов этой главы или как (и можно ли) обойтись без микропрограммирования
Беседа десятая: О работах Н. И. Бессонова
 § 1.Зачем написана эта беседа
 § 2.РВМ. Каскадный принцип
 § 3.РВМ. Система управления
 § 4.РВМ. Несколько слов о памяти
 § 5.Коммутатор Бессонова
 § 6.О стиле
Беседа одиннадцатая: Человек и машина
 § 1.Может ли машина думать?
 § 2.Кто работает скорее – машина или мозг?
 § 3.Два способа думания
 § 4.Как связаны сознание и подсознание
 § 5.Почему так медленно обучается человек
 § 6.Как же быть машинам?
 § 7.Можно ли заглянуть в подсознание?
 § 8.Что мы там увидим?
 § 9.Две точки зрения на неизвестное
 § 10.Главные задачи программирования
 § 11.О бессмертии
Беседа двенадцатая: Невычислительные задачи
 § 1.Шахматы Г. М. Адельсона-Вельского, В. Арлазарова и А. Ускова
 § 2.Борьба за время. Предварительная оценка. УХУДУ И ПУП
 § 3.Борьба за время. Технические приемы
 § 4.Ватерлоо АВАУ. Уроки Ватерлоо
 § 5.Общая переборная схема
 § 6.Ускорение по Брудно
 § 7.Переборная схема. Обобщения. Векторная оценка
 § 8.ОБЩИЙ РЕШАТЕЛЬ американцев. Слово в защиту бюрократии
 § 9.Шахматы и народное хозяйство
Беседа тринадцатая: О взвешивании монеток
 § 1.Постановка задачи
 § 2.А как это можно осуществить в программе? Что значит получить ответ?
 § 3.Возражения по форме (ответа)
 § 4.Перебор возможностей. Молекулы
 § 5.Перебор возможностей. Молекулярный вес. Ранги гипотез
 § 6.Решение задачи человеком
 § 7.Вернемся к программе
 § 8.Да, именно так
 § 9.Удастся ли все-таки создать программу?
 § 10.Зачем все это нужно? Нужно ли это вообще? Не лучше ли заняться чем-нибудь другим?
Беседа четырнадцатая: Вычислительные задачи с точки зрения невычислительных
 § 1.Издержки автоматизации
 § 2.Почему вдруг понадобилось экономить?
 § 3.Как выглядела раньше программа СОВЕРШЕННО СТАНДАРТНЫЙ ИНТЕГРАЛ и как выглядит она теперь
 § 4.Как программа ИНТЕГРАЛ будет выглядеть завтра
 § 5.Про внешнее интегрирование
 § 6.А должна ли вообще программа ИНТЕГРАЛ быть совершенно стандартной?
 § 7.Решение системы двух уравнений с двумя неизвестными
Беседа пятнадцатая и последняя: Кибернетика или математика? Кто такие программисты?
 § 1.Что такое наука кибернетика?
 § 2.Еще одна аналогия
 § 3.Как должна развиваться наука-кибернетика?
 § 4.Кто такие программисты
 § 5.Нужно ли каждому математику самому программировать?
 § 6.Взаимоотношение программирования и математики
 § 7.Наука для науки?
 § 8.Наука. Прикладная Наука. Наука для Науки
 § 9.О критериях/
 § 10.Предлагает ли автор запретить чистую математику?
 § 11.Не исключить ли зато программирование из математики?
Послесловие
Приложение 1 (Адельсон-Вельский Г. М., Арлазаров В. Л., Леферов Е. В., Резниковский П. Т., Хабарова С. А.)
Приложение 2
Несколько слов об авторе (Арлазаров В. Л.)

Об авторе
top

Александр Семенович Кронрод (1921–1986) – человек примечательный. Со студенческой скамьи он ушел добровольцем на фронт. Через три года, после тяжелого ранения, вернулся, сложил в стол награды и снова стал студентом. А еще через пять лет – он уже доктор наук, создатель теории функций двух переменных, лауреат Сталинской премии, руководитель (хочется сказать – предводитель) семинара молодых, честолюбивых, талантливых ученых.

И вдруг... (хотя ничего у него, конечно, не вдруг. Просто характер, талант и вера в себя), вдруг он кладет в стол уже готовые к публикации математические работы и полностью переключается на программирование на ЭВМ. Кстати, через двадцать лет А.С.Кронрод точно так же покончит с программированием и займется лечением рака. Стоит ли удивляться, но опять – с успехом.

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

Но его настоящая цель – создание машин, решающих сложные, "человеческие" задачи. И Кронрод организует новый семинар, где занимаются программированием игр, задачами узнавания, придумываются новые вычислительные и невычислительные алгоритмы. С ним рядом друзья и соратники. Я не называю их, Кронрод никогда не забывает сделать это сам, обычно слегка притушевывая собственную роль. Однако именно благодаря А.С.Кронроду этот семинар вырос в целую школу программирования, и множество ученых успешно представляют ее и в Европе, и в Америке, и даже в Австралии.

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

В этом смысле "Беседы" и сегодня прекрасный учебник для знакомства с некоторыми идеями искусственного интеллекта и "интеллектуальными" подходами к вычислительным проблемам.

Эта книга написана почти сорок лет назад. Разумеется, сегодня что-то в ней покажется банальностью, а что-то глупостью. Автор не виноват: сорок лет назад банальностей не было. Зато есть и плюсы: за сорок лет глупостей стало заметно меньше.

Вы обратили внимание, с чего начинается книга? Конечно, сейчас все программируют "структурно". Но Кронрод излагает это как очевидный способ написания программ за много лет до "открытия" этого метода Дейкстрой. И ему ясно, что сделать программу понятной можно только на плоскости, рисуя не только команды и блоки, но и связи между ними. Ах, как не хватает ему сегодняшних цветных графических мониторов, хотя бы для того, чтобы рисовать стрелки! Он-то всегда программирует визуально, да вот только на листах бумаги. Отсюда и его неприятие АЛГОЛА, явно тяготеющего к тому, чтобы вытянуть программу в линейку.

Еще пример. Помните, зачем программисту барабан? Тривиальность? Но этот вопрос был предметом насмешек многих рецензентов. Да что говорить, еще в 1990 году очень серьезный специалист по трансляторам, ныне уважаемый профессор, всерьез доказывал, что отладочная информация не должна храниться в рабочее время, так как отнимает память. Понадобилась мощь и "наглость" Микрософта, чтобы все привыкли, что эта информация абсолютно необходима.

Впрочем, я думаю, что и еще через 40 лет можно будет наслаждаться и пониманием программирования и неординарностью мышления, блестками истинной мудрости щедро разбросанными по страницам этой книги.

Арлазаров В.Л.