понедельник, 18 июня 2007 г.

Несколько предварительных замечаний

амый первый пост - просто в качестве проверки и как бы предисловия. Начну с цитаты из одной своей давней статьи ("Редкая профессия"):

Жизнь сложилась так, что автор любит проектировать и разрабатывать компиляторы, и у него это, в общем, получается. То, что вы прочтете ниже, надеемся, подтвердит мои слова.

Это совсем не самореклама (что рекламировать-то - мало ли кто чего программирует?), а просто чтобы было понятно, чем я занимаюсь. А кроме компиляторов (и интерпретаторов, и всяких языко-ориентированных тулзов и прочего подобного) я, строго говоря, делать ничего и не умею. Ну, разве что лекции читать, да статьи писать.

Так что в этом блоге (если, конечно, времени хватит и если запал не исчезнет) я буду писать строго в рамках очерченных предметов. Если быть более точным, то вот темы, которые мне интересны:

- Компиляторы языков высокого уровня, в основном их "фронтальные" части. Генерация кода и оптимизация тоже интересны, но не настолько. Да и сказать что-то умное по этому поводу мне заметно сложнее, чем некоторым моим друзьям и коллегам. (Надеюсь, они будут иногда захаживать сюда :-)). Инструменты генерации синтаксических распознавателей (прежде всего, Yacc/Bison и COCO).

- Императивные языки как таковые. C/C++, Ada, C#, Java, Oberon/Zonnon, Eiffel (порядок перечисления случаен). Стандартизация языков, развитие языков. Современные инфраструктуры исполнения, прежде всего Java/JVM и Microsoft.NET/CLR/MSIL. Собственно виртуальные машины (на техническом уровне) - предмет особого интереса.

- Семантические интерфейсы (хороший и почти единственный из реальных пример - интерфейс ASIS для языка Ada). В особенности интересует все, что относится к "плюсам". Есть несколько старых проектов для C++ в этой сфере (успешно канувших в Лету, к сожалению, Sage++, например), если удастся найти что-то свежее - обязательно напишу. К этой теме непосредственно относится понятие промежуточного представления программ. Я, правда, предпочитаю название "семантическое представление" - об этом тоже надо будет подробнее написать, для меня это очень важная тема.

- Инструменты статического анализа исходных текстов - как академические проекты, так и коммерческие системы. К определенному моему удивлению, за последнее время, специально этим не заморачиваясь, обнаружил около десятка (а то и больше) фирм, выпускающих довольно интересные и мощные, судя по описанию, системы, целиком ориентированные на различные виды статического анализа программ. Постараюсь о некоторых из них написать подробнее, тем более, что даже после поверхностного чтения их сайтов возникло чувство, что там можно было бы наворотить и покруче :-). В этом пункте отдельного упоминания заслуживает тематика, связанная с (ре)инжинирингом программ, нотацией UML и ее подмножествами (Object Constraint Language, например). Помимо чисто исследовательского интереса, здесь видятся кое-какие вполне коммерческие перспективы...

- Функциональные языки. Наверное, придется ограничиться Lisp/Scheme как наиболее концептуально чистыми. Речь идет как о языках и функциональной парадигме как таковых, так и об инструментах. Один из первых постов будет об идее реализации Lisp для .NET.

- Продвинутые архитектуры компиляции, прежде всего, с ориентацией на глубокую интеграцию компиляторов и сред разработки. В 2005 году на эту тему даже статью написал, правда, вполне поверхностную. А тема сама по себе крайне интересная, да и реальные системы есть (как предмет анализа и образец) - прежде всего, Visual Studio и Eclipse.

Ну вот, примерно так... Потом, может, еще чего добавлю. Вообще-то, далеко не все упомянул. Проект ONBASS, в котором я сейчас, вроде бы, участвую (по договору с London Metropolitan University), вообще о другом, но тоже интересном. Потом как-нибудь.

Да, а та статья, цитату из которой я привел в начале, оказывается, исчезла с сайта PC Magazine/Russian Edition. Архив номеров за 1997 год просто отсутствует. А может, не нашел? Журнал был за номером 12, кажется (спецвыпуск, с медведем на обложке).

Ну ничего: если наберусь наглости, буду выкладывать куски из той статьи здесь - будет, кстати, повод восстановить пропущенные в печатном варианте куски, да и добавить кое-что (картинки, например). Сама статья, несмотря на свою давность, читается вполне ничего. :-)

А если дело совсем хорошо пойдет, то... продолжение напишу! За десять-то лет столько всего интересного произошло, уж вы поверьте... :-)

6 комментариев:

Анонимный комментирует...

Евгений,

очень рад, что ты решился, наконец, открыть свой технологический блог. Уверен, что многие найдут здесь массу интереснейшей информации.

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

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

Честно говоря, я тоже недавно завел собственный блог. И тоже -- технологический. Все ленился, но тут появился серьезный раздражитель -- всплеск интереса к идее создания перспективной отечественной ОС. В общем, милости просим -- http://rbogatyrev.livejournal.com/2007/05/31/

Удачи тебе в твоем начинании!

-- Руслан Богатырев

igor комментирует...

Zenya,

zamechatelno! budu chitat vse chto ty napishesh, a esli my eshe sdelaem chego-nibud is togo chto mi napisali uze togda big guys ... will be smaller. izvini za latin letters.

Roman Mitin комментирует...

Здорово! Буду обязательно читать!

Анонимный комментирует...

В 1999 году Интерстрон вроде разрабатывал компилятор С11, самой любопытной особенностью которого была поддержка русского синтаксиса (причём достаточно хорошо проработанного).
Вы не в курсе, какова судьба этого проекта?? Где его можно найти чтобы посмотреть??

Анонимный комментирует...

Статья «Редкая профессия» доступна по адресу:
http://fort.stup.ac.ru/wmaster/books/magazine/pcmag/9705s/05s979.htm
Кстати, за эту статью большое спасибо, много интересного.

pm комментирует...

Что касается функциональных языков, то в плане концептуальной чистоты и концептуальности настоятельно рекомендую Haskell.
Кстати, IMHO, это еще и лучший язык для реализации компиляторов. Незначительные проблемы с быстродействием на современных компьютерах уже не актуальны.

Что касается Lisp, то он эталон в другой области, а именно метапрограммировании и разработке DSL. Функциональная парадигма в нем из рук вон плоха.