Интересные проекты компилятора
Я смотрю на семестровый проект в компиляторах, который также может превратиться в мою дипломную работу. У меня нет большого опыта в этой области (я написал небольшой "переводчик" для Паскаля как часть моей работы бакалавра) - я больше увлекался машинным обучением и искусственным интеллектом. Идея состоит в том, чтобы принять это как вызов и научиться чему-то в процессе.
Я взглянул на: интересные проекты компиляторов, но большинство идей кажутся устаревшими.
То же самое относится и к странице открытых проектов LLVM --- http://llvm.org/OpenProjects.html
Поскольку у меня будет семестр для работы над этим, я стремлюсь к чему-то немного значительному. Я хотел бы работать над оптимизацией или распараллеливанием. Над чем интересно работать?
1 ответ
Не стесняйтесь вносить свой вклад в Феликс, есть неограниченное количество подходящих мини-проектов, связанных практически со всем, что вас интересует:) Феликс написан на Ocaml, поэтому вам придется работать с этим. Парсер использует Scheme для кодов действий. Феликс генерирует C++, если вам нужна поддержка во время выполнения. Возможные подпроекты включают в себя:
- метатипирование и полиадическое поведение
- улучшение доказательства теорем (Феликс генерирует почему форматирует файлы из утверждений)
- Расширение диапазона оптимизаций
- Добавление новых оптимизаций
- Поддержка генерации OMP-директив
- Улучшенный сборщик мусора
Эти проблемы варьируются по сложности от простого к сложному, как вы хотите. Уровень знаний о продукте варьируется от необходимости понимать все это до простых структур данных.
Основная информация: Felix - это статически типизированный процедурный язык сценариев в семействе ML, который работает быстрее, чем C. Он генерирует C++, который передается вашему компилятору C++ для генерации двоичных файлов машин. Он использует менеджер ресурсов, чтобы найти все ресурсы и связать их, так что его так же легко использовать, как и Python. Он встраивает C и C++, поэтому можно использовать большинство ваших библиотек C/C++. Это целый программный анализатор, который фокусируется на высокоуровневых оптимизациях и позволяет вашему компилятору C++ выполнять низкоуровневые. Оптимизация высокого уровня включает в себя семантические правила очень высокого уровня, такие как указание, что обратное изменение списка дважды не допускается, или реализация параллельных назначений для минимизации затрат на хвостовую рекурсию, однако встраивание функций и переменных является основным источником производительности. Семантика выбрана так, чтобы разрешить агрессивную оптимизацию, например, режим передачи аргументов по умолчанию допускает либо нетерпеливую, либо ленивую оценку, в зависимости от того, что компилятор считает быстрее.
Свяжитесь со мной по skaller у пользователей dot sourceforge dot net.