История создания языка

Материал из Deeptown Manual
Перейти к: навигация, поиск

Когда мы разрабатывали платформу Диптауна, основными критериями были:

  • Кроссплатформенность
  • Расширяемость
  • Распределенность
  • Масштабируемость
  • Гибкость
  • Модульность

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

Учитывая все эти факторы очевидно, что решить такую задачу традиционным образом практически невозможно. Различия в архитектурах систем и в особенностях их реализации сводят на нет все усилия по "обобщению" задач. Код написанный на одной платформе, не будет работать на другой и наоборот. Пришлось бы для каждой из платформ делать свою отдельную релизацию системы. Думаю что Читатель может себе представить во что обошлась бы разработка и самое главное поддержка подобной системы.

Решение проблемы кроется в системах абстракции виртуализации. Вместо написания множества реализаций одной и той же системы, пишется некая система абстракции. Которая представляет собой прослойку между низкоуровневым кодом конкретной платформы и высокоуровневым кодом нашей системы. Эту задачу решает библиотека OSA и ядро диптауна, которые вместе предоставляют удобный программный интерфейс для кроссплатформенной разработки пргорамм. Однако, платформа диптауна из соображений производительности написана на языке С++, который хоть и является в некоторой степени кроссплатформенным, все же не обеспечивает бинарной совместимости программ.

Таким образом, мы подходим к третьему уровню абстракции -- виртуальной машине. Виртуальная машина это вычислительная среда которая построена целиком на программной основе и поэтому не зависит от особенностей конкретной архитектуры, будь то x86, SPARC или ARM. Виртуальная машина, подобно реальной оперирует понятиями кода и данных. В отличие от реального процессора, кодом для виртуальной машины являются не инструкции, а байт код -- набор абстрактных инструкций. Достоинством такого подхода является то, что программа, транслированная в байт код будет выполняться на любой платформе где есть реализация виртуальной машины. А поскольку виртуальная машина сама написана на базе кроссплатформенного кода то это обеспечивает еще большие возможности по переносимости.

В рамках проекта Диптаун была написана своя собственная виртуальная машина gide. Она написана целиком на нашей платформе и учитывает ее осоебенности. Для программирования виртуальной машины используется свой язык, похожий на ассемблер, но его применение в практических задачах сильно затруднено (сложность написания программ, а главное их отладки). Было принято решение написать язык высокого уровня, который бы компилировался в gide ассемблер. В результате этого и появился язык К++.

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
информация
документация
Инструменты