Темы для курсовых и дипломов на основе макросов в Скале

Мы уже совсем близко к финальному релизу Скалы 2.10, который вместе с другими интересными фичами будет включать в себя и макросы: http://scalamacros.org.

На текущий момент макросы весьма стабильны, ими пользуется все больше и больше народа, поэтому настал отличный момент для того, чтобы на основе макросов написать курсовую работу, диплом или даже магистерский проект. Дипломная или магистерская работа на тему популярного языка программирования, да еще и с подписью Мартина Одерского. Звучит интересно, правда?


Подробно предлагаемые темы описаны на сайте проекта: http://scalamacros.org/news/2012/11/05/research-projects.html, а в этом посте я вкратце прорезюмирую некоторые из них. Итак вот список: * Optimizing collections with macros * Using reified types for specialization * Macro-based class system * Macro-based continuations * Multi-stage programming with macros * Interpreter for abstract syntax trees

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

Далее у нас есть несколько проектов, которые реализуют языковые фичи в виде макросов. Замечательным свойством макросов является то, что они упрощают язык программирования, предоставляя возможность вынести фичи языка из ядра в стандартную библиотеку. Предлагается на своем опыте опробовать эту идеологию, а заодно и потенциально поучаствовать в дизайне нового ядра Скалы.

Следующий проект (multi-stage programming with macros) использует возможности макросов для создания доменно-специфических языков. У нас в лаборатории есть интересное направление, связанное с созданием параллельных и не очень DSL с помощью LMS. Я восхищен этой технологией: контролем, который она предоставляет разработчику языков, и прозрачностью для пользователей. Но у текущей реализации есть один недостаток - количество языковой магии под капотом зашкаливает, на что часто жалуются разработчики. С помощью макросов этот недостаток можно полностью устранить.

Завершает парад интерпретатор нового поколения для Скалы. Это хороший пример маленького изолированного проекта, который может интересно выстрелить. Наш текущий интерпретатор просто-напросто запускает компилятор в памяти, что делает его весьма тяжеловесным и не всегда применимым. Заманчивой альтернативой является легкий модуль, который будет производить интерпретацию на лету. Непосредственное применение такого модуля - исполнение макросов внутри компилятора.


Если вас заинтересовал какой-то из проектов или вы хотели бы предложить свой собственный, просто оставьте комментарий к этому посту, и я с вами свяжусь.

Также хочу отметить, что формат сотрудничества не обязательно должен быть академическим. В основном наша лаборатория работает со студентами (магистрантами, аспирантами), это да. Но у нас есть и примеры плодотворного сотрудничества с разработчиками, для которых Скала это просто хобби.

Наконец хочу пожелать не пугаться слов “разработка новых фич для Скалы” и “сотрудничество с EPFL”. С нами весело и интересно :)