Роботрон))
Компьютерная выставка в Москве, 1989 год.
Ретропонедельник №256 Орудие программиста
Начинаем неделю с нового экспоната в виртуальном музее sovtech.su Сегодня в 2^8 выпуске у нас странная штука:
Открывается как книжечка, есть направляющие шипы.
Изделие явно малотиражное - корпус получен фрезеровкой.
Это кондуктор для пробивки отверстий в перфоленте, вот такой, что справа:
Изначально эти ленты пробиваются специальной машинкой. Но в процессе работы выявляют ошибки, и для исправления неверного бита можно применить манипуляции. Лишнее отверстие можно заклеить, а вот недостающее пробить. Чтобы точно пробить отверстие в нужном месте и использовался этот кондуктор. В паре к нему должен быть пуансон, равный диаметру отверстия.
Перфоленты использовались не только в ЭВМ, но и в аппаратуре ЧПУ.
На пикабу уже был пост про перфоленты и перфокарты: Как устроено IT. Пост 3. Перфокарты
Сегодня можно купить музыкальные шкатулки с перфолентой и самому пробить мелодию. Создаем музыку для карманной музыкальной шкатулки
А экспонат из поста отправился в музей яндекса.
Оживляем легенду: Как я написал кроссплатформенный эмулятор PDP-11 на C++ и Qt6 с дизассемблером и прерываниями
Привет, Пикабу!
Наверняка многие из вас, кто изучал в университете «Архитектуру ЭВМ» или системное программирование, сталкивались с архитектурой PDP-11. Эта машина стала настоящей классикой: её элегантная система команд и ортогональные методы адресации стали основой для обучения целых поколений программистов.
Однако софта для эмуляции PDP-11, который был бы удобным, современным и работал "из коробки" на современных ОС, критически не хватает. Часто это консольные утилиты из 90-х или софт, требующий бубнов при установке.
Поэтому я решил написать свой собственный эмулятор PDP-11 — с графическим интерфейсом, интерактивной памятью, виртуальной периферией и встроенным справочником.
Главное окно эмулятора: таблица оперативной памяти с мгновенным дизассемблером (загружена программа Hello World), панель регистров процессора и интерактивный контекстный справочник.
Что под капотом?
Эмулятор написан на C++17 с использованием фреймворка Qt6. Я ставил перед собой цель сделать не просто «выполнялку» кода, а именно наглядный инструмент для студентов и энтузиастов, чтобы каждый такт процессора был понятен.
Что умеет эмулятор на данный момент:
Интерактивная память и дизассемблер "на лету"
Сердце интерфейса — таблица оперативной памяти. Как только вы вводите восьмеричный код в ячейку (например, 005203), эмулятор мгновенно дизассемблирует его и показывает мнемонику — INC R3. И наоборот, ошиблись цифрой — увидите UNKNOWN или другую команду. Это невероятно ускоряет процесс понимания машинного кода.Полный набор регистров и флаги PSW
Внизу окна всегда видны состояния регистров R0-R7 и слово состояния процессора (PSW). При пошаговом выполнении (Step Mode) можно наблюдать, как меняются флаги N, Z, V, C в зависимости от результатов арифметики.Memory-Mapped I/O (Внешние устройства)
Какая же ЭВМ без периферии? Я реализовал виртуальные устройства, отображаемые на память по классическим адресам PDP-11:Дисплей терминала (регистры TPS 177564 и TPB 177566)
Клавиатура (регистры TKS 177560 и TKB 177562)
Принтер (регистры 177514 и 177516)
Виртуальный терминал, работающий через классический Memory-Mapped I/O. Процессор посимвольно вывел строку в регистр данных дисплея по адресу 177566.
Аппаратные прерывания и таймер
Отдельная гордость — это честная реализация работы с прерываниями. Это не просто скрипт, который выполняет команды по списку. Процессор умеет:
Обрабатывать команду WAIT (переход в режим энергосбережения).
Генерировать аппаратные прерывания. Например, встроенный таймер дергает вектор 100(8) каждые 100 мс.
В комплекте с эмулятором идет программа «Stopwatch» (Секундомер). Она показывает, как можно отсчитывать реальные секунды в регистре R0, перехватывая тики таймера и отправляя процессор в спячку (WAIT) между ними. Всё как в настоящем железе!
Сборка и DevOps (чтобы работало у всех)
Как разработчик, я ненавижу, когда для запуска опенсорс-проекта нужно потратить полдня на настройку окружения. Поэтому я заморочился с инфраструктурой:
Для Windows: Написан "умный" скрипт compile.bat. Вы просто запускаете его на чистой Windows. Скрипт сам скачает MSYS2, установит нужный GCC toolchain, подтянет статическую версию Qt6 и соберет независимый PDP11.exe весом в пару десятков мегабайт (без необходимости таскать за собой гору .dll).
Для Linux (Arch/Manjaro): Написан скрипт setup_package.sh, который на лету генерирует PKGBUILD, ресайзит иконки через ImageMagick, создает .desktop файл и устанавливает эмулятор как полноценный нативный пакет в систему.
Кросс-компиляция: Поддерживается сборка Windows .exe файла прямо из-под Linux через MinGW.
Примеры программ
Чтобы пользователям не пришлось начинать с чистого листа, я подготовил библиотеку дампов .pdp, которые идут в комплекте:
Hello World — классика с циклом и проверкой флага готовности дисплея.
Keyboard — программа эхо-ввода (выводит на экран то, что набирается на клавиатуре).
16-bit Integer Calculator — полноценный калькулятор (+, -, *, /) с программной реализацией алгоритмов умножения и деления (которых нет в базовой архитектуре PDP-11) и конвертацией бинарного результата в ASCII-строку для вывода на экран.
Но просто выложить код — это полдела. Поскольку проект задумывался как образовательный, я уделил огромное внимание документации. Каждая программа из примеров разобрана буквально по строчкам: с указанием адресов, машинных кодов, мнемоник и подробным описанием логики.
Кроме того, в репозиторий вшита подробнейшая документация по самой архитектуре PDP-11. Я перевел классические справочники из старых PDF-файлов в современный, аккуратно сверстанный Markdown (с поддержкой Obsidian-ссылок).
В нем расписана работа каждой машинной инструкции, особенности адресации и, самое главное для написания эмуляторов — точное влияние каждой команды на флаги регистра состояния (N V Z C).
Пример страницы из справочника: описание работы команды сложения и её влияния на регистр состояния процессора (PSW).
Итоги и планы
Проект полностью открытый, распространяется под свободной лицензией MIT и доступен на GitHub. Если вы преподаете архитектуру ЭВМ или просто хотите поностальгировать по временам, когда программы писались на машинном коде — заходите, пробуйте, делитесь идеями!
Что можно улучшить в будущем:
Внедрить поддержку макроассемблера (чтобы можно было писать код текстом, а не только вводить восьмеричные числа).
Добавить поддержку дисковых накопителей.
🔗 Исходный код, релизы и инструкции: Github
📩 Почта для связи и предложений: Email
Буду рад любой критике, код-ревью и предложениям в комментариях. Если есть идеи, чего не хватает для идеального учебного эмулятора — пишите!
Сколько нужно человек, чтобы перенести 25 килобайт?
Четыре дюжих молодца — если речь о технологиях 1950-х годов.
На видео — запоминающее устройство от БЭСМ, первой полноценной советской ЭВМ, построенной ещё в 1952 г. Если быть точным, это магнитный барабан, который в данной машине использовался в качестве промежуточной памяти — между оперативной (на запоминающих трубках) и долговременной (на магнитных лентах и перфокартах).
Ёмкость барабана — 5120 машинных слов по 40 разрядов каждое, или как раз ровно 25 килобайт. По современным меркам это один текстовый документ или крошечная картинка, но в 1950-х в этот объём могла уместиться достаточно сложная программа. Известно, например, что на БЭСМ рассчитывали динамику термоядерных взрывов и траекторию вывода на орбиту «Спутника-1».
Барабан наряду с другими узлами от БЭСМ был сохранён в том месте, где её и разработали — в Институте точной механики и вычислительной техники им. С.А. Лебедева (ИТМиВТ). Сегодня утром мы приехали к красивому зданию на Ленинском проспекте в Москве, чтобы завершить вывоз наследия советской компьютерной индустрии.
Барабан ещё в начале 1980-х был превращён в экспонат внутриинститутского музея. Тогда мощный электродвигатель, вращавший его со скоростью 750 об/мин, был заменён на тихоходный моторчик с редуктором, а на ферромагнитное покрытие наклеили надписи из объёмных букв.
Сейчас эти буквы дождём сыпались вниз, отмечая наш путь, словно хлебные крошки в сказке про Гензеля и Гретель. Мы, конечно, все их собрали, хотя и не планируем их возвращать на поверхность барабана: он гораздо ценнее в аутентичном виде.
Если не считать разницы в форме, магнитный барабан по принципу действия похож на обычный жёсткий диск. Только головок у него очень много (в данном случае — 120), и закреплены они неподвижно. Каждая головка парит на небольшой высоте над своей дорожкой барабана.
Бросаем прощальный взгляд на советскую архитектуру середины века — и в путь!
На принимающей стороне с разгрузкой было уже проще: на помощь пришла техника.
Как уже наверняка догадались подписчики, этот магнитный барабан (а также ещё несколько десятков ценных для истории предметов) попадут в фонды Политехнического музея.
Мы планируем удалить с барабана БЭСМ следы позднейших переделок, и тогда он станет одной из жемчужин коллекции вычислительной техники.
Робот слагает музыку («Наука и жизнь», №11, 1961 г.)
Глеб Анфилов
Что же это за чудо-юдо, автоматический композитор? Где скрыт секрет его «творчества»? На что он способен? Так ли уж удивителен?
Таблицы Моцарта
Лет двести тому назад некоторые европейские музыканты забавлялись своеобразной «табличной» композицией. Великий Моцарт составил, например, шутливое «Руководство, как при помощи двух игральных костей сочинять вальсы, не имея ни малейшего знания музыки и композиции».
До чего же легко было «творить» по этому «музыкальному письмовику»!
Счастливчик, заполучивший «Руководство», запасался парой костей, нотной бумагой, чернилами, гусиным пером и садился за работу. Бросал кости, подсчитывал выпавшие очки, глядел в «Таблицу чисел», искал там первую графу, в ней клетку с числом очков на костях, в той же клетке находил номер, по которому из второй «музыкальной» таблицы аккуратно списывал напечатанный нотными знаками начальный такт музыки. Такие манипуляции повторялись восемь раз. Получались восемь тактов, первая часть вальса. Еще восемь бросков — и с помощью второй графы «Таблицы чисел» «сочинялась» вторая часть. Потом — третья и все прочие. Никаких мук творчества!
Испещренный нотный лист оставалось подписать собственным именем (воровато оглянувшись по сторонам), свернуть, перевязать шелковой ленточкой и поднести даме сердца, чтобы та, проиграв подаренную музыку на клавесине, умиленно воскликнула: «Ах мой друг! Вы сочиняете совсем как Моцарт!..»
Комплимент, конечно, ничуть не преувеличенный.
Наверное, подобные эпизоды случались неоднократно.
«Табличную» композицию Моцарта при желании нетрудно было бы механизировать. Любому часовщику под силу сделать устройство, в котором сами собой выкидывались бы кости, падали какие-то дощечки и складывались такты вальса, будто игрушечный домик из детских кубиков.
И многие из ныне нашумевших электронных «композиторов» действуют по очень похожему принципу.
Кибернетическое «вдохновение»
Правда, в кибернетической машине нет никаких кубиков. Она не знает и нот, орудует лишь с числами. Поэтому нотные символы надо перевести на цифровой язык и заложить в «память» машины группы чисел, означающие такты и целые мелодии. Все это «сырье» записывается в виде проколов на бумажной или пластмассовой ленте, которая, разматываясь, посылает соответствующие сигналы в устройство «памяти». Кроме того, в машину вводятся правила перетасовки и расстановки числовых групп. Вот и вся премудрость.
Когда нажата пусковая кнопка на пульте управления, «композитор» принимается «творить». Точно исполняя полученный заказ, он множеством способов перераспределяет группы чисел. В радиолампах мечутся электронные потоки, мелькают неоновые вспышки — и через несколько секунд очередное «произведение» готово. Оно выдается в виде колонки чисел на бумаге. Затем плод машинного «вдохновения» переводят с цифрового языка на нотный.
Таким способом один американец получал бесчисленные вариации из кусочков 39 эстрадных мелодий, введенных в «память» электронно-счетной машины, а несколько его соотечественников подвергли кибернетическим перетасовкам 37 гимнов разных времен и народов.
Разумеется, в этих экспериментах не было, по существу, ничего нового по сравнению с «табличной» композицией Моцарта. Причем машина в них играла роль не композитора, а того ловкача, который кидал кости и переписывал нотные знаки. Разница единственная: по готовой музыке машина сама составляла «таблицы» и выполняла работу с неимоверной быстротой — компилировала тысячи песенок в час!
И вот что любопытно. Если машине «разрешали» манипулировать более или менее крупными отрезками введенных в «память» мелодий, она пускалась в беззастенчивый плагиат — «воровала» из «памяти» целые музыкальные фразы, переписывая их в ленту ответа и таким образом выдавая их за «свои».
Симфония из клякс
По свидетельству историка Ма Су-ченя, игральные кости выступали в качестве соавторов композиторов еще в Древнем Китае. Во всяком случае, с их помощью там иногда происходили испытания молодых музыкантов. Экзаменующийся бросал несколько раз подряд пару игральных костей и запоминал последовательность выпавших чисел. Каждое число условно означало ноту, их совокупность — набор звуков. Эту случайную звуковую цепочку надо было обработать по музыкальным правилам, превратить в более или менее приятную песню.
В некоторых зарубежных консерваториях таким способом до сих пор проверяют способности студентов.
А вот другой пример. В 1751 году английский композитор Гейс выпустил сатирическую книжку, в которой предлагал поручить роль композитора... сапожной щетке! «Исключительно новый метод» Рейса заключался в разбрызгивании чернил упругой щеткой по нотной бумаге.
Теперь вообразите такую ситуацию. Перед неким композитором лежит лист нотной бумаги, густо усыпанный беспорядочными чернильными кляксами. И, не имея почему-то чистой бумаги, он вынужден пользоваться вот этой — грязной. Допустим еще одну нелепость: у композитора нет чернил, а есть только белила. При этом вдохновение его обуревает, он хочет творить сейчас же, не дожидаясь нормальных условий. Как же быть?
Выход единственный. Придется работать, не нанося нужные знаки на линейки нотного стана, а, наоборот, замазывая белилами ненужные, убирая лишние кляксы. Ведь кляксы на листе всюду. Они нанизались на нотные линейки, легли между ними. Тут есть и кляксы «до», и кляксы «ре», и сколько угодно других клякс — нотных знаков. Композитор терпеливо «пропалывает» пятнистый «посев», удаляет «сорняки», оставляет то, что считает достойным войти в его музыку.
Примерно такую же работу может выполнять кибернетическая машина. И это будет уже не примитивное перетасовывание готовых отрывков. Во всяком случае, музыка будет делаться заново, а не списываться из кем-то сочиненных произведений.
Электронный Палестрина
Электронная механизация «очистки» забрызганного нотного листа сложнее, чем кибернетическая компиляция из готовых песенок. Бумаги, щетки, чернил, белил, конечно, нет. Все это переведено на язык математических чисел и операций с ними. В машинную «память» вводят не мелодии, а «шум» — цифровое подобие беспорядочных чернильных клякс, хаос совершенно случайных, никак не связанных чисел. Машине задают правила математической «прополки». Эти правила гораздо сложнее, чем при компиляции,— они должны глубоко соответствовать знаниям и интуиции воображаемого композитора, замазывавшего на нотном листе лишние кляксы.
Но и тут нет ничего сверхъестественного. Действует давно известный метод «выбора из шума». И успех дела зависит от умения «хорошо» выбрать. Чем лучше, полнее составлены человеком предписанные машине правила выбора из шума, тем интереснее окажется ее молниеносное «творчество».
Первая попытка такой кибернетической композиции была предпринята на машине «Иллиак» сотрудниками Иллинойского университета (США) Хиллером и Изаксоном. Целый год они возились над программами, ставили опыты на машине, и наконец на одном из студенческих вечеров самодеятельный струнный квартет публично исполнил кибернетическое «творение» — экспериментальную «Сюиту Иллиак».
Послушать можно тут: https://my.mail.ru/music/songs/лежарен-хиллер-lejaren-hiller-программирование-illiac-suite-для-струнного-квартета-part-1-a7fbe3fbd9d81a1d22306097bffe7f07
Сюита была четырехголосой и состояла из четырех частей. Каждая «сочинялась» машиной по разным правилам. В первой части ее было дано очень мало свободы выбора. Отбраковка чисел, символизировавших ноты, велась со всей строгостью старинной гармонии. И произведение получилось в стиле, модном лет триста тому назад. Случайные звуковые комбинации были отобраны и гармонизированы примерно так же, как сделал бы это ревнитель строго классической системы Джованни Палестрина (правде, получился слишком однообразный ритм). Это подтвердили знатоки старинной музыки, присутствовавшие на необычном концерте. Ничего оригинального, понятно, не вышло. Машина выполнила лишь простенькое упражнение по правилам старой гармонизации, решила задачу, какие обычно задают ученикам музыкальных школ.
Зато четвертую часть «Сюиты Иллиак» машина писала действительно самостоятельно — почти без всяких правил и ограничений. И результат получился ужасный: сплошная какофония, дикие, нелепые звукосочетания, абсолютное отсутствие малейших признаков музыкальности.
Итак, машина по программе и заданиям человека может математически точно подбирать аккорды, составлять новые песенки из кусочков старых, «воровать» чужие мелодии и стряпать сумасшедшую ультрамодернистскую галиматью. И это все? Не мало ли для восторгов? Неужели машина-композитор так-таки не способна на что-нибудь практически ценное?
Замысел математика и виолончелиста
Советскому математику Рудольфу Хафизовичу Зарипову замысел создания автомата-композитора пришел в голову еще в юности. Это было в 1948 году. Жил Зарипов тогда в родной Казани и учился в музыкальном училище.
Однажды, готовясь к экзамену по гармонии, он подметил, что школьная гармонизация мелодий вполне поддается математическому расчету (уже тогда Рудольф был страстным любителем математики). Он прикинул несколько способов расчета аккордов и понял, что дело это доступно любой счетной машине. Но тут же у пытливого юноши мелькнула другая мысль: а что, если попробовать вычислять не только аккорды, но и главнейшую составную часть музыки — мелодии? Ведь и их законы, вероятно, тоже можно выразить математически!
Нет, тогда Зарипову не удалось даже начать решение такой задачи. Слишком это оказалось трудно. И в книгах об этом он ничего не нашел. Юношеский замысел остался нереализованным.
Потом, не бросая любимой виолончели, Рудольф поступил в университет, потом добавил к увлечению музыкой и математикой рисование, потом стал еще и страстным радиолюбителем-коротковолновиком — «путешественником по эфиру». Ему всегда было мало какого-нибудь одного дела, он постоянно «гнался за несколькими зайцами». И, против морали старой пословицы, ловил-таки их!
Давняя мечта об автомате-композиторе стала одним из «зайцев» уже по завершении высшего образования, когда Зарипов поступил в аспирантуру Ростовского университета. Но особенно увлекся Рудольф своей юношеской идеей после защиты кандидатской диссертации — как только его послали в Москву для изучения и освоения электронно-счетной машины «Урал».
Дни и ночи
Июльскими ночами 1959 года на четырнадцатом этаже громады Московского университета на Ленинских горах одиноко светилось окно. За ним, в комнатке студенческого общежития, сидел над бесконечными расчетами Рудольф Зарипов. Ранним летним рассветом ложился на 2—3 часа уснуть. В восемь утра шагал в один из институтов для практики на электронно-счетной машине. Весь рабочий день сидел за пультом, командуя решением мудреных математических задач. Вечером, когда пустели комнаты института, оставался за машиной и вел другую, любительскую работу. Начальник машины Борис Михайлович Романов разрешил ему попытаться научить «Урал» композиторскому искусству. А ночью Зарипов готовил программы на завтра.
Жил Зарипов словно в тумане, на предельном напряжении сил, не давал себе отдыха ни на минуту. Иначе было, по его мнению, «нельзя», ибо совсем немного оставалось до отъезда из Москвы.
Обучение машины мастерству вычисления мелодий поначалу шло туго. Первые пробы провалились. «Урал» не мог «придумать» ничего путного. Тонкие, интимные, порой неосознанные самими композиторами законы мелодических форм было очень трудно сформулировать и переложить на язык математических команд. Рудольф исследовал множество нот и повсюду видел чрезвычайное многообразие, неповторимость мелодических оборотов. Законы мелодий оказались неизмеримо более сложными и гораздо менее изученными, чем давно известные законы гармонии, аккордов.
Но шаг за шагом работа шла вперед. Порой напрасная, уже сделанная раньше, но не кибернетиками, а музыковедами. Позднее Зарипов, например, «открыл» для себя книгу профессора Московской консерватории Мазеля «О мелодии». Жаль, что в ту пору он не знал этой книги. Программы команд машине пришлось составлять, как говорят математики, «с нуля», буквально на голом месте.
И вот Рудольф окончательно «договаривается» с машиной. Любую ноту он обозначает пятизначным числом, в котором две первые цифры характеризуют «расстояние» от начала музыкальной фразы, причем за его единицу принимается длительность звука, равная четверти, третья — длительность звука, а четвертая и пятая — высоту. Он «приказывает» машине заканчивать мелодию всегда первой ступенью лада, причем «шагать» к концу возможно более коротким интервалом. «Запрещает» ставить подряд более шести нот, идущих в одном направлении (вверх или вниз). Наложено «вето» и на парные шаги, превышающие в сумме октаву. Предусмотрены и другие правила для смены направлений движения мелодии.
Специальный раздел программы Зарипов посвятил ритму — отдельно для маршеобразных мелодий (со счетом «раз-два-три-четыре») и для вальсов (со счетом «раз-два-три»). Особо учтено число частей будущих произведений, количество тактов в каждой части.
«Уральские» напевы
И вот готов опытный алгоритм — набор математических правил для составления мелодий. Написан первый вариант программы команд кибернетическому «музыканту». Зарипов переносит его на ленту «памяти», налаживает «генератор случайных чисел» — источник «шума», из которого «Урал» будет выуживать свои мелодии, и нажимает кнопку «пуск». На этот раз машине заказан вальс. Через несколько секунд «творчество» закончено. Машина деловито печатает на ленте «музыкальный» ответ. Новый нажим на пусковую кнопку — и вот уже «сочинен» второй вальс. Зарипов еще не знает, что за музыка получилась. Расшифрует числа он потом, ночью. А теперь заказывает марш. Но тут происходит что-то непонятное. «Урал» почему-то «не хочет» сочинять марш. Он «бунтует», останавливается, сам включает уже прочтенную ленту задания, крутит ее без конца. Громадная, раскинувшаяся в нескольких комнатах электронная машина бессмысленно моргает своими неоновыми глазками и не выдает никакой продукции.
Зарипов останавливает машину и заказывает еще один вальс. Все в порядке. Через положенное число секунд у него в руках третий рулончик с зашифрованным в столбиках пятизначных чисел вальсом машинного изготовления. Опять пробует заказать «Уралу» марш. И снова повторяется нелепый «бунт».
«Что за притча?! — мучительно думает Зарипов.— Почему «Урал» обуяла «ненависть» к маршам?»
Буквально за день до отъезда из Москвы причина «каприза» машины отыскалась. Оказывается, переписывая программу, Рудольф в одном месте ошибся: вместо «01777» поставил «01177». Это и спутало исполнительный кибернетический механизм.
В последний вечер «Урал» сочинял только марши.
Вплотную сесть за расшифровку машинных композиций Зарипову удалось лишь дома, в Ростове. И некоторые мелодии ему явно понравились. Конечно, им было очень далеко до «Подмосковных вечеров». «Но ведь это первые из первых машинных мелодий!» — думал Рудольф. А один из маршей ему так полюбился, что целую неделю не выходил из головы.
Послушать можно тут: https://zvyki.com/song/114389421/EVM_Ural_-_Uralskie_napevy/
Спустя полгода на страницах «Докладов Академии наук СССР» в разделе «Кибернетика и теория регулирования» появилась статья Зарипова под заглавием «Об алгоритмическом описании процесса сочинения музыки». Представил ее к опубликованию известный ученый, академик С. Л. Соболев. Наверное, впервые за свое существование самый маститый из всех наших научных журналов напечатал несколько нотных строк. И они были рождены не живым порывом человеческого вдохновения, а научным знанием, вложенным в машину, и стремительным каскадом автоматических электронных всплесков. Позднее в одной из своих статей Зарипов назвал эти мелодии «Уральскими» напевами.
И робот будет служить
Теперь, после опытов Зарипова, мы вправе с большим уважением посмотреть на кибернетических роботов-композиторов. Как-никак, но они научились не только плагиату и лженоваторству, но и аккуратной гармонизации и даже составлению сносных мелодий.
Значит ли это, что машина-композитор когда-нибудь будет в состоянии заменить человека-композитора? Каковы перспективы машинного сочинения настоящей, большой музыки?
Может быть, в далеком будущем, проделав колоссальный исследовательский труд, удастся вкладывать в машину сложнейшие алгоритмы и учить ее конструировать музыку так, как создавал ее когда-то тот же Палестрина, или Бах, или Моцарт.
Уже в наши дни есть инженеры (не музыканты!), которые предлагают такое: заставить машину переводить литературное произведение на... «музыкальный язык». Скажем, привести «литературный алгоритм» Пушкина в соответствие с «музыкальным алгоритмом» Чайковского, найдя их с помощью машины, и заново превратить «Евгения Онегина» из поэмы в оперу! Под грустные стихи машина, подражая знаменитому музыканту, напишет грустные мелодии, под бодрые и шутливые места текста — автоматически сконструирует веселые напевы и созвучия. Фантастика, бред? Кто знает! Некоторые инженеры-кибернетики говорят об этом без тени улыбки и всерьез предполагают таким способом «продлить творческую жизнь» великих композиторов. Если бы Чайковский не успел написать музыку к «Пиковой даме», машина-де сделала бы это «в стиле Чайковского». Точно так же она могла бы «писать, как Чайковский», новые оперы, концерты, симфонии на какие угодно другие поэмы, повести, романы.
Что и говорить, исполнение такого замысла было бы громадным научным успехом. Даже частичная удача, даже небольшая «похожесть» машинной музыки на человеческую, взятую за образец, значили бы, что наука достаточно глубоко раскрыла творческую систему того или иного композитора (кстати сказать, и саму работу по разгадке этой системы, по приготовлению алгоритма можно было бы поручить машине).
Однако и этот немыслимо сложный эксперимент едва ли приобрел бы музыкальную ценность. Есть нечто сокровенное, в чем машина органически не способна подняться до уровня своего создателя, и по той простой причине, что в человеческом существе далеко не все исчерпывается голой кибернетикой, пусть даже архисовершенной. Ведь машина — только робот, устройство, по самой сути своей подчиненное людям.
Нет, подлинный художник каждое новое свое произведение создал бы не так, как блестяще «обученный» механизм. Ибо, человеческое счастье — счастье труда, подвига, любви, как и горе, и тоска, и трагизм — достояние только людей. Ибо человек — дитя Вселенной.
Ученый мыслит силлогизмами, художник — образами, писал в свое время Белинский. Композитор мыслит звуковыми образами. Создание музыки — это один из видов мышления художественными образами. Процесс этот необычайно сложен, и, конечно, подлинного композитора-творца, художника, знающего дорогу к человеческому сердцу, машина не заменит никогда.
Настоящий композитор творит свои произведения не по шаблонным, однажды заданным законам, а всякий раз по-новому. Его манера, стиль, настроение неуловимо меняются от произведения к произведению, от части к части, от одной музыкальной фразы к другой. Перемены эти, хоть и доступные математическому выражению, не поддаются никакому предвычислению: ведь человек черпает их в непрерывно меняющейся жизни. И чем крупнее, талантливее композитор, тем яснее сидит он современность, тем глубже и тоньше изменения, вносимые им в музыкальную традицию.
***
И все же музыкальный робот обещает массу любопытного.
Как заманчиво, к примеру, «скрестить» пусть даже упрощенные творческие стили двух разных композиторов и посмотреть, что из этого получится! Или испытывать творческую индивидуальность сочинителя. Вложил в машину его произведение — и через секунду получил исчерпывающий ответ: «Данный опус на 50 процентов является подражанием Дунаевскому, на 40 процентов повторяет Соловьева-Седого, на 10 процентов самобытен». Это еще неплохая оценка. А что, если самобытности машина вообще не найдет?
Разумеется, такое испытание не главное, к чему стоит стремиться. Однако мы вправе надеяться, что кибернетическая машина станет со временем отличным инструментом для опытов с комбинациями звуков, великолепным прибором для исследования музыкальных форм, ладовых сочетаний, гармонии, строев. Композитор будет поручать своему электронному слуге сложные гармонизации, проверять с его помощью только что изобретенные музыкальные структуры. Быть может, автоматическое звукотворчество ускорит и облегчит работу с музыкальными синтезаторами. Послушный, исполнительный кибернетический робот, «сидя» за пультом электронного оркестра, поможет композиторам будущего творить музыкальные произведения неизмеримо быстрее, чем это делают наши современники.
P.S. от ТСа: добавил пару фото и пару ссылок на аудио.
Век изъятия (1)
На заре Интернета у многих возникло чувство безграничной свободы, когда ты можешь сказать что-то на весь мир. Появились надежды, что теперь всё будет по-другому, и монополиям придётся подвинуться перед напором человеческой креативности. Как же мы ошибались. О том, чем обернулись эти надежды, рассказывает нью-йоркский профессор Тим Ву, который сходил во власть, а теперь пишет книжки.
Век изъятия. Как технологические платформы завоевали экономику и ставят под угрозу наше грядущее процветание.
Технологии – это хорошо, но не всегда для всех. Слишком часто они используются не для сужения, а для расширения экономического неравенства. Да, были такие вещи, как плуг, которые стали благословением для простого трудяги. Но была и хлопкоочистительная машина, разогнавшая рабство на плантациях. Нужно стремиться к структурному балансу, то есть стараться, чтобы и волки были сыты, и овцы целы. Как, например, это делается в NFL, где мелкие клубы не обижают и сохраняют интригу для всей страны.
Экономика – это такая вещь, где имеются ключевые места, контроль над которыми позволяет изымать ренту. Одними из таких мест являются платформы, которые подобны химическим катализаторам. Как и катализаторы, они помогают взаимодействовать участникам. Конечно, это не новое изобретение. Ещё с античных времён они решают проблему поиска информации и снижают минимальный размер компании, необходимый для того, чтобы наладить сбыт. Так открываются двери для мелкого бизнеса, который может прийти на рынок и за скромную плату получить торговое место в рядах.
Далее, платформы обеспечивают инновацию. Хорошо организованная платформа может поддерживать новые версии товаров и услуг. Торговая улица может дать место любому бизнесу. Сегодня здесь стоит табачный ларёк, а завтра будет кофейня. Более того, неспособные обеспечивать развитие платформы вынуждены рано или поздно сойти со сцены, как сошла со сцены популярная французская домашняя сеть Минитель. Она была на пике популярности ещё до интернета, в восьмидесятых. С её помощью можно было легко и быстро узнать погоду, расписание поездов и ещё кучу разных вещей. И переписываться тоже можно было! Но с 2012 года она больше уже не работает. К этому времени текстовые сообщения стали анахронизмом. Французские техники упустили шанс развития, опираясь лишь на самих себя: то, что работало для Minitel, не работало ни для кого другого.
То ли дело Интернет, у которого гораздо более открытый дизайн, переживший многократную смену технологических поколений: текстовые сообщения сменились форумами, затем пошли вебстранички, потоковое видео, а сегодня у нас есть нейронки и боты. Подобно электрическим сетям, Интернет остаётся константой в эпоху циркуляции товаров и услуг на его платформе.
Сегодняшние поставщики платформ знают о своей роли и не лишены амбиций. Ещё Билл Гейтс продемонстрировал миру возможность извлечения прибыли из доминирования в экосистеме. С тех пор, всяк и каждый стремится порулить экономикой, которой они призваны служить.
А до того? Если говорить про компьютерные технологии, то можно вспомнить время, когда платформы ещё не появились. И даже после платформизации история индустрии программирования представляла собой неустанное перетягивание каната между частниками и правительственными агентствами. В начале шестидесятых рынком заправляла гигантская корпорация под названием IBM, которую по праву можно назвать предком американской IT. Однако уже тогда IBM была «дедом не без странностей». Они только-только перешли с производства счётного оборудования к компьютерам благодаря стараниям Уотсона-младшего. Он понял, что времена перфокарт подходят к концу, и запустил первую линейку полностью электронных машин IBM 700. Их успех породил волну подражателей не только в Штатах, но и в других странах, в частности в Японии.
Чтобы сохранить лидерство, необходимо было делать новые решительные шаги, и одним из таких шагов стала система 360. Это была и первая платформа, которая всё изменила. Почему платформа? Потому что в ней софт и хард были твёрдо разграничены.
Однако софт должен был быть только от IBM, что не понравилось не только потенциальным конкурентам, но и американским антимонопольным органам. Тогда настроения были не то, что сейчас. Тогда американские бюрократы всерьёз опасались, что чрезмерное господство корпораций может либо привести к фашизму, либо спровоцировать коммунистическое восстание. Известный антимонополист судья Арнольд писал:
Германия организовалась до такой степени, что фюрер стал неизбежным. Если бы не было Гитлера, то был бы кто-то другой.
Кстати, основатель IBM Уотсон-старший, получил в своё время медаль лично от того самого фюрера за службу Рейху.
Короче, на них наехали, как наехали до того на AT&T. Началось всё с иска компании Control Data, которые обвиняли IBM в давлении на потенциальных клиентов, которым угрожали отказать в продаже любого оборудования IBM в случае, если они купят самый быстрый на то время суперкомпьютер от Control Data. Министерству юстиции также не нравилась практика продажи в одном флаконе: купив хард от IBM, приходилось брать и софт тоже от них. В 1968 году американская юстиция представила свои возражения, так что IBM пришлось организовать внутреннюю комиссию. Очень скоро выяснилось, что карты у них неважные, так что Уотсон-младший решил начать разделение продаж софта и харда. Так открылась архитектура System/360 и было положено начало современной индустрии программного обеспечения.
Подобное поведение властей было нетипичным для того времени. Остальные страны целенаправленно взращивали свои «национальные» компании. Так делали Британия, Франция, Италия. И даже Советский Союз включился в гонку, породив клон System/360 под названием ЕС ЭВМ. Японское министерство также считало, что местные производители должны, как минимум, сотрудничать между собой. Fujitsu, Hitachi, NEC, Toshiba, Mitsubishi, Oki – всех их пригласили в партнёрство под названием Japanese Electric Computer Corporation (JECC), которую взращивали щедрыми займами от государства.
Почему бы и американцам не поставить на лидера? Но нет, министерство юстиции не то что не помогало «голубому гиганту», но даже не оставляло его в покое. Оно прессовало IBM, желая раздробить эту компанию. В ретроспективе становится ясно, что поощрение конкуренции в отрасли себя оправдало. Всё больше новых компаний стало писать софт для платформы. Молодые Гейтс, Джобс, Эллисон организовали свои стартапы для разработки софта либо для существующих платформ, либо создали новые, свои собственные.
Япония, напротив, не смогла развить независимую программную отрасль, и впоследствии у них тоже ничего не вышло, за исключением игровой отрасли. Их централизованный подход исключил креативную анархию и оставил мало места для органического роста. Поучительно сравнение и с другим отраслями, например с аэрокосмической промышленностью, в которой доминировали Боинг, Макдоннел Дуглас и Локхид. Здесь американцы вырастили из Боинга национального чемпиона, и такого взрывного развития, как в IT, в этой отрасли не произошло. Сегодня будущее Боинга далеко от определённого, а против современных IT-гигантов подаются иски. Антимонопольное законодательство может служить ключевым средством для восстановления баланса.
Ещё одним примером большой платформы может служить Интернет. Задуман был он в одно время с System/360 группой учёных и инженеров, но чтобы воплотить его на практике, его нужно было запустить на базе существующих телефонных сетей. Вряд ли бы у них что-то получилось, если бы не решение правительственных регуляторов разбить монополию AT&T, которая противодействовала появившимся молодым стартапам в их желании объединить мир. Федеральная комиссия по связи (FCC) заставила AT&T позволить работать другим бизнесам на базе своих телефонных сетей. Главное – платить по счетам. Отчаянное сопротивление телефонного гиганта привело к его раздроблению на восемь отдельных компаний в 1984 году. В обстановке сетевой нейтральности появились новые провайдеры. Они предоставили услуги, которые легли в основу Интернета. Случилось ли бы это в условиях сохранения монополии AT&T – трудно сказать. Но снова имеет смысл сравнить с другими странами, которые не создали ни смартфона, ни нормального персонального компьютера. Американцы же, хоть тоже не могли предвидеть будущее, поставили на конкуренцию, и их ставка сыграла самым внушительным образом.
Девяностые и начало нулевых стали временем техно-оптимизма. Пророчился расцвет одиночек-профессионалов и вообще закат промышленных организаций. По мнению тогдашних визионеров, будущее принадлежало самоорганизующимся пользователям Сети. Глядя на успех Линукса и Википедии, они предсказывали господство децентрализации, при котором так называемым «голиафам» ничего не светило.
Вышло явно по-другому. Процветание тех лет базировалось на платформах, предоставленных либо федеральными властями, либо находившихся под их наблюдением. Новые же платформы, например Гугль, тоже предлагали поначалу прозрачные правила игры и не пытались «быть злыми», играя просвещённого лидера. Но в следующем десятилетии что-то изменилось. Флагманы рынка написали новые правила для извлечения максимума пользы из своего могущества. Править стала стратегия извлечения прибыли из зависимых бизнесов и доения пользователей на предмет их времени и данных . Вряд ли они с самого начала планировали делать так. Неумолимая корпоративная логика и жёсткие правила игры на рынке привели к тому, что пришлось следовать воле акционеров и аналитиков с тем, чтобы нарастить прибыль. Гугль перестал отличаться от Эксона, Пфайзера или Уоллмарта. Жажда прибыли заставила их расстаться с юношескими мечтами о служении более высокой цели.
Весьма показательной стала история 2013 года, когда в ответ на появление перспективного конкурента в области онлайн-картографии Гугль скупил эту компанию (Waze) за 1,3 миллиарда долларов. Куда же смотрела Федеральная комиссия по торговле? Они предпочли не вмешиваться, потому что Waze рисовал маршруты, в то время, как Google Maps это просто карта. Из этого всего американские бюрократы сделали абсурдный вывод, что эти фирмы не являются конкурентами. Эпоха Интернета как великого уравнителя закончилась.
О причинах доминирования американской IT-отрасли можно долго рассуждать. На мой взгляд, помимо поощрения конкуренции, большую роль сыграли щедрые финансовые вливания со стороны правительства, которое стимулировало развитие отрасли и посредством наращивания оборонного заказа. Также не стоит забывать высокую степень кооперации на рынке, а также потенциал для сбыта. Компьютер можно было продать не только военным, но и корпорациям. А корпораций в США было много.
Что интересно: автор книги работал специальным ассистентом президента по технологиям и конкуренции у Обамы и Байдена, и у нью-йоркского генпрокурора тоже засветился. Но что-то непохоже, что на своём посту он смог добиться улучшения сетевой нейтральности. Что у него хорошо получается – это популяризировать свои идеи. За что его можно поблагодарить.




























