В истории информатики важное место занимают открытия русского изобретателя Семёна Николаевича Корсакова. В 1832-м году он издал на французском языке брошюру «Начертание нового способа исследования при помощи машин, сравнивающих идеи» в которой были изложены принципы функционирования пяти «интеллектуальных машин».

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

Корсаков отказался от патента на свои изобретения и закончил брошюру следующими словами:

«Если же с их (то есть интеллектуальных машин, прим. П. Советова) помощью удастся сделать открытия, полезные в науках, прежде всего, если их использование будет способствовать более быстрому нахождению лекарств, которые облегчат страдания близких, это было бы самым лучшим вознаграждением, на которое автор желает претендовать за все труды, посвящённые сему предмету».

Открытия Корсакова не были оценены должным образом современниками. Выводы комиссии Императорской Академии наук под руководством М.В. Остроградского содержали следующие слова: «Г-н Корсаков потратил слишком много разума на то, чтобы научить других обходиться без разума».Люблю музыку, вернее самое её начало, из финала фильма «Страна глухих». Очень простая и светлая мелодия на фортепиано. Её автор — композитор А. Айги. Не удержался и подобрал первые такты. Здесь ноты.

Синтезатор 4klang (Alcatraz) предназначен для встраивания в 4k intro. Синтезатор модульный, реализован в виде стековой виртуальной машины (чуть-чуть не хватило авторам до Форт-машины). Модули передают друг другу значения сигналов через стек, имеются традиционные стековые операторы. VST-версия синтезатора формирует obj-файл в составе которого находятся данные композиции и набор реально используемых в ней модулей. Данный obj-файл предназначен для использования совместно с утилитой crinkler. Это очень интересная утилита, она представляет собой редактор связей (linker), совместимый с Microsoft VC++, и весьма эффективный компрессор. Я попробовал написать тестовую композицию на 4klang, в результате получился exe-файл на 1.5 килобайта. К сожалению, есть проблема с VST-версией 4klang. Она чрезвычайно прожорлива по части cpu-ресурсов. В статье можно узнать подробности о синтезаторе.

На днях задумался над тем, когда в России впервые были исполнены «Страсти по Матфею» Баха. У Одоевского, в одной из статей, есть риторический вопрос, мол, почему бы не исполнить хоть несколько хоров из «недавно изданных» «Страстей». Это 1839-й год. Известно также (см. приложение в книге о Бахе А. Швейцера), что в 70-е Римский-Корсаков принимал участие в исполнении отрывков из «Страстей». Вспомнив об интересе Танеева к музыке Баха, я отыскал ответ на свой вопрос.

«Исполнить «Страсти» Ипполитов-Иванов мечтал давно. В 1912 году вместе со своими помощниками И.И.Слатиным и Н.С.Головановым он приступил К разучиванию «Страстей». В составлении плана исполнения оратории ему очень помог С.И.Танеев. «Страсти» исполняли, помимо студентов консерватории, хористы и оркестранты музыкальных обществ Москвы, солисты театров. Велика заслуга Ипполитова-Иванова, который первым в России сумел поднять это грандиозное произведение. «Страсти» шли с незначительными сокращениями на русском языке (перевод А.Аврамовой) в 1913 и были повторены в 1914 году.»

Подробнее здесь.

BBS Documentary и Get Lamp это фильмы Джейсона Скотта, историка компьютерной культуры. Первый фильм повествует об истории BBS и Fido, а второй посвящён текстовым играм. Оба фильма до сих пор не переведены и английские субтитры к ним недоступны, хотя оба фильма выпущены под лицензией Creative Commons. Подумываю заняться переводом Get lamp, когда будут доступны субтитры…

Недавно купил книгу В.Г. Хорошевского «Архитектура вычислительных систем». Это не совсем обычный учебник. Автор его — известный отечественный учёный, специалист в области параллельных вычислений, в числе его разработок, например, Минск-222 (первая в мире ВС с программируемой структурой, одномерная, 1965 г.). Совместно с Э.В. Евреиновым он развивал фундаментальное направление однородных вычислительных систем, структур и сред (ОВС). В книге доминирует «параллельный» взгляд на компьютерную архитектуру. Представлены основы теории ОВС (Хорошевский использует более общий термин: «система с программируемой структурой»). Изложен опыт построения многих значимых отечественных параллельных вычислительных систем. Рад, что появилось современное издание по данным вопросам.

Недавний анонс 8-битного Meeblip показал, что «железные» цифровые синтезаторы/эффекты с открытым кодом всё ещё продолжают создаваться. Coyote-1 на базе замечательного процессора Parallax Propeller это ещё один проект из той же серии. К слову сказать, у этой педали есть серьёзный конкурент в виде ToneCore DSP от Line 6. Самым же многообещающим был, в своё время, Chameleon (Motorola DSP56303), проект, который, к сожалению, был свёрнут.

Приятная новость, игру Another World портировали на JavaScript! Автор Gil Megidish пишет о недочётах в реализации, однако для меня важнее, что теперь виртуальная машина этой замечательной игры вся, как на ладони. Можно дизассемблировать уровни, извлекать графику и т.д. Появилась возможность ещё лучше изучить этот шедевр программистского искусства.

Купил на днях книгу: Варшавский В.И., Поспелов Д.А. Оркестр играет без дирижёра: Размышления об эволюции некоторых технических систем и управлении ими. Изд.2, доп. — Либроком, 2009 г. Это переиздание классики от известных советских учёных. В ней содержится ряд полезных мыслей не тему децентрализованных систем (современные примеры: децентрализованные p2p-сети, мультикомпьютер GA144).

Широко распространено ошибочное мнение, будто chiptunes всегда делались в трекерах (особый вид музыкального редактора). Задолго до того, как само понятие сhip music вошло в обиход, музыканты-программисты, такие как Rob Hubbard, создавали музыку для микросхемы SID в программном коде. Никаких трекеров или других музыкальных редакторов. Всё делалось на ассемблере. Сперва писались подпрограммы для работы со звуком, далее шли данные композиции. Замечательную работу проделал Anthony McSweeney в статье Rob Hubbard's Music: Disassembled, Commented and Explained. Из неё можно узнать, каким образом была создана композиция Monty on the Run. Заслуживает особого упоминания структура музыкальных данных в программе. Песня состоит из указателей на три трека (по числу каналов SID). Трек создаётся из перечисления номеров шаблонов, а сами шаблоны содержат нотные события. Одно нотное событие может содержать следующие байты: длина ноты (седьмой бит указывает на номер инструмента или величину партаменто в следующем, дополнительном байте) и номер ноты. Отдельно задавались описания самих инструментов. Вот, собственно, что представляли собой, уже ставшие легендарными, подлинные «мелодии для микросхем»…Аудио-DSP в реальном времени на Commodore C64. См. видео и текст.

К сожалению, на деле обработка осуществляется силами SID'а и за счёт специального (интересного!) представления сжатого аудио в виде последовательности формант.

Технический писатель Jeremy Reimer публикуется на сайте http://arstechnica.com/. Хотел бы обратить внимание на следующие его работы.

Цикл об истории компьютера Amiga: 1, 2, 3, 4, 5, 6, 7, 8.

Статья по истории GUI.

Несколько слов о литературных работах, связанных с Чарльзом Беббиджем. Очень хотелось бы увидеть на русском языке автобиографию Passages from the life of a philosopher. Кроме того, статью "Sketch of the Analytical Engine" Менабреа и Лавлейс просто необходимо перевести!

Написал статью о компиляторе OTCC.Перечитал рассказ «Кавалер Глюк» одного из моих любимых писателей, Э. Т. А. Гофмана. Центральное место в рассказе занимает образное описание таинственного процесса сочинения музыки, в виде путешествия по иллюзорным мирам. Характерно, что за «царством грёз», в которое проникают лишь настоящие художники, обретается, доступное лишь единицам, «царство истины». Можно пофантазировать, например, о том, что музыкальный дух Дебюсси существовал в «царстве грёз», а вот Бах достиг «истины»…Под впечатлением переслушал увертюру к опере Глюка «Ифигения в Авлиде».

Один мой приятель сделал перевод повести Пола Гэллико «Снежный гусь» по моей просьбе. Насколько я знаю, перевод этот до сих пор нигде не выложен. В своё время я переписывался на этот счёт c автором lib.ru, но в какой-то момент мой корреспондент перестал отвечать на письма. Повесть эта должна быть, в частности, интересна любителям группы «Camel». Временно выкладываю текст сюда.

«Язык компьютера» (английская версия) — книга, которая пробудила в своё время мой интерес к программированию. Она увлекательно написана и содержит замечательные иллюстрации. Благодаря ней я узнал о существовании таких языков, как Forth, APL, Lisp и Prolog.

Вот ещё одна книга — «Эрик С. Рэймонд. Новый словарь хакера. — ЦентрКом, 1996». Книга о программистской культуре, неожиданно познавательная. Из неё я узнал об играх Advent, MUD, Zork и Moria, книгах Дугласа Адамса и Хофштадера, о конкурсе Obfuscated C Contest и языке Intercal, Dragon book и многом, многом другом. До сих пор приятно открывать её на любой странице и погружаться в чтение.

Продолжаю тему о программистах-музыкантах. Андрей Родионов известен своими работами в сфере электронной музыки. В 80-е была популярна пластинка «Пульс 1», написанная им в соавторстве с Б. Тихомировым. Как программист, Родионов известен работами для компьютера Yamaha MSX и, в наибольшей степени, благодаря написанной им статье Своя игра. Это очень интересное околофилософское размышление об искусстве создания компьютерных игр и, пожалуй, лучшее, из того что я читал на подобные темы.

Талантливые программисты часто демонстрируют интерес к музыке. Если этот интерес глубокий (старинная музыка, классика, исполнительство, теория музыки), то я с радостью отмечаю преемственность с «универсальными людьми» прошлого. Такими, например, как Леонард Эйлер (безуспешно ищу эту книгу), Э. Т. Гофман, В. Ф. Одоевский. Вернёмся всё же к программистам. Отец Дональда Кнута был органистом в лютеранской церкви, и знаменитый автор «Искусства программирования» тоже учился музыке, игре на ф-но и органе. Впечатляет домашний духовой орган семьи Кнутов. Здесь представлена программа одного из концертов с участием Д. Кнута. Там обнаруживается, в частности, что он сделал переложение «Sheep may safely graze» Баха для органного дуэта. Ещё приведу ссылку на знаменитую шуточную статью о сложности песен. Теперь о другом программисте. Его зовут David Joseph Stith, автор dream, изящного интерпретатора Scheme, написанного на x86-ассемблере. Полюбуемся на ручной работы клавесин, на котором играет наш программист. На сайте есть также ноты собственных сочинений.

Себе на заметку. Было бы нелишне в связи «4k procedural graphics» (см. вчерашнюю заметку) упомянуть сложность по Колмогорову.

«X Macro» это интересная техника использования макро, которая работает для препроцессора Си (и не только). Она удобна, когда необходимо некоторые данные одного характера содержать и изменять совместно, для чего используется динамическое переопределение макроидентификаторов. Подробности см. здесь.

Один из видов конкурсов, связанных с демосценой, называется «4k procedural graphics». Исполняемый модуль, не превышающий 4-х килобайт, выводит на экран статичное изображение. Такая картинка в большинстве случаев строится «с нуля», чисто алгоритмически. Примеры таких работ можно увидеть здесь. О том, как создаются эти маленькие шедевры можно прочесть в pdf. По теме «процедурной графики» нелишне почитать классическую книгу Texturing and Modeling: A Procedural Approach. Вообще, искусство процедурного/алгоритмического порождения некоторого содержания, будь то графика, звук или текст, штука очень увлекательная. Мне бы хотелось увидеть работы в категории «4k procedural music», сделанные без использования универсальных синтезаторов и готовых сэмплов.

Книгу «Орам Энди, Уилсон Грег. Идеальный код. — Питер, 2009» можно с полным основанием назвать неудачной, поскольку своего названия она не оправдывает. Её содержимое скорее напоминает годичный архив раздела «Советы профессионала» из гипотетического журнала по программированию. Но есть там статья, за которую я готов простить составителям книги всё. Это «Нисходящая иерархия операторов» Дугласа Крокфорда. Замечательное лаконичное изложение, элегантнейший алгоритм и по-настоящему красивая реализация. С оригиналом статьи можно познакомиться на сайте автора. Алгоритм Пратта, реализация которого даётся в статье, это потрясающая по своей простоте вещь. Кстати говоря, на уровне интерфейса пользователя я бы попробовал оперировать не числовыми приоритетами, а в терминах отношений (больше, меньше, равно) и связанных с ними уже определённых операторов. Раз уж я заговорил о синтаксических анализаторах, то упомяну здесь о системе META II и просто оставлю в качестве памятки для себя две ссылки, 1 и 2.

Игра Death Rally у меня в своё время не заработала, не помню уже по какой причине. Посмотреть её очень хотелось, ведь разрабатывала игру финская компания Remedy Ent., в составе которой числились участники легендарной демо-группы Future Crew. В частности, музыку к ней написал Purple Motion. Оказалось, что существует бесплатная Windows-версия Death Rally, которую написал финский программист Jari Komppa в 2009-м году. Он же изложил процесс портирования оригинального DOS-кода (WATCOM, DOS4GW) под Windows (MSVC, SDL) в статье на своём сайте. Статья любопытная, что же касается самой игры, то я, пожалуй, предпочёл бы ей Micro Machines от Codemasters.

Раз уж речь зашла об играх, хочу вспомнить Another World. Замечательная вещь, увлекательная и красивая, напоминающая оживший нф-роман (от Фрэнсиса Корсака, например). Но внутреннее устройство Another World восхищает меня особенно. Я с трудом представляю, как французский программист Eric Chahi в 91-м году сумел создать такое совершенство. В игре используется интерпретатор скриптового языка со встроенной многозадачностью, а графика реализована на векторном 2d-движке с поддержкой сложной анимации. Подробнее можно прочесть на сайте у автора. Несомненно, что Another World появился благодаря игре Karateka, которую создал Jordan Mechner в 84-м году. Сходство в применении ротоскопии для создания реалистичной анимации, а также в общем для игр «кинематографическом» игровом процессе. Сделать такую замечательную игру в возрасте всего 20-и лет…Любопытно почитать старые дневники на сайте автора Karateka (он же автор Prince of Persia).

Шумовое загрязнение (ШЗ) – фактор, который влияет, помимо прочего, на восприятие и создание музыки. В условиях неуклонного роста показателей ШЗ, особенно в мегаполисах, ухо привыкает к диссонансу и слабо различает динамические оттенки. Кажется, что полная тишина это роскошь, доступная далеко не каждому…Когда становится совсем тяжело, я спасаюсь с помощью противошумных наушников.

Хотел бы порекомендовать две книги интересующимся ЦОС (цифровая обработка сигналов).

  1. Юкио Сато. Обработка сигналов. Первое знакомство. — Додэка-XXI, 2009.
  2. Ричард Лайонс. Цифровая обработка сигналов. — Бином-Пресс, 2006.
Первая книга даст в доступной форме математические сведения, необходимые для введения в предмет, а вторая книга предоставит достаточно материала для решения большинства прикладных задач.Вчера был в БЗК. Слушал “Песнь о земле” Г. Малера. На основе стихотворений древних китайских поэтов композитор сумел создать глубокую, полную печальной мудрости вещь…Отметил замечательное исполнение солистки Михаэлы Зелингер.Не секрет, что в программировании важнейшую роль играет абстрагирование. Из всего хаоса путей построения программы выбирается ограниченный и структурированный набор подходов.

Например, не смотря на известное ограничение свободы действий и возможное снижение быстродействия программы, общепринята парадигма структурного программирования.

Как же обстоит дело в области параллельного программирования? Приведу цитату из работы “Математические проблемы параллельных вычислений” В.В. Воеводина:

“Построение графов для большого числа конкретных алгоритмов выявило удивительную закономерность: большое разнообразие существующих методов не приводит к такому же разнообразию их информационных структур. Точнее, многие графы формально совершенно различных алгоритмов оказались изоморфными, отличаясь друг от друга только содержанием вершин и дуг. Поэтому была выдвинута гипотеза о том, что в конкретных вычислительных областях типовых информационных структур немного”.

Данная мысль, разумеется, приходила в голову многим авторам. Самым известным на сегодня примером подобной “типовой информационной структуры” является, безусловно, MapReduce.

Но задолго до этой разработки от Google появилась общая концепция структурного параллельного программирования, в виде parallel skeletons.

Добавление библиотеки поддержки parallel skeletons не должно составить большого труда в современные популярные языки программирования. В результате можно ожидать снижения порога сложности вхождения в мир параллельных вычислений со стороны неспециалистов. Это как раз та “синица в руках”, которая лучше “журавля в небе” в виде систем автоматического распараллеливания.

Статья о SEAforth-программировании завершена. См. раздел “тексты”.Возвращаясь к вопросу о хороших учебниках по программированию, написанных русскими авторами.

С. С. Лавров. Программирование. Математические основы, средства, теория. — БХВ-Петербург, 2001.

Имя Лаврова мне было знакомо в связи его работами по языку ЛИСП в СССР. Тем интереснее было узнать о роли этого выдающегося учёного в развитии отечественного программирования по этой ссылке.

Данный учебник увидел свет за три года до кончины Святослава Сергеевича Лаврова.

Может ли компьютер быть красивым? Забудем на время о дне сегодняшнем и фирме Apple. Я хочу вспомнить о Connection Machine, удивительном суперкомпьютере из середины 80-х. Его архитектура поражает и сегодня: 65536 процессорных элементов с локальной памятью в 4096 бит и программируемыми соединениями, каждый из которых исполнял только одну, универсальную инструкцию (OISC, как бы сказали сегодня). В качестве языка программирования использовался Lisp. Этот компьютер соответствовал теориям М. Минского о функционировании человеческого мозга. Задачи CM-1 выполнял соответствующие: модели нейросетей, клеточных автоматов, вычислительная физика…Любопытно, что к созданию CM-1 приложил руку знаменитый физик Ричард Фейнман. О его роли в разработке Connection Machine вспоминает автор архитектуры, Daniel Hillis, в этой замечательной статье, которая меня очень тронула.

Возвращаясь к моему первоначальному вопросу: CM-1 поражал воображение и своим внешним видом! Блок из восьми больших чёрных ящиков, намекающий на топологию гиперкуба, а на их гранях — таинственные узоры из красных огоньков, отражающих активность процессорных элементов. Компьютер “сыграл” даже в нескольких голливудских фильмах. Здесь можно узнать о том, как разрабатывался этот нетривиальный дизайн. Действительно, отличная иллюстрация к выражению “форма следует функции” (form follows function).

Лучше всего об архитектуре CM-1 пишет сам её автор вот тут. Также, на youtube есть любопытное видео.

Сегодня купил ”Построение компиляторов” Никлауса Вирта. Давно пора было эту книгу перевести на русский язык. Изложенный в ней проект компилятора Оберона для RISC-архитектуры, написанный на самом Обероне, помимо прочего является ещё и полезным примером того, как надо проектировать программные системы.

По другому поводу пытался вспомнить сегодня хорошие русские учебники по программированию. В моей библиотеке таковых нашлось два:

  1. Г. В. Лебедев, А. Г. Кушниренко. Программирование для математиков: Учебное пособие для вузов по специальностям “Математика” и “Прикладная математика”. - Наука, 1988,
  2. А. Шень. Программирование: теоремы и задачи, МЦНМО, 1995.
К слову сказать, о первом учебнике лестно отзывается автор IDA в этом интервью. Книгу Шеня, к счастью, издают до сих пор.Посетил сегодня концерт ансамбля “L'Esprit du Vent” в палатах Высоко-Петровского монастыря. Произведения Баха и его современников (Фишер, Зеленка, Карл Филипп Эмануэль Бах, Шафрат) в аутентичном исполнении на барочных скрипке, гобое, фаготе, а также клавесине и контрабасе произвели очень положительное впечатление. Трио си-бемоль мажор Яна Дисмаса Зеленки запомнилось особо.Сходил в БЗК на замечательный концерт “К 75-летию Альфреда Шнитке”. В программе были следующие произведения композитора: трио для скрипки альта и виолончели, концерт для фортепиано и струнного оркестра, concerto grosso № 2 для скрипки и виолончели с оркестром. Исполнение мне показалось очень хорошим, а завершающий аккорд первой части Concerto grosso произвёл неизгладимое впечатление…Был в воскресенье на концерте Ассоциации электроакустической музыки в Доме композиторов. Многие произведения исполнялись в записи, но были и счастливые исключения. Любопытная вещь для терменвокса и двух кото получилась у О. Ростовской. Довольно приятное впечатление оставило произведение А. Родионова. В целом же, к сожалению, подход к электронной музыке у всех прозвучавших авторов мне показался довольно-таки неразвитым и малоинтересным.

Тем же вечером посетил концерт кафедры скрипки в Малом зале консерватории.

В понедельник был в Термен-центре, на встрече с Ричардом Буланже (Richard Boulanger), автором сайта http://csounds.com/. Много рассказывалось о возможностях интеграции Csound в различные среды, такие как Max/MSP, PD, VST. В качестве удобной оболочки для работы с Csound рекомендовалась QuteCsound. В ней, например, возможно строить графическую диаграмму для инструмента. Были продемонстрированы два подхода к работе с GUI: “interactive widgets” QuteCsound и FLTK. Г-н Буланже показал свои новые Csound-инструменты, управляемые по протоколу OSC контроллерами от Nintendo Wii. Был сделан анонс новой книги о Csound, ориентированной на программистов или желающих ими стать: в ней рассматриваются различные низкоуровневые вопросы связанные с Csound и его устройством. В завершение встречи гость коротко рассказал о scanned synthesis и исполнил на Radio-Baton пьесы собственного сочинения.