Category: it

P800

PDC - keynote

Вчера был на кейноте на PDC - это такая микрософтовская конференция разработчиков (мы там показываем свои продукты - Resharper и dotTrace)
Вначале там выступал Билл Гейтс - особенно интересного ничего не говорил, кроме общих слов о прогрессе технологий. Зато потом разный народ стал показывать что нового будет в Висте и новом оффисе-12. Ну, Виста, действительно совсем похожа на последний Мак ОС - все анимировано, полупрозрачно и везде есть поле поиска. А вот в новом Excel и Word у них вместо главного меню+тулбара - будет нечто прикольное.
Интересно, что очень много говорилось про поддержку RSS - как в новом эксплорере так и в аутлуке.

Затем показывали что нового будет предложено программистам.
Andrew Hejlsberg показал будущие фичи C# - возможность писать структурированные запросы к любым данным
- и к коллекциям, и к базам данных. По сути - это выглядит как SQL, прямо встроенный в язык C#. Мне это особенно интересно, поскольку похожую функциональность под названием "collections language" мы разрабатываем в проекте MPS.
Была продемонстрирована также поддержка AJAX в будущей ASP.NET. Фактически без особого труда можно будет писать WEB страницы делающие частичный reload.
P800

Новый подход к программированию - интервью

Когда я был на JavaOne на прошлой неделе то дал интервью Джеку Хэррингтону - он автор книжки "Code Generation in Action", а также он поддерживает web-site посвященный генерации кода - http://www.codegeneration.net
В этом интервью я немного рассказал о нашем новом продукте Fabrique, но в основном я рассказывал о новом подходе к программированию. Он кстати уже имеет название - Language Oriented Programming.
P800

Новый подход к программированию - теперь можно скачать!

Для того чтобы все лучше понимали то о чем я писал ранее, я решил начать выкладывать программу на свой сайт.
Пока это, конечно, очень ранний прототип, поэтому в реальной работе его еще нельзя использовать (это впереди!).
Однако он вполне подходит для иллюстрации излагаемых здесь идей.
Надо заметить, что как и любая программа на свете эта программа является объектом интеллектуальной собственности, и права на нее принадлежат компании JetBrains, что и изложено в файле MPS_license.txt, лежащем в корневом каталоге. Ну а саму программу скачать можно здесь: http://www.jetbrains.com/mps
Вот, а теперь я готов ответить на любые вопросы и комментарии.

Продолжение следует...
P800

Новый подход к программированию - продолжение

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

До написания редактора я строил граф в виде набора вызовов Java методов.
Выглядело это все очень громоздко и нечитабельно. (В моем примере такой код занял раз в пять больше места, чем сам код моделируемого примера программы)
Кстати, такая попытка набивать граф в виде java кода показала еще один пример неэффективности универсального императивного языка для описания на нем данных. XML, представлялся лучшим вариантом, поскольку его основная цель – как раз описание данных, Однако, XML тоже весьма неэкономный язык.
(Например, попробуйте представить на XML те же арифметические выражения или SQL запросы.) Причина здесь – в универсальности языка XML. На самом деле XML – это метаязык, в котором грамматика задается схемой или DTD.

Я рассчитываю, что мой подход решит обе проблемы: удобное представление как данных любого типа, так и программ на разных языках.

Кратко – о редакторе. В общем речь идет о том чтобы иметь во первых, редактор любого узла графа. Я представляю этот редактор как набор прямоугольных ячеек, собранных в некое подобие таблицы. Каждая ячейка либо является некоторй константой, либо соответствует какому-нибудь свойству соответствующего семантического типа, либо линку на другой узел. Ячейка - редактор линка в свою очередь состоит либо из редактора ссылки на его целевой узел, либо из самого редактора целевого узла (который, по рекурсии, имеет такую же структуру).
Для каждого семантического типа задается раскладка (layout) его ячеек разных типов, а также информация, какие линки иметь в виде ссылок, а какие – в виде встроенных (in place) редакторов.
Во время редактирования одна из ячеек является текущей (выделенной). Ячейку можно выделить путем простой навигации по таблице с помощью клавиатуры. После выделения ячейки ее содержимое редактируется с клавиатуры и/или происходит выбор из списка возможных значений. Из любого места можно специальной клавишей добавить новый линк заданного типа.

Продолжение следует...
P800

Новый подход к программированию.

При современных способах программирования есть такая проблема – очень трудно описать компьютеру напрямую то что от него хочется. Каждый раз приходится переводить то описание задачи и ее решения, которое сидит а голове, на какой-нибудь язык программирования. При этом, к сожалению, многое из смысла задачи теряется.
Возьмем какой-нибудь ООП язык программирования – например Java. Здесь у нас в распоряжении пара десятков языковых конструкций – класс, метод, цикл и т.д.
Основная возможность по расширению языка состоит в определении новых классов. Для такого языка все классы в принципе на одно лицо – это просто набор методов и полей, ну еще ссылка на класс-родитель и на набор интерфейсов.

Чуть более подробно про эти проблемы см. What is bad about OOP

В идеале хотелось бы чтобы для данного класса задач можно было бы легко задать язык программирования наиболее близко выражающий понятия соответствующей предметной области. Я здесь описываю возможный способ решения этой проблемы.

Опишем новый подход:

Любая программа представляет из себя граф, состоящий, конечно, из узлов и ребер.
Этот граф задается сначала на этапе кодирования, затем может меняться на этапе компиляции, а также и во время исполнения программы.
Read more...Collapse )