Страницы

Язык программирования космического масштаба

    Стремление к заселению ближнего и дальнего космоса ставит перед человечеством интересные вопросы. Например, какими должны быть технологии для глубокого освоения космического пространства?

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

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

   Они должны быть относительно простыми по сравнению с тем, что мы используем на Земле, даже в ущерб некой идеальности. Если странники  не смогут вовремя заменить, починить, настроить и усовершенствовать имеющееся под рукой из-за его сложности, все остальное может оказаться не важным. Надеяться на полную предусмотрительность при планировании полета и безотказной работе всех составляющих корабля вряд ли стоит. Это свойство, кстати, роднит технологии космонавтов с технологиями выживающих после потенциальной крупной катастрофы на Земле.

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

    Интересно то, что язык, близкий к решению задачи в данном ключе уже существует, хотя и вряд ли его автор думал о таком применении. Также забавно, что он имеет вполне космическое название — Оберон, по названию спутника Урана. Язык достаточно хорошо соответствует названным принципам, подтверждением чего служит успешная реализация одноимённой операционной системы с нуля в стенах швейцарской высшей технической школы Цюриха (ETH) двумя профессорами в свободное от основной работы время.

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

9 комментариев:

  1. Так и хочется добавить: "...и космической же глупости".

    ОтветитьУдалить
  2. Этот комментарий был удален автором.

    ОтветитьУдалить
    Ответы
    1. Всё-таки ДРАКОН, строго говоря, не является языком программирования, а лишь одной из форм отображения. Эта форма может быть в какой-то степени полезной, но не имеет принципиального значения.

      Удалить
    2. Этот комментарий был удален автором.

      Удалить
    3. Насколько можно судить, ДРАКОН, не является полноценным языком программирования. К примеру, у него нет собственной системы типов, своего набора выражений - всё это он заимствует из настоящих ЯП, предоставляя преимущественно только форму записи потока выполнения.

      Удалить
    4. ДРАКОН -- это перспективный фронт для различных языков программирования. ОН даёт методы, но не даёт конкретной реализации.

      Удалить
  3. Будучи далеким от реального программирования интересующимся, позволю себе вклиниться.
    Фантазируя на тему межзвездной навигации я подумал, что ориентирование в космосе будет отличным от тех моделей, которые используются для ориентации здесь, на Земле. Путешественники всегда будут находиться в центре системы координат, а привязка «к местности» - осуществляться посредством триангуляции к окружающим, но также не неподвижным (!) обьектам. Расчет курса потребует неких автореферентных моделей, основанных не на абсолютных величинах, а на соотношении взаимозависимых пропорций. Примерно как углы в радианах против градусов. На мой непрофессиональный взгляд функциональная парадигма программирования ближе к этому. Понятно, что внутри любого интерпретатора всегда будет машина Тьюринга с конечным числом автоматов, однако может быть каантовые компьютеры дадут какой-то качественный скачок, а может появятся и какие-нибудь «аналоговые» или «биологические» вычислительные механизмы.. В любом случае речь ведь идет о тех мыслительных моделях, которыми будут оперировать наши далекие потомки.

    ОтветитьУдалить