<?xml version="1.0" encoding="utf-8"?>
<!-- If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/ -->
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:lj="http://www.livejournal.com">
  <id>urn:lj:livejournal.com:atom1:sergeydmitriev</id>
  <title>Sergey Dmitriev's Journal</title>
  <subtitle>Sergey Dmitriev</subtitle>
  <author>
    <name>Sergey Dmitriev</name>
  </author>
  <link rel="alternate" type="text/html" href="http://sergeydmitriev.livejournal.com/"/>
  <link rel="self" type="text/xml" href="http://sergeydmitriev.livejournal.com/data/atom"/>
  <updated>2005-09-14T16:43:02Z</updated>
  <lj:journal username="sergeydmitriev" type="personal"/>
  <link rel="service.feed" type="application/x.atom+xml" href="http://sergeydmitriev.livejournal.com/data/atom" title="Sergey Dmitriev's Journal"/>
  <entry>
    <id>urn:lj:livejournal.com:atom1:sergeydmitriev:2896</id>
    <link rel="alternate" type="text/html" href="http://sergeydmitriev.livejournal.com/2896.html"/>
    <link rel="self" type="text/xml" href="http://sergeydmitriev.livejournal.com/data/atom/?itemid=2896"/>
    <title>PDC - keynote</title>
    <published>2005-09-14T16:43:02Z</published>
    <updated>2005-09-14T16:43:02Z</updated>
    <content type="html">Вчера был на кейноте на &lt;a href="http://msdn.microsoft.com/events/pdc/"&gt;PDC&lt;/a&gt; - это такая микрософтовская конференция разработчиков (мы там показываем свои продукты - &lt;a href="http://www.jetbrains.com/resharper"&gt;Resharper&lt;/a&gt; и &lt;a href="http://www.jetbrains.com/profiler/"&gt;dotTrace&lt;/a&gt;)&lt;br /&gt; Вначале там выступал Билл Гейтс - особенно интересного ничего не говорил, кроме общих слов о прогрессе технологий. Зато потом разный народ стал показывать что нового будет в Висте и новом оффисе-12. Ну, Виста, действительно совсем похожа на последний Мак ОС - все анимировано, полупрозрачно и везде есть поле поиска. А вот в новом Excel и Word у них вместо главного меню+тулбара - будет нечто &lt;a href="http://blogs.pcworld.com/techlog/archives/000900.html"&gt;прикольное&lt;/a&gt;. &lt;br /&gt; Интересно, что очень много говорилось про поддержку RSS - как в новом эксплорере так и в аутлуке. &lt;br /&gt;&lt;br /&gt; Затем показывали что нового будет предложено программистам.&lt;br /&gt; Andrew Hejlsberg показал будущие фичи C# - возможность писать структурированные запросы к любым данным &lt;br /&gt;- и к коллекциям, и к базам данных. По сути - это выглядит как SQL, прямо встроенный в язык C#. Мне это особенно интересно, поскольку похожую функциональность под названием "collections language" мы разрабатываем в проекте MPS.&lt;br /&gt; Была продемонстрирована также &lt;a href="http://weblogs.asp.net/scottgu/archive/2005/06/28/416185.aspx"&gt;поддержка AJAX&lt;/a&gt; в будущей ASP.NET. Фактически без особого труда можно будет писать WEB страницы делающие частичный reload.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:sergeydmitriev:2759</id>
    <link rel="alternate" type="text/html" href="http://sergeydmitriev.livejournal.com/2759.html"/>
    <link rel="self" type="text/xml" href="http://sergeydmitriev.livejournal.com/data/atom/?itemid=2759"/>
    <title>Секс и эволюция</title>
    <published>2005-08-30T02:38:18Z</published>
    <updated>2005-08-30T02:47:56Z</updated>
    <category term="biology evolution"/>
    <content type="html">Читаю книжку Мэта Ридли "Красная Королева" (&lt;a href="http://www.amazon.com/exec/obidos/redirect?path=ASIN/0060556579&amp;amp;link_code=as2&amp;amp;camp=1789&amp;amp;tag=sergeydmitrie-20&amp;amp;creative=9325"&gt;The Red Queen: Sex and the Evolution of Human Nature&lt;/a&gt;).&lt;br /&gt;  Книжка обещает быть очень интересной, судя первым трем главам.&lt;br /&gt;  Эти главы посвящены вопросу: "Why sex?" - а именно, почему в процессе эволюции появилось разделение полов.&lt;br /&gt;  Дело в том что на первый взгляд бесполое размножение намного эффективней полового, и если когда-то в результате мутации возникло разделение полов, то потомки таких двуполых существ вроде не смогли бы выдержать конкуренцию с однополыми сородичами, которые могут размножаться намного быстрее - потому что тогда любая особь - самка и ей не нужен самец для воспроизводства. Однако же в большинстве высокоразвитых видов размножение идет половым путем.&lt;br /&gt;  Автор рассказывает об истории различных попыток ответа на этот вопрос.&lt;br /&gt;&lt;br /&gt;  &lt;b&gt;Гипотеза 1&lt;/b&gt; - Половое размножение способствует прогрессу вида, то есть полезные мутации смогут распространиться через несколько поколений по всем особям в результате их перекрещивания.&lt;br /&gt;&lt;br /&gt;  &lt;b&gt;Гипотеза 2&lt;/b&gt; - Половое размножение позволяет бороться с вредными мутациями, потому что они не смогут накапливаться.&lt;br /&gt;&lt;br /&gt;  &lt;b&gt;Гипотеза 3&lt;/b&gt; - Половое размножение позволяет конкурировать с соперничающими особями того же вида, при недостаке ресурсов.&lt;br /&gt;&lt;br /&gt;  Однако, согласно книге, выиграла &lt;b&gt;гипотеза 4 &lt;/b&gt; - "The Red Queen" &lt;a name="cutid1"&gt;&lt;/a&gt; - Половое размножение позволяет эффективней противостоять паразитам (вирусам, бактериям, грибкам) и если таких паразитов много, то бесполые проигрывают, потому что их потомки почти идентичны родителям, и паразиты, натренированные на родителях, с огромным успехом поедают их потомков.&lt;br /&gt;&lt;br /&gt;Что касается паразитов - то здесь рассказывается о концепции "ключ"-"замок". Утверждается что паразиты не могут сожрать любую клетку, а только ту к которой у них есть "ключ" - то есть набор протеинов, соответствующих протеинам на мембране клетки, предназначенной в жертву. Похожим образом якобы работает иммунная система - только иммунные клетки наоборот подбирают "ключ" к паразитам - чтобы их сожрать. Было бы интересно узнать какие реально механизмы задействованы в этом случае.&lt;br /&gt;&lt;br /&gt; В связи с паразитами упоминается программа &lt;a href="http://www.his.atr.jp/~ray/tierra/index.html"&gt;Tierra&lt;/a&gt; by Tom Ray. Эта программа - модель искусственной жизни и в качестве особей в ней выступали программы, которые могли модифицироваться в процессе отбора. В то время как одни программы становились все сложнее, другие - все короче. Те что становились короче, после того как дальше укорачиваться было теоретически невозможно, стали заимствовать куски кода из других программ - и это позволило им стать еще короче и продолжать размножаться за счет других программ. Таким образом в результате искусственной эволюции появились паразиты. Интересный проект... Я его скачал с сайта - надо будет поиграться.&lt;br /&gt;&lt;br /&gt; Одно лишь странно - если следовать аргументам, изложенным в книжке, то в эволюции должны были победить гермафродиты. Они же сочетают преимущества полового (смешивание генов) и бесполого (каждая особь может давать потомство) размножений.&lt;br /&gt;Однако же, гермафродиты встречаются весьма редко. Интересно, почему? - Может, дальше в книге будет про это?</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:sergeydmitriev:2532</id>
    <link rel="alternate" type="text/html" href="http://sergeydmitriev.livejournal.com/2532.html"/>
    <link rel="self" type="text/xml" href="http://sergeydmitriev.livejournal.com/data/atom/?itemid=2532"/>
    <title>"Бессмертная клетка"</title>
    <published>2004-12-27T03:43:42Z</published>
    <updated>2005-08-29T05:32:04Z</updated>
    <category term="biology antiaging"/>
    <content type="html">Прочитал вот книжку &lt;a href="http://www.amazon.com/exec/obidos/ASIN/0385509286"&gt;"The Immortal Cell"&lt;/a&gt; by Michael West (на английском языке). Это весьма увлекательное описание того, что происходит сейчас в биологии. Вообще, похоже что сейчас в разгаре революция в понимании того, что такое жизнь. Большинство знаний о том, какие механизмы лежат в основе функционирования живых организмов появилось в последние 10-20 лет. Собственно, эта книжка посвящена исследованим механизмов старения на клеточном уровне.&lt;br /&gt;Автор книги сам непосредственно принимал участие в этих исследованиях как в исследовательских институтах так и в двух собственных фирмах – Geron &lt;span lang="RU"&gt;и Advanced Cell Technology.&lt;br /&gt;&lt;br /&gt;  &lt;b&gt;Наиболее интересные открытия и достижения, о которых рассказано в книге:&lt;/b&gt;&lt;br /&gt;   Клетки в организме человека делятся на две категории – смертные и бессмертные.&lt;br /&gt;К бессмертным клеткам относятся Germ-line клетки (яйцеклетки), стволовые клетки, раковые клетки. Смертными же являются почти все остальные клетки из которых построен наш организм.  То что такая смертная клетка перестает делиться после фиксированного числа делений и умирает - запрограммировано в ней самой. &lt;br /&gt;  Было найдено как минимум одно место где находится счетчик, уменьшающийся с каждым делением клетки – это концы хромосом, где находится последовательность так называемых теломеров. Их количество уменьшается после каждого деления, если в клетке не присутствует специальный белок – теломераза – который может удлинять теломеры обратно. Так вот: в бессмертных клетках этот белок вырабатывается, а в смертных – нет.&lt;br /&gt;  Понимание механизма старения клетки позволяет найти и способы борьбы с ним, путем выращивания более молодых клеток и замены ими устаревших. Один способ описан в книге и основан на технике клонирования. Берется чья-либо яйцеклетка и в нее помещается ядро клетки взятой у пациента. Затем после нескольких делений из яйцеклетки выращивается зародыш, состоящий из сотен стволовых клеток (stem cells) – а уже из этих клеток можно вырастить ткани любого органа пациeнта.&lt;br /&gt;&lt;a name="cutid1"&gt;&lt;/a&gt;&lt;br /&gt;  В книге подробно описывается и борьба сторонников легализации  со сторонниками запрета подобного рода методов, споры о том когда зародыш считать человеком – и, значит, запрещать его убийство.&lt;br /&gt;&lt;br /&gt;  Интересна и мысль, высказанная в начале книги: мы, как впрочем и другие многоклеточные животные, являемся по сути лишь оболочкой, которую создала эволюция для защиты яйцеклетки. Оболочка – смертна, потому что она не более чем одежда, которая устаревает и ее время от времени надо сменить на более современную. Интересно, правда, что в процессе эволюции оболочка по сложности многократно превзошла то, что она защищает.&lt;br /&gt;&lt;br /&gt;  В книге описан интересный экспримент (&lt;a href="http://www.science-spirit.org/articles/archive_cm_detail.cfm?item_id=119"&gt;Robert Weinberg, 1998&lt;/a&gt;), раскрывающий сущность рака: Раковыми становятся клетки, у которых одновременно нарушены 3 механизма: самоуничтожение&lt;br /&gt;при серьезных нарушениях, регулятор скорости делений и ограничение количества делений. &lt;br /&gt;  В частности, нарушение последнего механизма означает что раковая клетка становится бессмертной.&lt;br /&gt;&lt;br /&gt;  В книжке также рассказывается история изучения механизмов старения начиная с Августа Вейсмана (August Weismann), который открыл разделение клеток на Germ-line и соматические. Рассказывается также про эсперимент Алексиса Каррела (Alexis Carrel) в 1912 году: &lt;br /&gt;он поместил клетки сердца от зародыша курицы в питательную среду – и они делились каждые 48 часов в течение 20 лет. Это было убедительным аргументом противников теории того что старение запрограммировано в клетке, и..., по словам Уэста – автора книги,  затормозило развитие теории старения лет на 30. Правда в книжке так и не сказано, почему же все-таки Карреловские клетки так долго не умирали. В 50е годы Леонардом Хейфликом (Leonard Hаyfliсk) при попытках повторения этого эксперимента было показано что клетки (если они не раковые) обычно выдерживают не более 50 делений.&lt;br /&gt;&lt;br /&gt;  В целом книжка чрезвычайно познавательна, и читается легко и за один присест.&lt;/span&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:sergeydmitriev:2205</id>
    <link rel="alternate" type="text/html" href="http://sergeydmitriev.livejournal.com/2205.html"/>
    <link rel="self" type="text/xml" href="http://sergeydmitriev.livejournal.com/data/atom/?itemid=2205"/>
    <title>Новый подход к программированию - статья</title>
    <published>2004-11-16T18:26:37Z</published>
    <updated>2005-08-29T05:33:42Z</updated>
    <category term="language_oriented_programming"/>
    <content type="html">Мы только что сделали первый выпуск журнала &lt;a href="http://www.onboard.jetbrains.com/"&gt;"onBoard"&lt;/a&gt; и там размещена моя &lt;a href="http://www.onboard.jetbrains.com/articles/04/10/lop/"&gt;статья&lt;/a&gt; о "языково-ориентированном программировании" (LOP). В этой статье излагаются основные принципы LOP и также кратко описывается система MPS, реализующая этот подход.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:sergeydmitriev:1955</id>
    <link rel="alternate" type="text/html" href="http://sergeydmitriev.livejournal.com/1955.html"/>
    <link rel="self" type="text/xml" href="http://sergeydmitriev.livejournal.com/data/atom/?itemid=1955"/>
    <title>Новый подход к программированию - интервью</title>
    <published>2004-07-08T15:59:07Z</published>
    <updated>2005-08-29T05:34:23Z</updated>
    <category term="language_oriented_programming"/>
    <content type="html">Когда я был на JavaOne на прошлой неделе то дал &lt;a href="http://www.codegeneration.net/tiki-read_article.php?articleId=60"&gt;интервью&lt;/a&gt; Джеку Хэррингтону - он автор книжки &lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/1930110979/qid=1089304669/sr=8-1/ref=sr_8_xs_ap_i1_xgl14/104-7373015-3038319?v=glance&amp;amp;s=books&amp;amp;n=507846"&gt;"Code Generation in Action"&lt;/a&gt;, а также он поддерживает web-site посвященный генерации кода - &lt;a href="http://www.codegeneration.net"&gt;http://www.codegeneration.net&lt;/a&gt;&lt;br /&gt;В этом интервью я немного рассказал о нашем новом продукте Fabrique, но в основном я рассказывал о новом подходе к программированию. Он кстати уже имеет название - Language Oriented Programming.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:sergeydmitriev:1696</id>
    <link rel="alternate" type="text/html" href="http://sergeydmitriev.livejournal.com/1696.html"/>
    <link rel="self" type="text/xml" href="http://sergeydmitriev.livejournal.com/data/atom/?itemid=1696"/>
    <title>Новый подход к программированию - теперь можно скачать!</title>
    <published>2003-11-27T20:07:19Z</published>
    <updated>2005-08-29T18:32:30Z</updated>
    <category term="language_oriented_programming"/>
    <content type="html">Для того чтобы все лучше понимали то о чем я писал ранее, я решил начать выкладывать программу на свой сайт.&lt;br /&gt;Пока это, конечно, очень ранний прототип, поэтому в реальной работе его еще нельзя использовать (это впереди!).&lt;br /&gt;Однако он вполне подходит для иллюстрации излагаемых здесь идей.&lt;br /&gt;  Надо заметить, что как и любая программа на свете эта программа является объектом интеллектуальной собственности, и права на нее принадлежат компании JetBrains, что и изложено в файле MPS_license.txt, лежащем в корневом каталоге.  Ну а саму программу скачать можно здесь: &lt;a href="http://www.jetbrains.com/mps"&gt;http://www.jetbrains.com/mps&lt;/a&gt;&lt;br /&gt;  Вот, а теперь я готов ответить на любые вопросы и комментарии.&lt;br /&gt;&lt;br /&gt;  Продолжение следует...</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:sergeydmitriev:1485</id>
    <link rel="alternate" type="text/html" href="http://sergeydmitriev.livejournal.com/1485.html"/>
    <link rel="self" type="text/xml" href="http://sergeydmitriev.livejournal.com/data/atom/?itemid=1485"/>
    <title>Новый подход к программированию - продолжение</title>
    <published>2003-09-14T18:54:32Z</published>
    <updated>2005-08-29T05:37:22Z</updated>
    <category term="language_oriented_programming"/>
    <content type="html">Прочитав комментарии на предыдущее мое сообщение, я решил не публиковать программу до тех пор пока на ней нельзя будет показать явно пользу от нового подхода. А это означает, что в ней должен быть редактор графа программы, первый вариант которого я сейчас и пишу.&lt;br /&gt;Это конечно же только первый шаг в написании удобного редактора графа.&lt;br /&gt;&lt;br /&gt;До написания редактора я строил граф в виде набора вызовов Java методов.&lt;br /&gt;Выглядело это все очень громоздко и нечитабельно. (В моем примере такой код занял раз в пять больше места, чем сам код моделируемого примера программы)&lt;br /&gt;Кстати, такая попытка набивать граф в виде java кода показала еще один пример неэффективности универсального императивного языка для описания на нем данных. XML, представлялся лучшим вариантом, поскольку его основная цель – как раз описание данных, Однако, XML тоже весьма неэкономный язык.&lt;br /&gt;(Например, попробуйте представить на XML те же арифметические выражения или SQL запросы.) Причина здесь – в универсальности языка XML. На самом деле XML – это метаязык, в котором грамматика задается схемой или DTD. &lt;br /&gt;&lt;br /&gt;Я рассчитываю, что мой подход решит обе проблемы: удобное представление как данных любого типа, так и программ на разных языках.&lt;br /&gt;&lt;br /&gt;Кратко – о редакторе. В общем речь идет о том чтобы иметь во первых, редактор любого узла графа. Я представляю этот редактор как набор прямоугольных ячеек, собранных в некое подобие таблицы. Каждая ячейка либо является некоторй константой, либо соответствует какому-нибудь свойству соответствующего семантического типа, либо линку на другой узел. Ячейка - редактор линка в свою очередь состоит либо из редактора ссылки на его целевой узел, либо из самого редактора целевого узла (который, по рекурсии, имеет такую же структуру).&lt;br /&gt;Для каждого семантического типа задается раскладка (layout) его ячеек разных типов, а также информация, какие линки иметь в виде ссылок, а какие – в виде встроенных (in place) редакторов.&lt;br /&gt;Во время редактирования одна из ячеек является текущей (выделенной). Ячейку можно выделить путем простой навигации по таблице с помощью клавиатуры. После выделения ячейки ее содержимое редактируется с клавиатуры и/или происходит выбор из списка возможных значений. Из любого места можно специальной клавишей добавить новый линк заданного типа.&lt;br /&gt;&lt;br /&gt;Продолжение следует...</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:sergeydmitriev:1258</id>
    <link rel="alternate" type="text/html" href="http://sergeydmitriev.livejournal.com/1258.html"/>
    <link rel="self" type="text/xml" href="http://sergeydmitriev.livejournal.com/data/atom/?itemid=1258"/>
    <title>Новый подход к программированию.</title>
    <published>2003-08-31T14:58:15Z</published>
    <updated>2005-08-29T05:38:02Z</updated>
    <category term="language_oriented_programming"/>
    <content type="html">При современных способах программирования есть такая проблема – очень трудно описать компьютеру напрямую то что от него хочется. Каждый раз приходится переводить то описание задачи и ее решения, которое сидит а голове, на какой-нибудь язык программирования. При этом, к сожалению, многое из смысла задачи теряется.&lt;br /&gt;Возьмем какой-нибудь ООП язык программирования – например Java. Здесь у нас в распоряжении пара десятков языковых конструкций – класс, метод, цикл и т.д.&lt;br /&gt;Основная возможность по расширению языка состоит в определении новых классов. Для такого языка все классы в принципе на одно лицо – это просто набор методов и полей, ну еще ссылка на класс-родитель и на набор интерфейсов.&lt;br /&gt;&lt;br /&gt;Чуть более подробно про эти проблемы см. &lt;a href="http://www.sergeydmitriev.com/thenewprogrammingparadigm.html"&gt;What is bad about OOP&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;В идеале хотелось бы чтобы для данного класса задач можно было бы легко задать язык программирования наиболее близко выражающий понятия соответствующей предметной области. Я здесь описываю возможный способ решения этой проблемы.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Опишем новый подход:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Любая программа представляет из себя граф, состоящий, конечно, из узлов и ребер.&lt;br /&gt;Этот граф задается сначала на этапе кодирования, затем может меняться на этапе компиляции, а также и во время исполнения программы.&lt;br /&gt;&lt;a name="cutid1"&gt;&lt;/a&gt;&lt;br /&gt;При исполнении программы задается входной узел графа, ему передается управление, а затем каждый узел определяет, какому узлу выполняться дальше.&lt;br /&gt;В данном случае речь идет об интерпретаторе такой программы, написать который наиболее просто. Однако, в силу простоты базовой модели, возможно будет  написать и компилятор в некоторый байт-код, а также виртуальную машину для него (по аналогии как это реализовано для языка Java)&lt;br /&gt;&lt;br /&gt;Каждый узел такого графа является экземпляром некоторого типа узлов – назовем такой тип “Семантический тип” (Semantic Type).&lt;br /&gt;Опишем подробнее, что из себя представляет “Семантический тип”.&lt;br /&gt;В качестве примера семантических типов рассмотрим понятие “Java class” и “if statement”&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Каждый семантичекий тип определяет:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Набор ссылок (links)&lt;/b&gt;, которые описывают ребра этого графа. Каждая такая ссылка имеет определенную роль – это некоторая строка, определяеющая тип ссылки.&lt;br /&gt;Для  каждого типа ссылок задается семантический тип (Semantic Type) узла на который они могут ссылаться.&lt;br /&gt;Для  каждого типа ссылок задается возможное количество ссылок данного типа в одном узле (Cardinality) - ровно одна или несколько или не более одной и т.д.&lt;br /&gt;Для каждого типа ссылок также необходимо задать на каком этапе они задаются (в момент кодирования, компиляции или выполнения). Если какой-то тип ссылок вычисляется во время компиляции или выполнения, то необходимо предоставить алгоритм вычисления этих ссылок.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Пример:&lt;/i&gt; Java class имеет 5 типов ссылок: ссылки на поля, ссылки на методы, ссылки на конструкторы, ссылка на базовый класс, ссылки на реализуемые интерфейсы.&lt;br /&gt;&lt;i&gt;Пример:&lt;/i&gt; “If statement” имеет 4 типа ссылок: на условие, на “if true expression”, на “if false expression” и на следующее выражение – на которое передается управление после окончания работы всего “if statement”а – эта ссылка устанавливается во время исполнения программы.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Задание следующего узла во время исполнения программы.&lt;/b&gt;&lt;br /&gt;Аналогично, следующий узел может быть задан либо жестко в момент кодирования, либо вычисляться во время компиляции или выполнения программы.&lt;br /&gt;Каждый узел может иметь собственное внутреннее состояние во время исполнения программы, которое может использоваться при таком вычислении.&lt;br /&gt;&lt;i&gt;Пример:&lt;/i&gt; Java class получает управление только в момент первого использования. В этот момент он инициализирует все свои статические поля, а также выполняет блок статической инициализации. Затем он переводит свое состояние в “initialized = true” и больше ничего не делает а просто возвращает управление тому кто ему его передал.&lt;br /&gt;&lt;i&gt;Пример:&lt;/i&gt; При передаче управления на “If statement” он создает специальный узел, который получит управление при выходе из условия, затем передает управление условию, передавая ему также и указатель а этот узел. Этот специальный узел при получении управления от условия проверяет вершину стека на “true” и в зависимости от этого передает управление на соответствующее выражение в “If statement”е. Можно обойтись и без создания специальных узлов, если ввести понятие разных точек входа в узел при передаче ему управления и возможность передавать эти точки входа вместо передачи указателя на узел.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. Внутреннее состояние – определяет состояние узла во время исполнения программы.&lt;/b&gt; Задается некоторым набором полей, может изменяться во время передачи управления данному узлу.&lt;br /&gt;&lt;i&gt;Пример:&lt;/i&gt; Java class имеет состояние “initialized”&lt;br /&gt; &lt;br /&gt;&lt;b&gt;4. Действия, исполняемые при передаче управления данному узлу.&lt;/b&gt;&lt;br /&gt; При передаче управления узел может изменить свое внутреннее состояние, а также может читать или записать что-то на стек или в память. (Описание модели стека и памяти - ниже). Также узел имеет доступ к графу программы (через свои ссылки) и может читать его содержимое, а также менять граф путем создания или удаления других узлов и изменения ссылок.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5. Дополнительные свойства (параметры) узла&lt;/b&gt; – определяются набором поименованных строк.&lt;br /&gt;&lt;i&gt;Пример:&lt;/i&gt; Java class может иметь свойства “abstract” со значениями “true” и “false”, свойство “visibility”, которое принимает значения public или package local и т.д.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Память и стек.&lt;/b&gt;&lt;br /&gt;Память – это куча, с возможностью выделять и удалять ее сегменты, а также записывать данные по заданному адресу. (Возможно будет также поддержка автоматической сборки мусора)&lt;br /&gt;Стек – это собственно стек.  Может быть более одного стека при поддержке многонитевости.&lt;br /&gt;Память и стек, изначально пустые, доступны узлам при передаче им управления во время исполнения программы.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Чем хорош и интересен такой подход?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Тем что возникает возможность расширять язык программирования, интегрировать разные языки в одну систему. Появляется возможность легко вводить языки, специализированные для данной предметной области.&lt;br /&gt;&lt;br /&gt;Любой язык можно задать набором определений семантических типов, что полностью определяет семантику языка. И наоборот, можно утверждать, что для определения семантики языка достаточно такого набора определений.&lt;br /&gt;&lt;br /&gt;Надо заметить что до сих пор ни слова не было сказано о синтаксисе языка. Дело в том что синтаксис нужен только если речь идет о текстовом представлении языка, здесь же программа всегда представлена в виде графа, в таком виде сразу создается и редактируется. Конечно же необходимо иметь удобный редактор для этого. У меня есть ощущение, что редактор графа можно сделать более удобным и выразительным, чем текстовый редактор. Правда такой способ редактирования поначалу может показаться поначалу и непривычным нам, привыкшим выражать мысли и программы в виде потока слов и предложений.&lt;br /&gt;&lt;br /&gt;Конечно же такой редактор не обязан быть одинаковым для всех семантических типов. Как раз наоборот, для каждого семантического типа должна быть возможность задать специализированный редактор, позволяющий оптимально вводить и изменять данные для соответствующего узла.&lt;br /&gt;&lt;br /&gt;В каком-то смысле изложенные идеи сочетают в себе идеи &lt;b&gt;“Intentional Programming”-а&lt;/b&gt; и идеи языка &lt;b&gt;Форт&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;В настоящее время я имплементирую программу-прототип реализующую изложенную модель, и надеюсь вскоре выложить первый вариант. &lt;br /&gt;В первую очередь я моделирую язык Java, также хотелось бы смоделировать какой-нибудь функциональный язык (типа Lisp или ML), а также логический язык (типа Prolog), ну и конечно же смоделировать языки для нескольких предметных областей (в том числе язык описания самих семантических типов – для достижения замыкания системы на себя)&lt;br /&gt;&lt;br /&gt;В этом прототипе семантические типы описываются обыкновенными Java классами. Затем программа-граф задается как набор экземпляров этих классов.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Следующие шаги&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;1.	Написание среды разработки.&lt;br /&gt;2.	Поддержка многопоточности.&lt;br /&gt;3.	Работа с системными ресурсами – файлы и т.д.&lt;br /&gt;4.	Поддержка описания интерфейса с пользователем – наиболее трудная и интересная на мой взгляд проблема.&lt;br /&gt;5.	Bootstrap&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:sergeydmitriev:788</id>
    <link rel="alternate" type="text/html" href="http://sergeydmitriev.livejournal.com/788.html"/>
    <link rel="self" type="text/xml" href="http://sergeydmitriev.livejournal.com/data/atom/?itemid=788"/>
    <title>Отпуск в UK</title>
    <published>2003-08-23T02:20:25Z</published>
    <updated>2005-08-29T05:39:45Z</updated>
    <category term="rest"/>
    <content type="html">Позавчера закончились 2 недели отпуска в Великобритании.&lt;br /&gt;В общем подробно рассказывать я не буду, а перечислю только то что произвело наибольшее впечатление:&lt;br /&gt;1. Легкость получения английской визы в Праге - достаточно было только один раз прийти в консульство - и через час виза была в паспорте.&lt;br /&gt;2. &lt;a href="http://www.sergeydmitriev.com/images/Oxford.jpg"&gt;Оксфорд&lt;/a&gt; и Кембридж. Как я жалею что там не учился!&lt;br /&gt;3. Природа в северной Шотландии - в Highland-е. Ну люблю я когда и горы и реки и озера и морские заливы - все вместе!&lt;br /&gt;4. &lt;a href="http://www.sergeydmitriev.com/images/Edinburgh.jpg"&gt;Эдинбург&lt;/a&gt;, особенно его &lt;a href="http://www.sergeydmitriev.com/images/EdinburghCastle.jpg"&gt;замок&lt;/a&gt; на скале.&lt;br /&gt;5. Книжная лавка со старыми научными книгами в Bath-e. (Bath - это такой городок в Англии)&lt;br /&gt;6. Английское раздолбайство (Хотя в общем то народ очень приятный конечно).&lt;br /&gt;7. &lt;a href="http://www.sergeydmitriev.com/images/Cab.jpg"&gt;Такси - кэбы&lt;/a&gt;.&lt;br /&gt;8. &lt;a href="http://www.sergeydmitriev.com/images/IAndMadonna.jpg"&gt;Музей восковых фигур&lt;/a&gt; в Лондоне. (Ну и вообще сам факт что я оказался наконец в городе про который столько учил английских текстов в школе)&lt;br /&gt;9. &lt;a href="http://www.sergeydmitriev.com/images/LondonEye1.jpg"&gt;Колесо обозрения&lt;/a&gt;, &lt;a href="http://www.sergeydmitriev.com/images/LondonEye.jpg"&gt;торчащее в самом центре Лондона&lt;/a&gt;.&lt;br /&gt;10. Факт почти полного непонимания мною английского употребляемого за пределами Лондона.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:sergeydmitriev:642</id>
    <link rel="alternate" type="text/html" href="http://sergeydmitriev.livejournal.com/642.html"/>
    <link rel="self" type="text/xml" href="http://sergeydmitriev.livejournal.com/data/atom/?itemid=642"/>
    <title>Блин...</title>
    <published>2003-08-22T23:59:35Z</published>
    <updated>2005-08-29T05:40:36Z</updated>
    <category term="rest"/>
    <content type="html">Второй день сижу дома и мучаюсь простудой - и это в разгаре лета! Видно организм все-таки не выдержал двухнедельных гонок на поездах по Соединенному Королевству - это у нас отпуск такой был. Впрочем, отпуск то вроде удался, новых впечатлений достаточно да и про работу практически не думал - только в последние дни снится стала.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:sergeydmitriev:429</id>
    <link rel="alternate" type="text/html" href="http://sergeydmitriev.livejournal.com/429.html"/>
    <link rel="self" type="text/xml" href="http://sergeydmitriev.livejournal.com/data/atom/?itemid=429"/>
    <title>Тест</title>
    <published>2003-08-22T23:06:52Z</published>
    <updated>2003-08-22T23:06:52Z</updated>
    <content type="html">Всем привет! Это тест</content>
  </entry>
</feed>
