Подсознание шутит

Болтаем с коллегой про доброе и вечное, а именно – про то замечательное время, когда Microsoft выпустит совершенно новую ОС, построенную на совершенно новом ядре, никак не связанном с NT, когда не нужно будет заботится о совместимости с Win32… А также про то, что либо это время никогда не наступит, либо ко тому времени новая ОС соберет не менее солидный багаж проблем с совместимости. Естественно, что в процессе разговора всплывает Singularity – экспериментальная OC, на которой Microsoft Research ставит опыты по выведению ОС будущего. Read On →

Навигация по AST

Продолжаю возиться с синтаксическим анализом.

Основное преимущество, которое даёт использование AST по сравнению с техникой разбора снизу вверх (bottom-up parsing) – это возможность отложить анализ разобранного текста «на потом». Это может быть удобно по разным причинам. В случае Win32.Utf8 это удобно тем, что требования к анализатору формируются прямо в процессе работы над проектом. По большому счёту я понятия не имею, что получиться в конечном итоге. :-)

Read On →

Трудовые будни

Натюрморт: корейский MS Publisher 2000 на фоне троицы Сmd, Windbg и Process Monitor, коии его же и отлаживают (т.е. отлажёвывают): :-)

Это было бы очень смешно, если не было так грустно...

http://www.newsru.com/russia/17sep2007/kosmos.html: “Реален выход в межзвездное пространство”, - пообещал Иванову заведующий лабораторией Института космических исследований РАН Владислав Измоденов. “Мы должны ставить высокие цели, первыми полететь в межзвездное пространство, это можно рассматривать как подготовку к полету на Альфу Центавра”, - убежден специалист. Нет, я все понимаю – идет большой распил Бабла, нано-технологии, национальная (или федеральная?) операционная система за два года и все такое. Над имиджем работают, опять же. Но ведь обходились как-то раньше без совсем уж бредовых идей. Read On →

Отладка абстрактного синтаксического дерева (AST)

Во время работы над парсером постоянно возникала необходимость посмотреть как выглядит тот или иной кусок дерева или все дерево целиком. Недолго думая, я попробовал выводить его в виде XML, - получилось довольно неплохо.

Исходный код на C:

typedef void *LPVOID;

Дерево, полученное после синтаксического разбора:

<translation_unit>
 <external_declaration>
  <declaration>
   <init_list_declaration>
    <declaration_specifiers>
     <declaration_specifier>
      <storage_class_specifier>
       typedef
      </storage_class_specifier>
     </declaration_specifier>
     <declaration_specifier>
      <type_specifier>
       <builtin_type>
        void
       </builtin_type>
      </type_specifier>
     </declaration_specifier>
    </declaration_specifiers>
    <init_declarator>
     <declarator>
      <pointer>
       *
      </pointer>
      <direct_declarator>
       LPVOID
      </direct_declarator>
     </declarator>
    </init_declarator>
   </init_list_declaration>
   ;
  </declaration>
 </external_declaration>
</translation_unit>
Read On →

Резюме на критику

По следам новости про очередной набор разработчиков из России, Украины и остальных прилегающих стран.

На днях пришло письмо с просьбой покритиковать резюме, которое предполагалось послать на этот конкурс. Я уже было собирался отправить автора на forum.privet.com – лучшее, на мой взгляд место, где можно обкатать резюме разработчика на соответствие американским стандартам. Или по крайней мере лучшее русскоязычное место. Но посмотрев на него внимательнее, я решил все-таки сделать это сам.

Read On →

Свежеоткрытый в Ванкувере центр разработки нанимает

http://www.microsoft.com/canada/employment/search.mspx: Искать по ключевым словам “Canada”, “British Columbia”, “Vancouver”. PS: Кстати, а знаете почему этот центр называется “Microsoft Canada Development Centre”, а не “Microsoft Development Centre Canada”? Потому что аббревиатура MDCC уже занята: Microsoft Development Center Copenhagen. :-)

Спутник приобрести не желаете?

Точнее - “Спутник-1”. Недорого. Самовывоз. http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item;=160155029889. Источник: http://www.astronomy.ru/forum/index.php/topic,30799.0.html

Сбор и обработка логов. Пример из жизни

Некоторое время назад мне нужно было проанализировать как различные приложения используют один из компонентов системы. Этот компонент (или, скажем , библиотека) предоставляет API из нескольких функций, которые почти никогда не вызываются приложениями напрямую. Вместо этого цепочка вызовов может идёт через довольно пухлого посредника, логика работы которого не до конца понятна и очевидна.

Read On →

Построение абстрактного синтаксического дерева

Алгоритм работы Win32.Utf8 состоит из трех основных шагов:

  1. Исходные заголовки пропускаются через стандартный препроцессор;

  2. Полученный код парсится и трансформируется в дерево объектов, описывающее функции, типы и связи между ними;

  3. Полученное дерево используется для генерации кода по заданным шаблонам.

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

Read On →