Аннотация: Необычный некролог - с астрологическим разбором.
Никлаус Вирт. Не признанный до конца гений IT.
Pascal и не только
Новый год начался потерей великого человека. 1 января на 90-м году жизни скончался Никлаус Вирт - один из наиболее выдающихся компьютерных инженеров. Он наиболее известен как создатель языка программирования Паскаль (Pascal), но это не единственный его важный вклад в IT.
Во время учёбы в университете я делал рефераты о созданных им технологиях, в том числе отдельный с обзором языка Оберон.
Никлаус Вирт родился 15 февраля 1934 года в Винтертуре, в предместье Цюриха, Швейцария, в семье Вальтера Вирта, школьного учителя, и Хедвиг Вирт, урождённой Келлер. Дом семьи Вирт находился по соседству со школой, в которой работал глава семейства.
С самого детства Никлаус стал проявлять интерес к технике.
Городок Винтертур с богатой историей всегда славился развитым машиностроением. Здесь налажено производство локомотивов и дизельных двигателей.
У семьи была страсть к книгам; в доме была большая библиотека, в которой мальчик проводил много времени, читая книги о железных дорогах, турбинах, телеграфе. Все эти факторы способствовали тому, что у мальчика рано определились предпочтения и наклонности.
С ранних лет он увлекался авиамоделированием и ракетостроением и даже пытался изготавливать в подвале школы ракетное топливо, организовав там тайную химическую лабораторию; однажды одна из сделанных им моделей попала под ноги директору заведения.
А впервые создав устройство для дистанционного управления, Никлаус увлекся системами программного управления.
Но мечты о небе остались с Виртом на всю жизнь. Он был привязан к ним так сильно, что его коллега, профессор Дональд Кнут, однажды сказал: "Никлаус всегда мечтал строить аэропланы, а языки программирования и микрокомпьютеры были нужны ему лишь как инструменты для их создания". Впрочем, следует отметить, что сам Кнут отложил на десятки лет выход своей 7-томной энциклопедии "Искусство программирования" для разработки и внедрения одной из лучших систем типографической вёрстки - LaTeX (название произносится как "латех").
Других сведений о ранних годах Никлауса обычно не приводят, нет упоминаний о братьях и сёстрах.
В 1954 году Вирт поступил в Швейцарский федеральный технологический институт в Цюрихе (английское название - Swiss Federal Institute of Technology Zurich, оригинальное - Eidgenössische Technische Hochschule Zürich, ETH или ETHZ), где учился 4 года на факультете электроники и получил степень бакалавра. Степень магистра он получил уже в Лавальском университете в 1960-м, после чего он был приглашен в университет Калифорнии в Беркли. Именно здесь он защитил диссертацию, темой которой стал разработанный им с другим студентом-напарником язык программирования Euler (Эйлер) - расширение Алгола-60 (ALGOL 60, от algorithmic language 1960 version) с помощью языка Лисп.
Небольшая справка для несведущих.
Все слышали о двоичном или бинарном коде, что информация - данные и команды, операции с ними - представлена внутри компьютера набором сигналов с двумя значениями - ноль или единица. Но набирать и расшифровывать последовательности из нулей и единиц человеку неудобно, потому для упрощения существует 16-ричное представление, через цифры от 0 до 9 и буквы от A до F.
Но и с ним работа трудоёмка. Поэтому машинные команды и ячейки кэш-памяти имеют словесные обозначения, формируя уникальные для разных аппаратных архитектур языки ассемблера. Ассемблер считается языком низкого уровня программирования, уровня операционной системы и служебных программ-утилит, таких как драйверы. А вот код прикладных программ или части программ, исполняемые на компьютере, не связанные с отправкой или приёмом данных через сеть, обычно написан на языках высокого уровня, который представляет собой упрощение естественного, человеческого (обычно английского) языка для описания алгоритмов с указанием форм данных и их обработки. Первым языком высокого уровня был FORTRAN (сокращение от FORmula TRANslator), изначально представлявший набор готовых функций (последовательностей команд) для математических вычислений.
Работа Вирта была замечена сообществом разработчиков языков программирования, и в том же 1963 году он был приглашен в Комитет по стандартизации Алгола IFIP (Международной федерации информатики), который разрабатывал новый стандарт языка, впоследствии ставший Алголом-68. Параллельно, с 1963-го по 1967-й Вирт работал ассистентом в Стэнфордском университете (США). Вместе с Джимом Уэльсом разработал и реализовал язык PL/360, предназначенный для программирования на платформе IBM/360.
В комитете Вирт долгое время работал с математиком Чарльзом Хоаром, вместе они и представили свой вариант модификации - язык ALGOL W (начальная буква фамилии W - от Wirth), который был очищен от всех недостатков и дополнен только самыми необходимыми средствами. Однако большой поддержки проект не получил. После окончания работы комитета Вирт критично отзывался по поводу принятой версии, отмечая её ненадежность и недостатки.
В 1967-м, в возрасте 33 лет (!) он вернулся доцентом в Цюрихский университет, в следующем году ему присвоили звание профессора компьютерных наук. В университете Вирт проработал ещё 31 год. Много занимался организационной деятельностью, совершенствовал методику обучения.
О взрослой личной жизни Вирта также обычно не пишут; лишь на паре сайтов указывают, что супругу Никлауса зовут Нани Такер, у них трое детей: сын Христиан и две дочери - Кэролин и Тина. Знакомые Вирта отзываются о нём как добродушном и приветливом человеке. Придерживался здорового образа жизни, ходил в походы в горы.
Профессор считал, что языки программирования должны стать чётко структурированными наборами правил для управления компьютером. Ещё в 1968-м (в возрасте 34 лет) он со своей университетской командой на основе своих же наработок из Algol W подготовили проект языка, названного Паскалем в честь учёного Блеза Паскаля, и занялись разработкой его компилятора (программы трансляции, перевода кода языка высокого уровня в ассемблер или машинные команды).
Разработка Паскаля была завершена в 1970-м, в следующем году было представлено описание Pascal. Для переноса Паскаль-системы на различные вычислительные платформы в 1973-м с участием Вирта был разработана Pascal-машину (P-машину), исполняющей на любой платформе промежуточный "пи-код", в который предполагалось компилировать все программы, то есть прототип виртуальной машины; компилятор для Pascal был написан на самом Pascal.
Позже Джеймс Гослинг использовал концепцию P-машины, названной виртуальной машиной, при разработке языка Java.
Вирт назвал своё детище небольшим языком со структурным программированием и структурированными данными. Одной из целей Pascal было заявлено обучение студентов профессиональному программированию, однако язык годился также для решения сложных практических задач. Очень быстро, в течение двух-трёх лет, Pascal приобрёл большую популярность среди программистов и преподавателей. В 1990-х он благодаря созданным другими программистами расширениям - Turbo Pascal, Borland Pascal, более известный как Delphi - считался одним из самых распространённых алгоритмических языков.
В 1960-х возник "кризис программного обеспечения", связанный с организацией коллективного написания программ. Большие программы, размером в тысячи и десятки тысяч строк, создавать и редактировать в одиночку крайне трудоёмко и затратно по времени. Но при распределении задачи между множеством разработчиков тоже возникали проблемы с последующим совмещением блоков кода.
В конце 1960-х - начале 1970-х годах в качестве ответа группа из Вирта, того же Хоара и ещё одного светоча компьютерной индустрии - Эдсгера Дейкстры - разработали концепцию структурного программирования.
Процесс начался в марте 1968 года, когда вышла отредактированная 34-летним Виртом статья Дейкстры "Оператор Go To считается вредным" ("Go To Statement Considered Harmful"), нацеленная против использования оператора безусловного перехода goto как запутывающего отслеживание выполнения кода. Набор примеров создаваемых некорректным применением проблем оказался настолько внушительным, что в некоторых языках программирования его вовсе нет.
Появившаяся ранее, ещё в 1965-м на итальянском и 1966-м на английском, доказанная теорема математиков Бёма и Якопини утверждала, что любую программу можно представить через три управляющие структуры - цикл, ветвление и последовательность.
Отсюда вытекает ещё три принципа структурного программирования.
Во-первых, в программе базовые управляющие конструкции могут быть вложены друг в друга произвольным образом; никаких других средств управления последовательностью выполнения операций не предусматривается.
Во-вторых, каждую логически законченную группу инструкций следует оформить как блок. В данном случае понятие "блок" означает, что к блоку инструкций следует обращаться как к единой инструкции. Они служат для ограничения области видимости переменных и функций, могут быть пустыми или вложенными один в другой. В языке Паскаль их границы задаются конструкцией BEGIN..END, в Си и Си-подобных - фигурными скобками {...}, в языке Пайтон - отступами. Вот, кстати, ещё один аспект оформления кода - записывать его одной сплошной строкой или столбцом является дурным тоном, в таком виде его трудно "читать"; содержимое блоков должно выделяться визуально, через дополнительные отступы.
Ещё один принцип - повторяющиеся фрагменты программы можно оформить в виде подпрограмм (процедур и функций). Таким же образом (в виде подпрограмм) можно оформить и неповторяющиеся, но логически целостные фрагменты программы.
С этим положением связан последний пункт концепции - декомпозиция процесса создания. Вышедшая в 1971-м (в год 37-летия) статья Вирта "Разработка программы методом пошагового уточнения" описала и обосновала ставшую впоследствии классической методологию разработки программного обеспечения "сверху вниз". Сначала утверждается общая структура программы, выделяется основной исполняемый модуль и вызываемые им подпрограммы, и лишь затем идёт их поочередное написание и тестирование.
На основе своего Паскаля Вирт создавал новые языки, в которых реализовал развитие структурного подхода и другие компьютерные механизмы. В 1975 году разработал язык Модула, в котором реализовал идеи разработки модульных программ с хорошо определёнными межмодульными интерфейсами и параллельного программирования. При этом из синтаксиса языка Вирт исключил унаследованную ещё от Алгола-60 необходимости применять составные операторы в конструкциях ветвления и циклах.
Несколько раз, в том числе в годовом академическом отпуске в 1976-77 и 1984-85 годах, Никлаус Вирт был гостем легендарного научно-исследовательского института Xerox PARC в Калифорнии. Считается, что оттуда в 1980-м он привез в Европу первые компьютерные мыши - на основе которых швейцарская компания Logitech впоследствии создала первую в мире компьютерную мышь массового производства.
Модула не была широко известна и имела всего одну экспериментальную реализацию.
Большую известность, но всё-таки намного меньшую, чем у Паскаля, получила доработанная версия - Модула-2, разработка которой длилась с 1977-го по 1980-й.
Она была признана лучшим для своего времени языком, который использовался для создания отличающихся особой надежностью программных комплексов. Сейчас он преимущественно применяется для низкоуровневой работы, такой как написание драйверов.
Язык был предназначен для реализации системного ПО разработанной силами небольшой группы исследователей ETH системы Лилит (Lilith) - первого в Европе 16-разрядного персонального компьютера с растровым дисплеем, винчестером, мышью, лазерным принтером и локальной сетью; к 1984-му году успели выпустить несколько сотен экземпляров. Lilith обогнала тенденции компьютерной индустрии на несколько лет, позднее Вирт с сожалением говорил, что, не реализовав потенциал этой системы, швейцарская компьютерная индустрия упустила свой исторический шанс.
Развитием Модулы-2 стал язык Модула-3, разработанный совместно фирмами DEC и Olivetti; в его создании Вирт участия не принимал.
В конце 1970-х, параллельно с разработкой Модулой-2 и Лилит, Вирт вместе с Хоаром приняли участие в конкурсе министерства обороны США на разработку нового языка для программирования встроенных систем. Повторилась история с Алголом-68 - их вариант не получил одобрения. В итоге конкурс выиграл проект, основанный на Паскале, но гораздо более сложный и объёмный. Это язык был назван Адой - в честь Ады Лавлейс, урождённой Байрон, дочери великого английского поэта, математика и "первого программиста" - она составила инструкцию вычисления чисел Бернулли в комментарии к статье об аналитической машине Бэббиджа. Большого распространения вне госструктур и работающих с ними фирм он не получил. Более того, теперь Модула-2 наравне с языком Ада используются в Канаде и Великобритании в системах управления атомными электростанциями.
С 1982 по 1984 и с 1988 по 1990 Вирт возглавлял факультет компьютерных наук ETH, с 1990 года и до ухода на пенсию - Институт компьютерных систем при ETH.
С 1983 года началось чествование Вирта за заслуги перед отраслью, первой была премия IEEE (Institute of Electrical and Electronics Engineers); в следующем году он получил наивысшую награду - премию Алана Тьюринга (Alan Turing Award) от ACM (Association for Computing Machinery, Ассоциация вычислительной техники), которая в компьютерном научном мире эквивалентна Нобелевской.
Осенью 1985-го Вирт с Юргом Гуткнехтом и Гансом Эберле взялся за новый проект, названный Обероном, в качестве замены и продолжения прежней Лилит.
В 1988-м в рамках этого проекта Вирт разработал на основе Модула-2 язык программирования Оберон под однопользовательскую рабочую станцию Ceres ("Церера"). По словам Вирта, первоначально операционную систему хотели писать непосредственно на Модуле, но пришли к выводу о необходимости её доработки и сокращения, что и привело к появлению нового языка программирования. Гутнехт создал одноимённую с языком ОС, Эберле сконструировал саму машину (аппаратную часть комплекса). Как вы уже понимаете, система опередила развитие коммерческого сектора ИТ-индустрии на десятилетие; среди взятых на вооружение ключевых идей - динамическая компиляция и аплеты, смарт-теги и Digital Dashboard, концепция интеллектуального документа и веб-службы.
В 1989 году в Швейцарской высшей технической школе Цюриха (ETH) была выпущена первая реализация Оберона для процессоров семейства NS32000. Он был создан в качестве компонента операционной среды Оберон. Этот компилятор требует менее 50 Кбайт памяти, состоит из 6 модулей общим объёмом около 4000 строк и сам себя компилирует за 15 секунд на компьютере с процессором NS32532 (тактовая частота - 25 МГц).
Язык Оберон сохранил основные черты синтаксиса Модулы и стал её объектным расширением.
В статье "От Модулы к Оберону" Вирт подробно пояснил причины удаления каждого из элементов.
Рудиментарные средства поддержки параллельного программирования, имевшиеся в Модуле-2, не вошли в язык, так как он обслуживал однопользовательскую операционную систему.
В целях упрощения отказались от обработки исключений.
Было упрощено описание массивов (индексы массивов могут быть только целочисленными и всегда начинаются с нуля, подобно языку Си), ограничено использование указателей - указатели могут существовать только на записи и массивы, в списках импорта указывается только импортируемый модуль, а при использовании импортированных имён требуется обязательная квалификация (явное указание имени модуля-экспортёра).
Среди прочего были исключены перечислимые типы, типы-диапазоны, множества общего вида, беззнаковый целый тип, локальные модули, модули определений, списки экспорта, оператор for, прежний вариант оператора with, специальный синтаксис определения главной программы.
Внедрение объектного подхода позволило отказаться от механизма вариантных записей Модулы, являющихся отступлением от первоначальной строгой статической типизации, что дало возможность ввести механизм автоматического управления памятью - сборку мусора. Из языка исключена возможность освобождения динамически выделенной памяти с помощью особого оператора, а вместо него сама среда исполнения содержит модуль, возвращающий неиспользуемую память системе.
Автоматическое управление памятью является средством повышения надёжности программ с динамическими структурами данных, так как исключает человеческие ошибки, свойственные, например, таким языкам, как С/C++.
По утверждению Вирта, разработчики языка Java за несколько лет до её создания "изучили исходные коды Оберона и, в частности, исходные коды обероновских сборщиков мусора. Потом они испортили Оберон синтаксисом Си и назвали получившееся словом Java".
В реальности было так - в 1993-м в ETH приехали представители Sun Microsystems во главе с Биллом Джоем. Они приобрели лицензию на систему Oberon и пригласили выступить у них с ответным визитом лучших учеников Вирта. В частности, Микаэль Франц сразу после защиты соответствующей диссертации в ETH делал доклад по динамической кодогенерации ("code-generation on-the-fly", кодогенерация на лету) с использованием компактного древовидного представления вместо классического байт-кода в Sun Labs в марте 1994 года, за 14 месяцев до выхода Java и за полгода до разработки браузера HotJava.
Несомненное сходство Оберона и Java имеется: стремление к строгой типизации, ограничение множественного наследования, браузерная среда с автоматическим управлением памятью, концепция аплетов. Только, похоже, Sun не стали рисковать и включать новейшую реализацию мобильного кода в древовидном представлении, что предлагал в диссертации Франц, а сохранили готовый апробированный подход - байт-код из изначального прототипа Гослинга.
Однако если в Обероне и его прямых продолжениях минимализм остаётся во главе угла, разработчики Java пошли по пути экстенсивного наращивания возможностей языка.
Описание его синтаксиса поместилось на одной странице, полное описание языка занимает около 20 страниц, что вдвое меньше, чем описание Модулы-2. Оберон является если не минимальным, то, во всяком случае, одним из самых малых по объёму универсальных языков программирования высокого уровня.
Эпиграфом к описанию оригинального Оберона было выбрано высказывание Эйнштейна: "Делай настолько просто, насколько возможно, но не проще этого".
По подсчётам, опубликованным в статье Сергея Свердлова "Арифметика синтаксиса", "линия Вирта", как он её назвал - линейка языков, включающая Паскаль, Модулу-2, Оберон и Оберон-2 - это единственный пример "генетической линии" языков-потомков Алгола-60, в которой сложность языка, определённая как количество лексем в его описании, стабильно снижалась и в настоящее время оказывается ниже, чем у общего "прародителя" - Алгола-60. Все языки "линии Вирта" проще Алгола-60, и каждый следующий язык в этой линии проще предыдущего. В то же время Ада более чем вдвое сложнее своего предшественника - Паскаля, C++ приблизительно в 1,7 раза сложнее Си, а в линейке "Паскаль - Турбо Паскаль - Object Pascal" сложность постоянно росла от версии к версии.
В 1992-м Вирт и Мёссенбёк выпустили сообщение о новом языке программирования - Оберон-2, минимально расширенной версии Оберона. По сути, это была разработка Мёссенбёка, но одобренная Виртом. Его распространение ограничилось преимущественно микроконтроллерами.
В этом же году учениками Вирта была образована дочерняя компания ETH - Oberon microsystems, которая занялась разработкой систем Оберон для внутреннего швейцарского рынка (в основном под промышленных роботов). Вирт стал одним из членов её совета директоров. В 1999-м эта компания выпустила следующую версию Оберона - Компонентный Паскаль, более приспособленную для компонентного программирования (схожего с объектно-ориентированным; компонента - независимый модуль исходного кода программы, предназначенного для повторного использования, развёртывания и реализации в производных конструкциях).
Во всех его работах прослеживается изначальная ориентированность на реализацию наиболее эффективного решения конкретной инженерной задачи на базе гарантированно работающего, математически обоснованного инструментария.
Вирт твёрдо стоял на том, что программирование должно быть нормальной инженерной дисциплиной, гарантирующей достаточный уровень надёжности своих разработок. Достижение же надёжности возможно, по Вирту, только одним способом: максимально возможным упрощением и самих систем, и инструментов, которые используются для их создания.
В соответствии с этим принципом языки и системы программирования, разрабатываемые Виртом, всегда были образцом "разумной достаточности", даже своего рода аскетичности - в них предусматривалось только то, без чего нельзя обойтись. Ещё один принцип, которым всегда руководствовался Вирт, можно сформулировать так: "Инструмент должен соответствовать задаче. Если инструмент не соответствует задаче, нужно придумать новый, который бы ей соответствовал, а не пытаться приспособить уже имеющийся".
Он не приветствовал разработку "языков, универсальных вообще". Каждая разработанная Виртом система имела чётко сформулированное назначение, область применения, и он всегда без колебаний исключал из разработки всё, что не было нужно для данного конкретного назначения. В "конкретное назначение", например, Оберона входит обеспечение предельно лёгкой и безопасной расширяемости системы, поэтому, не являясь языком "универсальным вообще", то есть не включая всех возможных средств для всех вообразимых применений, Оберон всё-таки является универсальным - "универсальным через расширяемость".
Даже расширение существующих языков и систем всегда сопровождалось упрощением.
Вирт часто критиковал "американский подход" к разработке средств программирования, в котором маркетинговые соображения превалируют над требованиями математической стройности и гарантированной надёжности, и каждое новое модное поветрие сопровождается некритичным внесением в языки программирования новых синтаксических элементов. Это приводит к неправильной оценке роли некоторых идей и, в конечном итоге, к неправильной расстановке приоритетов в разработке программного обеспечения. В частности, говоря об объектно-ориентированном программировании, Вирт неоднократно отмечал, что оно является достаточно тривиальным расширением того же структурного подхода, сдобренным новой терминологией, и вряд ли может претендовать на звание "революционной методологии программирования".
В 1995 году появился "закон Вирта" - шуточное высказывание в духе законов Паркинсона: "программы становятся медленнее куда шустрее, чем компьютеры становятся быстрее", используемое для демонстрации нарастающих проблем с производительностью программного обеспечения, несмотря на прогресс аппаратного. У профессора вызывало тревогу раздувание программного обеспечения - когда программу снабжают большим количеством дополнительных функций, которые занимают много компьютерных ресурсов, но не востребованы и малополезны для работы.
В 1996-м Вирт опубликовал ещё один оригинальный язык программирования - LoLa, простой обучающий язык для формального описания и симуляции цифровых электрических схем.
1 апреля 1999 года Вирт вышел на пенсию, достигнув предельного для государственного служащего в Швейцарии возраста 65 лет (ETH - государственный ВУЗ, его работники являются госслужащими и их работа подчиняется соответствующему законодательству).
В 2005-2008 годах Вирт участвовал в европейском проекте ONBASS (On-Board Active System Safety), предназначенном для создания надёжных систем хранения и передачи данных о полёте и техническом состоянии самолёта.
В то же время Вирт приезжал в Россию на профессиональные конференции, на которых ему присвоили ещё несколько почётных званий; говорят, он даже выучил русский, чтобы говорить с местными коллегами.
Книга Вирта "Алгоритмы + структуры данных = программы" (1975) издавалась на русском языке несколько раз в разных вариантах и считается первым из трёх классических учебников по структурному программированию. Последняя версия книги переработана и переведена автором на язык Оберон.
***
Время рождения, конечно же, неизвестно, но космограмма примечательна сама по себе.
Широкое соединение - орбис 6 градусов - Солнца и Сатурна на истинном Северном Лунном Узле в Водолее; окольцованный гигант и Раху в одном - 20-м - градусе. Это примечательно, так как это место попадает в один из вариантов (17-23/17-24 градусы Водолея) "русского поля" - сектора, связанного с Россией и русским народом. Также у Веташа соседний, 19-й градус, фигурирует в логической модели гороскопа России как встречающий в картах рождения или смерти многих выдающихся русских деятелей (второе - для Петра Первого, Пушкина, Достоевского и Ленина).
Луна, Меркурий и Марс в Рыбах. Венера также в Водолее.
Итого - акцент на Водолее и Рыбах.
Секстили Солнце-Уран и Сатурн-Уран, трин Солнце-Юпитер и Сатурн-Юпитер. Луна большую часть суток была в соединении с Меркурием, в первой половине - ещё и Марсом. Широкое - орбис 5 градусов - соединение Меркурий-Марс, оппозиция Меркурия, Марса и, возможно, Луны к своему диспозитору - Нептуну. Венера в трине к Прозерпине, если считать орбис 2 градуса рабочим.
Юпитер в Весах, Уран в Овне, Нептун в Деве, Плутон в Раке.
Точные оппозиция Юпитер-Уран и квадрат Юпитер-Плутон, квадрат Уран-Плутон.
И Селена, и Чёрная Луна в Раке. Хирон в Тельце, Прозерпина в Весах. Квадрат Солнце-Хирон.
При рассмотрении конфигураций центральным аспектом, своеобразной осью гороскопа оказывается оппозиция Юпитер-Уран.
Меня удивило частое наличие аспекта между этими планетами в картах астрономов, высказывавшихся по поводу пояса малых тел дальше Нептуна. В найденной в сети литературе по циклам Юпитер-Уран был назван лишь связанным с экономикой. Лишь от Дарагана я услышал, что эта связка символизирует научно-технические инновации, появление в этих сферах новых парадигм и отраслей.
Так вот, данная оппозиция служит основанием тау-квадрата с Плутоном на вершине и косых треугольников с вершинами на Солнце и Сатурне.
Поскольку тау-квадрат состоит из социальных и высших планет, то он должен был проявиться только событийно. Подозреваю, что Юпитер и Уран имеет отношение к 9-му и 11-му (как 2-й от 10-го) дому, а Плутон - к 8-му и 10-му.
Вирт получил признание коллег (9-й как сигнификатор науки и экспертного сообщества, учительства, и 11-й как единомышленники), но не поддержку своих разработок от родного или иного государства (11-й как государственное субсидирование) или коммерческой организации (8-й дом как сигнификатор больших и чужих ресурсов).
Хоть он и не погиб в расцвете лет, но раскрыть свой талант полностью ему не дали...
Распределение по стихиям, с Хироном и Прозерпиной: водные знаки - 4, воздушные - 5, земные - 2, огненные - 1. Только септенер: водные - 3, воздушные - 4, земные и огненные - 0. Воздушно-водная, подвижная.
По крестам, с Хироном и Прозерпиной: кардинальный - 4, фиксированный - 4, мутабельный - 4. Только септенер: кардинальный - 1, фиксированный - 3, мутабельный - 3.
Насколько мир был бы лучше, если главными языками программирования вместо С++ ("си-плюс-плюс"), C# ("си-шарп") и Java являлись Модула-2, Оберон и Компонентный Паскаль... Насколько меньше было бы плохого кода, даже индусского было бы явно меньше. Есть мнение, что в случае с Обероном важным фактором была не очень удачная конструкция ОС, требовавшая времени и усилий для своего освоения. Могло ли Вирту повезти больше с компаньонами, которые могли бы продвинуть его работы?
Прогностика (по космограмме на полдень местного часового пояса):
С 1968-го по 1973-й (от Алголя-68 до П-машины):
В 1968-м - дир. Венера на Меркурии. В 1968-69 - дир. Уран на Хироне. В 1968-70 - дир. Прозерпина в трине к Меркурию. В 1969-70 - дир. Юпитер в оппозиции к Хирону, дир. Плутон в секстиле к Хирону. В 1969-71 годах - дир. Лилит на Кету. В 1971-73 - дир. Нептун в трине к Сатурну. В 1972-73 - дир. Меркурий в оппозиции к Юпитеру и квадрате к Плутону, дир. Сатурн в секстиле к Хирону, дир. Хирон в квадрате к Прозерпине. В 1973-м - дир. Меркурий на Уране.
Прогр. Юпитер в трине к Сатурну, прогр. Сатурн в секстиле к Урану, до 1972-го - прогр. Сатурн в трине к Юпитеру. В 1970-72 - прогр. Венера на Сатурне. В 1971-73 годах - прогр. Меркурий на Марсе, прогр. Марс в оппозиции к Прозерпине.
В 1968 - тр. Сатурн на Уране. До 1969-го - тр. Уран в секстиле к Плутону, тр. Нептун в квадрате к Сатурну. До 1972-го - тр. Прозерпина на Юпитере натала. В 1969-1971 годах - тр. Нептун в квадрате к Солнцу и оппозиции к Хирону, секстиль Плутона к своему натальному положению. В 1970-72 - тр. Уран на Прозерпине и в трине к Венере. В 1971-73 годах - квадрат тр. Сатурна к скоплению в Рыбах, тр. Плутон в трине к Хирону. В 1973-м - тр. Хирон на Уране, квадрат тр. Нептуна к Марсу натала.
1977-80 (язык Модула-2 с системой Лилит и американский конкурс):
Дир. Солнце в секстиле к Венере. До 1978-го - дир. Венера в трине к Плутону. Дир. Марс в оппозиции к Юпитеру и квадрате к Плутону. В 1977-м - дир. Хирон в секстиле к Нептуну. Дир. Уран в квадрате к Марсу и трине к Прозерпине. Дир. Нептун в оппозиции к Урану. В 1978-80 - дир. Марс на Уране, дир. Юпитер в секстиле к Прозерпине, дир. Хирон в трине к Меркурию, дир. Нептун в трине к Солнцу, дир. Прозерпина в трине к Плутону, дир. Селена на Кету. С 1979-го - дир. Юпитер в квадрате к Марсу, дир. Уран в трине к Венере, дир. Плутон в оппозиции к Марсу. С 1980-го начинались аспекты: дир. Марс в секстиле к Солнцу, дир. Уран в квадрате к Нептуну.
До 1979-го - прогр. Солнце в секстиле к Венере, до 1978-го - прогр. Меркурий в оппозиции к Нептуну. Прогр. Юпитер в трине к Сатурну, прогр. Сатурн в секстиле к Урану. В 1978-80 - прогр. Меркурий на Меркурии.
В 1977 - тр. Юпитер в Близнецах, в 1977-78 - тр. Сатурн во Льве. В 1977-79 годах - тр. Уран в трине к скоплению в Рыбах. До 1978-го - тр. Нептун в квадрате к Меркурию. В 1978-1980 - тр. Хирон в секстиле к Марсу и трине к Нептуну, в квадрате к Венере и Сатурну. В 1978-80 - тр. Нептун в трине к Сатурну. В 1979-1980 - тр. Сатурн в Деве. До 1978-го - тр. Прозерпина в трине к Солнцу.
1985-1989 (проект Оберон):
В 1985-м - дир. Юпитер в квадрате к Меркурию, дир. Прозерпина в оппозиции к Хирону. До 1986-го - дир. Плутон в оппозиции к Меркурию. В 1986-1988 годах - дир. Солнце в секстиле к Сатурну. В 1987-89 годах - дир. Хирон на Плутоне. В 1988-90 - дир. Меркурий в секстиле к Марсу, дир. Уран в трине к Сатурну, дир. Хирон в квадрате к Урану. С 1989-го - дир. Меркурий в квадрате к Венере, дир. Юпитер в секстиле к Сатурну.
В 1985-87 годах - прогр. Марс в секстиле к Сатурну. До 1986-го - прогр. Юпитер в трине к Сатурну, прогр. Сатурн в секстиле к Урану. Прогр. Сатурн на Солнце. В 1986-88 - прогр. Меркурий в трине к Плутону. В 1987-89 годах - прогр. Солнце в секстиле к Сатурну.
В 1985-м - тр. Сатурн в конце Скорпиона, тр. Хирон в трине к Венере и Прозерпине, тр. Уран в квадрате к Меркурию. В 1986-1987 - тр. Сатурн в первой половине Стрельца. В 1986-м - тр. Хирон в трине к Сатурну. В 1986-88 годах - тр. Уран в секстиле к Сатурну. В 1987-88 годах - тр. Плутон в трине к Марсу и квадрате к Венере. В 1987-89 - тр. Уран в трине к своему натальному положению, тр. Нептун в секстиле к Марсу и квадрате к Прозерпине, тр. Плутон в секстиле к Нептуну. В 1988-м - тр. Сатурн в секстиле к Солнцу. В 1988-89 - тр. Сатурн, Уран и Нептун в секстиле к Луне, Меркурию и Марсу, трине к Нептуну и квадрате к Прозерпине.
2005-2008 (проект ONBASS, On-Board Active System Safety):
До 2006-го - дир. Хирон в оппозиции к Венере, дир. Нептун в трине к Плутону, дир. Прозерпина в секстиле к Сатурну. Дир. Меркурий в квадрате к Солнцу, дир. Венера в оппозиции к Юпитеру и квадрате к Плутону. В 2007-2008 годах - дир. Солнце в квадрате к Венере, дир. Венера на Уране, дир. Марс в секстиле к Плутону. С 2008-го - дир. Солнце в квадрате к Нептуну, дир. Юпитер в квадрате к Прозерпине, дир. Плутон на Прозерпине, дир. Прозерпина в секстиле к Юпитеру.
До 2005-го - прогр. Меркурий в секстиле к Сатурну. Прогр. Сатурн на Солнце, прогр. Нептун в оппозиции к Марсу. В 2005-2007 - прогр. Меркурий в оппозиции к Юпитеру и квадрате к Плутону. В 2006-2008 годах - прогр. Меркурий на Уране, прогр. Венера в трине к Плутону. С 2006-го - прогр. Солнце в секстиле к Марсу, с 2007-го - в квадрате к Венере.
В 2005-2007 годах - тр. Уран на скоплении в Рыбах, тр. Плутон в секстиле к Юпитеру. В 2006-2007 годах - тр. Сатурн во второй половине Льва. В 2006-2008 - тр. Хирон в Водолее. Весь период - тр. Нептун на скоплении в Водолее, тр. Прозерпина в квадрате к Венере, трине к Марсу и секстиле к Нептуну.
В прогрессиях преобладают соединения и гармоничные аспекты, а в дирекциях в основном напряжённые. Внутреннее развитие при внешнем сопротивлении...
***
И вместо заключения...
В школе на уроках информатики после полугода программирования Бейсика (среда разработки Visual Basic) последовало программирование на Паскале, у меня регулярно возникала ошибка с количеством и размещением BEGIN..END. В университете уже были языки С и С++, с фигурными скобками таких проблем было меньше, да и код с ними мне кажется красивее. Пайтон с выделением лишь табуляцией, "лесенкой" слева направо, мне ближе, хотя отсутствие чётких границ между подпрограммами и модулями тоже путает; также, у него динамическая типизация данных, что имеет свои преимущества и недостатки... Но это уже совсем другая история.