PDA

Просмотр полной версии : Создание языка программирования как тема диссертации


san-smith
15.01.2017, 14:28
Здравствуйте, уважаемые форумчане.

Я сейчас являюсь магистрантом 1 курса, но, как говорится, уже "навострил лыжи" в науку. Собственно, хочется выбрать такую тему магистерской, чтобы из неё можно было потом "вырастить" настоящую диссертацию.
И так как в последнее время меня заинтересовала тема языков программирования и компиляторов (даже есть шуточная проба пера - подробнее на Хабре - "Как я создавал убийцу HTML"), то возник вопрос: может ли создание языка программирования и компилятора/интерпретатора являться темой для кандидатской диссертации?
Есть ли примеры подобных работ?

Заранее спасибо.

avz
15.01.2017, 18:31
Может.
05.13.11, защита в Воронеже )
но надо очень аккуратно сформулировать новизну. Это Вам понадобится через 6 лет )

san-smith
15.01.2017, 20:14
Спасибо за ответ.
Это Вам понадобится через 6 лет )
На самом деле возможно и раньше - диплом специалиста у меня уже есть, хотелось бы сократить этот срок.

А не подскажете где можно посмотреть диссертации по этому направлению? Или хотя бы научные статьи.

kravets
15.01.2017, 20:18
А не подскажете где можно посмотреть диссертации по этому направлению? Или хотя бы научные статьи.

Авторефераты поищите на сайте ВАК в объявлениях о защите. Продумайте несколько вариантов поисковых предписаний. Например, "компилятор" порождает следующую куцую выдачу:
16.10.2012
Алымова Елена Владимировна
Генерация наборов тестов для распараллеливающих и оптимизирующих преобразований в компиляторе
14.06.2013
Жаркая Варвара Юрьевна
СПЕЦИФИКА РАБОТЫ С ИСТОЧНИКАМИ ВО "ВСЕМИРНОЙ ХРОНИКЕ" МИХАИЛА ГЛИКИ: ТВОРЧЕСТВО КОМПИЛЯТОРА
17.12.2013
Рыбаков Алексей Анатольевич
Методы и алгоритмы оптимизации переходов в компиляторе базового уровня системы двоичной трансляции для архитектуры «Эльбрус»

"транслятор"
20.12.2013
Собольников Сергей Александрович
Модели и алгоритмы планирования движений автономных мобильных роботов-ретрансляторов для обеспечения работы подвижной коммуникационной сети
25.02.2014
Пыхов Юрий Александрович
Организация наведения на спутник-ретранслятор в железнодорожном комплексе связи на основе траекторной фильтрации измерений антенного датчика
25.03.2016
Бовкун Александр Викторович
Постпроцессор транслятора языка программирования высокого уровня для реконфигурируемых вычислительных систем

san-smith
16.01.2017, 05:10
Посмотрел я авторефераты на сайте ВАК и понял, что собственно задачи разработки языка/компилятора никто не ставит - или вопросы оптимизации перевода, или распараллеливание, или программирование СБИС.
Это связано с тем, что тема разработки языка слишком сложна или потому что сама по себе она не интересна? Я правильно понимаю, что более актуально нечто в стиле "Разработка языка X для решения задачи Y"?

mitek1989
16.01.2017, 07:01
san-smith, я думаю, что да. Ведь диссертация должна иметь не только научную новизну, но и практическую значимость :)

kravets
16.01.2017, 07:35
тема разработки языка слишком сложна

именно так

более актуально нечто в стиле "Разработка языка X для решения задачи Y"

верно, только "для решения класса задач Y"

san-smith
16.01.2017, 17:20
Спасибо за ответы.
А насколько широким должен быть класс задач Y? Можете привести пример?

Скажем, существуют пакеты для моделирования передачи тепла. Если разработать язык, который позволит делать это нативно,
то это может стать основой диссертации? Или нужно что-то более "кучерявое"?

kravets
16.01.2017, 17:56
Скажем, существуют пакеты для моделирования передачи тепла. Если разработать язык, который позволит делать это нативно,
то это может стать основой диссертации?

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

san-smith
16.01.2017, 18:10
Хорошо, зайду с другого бока.
Области исследований:
...
2. Языки программирования и системы программирования, семантика
программ.
Если я правильно понял этот пункт, то, скажем, разработка ещё одного языка программирования общего назначения может являться научной проблемой. Но как обосновать актуальность такой работы, если этих языков уже N штук? Язык должен поддерживать принципиально новую парадигму? Ведь недостаточно же просто натянуть новый синтаксис на старые грабли?

4gost
16.01.2017, 18:20
san-smith, именно так. Нужно не просто создать новый язык, а доказать, чем он будет лучше имеющихся (в рамках решения какой-либо задачи).

kravets
16.01.2017, 18:40
Но как обосновать актуальность такой работы, если этих языков уже N штук?

Они универсальные. Ваш - специализированный, синтаксис ориентирован на особенности некоего класса задач. При этим

Если разработать язык, который позволит делать это нативно,

этого недостаточно.

В актуальности необходимо показать, почему существующие языки и специализированные пакеты (для enduser) хуже, чем новый язык.

В принципе в качестве рабочей идеи - расширение некоего существующего языка + препроцессор, этого хватит.

san-smith
16.01.2017, 18:52
На пальцах я вроде бы понимаю, но мне не хватает примера такой задачи.

А, скажем, разработка языка для аппаратной платформы будет научно-значимой? Например, высокоуровневый язык для Ардуины. Или что-нибудь для Эльбруса.

UPD
Пока думал над ответом, уже ответил kravets.
почему существующие языки и специализированные пакеты (для enduser) хуже, чем новый язык.
Когда я приводил этот пример, я держал в голове freefem - вроде и язык, а вроде и инструмент для моделирования.

kravets
16.01.2017, 18:58
А, скажем, разработка языка для аппаратной платформы будет научно-значимой? Например, высокоуровневый язык для Ардуины. Или что-нибудь для Эльбруса.

Наверняка. Только надо убедиться в том, что эта задача не решена до Вас.

san-smith
16.01.2017, 19:32
Прошу прощения за большое количество вопросов, но я хочу представить себе картинку в целом.

Наверняка. Только надо убедиться в том, что эта задача не решена до Вас.
С этим теперь понятно. А как насчет реализации компилятора существующего языка под .NET/Java? Как IronPython реализация интерпретатора Python на .NET - что-нибудь подобное для некоего языка X может быть задачей?

kravets
16.01.2017, 19:46
А как насчет реализации компилятора существующего языка под .NET/Java?

Это - инженерная, а не научная задача.

Добавлено через 30 секунд
А как насчет реализации компилятора существующего языка

Аналогично.

avz
16.01.2017, 20:54
А как насчет реализации компилятора

Вы паспорт и авторефераты невнимательно читали.
Что там защищают? Модель, алгоритм, метод, способ...
Хотите защищать ктн, а не phD - это и защищайте.

mitek1989
17.01.2017, 08:18
san-smith, можете еще посмотреть в сторону Метавычислений

san-smith
17.01.2017, 14:55
Спасибо большое всем за ответы, очень помогли.
Для себя выстроил примерно такую схему:
1. Найти/придумать/создать проблему, для которой актуально разработать новый язык или надмножество существующего.
2. Реализовать компилятор/интерпретатор языка из п.1.
3. ???
4. Profit!

mitek1989
17.01.2017, 15:06
придумать/создать

всё-таки "найти" - лучший вариант :)


3. ???
4. Profit!


С Луркоязом на другой форум :)

kravets
17.01.2017, 15:39
2. Реализовать компилятор/интерпретатор языка из п.1.

2.0 Создать синтаксис и семантику
2.1 Реализовать ...

san-smith
17.01.2017, 16:15
Недавно на Хабре была статья (https://habrahabr.ru/post/319424) про исследовательский проект Graal & Truffle.
Авторы обещают упрощение разработки языков и возможность получить быстрые компиляторы:
Truffle в паре с Graal позволит конвертировать такие интерпретаторы в JIT компилирующие виртуальные машины (VM) … автоматически. Полученная среда исполнения в моменты пиковой производительности может соревноваться с лучшими существующими компиляторами (настроенными вручную и заточенными под конкретный язык). Например полученная таким образом реализация языка JavaScript под названием TruffleJS может тягаться с V8 в тестах производительности.
Движок RubyTruffle быстрее чем все остальные реализации Ruby. Движок TruffleC примерно соревнуется с GCC.

Есть ли смысл покопаться в этом на предмет темы диссертации? Или это всё инопланетно и надо думать не об этом?

kravets
17.01.2017, 16:18
Синтаксис первичен.

san-smith
17.01.2017, 16:25
Синтаксис первичен.

То есть гораздо важнее рассказать про создаваемый язык, его синтаксис/семантику, почему он хорош для этого класса задач, а насколько быстро это будет работать - дело десятое?

kravets
17.01.2017, 16:50
Примерно так. Быстродействие конкретной реализации - это проблема реализации.

@.n.g.e.r
17.01.2017, 18:49
Или что-нибудь для Эльбруса.

Не осилите, исходя из того, что я о Вас почерпнул.

Добавлено через 6 минут
Синтаксис первичен.

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

kravets
17.01.2017, 19:30
Может быть

Серьезно?

@.n.g.e.r
17.01.2017, 20:42
Серьезно?

Гипотетически вполне себе. Может быть перед нами будущий Алан Кнутович Кэй, замашки-то сферические уже озвучивались.

san-smith
18.01.2017, 04:52
Может быть перед нами будущий Алан Кнутович Кэй, замашки-то сферические уже озвучивались.

Боюсь, меня неправильно поняли.

Не осилите, исходя из того, что я о Вас почерпнул.

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

автор собирается замахнуться на представление новой парадигмы программирования?
Здесь то же самое. Я хотел узнать, что имеет большее значение: теоретическая составляющая языка (грамматика/синтаксис/семантика) или вопросы его реализации. На новую парадигму не покушаюсь.

Добавлено через 54 минуты
Не осилите, исходя из того, что я о Вас почерпнул.

Добавлено через 6 минут


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

Если Вы подскажите задачу, которую я осилю и которая будет иметь научно-практическую значимость, я буду очень благодарен.

@.n.g.e.r
18.01.2017, 10:44
Я и не претендовал на реализацию под Эльбрус, просто пытался описать рамки - найти границы, за которые не нужно пытаться заходить.

За эту точно не нужно, если не работаете в МЦСТ. Они и сами, исходя из имеющихся контактов, в том числе с командой компиляторщиков, не покушаются на принципиально новый компилятор - фронтенд покупной, бэкенд в GCC подсматривают. На чем в научном плане выезжают можете по их публикациям прикинуть.

На новую парадигму не покушаюсь.

Не обращайте внимания, это были скорее мысли вслух.

Если Вы подскажите задачу,

В теме уже массу направлений обозначили, конкретно моя специализация все-таки ОС. У меня такой вопрос имеется - научрук-то у Вас вообще есть и что он на эти мысли высказывает?

san-smith
18.01.2017, 12:39
Научрук конечно же есть, но его научные интересы лежат в другой плоскости, так что тут он не советчик. Да и у нас на периферии магистерская работа скорее формальность, сильно с ней не напрягаются - говорю как человек, который ушел из магистратуры педагогического и поступил в магистратуру классического университета.
Хочется, чтобы это время не прошло для меня в пустую, вот и решил спросить у более опытных товарищей.

@.n.g.e.r
18.01.2017, 12:53
его научные интересы лежат в другой плоскости

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

san-smith
18.01.2017, 13:55
Насчет "подстраиваться" - имею скорее печальный опыт (одна из причин, по которой ушел из магистратуры с последнего семестра имея средний балл по предыдущим сессиям 5.0).
В этой магистратуре мой научник скорее практик - без степени, но начальник сетевого отдела центра информатизации университета. Соответственно и тему предложил по сетям.
Искать другого научника тоже не вариант - магистров распределяют по нагрузке в добровольно-принудительном порядке. Впрочем, скорее всего это ничего не поменяет - на местных конференциях я ни разу не видел ни одного доклада по этой области, так что вряд ли у нас есть такие специалисты.
Поэтому я решил действовать по принципу "Спасение утопающих - дело рук самих утопающих".

Paul Kellerman
18.01.2017, 15:27
спросить у более опытных товарищей
1) И они Вам уже ответили.
2) Вы не услышали.
3) ???
4) Mission failed.

san-smith
18.01.2017, 15:33
Mission failed.
Не соглашусь с этим утверждением. Ответы я на свои вопросы получил, определенные выводы сделал.
вот и решил спросить у более опытных товарищей.
Это был ответ на вопрос научрук-то у Вас вообще есть и что он на эти мысли высказывает?

@.n.g.e.r
18.01.2017, 15:39
В теме попахивает исчерпанием стека из-за рекурсии.

san-smith
18.01.2017, 15:44
В теме попахивает исчерпанием стека из-за рекурсии.
Наверное Вы правы. В любом случае, этот диалог был достаточно познавательным и интересным, поэтому всем спасибо за комментарии.

avz
18.01.2017, 18:56
Научник - без степени???
Тему по сетям (на ктн), кстати, может оказаться защитить проще.
Управление очередями, взаимодействие модулей итд. ЧИстая 05.13.11.

san-smith
18.01.2017, 19:17
Научник - без степени???
Речь идет о магистратуре. Как минимум в двух вузах нашего региона наличие степени не является обязательным требованием для научного руководителя магистранта - по крайней мере де факто. Подозреваю, что в остальных вузах ситуация такая же.

Тему по сетям (на ктн), кстати, может оказаться защитить проще.
Кому-то может и легче, но я бы себя к этой категории не отнес. Тем более, что задачу он предложил чисто инженерную - если в двух словах, разработать БД для хранения и обработки логов IP-телефонии сети университета. Где там наука - не ясно.

@.n.g.e.r
18.01.2017, 20:31
наличие степени не является обязательным требованием для научного руководителя магистранта

Ваше стремление заложить базис для диссертации похвален, но попытка усидеть на 1/2 стула ник чему хорошему не приведет. В ВУЗе есть умудренные опытом специалисты по интересующей тематике? Если нет, то, боюсь, Вы рискуете себе и яму вырыть и оплатить погребение.

avz
19.01.2017, 08:47
в двух вузах нашего региона наличие степени не является обязательным требованием для научного руководителя магистранта

Аккредитационное нарушение...

разработать БД для хранения и обработки логов IP-телефонии сети университета

Бакалаврская задача.

Hogfather
19.01.2017, 08:56
Бакалаврская задача.
Курсовик, если честно. Во всяком случае, у меня так было.

avz
20.01.2017, 12:45
Курсовик, если честно. Во всяком случае, у меня так было.

Смотря чем нафаршировать. Если будет какая-то элементарная СППР поверх, то у нас может потянуть на ВКР. Или если уж очень сложно эти логи доставать или парсить.

Например, сейчас один магистрант с целью анализа elibrary выкачивает и парсит - даже если проанализировать не успеет, мы такую работу пропустим ))) следующий проанализирует


А так-то да, КР БД, без вопросов.

Olga556
01.02.2017, 16:48
Большое спасибо за информацию!

intR
26.02.2017, 16:18
san-smith, да, создание языка программирования и компилятора - чистая 05.13.11.
Примерное содержание будет такое:
1. Описание предметной области
2. Описание существующих аналогов
3. Разработка языка
4. Разработка транслятора
5. Описание реализации
6. Сравнение полученных решений с уже существующими из п.2
7. Выводы

Вам правильно тут советуют начать с поиска научного руководителя (заочная аспирантура?) - работу писать вам, но задавать общее направление (а также отвечать на вопросы из категории заданных вами здесь) - как раз его задача.

Вот кстати, по теме: можете погуглить конференцию "PLC 2017" - как раз интересующая вас тематика.

san-smith
27.02.2017, 17:13
Примерное содержание будет такое:
1. Описание предметной области
2. Описание существующих аналогов
3. Разработка языка
4. Разработка транслятора
5. Описание реализации
6. Сравнение полученных решений с уже существующими из п.2
7. Выводы

Большое спасибо за ответ. Возьму за основу Ваш план, буду работать.

papageno
17.03.2017, 19:19
С одной стороны, создание языка идеально ложится в 05.13.11, да и новизну искать не нужно - язык-то новый. С другой стороны, для защиты наверняка потребуется, чтобы этот язык реально использовался в какой-то серьёзной организации, и это было документально подтверждено. Формально такого требования нет, но таково моё впечатление от работ и защит по этой специальности. А новичку сделать действительно новый язык, чтобы его захотели использовать серьёзных разработках, практически нереально.

4gost
17.03.2017, 19:40
да и новизну искать не нужно - язык-то новый.
он не просто должен быть новым, но и лучше имеющихся - по крайней мере, в рамках какой-то конкретной задачи

mitek1989
17.03.2017, 20:35
papageno, если попытаться пойти по 05.13.11 по физ-мату, то внедрение в серьезную организацию не обязательно. Но здесь работа должна быть намного более теоретизированной, с теоремами, леммами, строгими доказательствами...