Варианты тем к курсовой по курсу “Компиляторы”

Хочу предложить студентам набор “околокомпиляторных” тем для курсовых. Основная задача – дать возможность познакомиться с различными аспектами того, с чем они знакомились на лекциях, включая такие темы как: разбор языков и генрацию кода, работа со сгенерированным кодом и метаданными, DSL, …

Вот примерно то, что сочинилось с ходу (задаи дать равные по сложности задачи не ставилось):

  • Поддержка языков в Visual Studio (Eclipse, SharpDevelop, …). Подсветка синтаксиса, CodeInsight (для операторов)
    • MSIL
    • ANTLR
  • Плагин (правило) в StyleCop. Например:
    • Имена переменных для простых типов используют венгерскую нотацию
    • Перед объявлением метода должно быть две пустых строки
  • Анализ IL кода (с использованием CCI или подобных инструментов)
    • Построение диаграммы классов
    • Построение графа вызовов методов
  • Инъекции в сгенерированные сборки IL
    • Добавление ко всем или к перечисленным методам логирования входа и выхода
  • Печать для исходного кода его IL-версии (т.е. для каждой строчки языка – код IL который ей соответствует)
  • DSL
    • Описание модели в ORM: генерируется модель (С#), мапинг на базу (для Nhibernate или EF), скрипты создания базы. Что-то типа Oslo
    • Язык описания отчетов: шапок, детальных линий, … Генерируется:
      • код на C#/IL/VBA
      • описание отчета на RDL
  • Замена/доработка кода
    • Консольная утилита, добавляющая заготовки комментариев с XML документацией ко всем элементам

Какие еще могут быть идеи?

Буду очень признателен

This entry was posted in Учеба. Bookmark the permalink.

6 Responses to Варианты тем к курсовой по курсу “Компиляторы”

  1. heeepi says:

    На ум приходит еще такое:
    – построение графа зависимостей между сборками (типа ndepend).
    – какие нибудь сложные метрики кода.

    Ты кстати не смотрел в сторону Common Compiler Infrastructure: Metadata API (http://ccimetadata.codeplex.com/)? Штука вроде классная.

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

      По поводу Common Compiler Infrastructure – CCI в тексте это оно и есть. Но там один фатальный недостаток – кода много, а документации мало.

      • heeepi says:

        К метрикам кода кстати и матаппарат неплохо подводится. Да и вообще идея такой курсовой выглядит круто.

        Еще в догонку – можно реализовать простой AOP движок, навроде Spring.AOP или Unity.
        Может быть даже что то навроде модульного движка сделать можно, навроде MEF.

        • Если вспоминать АОП, то я бы скорее смотрел (в контесте текущих тем), на PostSharp, т.е. на статическое инструментирование.
          По сути, упрщенный вариант этой задачи, это инъекции в сгенерированные сборки для целей логирования.
          А более общая задача, боюсь будет не подъемна в рамках курсовой – я не оговорил, что это заочная форма обучения, т.е. у людей по определению ограничено время на выполнение работы.

          • heeepi says:

            Согласен с тобой, универсальный АОП движок будет непросто сделать – кучу моментов надо будет продумывать.
            А вот инфраструктуру для создания модульных приложений (типа MEF) можно сделать быстро. Нужно то только научиться по сборкам быстро ходить да классы из сборок подгружать…

            • Понимаешь…
              Я даже не смогу студентам толком объяснить – на что им этот MEF сдался.🙂 По крайней мере, пока они сами не начнут писать что-то приличное по объему.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s