История создания языка — различия между версиями
Korvin (обсуждение | вклад) м |
Korvin (обсуждение | вклад) м |
||
Строка 12: | Строка 12: | ||
Учитывая все эти факторы очевидно, что решить такую задачу традиционным образом практически невозможно. Различия в архитектурах систем и в особенностях их реализации сводят на нет все усилия по "обобщению" задач. Код написанный на одной платформе, не будет работать на другой и наоборот. Пришлось бы для каждой из платформ делать свою отдельную релизацию системы. Думаю что Читатель может себе представить во что обошлась бы разработка и самое главное поддержка подобной системы. | Учитывая все эти факторы очевидно, что решить такую задачу традиционным образом практически невозможно. Различия в архитектурах систем и в особенностях их реализации сводят на нет все усилия по "обобщению" задач. Код написанный на одной платформе, не будет работать на другой и наоборот. Пришлось бы для каждой из платформ делать свою отдельную релизацию системы. Думаю что Читатель может себе представить во что обошлась бы разработка и самое главное поддержка подобной системы. | ||
− | Решение проблемы кроется в системах абстракции виртуализации. Вместо написания множества реализаций одной и той же системы, пишется некая система абстракции. Которая представляет собой прослойку между низкоуровневым кодом конкретной платформы и высокоуровневым кодом нашей системы. Эту задачу решает библиотека OSA и ядро диптауна, которые вместе предоставляют удобный программный интерфейс для кроссплатформенной разработки пргорамм. Однако, платформа диптауна из соображений производительности написана на языке С++, который хоть и является в некоторой степени кроссплатформенным, все же не обеспечивает бинарной совместимости программ. | + | Решение проблемы кроется в системах абстракции и виртуализации. Вместо написания множества реализаций одной и той же системы, пишется некая система абстракции. Которая представляет собой прослойку между низкоуровневым кодом конкретной платформы и высокоуровневым кодом нашей системы. Эту задачу решает библиотека OSA и ядро диптауна, которые вместе предоставляют удобный программный интерфейс для кроссплатформенной разработки пргорамм. Однако, платформа диптауна из соображений производительности написана на языке С++, который хоть и является в некоторой степени кроссплатформенным, все же не обеспечивает бинарной совместимости программ. |
Таким образом, мы подходим к третьему уровню абстракции — виртуальной машине. Виртуальная машина это вычислительная среда которая построена целиком на программной основе и поэтому не зависит от особенностей конкретной архитектуры, будь то x86, SPARC или ARM. Виртуальная машина, подобно реальной оперирует понятиями кода и данных. В отличие от реального процессора, кодом для виртуальной машины являются не инструкции, а байт код — набор абстрактных инструкций. Достоинством такого подхода является то, что программа, транслированная в байт код будет выполняться на любой платформе где есть реализация виртуальной машины. А поскольку виртуальная машина сама написана на базе кроссплатформенного кода то это обеспечивает еще большие возможности по переносимости. | Таким образом, мы подходим к третьему уровню абстракции — виртуальной машине. Виртуальная машина это вычислительная среда которая построена целиком на программной основе и поэтому не зависит от особенностей конкретной архитектуры, будь то x86, SPARC или ARM. Виртуальная машина, подобно реальной оперирует понятиями кода и данных. В отличие от реального процессора, кодом для виртуальной машины являются не инструкции, а байт код — набор абстрактных инструкций. Достоинством такого подхода является то, что программа, транслированная в байт код будет выполняться на любой платформе где есть реализация виртуальной машины. А поскольку виртуальная машина сама написана на базе кроссплатформенного кода то это обеспечивает еще большие возможности по переносимости. | ||
В рамках проекта Диптаун была написана своя собственная виртуальная машина [[gide]]. Она написана целиком на нашей платформе и учитывает ее осоебенности. Для программирования виртуальной машины используется свой язык, похожий на ассемблер, но его применение в практических задачах сильно затруднено (сложность написания программ, а главное их отладки). Было принято решение написать язык высокого уровня, который бы компилировался в gide ассемблер. В результате этого и появился язык К++. | В рамках проекта Диптаун была написана своя собственная виртуальная машина [[gide]]. Она написана целиком на нашей платформе и учитывает ее осоебенности. Для программирования виртуальной машины используется свой язык, похожий на ассемблер, но его применение в практических задачах сильно затруднено (сложность написания программ, а главное их отладки). Было принято решение написать язык высокого уровня, который бы компилировался в gide ассемблер. В результате этого и появился язык К++. |
Версия 23:10, 6 сентября 2007
Когда мы разрабатывали платформу Диптауна, мы постоянно держали в уме следующие критерии:
- Кроссплатформенность
- Расширяемость
- Распределенность
- Масштабируемость
- Гибкость
- Модульность
То есть, система должна работать на максимально возможном количестве аппаратных платформ. При этом, для портирования на новую платформу трудозатраты должны быть минимальными. Система должна быть легко расширяемой, позволяя легко и быстро интегрировать новые возможности без необходимости внесения значительных модификаций в код. Система должна быть масштабируемой, то есть она должна предоставлять возможность ее выполнения в сети с использованием множества вычислительных систем. Добавление очередного "узла" должно быть прозрачным для остальной части системы, равно как и сбой одного из существующих узлов не должен оказать значительного влияния на функционирование оставшейся части системы. Система должна быть достаточно гибкой, чтобы одну и ту же задачу возможно было решать несколькими способами. Наконец, система должна быть построена таким образом, чтобы можно было свободно заменять некоторые ее части на другие, предоставляющими те же возможности, и чтобы эта замена так же осталась прозрачной.
Учитывая все эти факторы очевидно, что решить такую задачу традиционным образом практически невозможно. Различия в архитектурах систем и в особенностях их реализации сводят на нет все усилия по "обобщению" задач. Код написанный на одной платформе, не будет работать на другой и наоборот. Пришлось бы для каждой из платформ делать свою отдельную релизацию системы. Думаю что Читатель может себе представить во что обошлась бы разработка и самое главное поддержка подобной системы.
Решение проблемы кроется в системах абстракции и виртуализации. Вместо написания множества реализаций одной и той же системы, пишется некая система абстракции. Которая представляет собой прослойку между низкоуровневым кодом конкретной платформы и высокоуровневым кодом нашей системы. Эту задачу решает библиотека OSA и ядро диптауна, которые вместе предоставляют удобный программный интерфейс для кроссплатформенной разработки пргорамм. Однако, платформа диптауна из соображений производительности написана на языке С++, который хоть и является в некоторой степени кроссплатформенным, все же не обеспечивает бинарной совместимости программ.
Таким образом, мы подходим к третьему уровню абстракции — виртуальной машине. Виртуальная машина это вычислительная среда которая построена целиком на программной основе и поэтому не зависит от особенностей конкретной архитектуры, будь то x86, SPARC или ARM. Виртуальная машина, подобно реальной оперирует понятиями кода и данных. В отличие от реального процессора, кодом для виртуальной машины являются не инструкции, а байт код — набор абстрактных инструкций. Достоинством такого подхода является то, что программа, транслированная в байт код будет выполняться на любой платформе где есть реализация виртуальной машины. А поскольку виртуальная машина сама написана на базе кроссплатформенного кода то это обеспечивает еще большие возможности по переносимости.
В рамках проекта Диптаун была написана своя собственная виртуальная машина gide. Она написана целиком на нашей платформе и учитывает ее осоебенности. Для программирования виртуальной машины используется свой язык, похожий на ассемблер, но его применение в практических задачах сильно затруднено (сложность написания программ, а главное их отладки). Было принято решение написать язык высокого уровня, который бы компилировался в gide ассемблер. В результате этого и появился язык К++.