Size: a a a

Compiler Development

2021 April 26

А

Алексей ayaye :)... in Compiler Development
В открытиях, конечно, много нового научного знания. Но даже в студенческих работах вполне реально получить некоторое его количество.
источник

PS

Peter Sovietov in Compiler Development
И разве нельзя вспомнить примеры выдающихся магистерских работ? Уж по компиляторной-то тематике они есть.
Сразу на ум приходит, конечно, "Allocation de registres et vidage en mémoire" от F. Bouchez.
источник

А

Алексей ayaye :)... in Compiler Development
Ну не всем же писать выдающиеся. Моя-то мысль о том, что и просто нормальные тоже нужны, просто надо их правильно воспринимать.
источник

PS

Peter Sovietov in Compiler Development
Конечно. Вот пример нормальной работы: https://elar.urfu.ru/bitstream/10995/31584/1/m_th_r.a.gareev_2015.pdf

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

А

Алексей ayaye :)... in Compiler Development
Редкий студент напишет диплом на 78 страниц :)

Но хороший диплом в большинстве случаев требует хорошего руководителя. Я видел много работ, где руководитель сам, видимо, ничем, кроме преподавания не занимается, поэтому и темы предлагает не актуальные.

Хорошо, когда тема студенческой работы рождается из реальных задач. Чаще всего у студента еще не хватает кругозора для правильной постановки задачи. Поэтому в первую очередь ему нужно правильно выбрать руководителя :)
источник

IL

Ilya L in Compiler Development
Кстати говоря, большое количество страниц это проблема, когда решаешь подать свой диплом как научную статью на студенческий конкурс научных работ например...
Так мне пришлось свой парный диплом с 90+ страниц урезать всеми правдами и неправдами до 60 страниц. Выкидывая часть выводов, описания, анализа литературы и т.д.
источник

А

Алексей ayaye :)... in Compiler Development
это нормально :) сначала проблема написать нужное количество страниц, а через несколько лет - ужать свои мысли  в нужный объем.
источник

IL

Ilya L in Compiler Development
Ну вот было жалко выкидывать :(
Хотя проблемы изначально у нас не было. Скорее постоянное ощущение незавершенности...
источник

А

Алексей ayaye :)... in Compiler Development
есть желание писать статьи - это замечательно, это самое главное. остальное с опытом придет.
источник

IL

Ilya L in Compiler Development
Да не, уже желания нет)
Я скорее ради интереса решил попробовать и понял что не мое, по крайне мере пока что.
Может быть как-то вернусь, а может быть и нет. Посмотрим как жизнь пойдет.
источник

IK

Ivan Kochurkin in Compiler Development
Лучше диплом на 30 страниц, но зато с четко изложенной сутью без воды, а не с исходным кодом и прочим малоинформативным контентом, который занимает 50%
источник

VS

Victor Shamparov in Compiler Development
А вот тут про правильного научника полностью плюсую. Правда, тут можно обойтись правильным консультантом или начальником работы.
источник
2021 April 27

МБ

Михаил Бахтерев... in Compiler Development
Вообще вся идея edsl и stratified design не связана с конкретным синтаксисом, который никогда особо не волновал lisp-сообщество. Под языком в оригинальной идее понимался набор абстракций, в которых описывается предметная область. Поэтому, почему бы и не на Go?
источник

IP

Iaroslav Postovalov in Compiler Development
На го это объективно громоздко и субъективно отвратительно
источник

IP

Iaroslav Postovalov in Compiler Development
Как и большинство форм абстракции
источник

МБ

Михаил Бахтерев... in Compiler Development
В смысле?
источник

IP

Iaroslav Postovalov in Compiler Development
То есть мне нужно сейчас конкретизировать, что на го любой хоть немного выбивающийся из ожиданий дизайна языка код менее понятный и большой по числу символов?
источник

IP

Iaroslav Postovalov in Compiler Development
Это уже близко к оффтопу, во-первых, во-вторых, я подозреваю, что это спор ради спора
источник

МБ

Михаил Бахтерев... in Compiler Development
Я не спорю, я уточняю. Подумал, что вы об абстракциях вообще, и решил глубже понять эту новаторскую идею.
источник

NK

ID:0 in Compiler Development
Некоторые идеи опережают свою эпоху на многие десятилетия. Автор данной заметки к оным безусловно относит систему META II, представленную еще в 1964 году. Среди прочих эта работа впечатлила Дональда Кнута, послужив одним из источников вдохновения в его работе над атрибутными грамматиками.

Автор всего на 6 страницах очень легкого текста статьи[1] описывает виртуальную машину для разбора входной строки и предметно-ориентированный язык, основанный на расширенной версии БНФ (форме Бэкуса-Науэра). В качестве иллюстрации возможностей META II показывается, как предметно-ориентированный язык системы позволяет транслировать выражения на упрощенном варианте Алгола (VALGOL) в инструкции абстрактной стековой машины; естественно, что и языки алгебраических выражений[3] тоже легко разбираются META II.

Но самый интересный аспект META II это возможность метакомпиляции: опорный предметно-ориентированный язык можно выразить в терминах самого себя, что позволяет пошагово расширять исходные виртуальную машину и сам язык (см. инструкцию в [3]). Предполагалось, что пользователи реализуют исходную виртуальную машину (всего 19 инструкций), после чего, запустив на ней код для языка META II, будут дальше раскручивать компилятор до нужного состояния. Более того, первая версия META II тоже была написана на метаязыке-предшественнике (META), после чего повторно реализована уже на самом META II. Кульминацией публичных исследований автора стал язык TREE-META[2], применявший те же идеи к преобразованию дерева абстрактного синтаксиса.

Помимо теоретических работ Кнута META II стала предтечей более современного формализма - PEG, который набирает все большую популярность в прикладных разработках[4]. Схожие идеи легли в основу систем OMeta[5] и Ohm[6]. О META II тепло отзывались Алан Кэй, Джо Армстронг и другие известные ислледователи языков программирования.  В Интернете можно найти множество реализаций виртуальной машины META II, среди которых и версия для Python 3[7] от автора заметки.

Литература:
1. http://www.chilton-computing.org.uk/acl/literature/reports/p025.htm - исходная публикация
2. https://en.wikipedia.org/wiki/TREE-META - кульминация развития исходной системы авторами
3. http://www.bayfronttechnologies.com/mc_tutorial.html - подробная интерактивная демонстрация возможностей метакомпилирующих систем, отталкивающееся от META II
4. https://www.python.org/dev/peps/pep-0617/ - реализация разбора в Python 3
5. https://en.wikipedia.org/wiki/OMeta - современное развитие идей META II
6. https://ohmlang.github.io/ - еще более современная система
7. https://github.com/vkazanov/pymetaii - реализация META II на Python 3 от автора данной заметки
8. https://github.com/stevenbagley/metaii - реализация на Common Lisp
9. https://github.com/EyeBool/Meta-II-Compiler - реализация на C++
10. https://github.com/siraben/meta-II - реализация на Scheme

#classic #parsing #metaii #peg
источник