История создания языка — различия между версиями

Материал из Deeptown Manual
Перейти к: навигация, поиск
(minor updates)
м (Правки DanielBell91 (обсуждение) откачены к версии KroTozeR)
Строка 1: Строка 1:
 +
Когда мы разрабатывали платформу Диптауна, мы постоянно держали в уме следующие критерии:
  
 +
* Кроссплатформенность
 +
* Расширяемость
 +
* Распределенность
 +
* Масштабируемость
 +
* Гибкость
 +
* Модульность
  
== Teen Told to Clean His Room Finds Winning Lotto Ticket ==
+
То есть, система должна работать на максимально возможном количестве аппаратных платформ. При этом для портирования на новую платформу трудозатраты должны быть минимальными. Система должна быть легко расширяемой, позволяя легко и быстро интегрировать новые возможности без необходимости внесения значительных модификаций в код. Система должна быть масштабируемой, то есть она должна предоставлять возможность ее выполнения в сети с использованием множества вычислительных систем. Добавление очередного "узла" должно быть прозрачным для остальной части системы, равно как и сбой одного из существующих узлов не должен оказать значительного влияния на функционирование оставшейся части системы. Система должна быть достаточно гибкой, чтобы одну и ту же задачу возможно было решать несколькими способами. Наконец, система должна быть построена таким образом, чтобы можно было свободно заменять некоторые ее части на предоставляющие те же возможности, и чтобы эта замена так же осталась прозрачной.
  
A teenager from Midlothian has cleaned up on the National Lottery after finally cleaning up his messy bedroom. Ryan Kitchin scooped more than 50,000 after finding a winning lottery ticket in the room that his mother had been asking him to clean for weeks.
+
Учитывая все эти факторы, очевидно, что решить такую задачу традиционным образом практически невозможно. Различия в архитектурах систем и в особенностях их реализации сводят на нет все усилия по "обобщению" задач. Код, написанный на одной платформе, не будет работать на другой и наоборот. Пришлось бы для каждой из платформ делать свою отдельную релаизацию системы. Думаю, что Читатель может себе представить, во что обошлась бы разработка и самое главное поддержка подобной системы.
  
[[http://goodvillenews.com/Teen-Told-to-Clean-His-Room-Finds-Winning-Lotto-Ticket-AfWho8.html Teen Told to Clean His Room Finds Winning Lotto Ticket]]
+
Решение проблемы кроется в системах абстракции и виртуализации. Вместо написания множества реализаций одной и той же системы, пишется некая система абстракции, которая представляет собой прослойку между низкоуровневым кодом конкретной платформы и высокоуровневым кодом нашей системы. Эту задачу решает библиотека OSA и ядро диптауна, которые вместе предоставляют удобный программный интерфейс для кроссплатформенной разработки программ. Однако платформа диптауна из соображений производительности написана на языке С++, который хоть и является в некоторой степени кроссплатформенным, все же не обеспечивает бинарной совместимости программ.  
  
[[http://goodvillenews.com/wk.html goodville news]]
+
Таким образом, мы подходим к третьему уровню абстракции — виртуальной машине. Виртуальная машина это вычислительная среда, которая построена целиком на программной основе и поэтому не зависит от особенностей конкретной архитектуры, будь то x86, SPARC или ARM. Виртуальная машина, подобно реальной, оперирует понятиями кода и данных. В отличие от реального процессора, кодом для виртуальной машины являются не инструкции, а байт код — набор абстрактных инструкций. Достоинством такого подхода является то, что программа, транслированная в байт код, будет выполняться на любой платформе, где есть реализация виртуальной машины. А поскольку виртуальная машина сама написана на базе кроссплатформенного кода, то это обеспечивает еще большие возможности по переносимости.
  
== 5 Principles for Inner Transformation at Work ==
+
В рамках проекта Диптаун была написана своя собственная виртуальная машина [[gide]]. Она написана целиком на нашей платформе и учитывает ее особенности. Для программирования виртуальной машины используется свой язык, похожий на ассемблер, но его применение в практических задачах сильно затруднено (сложность написания программ, а главное их отладки). Было принято решение написать язык высокого уровня, который бы компилировался в gide ассемблер. В результате этого и появился язык К++.
 
+
People go to work to sustain themselves and produce value in the world. Yet work environments can also be stressful, filled with challenging responsibilities and personalities, and feel misaligned with our most deeply cherished values. Instead of sustaining us, the workplace can sometimes feel simply draining, and at worst, unwholesome for both ourselves and the world.
+
 
+
[[http://goodvillenews.com/5-Principles-for-Inner-Transformation-at-Work-TTklKV.html 5 Principles for Inner Transformation at Work]]
+
 
+
[[http://goodvillenews.com/wk.html goodville news]]
+
 
+
== 7 Essential Books on Optimism ==
+
 
+
Every once in a while, we all get burned out. Sometimes, charred. And while a healthy dose of cynicism and skepticism may help us get by, its in those times that we need nothing more than to embrace lifes promise of positivity with open arms. Here are seven wonderful books that help do just that with an arsenal ranging from the light visceral stimulation of optimistic design to the serious neuroscience findings about our proclivity for the positive.
+
 
+
[[http://goodvillenews.com/7-Essential-Books-on-Optimism-6pgcLt.html 7 Essential Books on Optimism]]
+
 
+
[[http://goodvillenews.com/wk.html goodville news]]
+
 
+
== Microbial Oasis Discovered Beneath the Atacama Desert ==
+
 
+
Two metres below the surface of the Atacama Desert there is an oasis of microorganisms. Researchers from the Center of Astrobiology (Spain) and the Catholic University of the North in Chile have found it in hypersaline substrates thanks to SOLID, a detector for signs of life which could be used in environments similar to subsoil on Mars.
+
 
+
[[http://goodvillenews.com/Microbial-Oasis-Discovered-Beneath-the-Atacama-Desert-WWstX4.html Microbial Oasis Discovered Beneath the Atacama Desert]]
+
 
+
[[http://goodvillenews.com/wk.html goodville news]]
+
 
+
== The Limitations of Positive Thinking ==
+
 
+
Positive thinking is so firmly enshrined in our culture that knocking it is a little like attacking motherhood or apple pie. Many persons swear by positive thinking and quite a few have been helped by it. Nevertheless, it is not a very effective tool and can be downright harmful in some cases. There are much better ways to get the benefits that positive thinking allegedly provides.
+
 
+
[[http://goodvillenews.com/The-Limitations-of-Positive-Thinking-m3ZrTe.html The Limitations of Positive Thinking]]
+
 
+
[[http://goodvillenews.com/wk.html goodville news]]
+

Версия 16:23, 23 августа 2012

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

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

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

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

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

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

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

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

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