egorius: (Default)

Эдмонд Николау, «Введение в кибернетику»

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

— Виталий Кауфман, «Языки программирования»

Очередная древность (год издания оригинала — 1964), извлеченная на свет божий из пыльных недр Дальней Книжной Полки. Книга написана в стиле, суть которого ясно характеризует эпиграф; в очень сжатый объем автор постарался уложить основные положения областей науки, на которые распространялся интерес современной ему кибернетики. Результат неизбежен: известные вещи кажутся пройденными по верхам, неизвестные — остаются непонятными.

Зато теперь я лучше понимаю название своего факультета. С вычислительной математикой все было ясно, но где потерялась кибернетика (опять-таки см. эпиграф)? Так вот, чуть ли не все дисциплины — теория множеств, математическая логика, построение моделей, теория вероятностей, теория игр, собственно программирование, вычислительные методы, распознавание образов и нейронные сети на АСВК, лингвистические опыты АЯ... — все это в широком смысле и есть кибернетика.

А. Л. Брудно, Л. И. Каплан, «Московские олимпиады по программированию»

Довольно скоро все заметили, что удержать в голове схему достаточно сложной программы трудно. Поэтому стали рисовать блок-схему программы. ... Но программы становились все сложнее, а блок-схемы все больше и непонятнее. Разобраться во всех стрелках и линиях было уже почти невозможно. Однако мучились и разбирались. ... Последней надеждой были цветные карандаши. Но когда кончились цвета, мы пришли к Брудно. И он сказал:
— Не рисуйте больше блок-схем. Пишите блок-программы.
...
Блочная программа — это такая программа, где каждая самостоятельная ее часть выделена в отдельную подпрограмму. ... Сравните эту программу с блок-схемой... Между ними только одна разница: блок-схема состоит из нарисованных прямоугольников, а блок-программа из команд. То есть ее можно закодировать и ввести в машину.

— А. С. Кронрод, «Беседы о программировании»

Случайно заметил, что автором сборника является тот самый Александр Брудно, о котором я читал в «Беседах...» — он, как я понимаю, уже в конце 50-х нащупал идею структурного программирования. Книжка интересна не столько задачами (о, ностальгия: составьте программу), сколько сопровождающими их лекциями о программировании для школьников: перебор вариантов, случайные числа, рекурсия (рекурсий следует избегать: они замедляют выполнение программы), структурное программирование, история вычислительной техники.

Занятное суждение о структурном программировании, никогда не думал о нем с такой стороны:

Структурированное программирование возникло не позже конца пятидесятых годов и рассматривалось в печати уже в середине шестидесятых, но была серьезная причина, задержавшая распространение нового метода. При программировании снизу-вверх программистская квалификация требовалась от исполнителей, а руководитель мог быть администратором. При программировании же сверху-вниз руководитель должен быть квалифицированным программистом.

Но старую закалку-то не спрячешь. Вот приводится программа для алгоритма Евклида:

10 input m, n
20 goto 40
30 if m<n then n=n-m else m=m-n
40 if m<>n goto 30
50 print m
60 end

Только программист в машинных кодах может такое написать, не вывихнув мозг.

Некоторые считают, что структурированная программа, и даже язык программирования ... не должны содержать операторов перехода (подобных goto). ... Мы этого не считаем. Признавая, что излишние операторы переходов служат указанием на неряшливость или низкую квалификацию программиста и затрудняют проверку программы, мы, тем не менее, не запрещаем операторов перехода. Причина этого в том, что нарочитое избегание операторов перехода отдаляет программу от естественного алгоритма решения задачи, а употребление операторов перехода не является единственным способом написания плохих программ.

Соглашаясь с автором, не могу не отметить неряшливость или низкую квалификацию программистов, готовивших ответы на задачи и перетащивших все goto из Фортрана и Бейсика в Паскаль и Си. За такое программирование следовало бы отрывать руки.

egorius: (Default)

Ян Чихольд, «Новая типографика»

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

Януш Корчак, «Король Матиуш» и «Матиуш на необитаемом острове»

Под видом детской книжки, сказки про маленького мальчика, ставшего королём, скрывалось серьёзное чтение, над которым не мешало бы задуматься взрослым.

В книге нет сил добра и сил зла, нет вообще ничего белого или чёрного — над всем приходится думать самому. И такие неразрешимые вопросы ставит автор, что с самого начала понятно — хэппи-энда не будет.

Орсон Скотт Кард, «Игра Эндера» (КПК)

Всплыла в разговоре не помню уже на какую тему с хорошим человеком. Забавная книга. Чтобы сделать что-то великое, надо верить в то, что это всего лишь игра. Вот только можно доиграться.

Антураж, кстати, позаимствован из Звёздного десанта Хайнлайна с заменой жуков на жукеров.

Никлаус Вирт, «Построение компиляторов»

Практически курс конструляторов Серебрякова, только с полным примером компилятора для подмножества Оберона. Не то, чтобы я её прочитал, скорее проглядел. Из попробовать пока написал лексический анализатор на Хаскеле (красивенький такой получился), на этом свободное время закончилось.

Книга вышла в издательстве ДМК Пресс, они же выпустили Кауфмана. За книги спасибо, но руки всё-таки оторвать нужно: в книгах по программированию программист должен вычитывать приведённый код, потому что наборщики в нём ни черта не понимают. Знакомого программиста у издательства не нашлось.

egorius: (Default)

Макс Фрай, «Обжора-хохотун»

Уже шестая книга из Хроник Ехо. Продолжаю радоваться каждой новой встрече.

Виталий Кауфман, «Языки программирования. Концепции и принципы»

Удивительно, но приятно: переиздали книгу, по которой мы на ВМК учили ЯПы. Очень глубокий текст, языки программирования разбираются с разных позиций буквально по кирпичикам, выявляются принципы и концепции, лежащие в их основе и обычно неведомые программистам.

Не мог не поддержать благое дело покупкой, заодно и перечитал. Тщусь надеждой, что понял больше, чем прежде, но — надо признать — опять не всё. С большой пользой для себя:

  • вспомнил Аду (интересна тем, что является прародителем PL/SQL);
  • осознал связь между реляционным программированием (Пролог) и реляционными базами данных (надо осмыслить);
  • почитал про функциональное программирование (стали понятны кое-какие странности Хаскеля);
  • нашёл прекрасную главу про причины сложности и методы борьбы с ней (прямиком в курс по качеству в программировании);
  • проникся всеобъемлющей универсальностью аппарата абстракции-конкретизации.

Адриан Форте, «Объекты желания»

Книга про дизайн. Основная мысль (богато проиллюстрированная на историческом материале) состоит в том, что дизайн, в отличие от искусства, определяется не столько творческой работой дизайнера, сколько требованиями бизнеса: социальным контекстом, ожиданиями потребителей, доступными средствами производства. Звучит убедительно.

Profile

egorius: (Default)
egorius

July 2025

M T W T F S S
  12 3 4 5 6
7891011 12 13
1415 1617181920
21222324252627
28293031   

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 20th, 2025 04:57 am
Powered by Dreamwidth Studios