ПО, ЭВМ и АСУ из Таможенного Союза

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » планирование » Сколько стоит разработка компилятора


Сколько стоит разработка компилятора

Сообщений 1 страница 30 из 53

1

Сложно ли написать компилятор? Да это курсовая работа студента, вот и методические указания есть:
http://window.edu.ru/resource/206/19206 … tod593.pdf

0

2

Конечно, когда нужен образец Бейсика/Фортрана образца 70-х, то это курсовая работа студента. Попробуйте ввести в такой язык классы например :). А потом ввести структуры данных, не отражаемых в типах целевого процессора. Введите туда строки.

Отредактировано utkin (2017-08-23 06:23:12)

0

3

Значит что? Значит курс построен неправильно!
Что именно неправильно?
1) упор на рекурсивный спуск
2) отсутствие рассмотрения современных языковых механизмов (я не уверен, что в этой методичке рассматривается даже описание функций как в паскале)
3) отсутствие рассмотрения алгоритмов в этой предметной области (сборки мусора, вывода типов, логического вывода, и других)
а каждый такой алгоритм запрограммировать - тоже минимум по курсовой надо...

0

4

Значит что? Значит курс построен неправильно!

Есть определенное количество часов, которые должен получить студент по спецпредметам.

отсутствие рассмотрения современных языковых механизмов

Просто это не наш уровень. Задача ведь приготовить специалиста, годного к работе в российских условиях. Если он будет уметь это то в рамках курса придется выкинуть что-то иное. А как часто программистам требуется писать ЯП с классами для бизнеса? Для науки? И потом на первом-втором курсе как пользователи (то есть как программисты) это проходят. Но вот с точки зрения реализации на ассемблере - человек как минимум должен хорошо рубить ассемблер, то есть это тоже минимум к диплому тянет.
Потом существует еще проблема самих кадров. Вот например: https://ru.wikibooks.org/wiki/Языки_про … ия_в_школе Бейсик до сих пор есть школьному курсе и эта программа утверждается не хухры-мухры, а в Москве в Минобре. Пока там не вымрет поколение мастодонтов пришедших в 90-е школа будет мучиться консервативным бейсиком. Справедливости ради стоит отметить, что растет количество Питона в школе (из-за линукса в основном - была идея в свое время экономить на винде). Есть Бейсик и в различных колледжах (среднее образование) в основном в непрофильных специальностях - его дают поварам, электрикам и т.д. С другой стороны в СПО вариативная часть более выражена (то есть там у колледжа/ПТУ есть возможность править программу под себя в некоторых пределах). К чему я это? К тому, что нужно учить обучателей и тех кто придумывает правила для обучателей сначала, а потом уже насиловать студентов.

3) отсутствие рассмотрения алгоритмов в этой предметной области (сборки мусора, вывода типов, логического вывода, и других)

Сборка мусора это тема диплома, а не курсовой. Представляете объем знаний? Вывод типов это вообще полуисследовательская работа (то есть работа не ниже аспиранта). Это уже близко к международному уровню (исторически впервые реализовано во Франции, то есть даже не в США - как в двигателе прогресса и не в Швейцарии, как академической школе). Не забываем что бакалавры не могут вести самостоятельное изучение в курсовой работе. Они обязаны опираться на преподанный курс. Магистр наоборот в диссертации предварительно должен опереться на объем литературы (1 глава), провести исследование (2 глава), подтвердить результаты и представить выводы, представляющие новизну и актуальность (3 глава).

Отредактировано utkin (2017-08-23 13:09:49)

0

5

Значит что? Значит нужно ввести несколько специальностей!
Чтобы на одной учились разрабатывать одно, на другой другое, и во время укладывались.
Например, для написания парсера знание ассемблера не нужно (ЯВУ достаточно), для вывода типов думаю что тоже. А кодогенерацию и сборку мусора - ещё две специальности. Стандартную библиотеку разрабатывать (для взаимодействия с ОС), саму ОС - виртуализация устройств, многопоточность. И всё будет в порядке с количеством часов.

0

6

Значит нужно ввести несколько специальностей!

Нужно кому? Такие разработчики штучный товар, дешевле встроить какой-нибудь скрипт на lua, javascript или лисп и не парится. Какой паровоз без таких деталей? Яндекс? Майл? 1с? Не смешите мои крылья. Они и так отлично пилят бабло на имеющихся технологиях.

Например, для написания парсера знание ассемблера не нужно (ЯВУ достаточно), для вывода типов думаю что тоже.

Написать компилятор с выводом типов это сложная задача. Ну если только Вы каждый день это делаете, то проблем нет. Вопрос-то опять в целепологании. Кому это нужно, чтобы на небе зажглась новая звезда? Эльбрусам? Ну это же смешно, им и линукса на десятилетия вперед хватит. Потом вопрос нужды плавно перетекает в философию - как много в стране проблем, которые нельзя решить без вывода типов? На космодроме Восточный? На Керченском мосту? На олимпиаде в Сочи? Где поле битвы? У буржуев рынок просто гораздо шире - там ниш больше, поэтому и возникают все эти ml и ocaml. В чем Ваша проблема? Вы рассматриваете знания просто сами по себе. Когда Вы одиночка проблем нет. Но государство не может выпускать таких специалистов, которые будут не нужны, просто потому что оно и так выпускает специалистов которые не нужны (просто в одной стране больше, в другой меньше). Ему нужна нехватка специалистов, чтобы это делать. Вот когда я поступал не хватало нормальных бухгалтеров, прошло 4 года и когда я выпустился, то стал не нужен, потому что их стало пруд пруди. Потом пришла очередь юристов, потом не хватало менеджеров. Сейчас не хватает узких рабочих специальностей (типа геодезиста какого-нибудь или программиста конкретной марки станка ЧПУ). Стране нужны программисты? Нет, не нужны. ПО можно купить-украсть, а остальное допилят свои специалисты. Раз техника транзисторная, будет клепать ДРАКОНовцев, нормальные специалисты выучатся сами или их заточит работодатель (как это делает например Яндекс). Отсюда низкая производительность и все проблемы и перекосы в которых мы живем каждый день.
Чтобы пилить специалистов самим - нужно создать школу - набор инструментов, учебников и литературы. Это минимум 5 лет и куча бабок. Так получите систему и фундаменталку. Затем нужно обязательное прикладное применение - доказать, что предприятиям это надо. Что это эффективно, что это приносит деньги.
Ну а штучный товар - киньте клич фрилансерам, они Вам настрогают :). Отдельные заплатки поставить не проблема, узкие специалисты не нужны, потому что нет такого потока проблем, где требуется вывод типов.

И всё будет в порядке с количеством часов.

Общую мысль Вы уловили верно - на текущий момент это работа более чем одного человека из-за имеющихся современных представлений. Потому что тот же yacc когда вышла первая версия? В 1970-м году. Для ИТ 40 лет это огромный срок, тут несколько эпох прошло. И сколько много новых инструментов вышло, годных для подобной работы? Чуть больше чем ничего, если не считать всяких вариаций типа бизона. То есть эффективных инструментов в этой области нет, поэтому человек вынужден по старинке пилить все ручками. Где автоматические конструкторы компиляторов с выводом типов? Нет их, нет потока научных работ в этом направлении.

Отредактировано utkin (2017-08-24 08:50:52)

0

7

utkin написал(а):

из-за имеющихся современных представлений

мысль не улавливаю.

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

Yacc-подобные инструменты развиваются, Antlr, Marpa, например.
Только они неправильно развиваются. Потому что теоретическая часть не проработана в достаточной мере (это видно, если прочитать ту работу про Earley для EBNF - недостаточно подробное описание, автоматы не расписаны все - только один для примера, не решены некоторые вопросы, нет объяснения как строить SPPF и т.д.).

А вывод типов есть у Буддена. Он же справился? Потом ему конкуренцию Павиа составит и всё у нас будет хорошо.

utkin написал(а):

нужно создать школу - набор ... учебников и литературы. Это минимум 5 лет и куча бабок.

Без плана денег не дадут, правильно?

0

8

мысль не улавливаю.

Средств автоматизации нет. Компилятор (нормальный, а не учебный) все равно надо пилить вручную. Это требует туеву хучу специальных знаний, которых потом очень трудно применить где-то еще. Поэтому специалисты такого рода редкость. С другой стороны, имей такие инструменты (то есть не застывшие представления 70-80-х на процесс компиляции) компиляторы не клепал бы только самый ленивый и мы имели бы буйство красок - хочешь сборка мусора, хочешь вывод типов, хочешь параллельные потоки автоматом. Пока это доступно только очень ограниченной группе - типа Хаскела (у которого например высокий порог вхождения и отсутствие внятных учебников на русском).

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

И нафига здесь нужна сборка мусора?

Yacc-подобные инструменты развиваются, Antlr, Marpa, например.

Да? Это детские игрушки в песочнице. Где генераторы компиляторов по заданному описанию? Нет их.

Только они неправильно развиваются.

Они развиваются туда где есть спрос. Термин "неправильно" здесь некорректен.

Потому что теоретическая часть не проработана в достаточной мере

Об этом я и говорю - нужны фундаментальные исследования, которых с гулькин нос в этом направлении. Все на матане 30-60-х годов. Экспериментальных работ не слышно. Они может и есть, но наверно не у нас.

А вывод типов есть у Буддена. Он же справился? Потом ему конкуренцию Павиа составит и всё у нас будет хорошо.

Будден специалист и одиночка. Он не система. Также как и Вы и я не система. Нам нужны статьи определенной тематики, я об этом говорил, когда обсуждался манифест. У нас нет культурного влияния на процесс.

Без плана денег не дадут, правильно?

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

Отредактировано utkin (2017-08-24 12:22:07)

0

9

utkin написал(а):

Деньги сейчас не дают и по плану. Деньги дают под откат.

И что мешает заложить откат в план? Могу методику рассказать. Нужно ввести коэффициенты трудоёмкости, откат заложить в них и сказать, что это рыночная экспертная оценка.

0

10

И что мешает заложить откат в план? Могу методику рассказать. Нужно ввести коэффициенты трудоёмкости, откат заложить в них и сказать, что это рыночная экспертная оценка.

Да, но это ведь не цель. Цель сделать разумное, доброе, вечное.

это рыночная экспертная оценка.

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

Отредактировано utkin (2017-08-24 12:25:58)

0

11

"нет лучшего способа добиться бюджетных субсидий, чем объявить о каком-нибудь импортозамещающем бизнес-проекте"
https://lenta.ru/articles/2015/08/14/vicerally_9/

"к 2020 г. в ИТ-индустрии будет критическая нехватка молодых специалистов"
http://www.comnews.ru/content/102263/20 … ecialistov

0

12

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

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

к 2020 г. в ИТ-индустрии будет критическая нехватка молодых специалистов

В РФ специалистов острая нехватка в основном из-за действий монополистов и государства. Основная проблема в том, что специалист стоит дорого. Хороший специалист стоит дороже менеджер-сити или губернатора, а этого они допустить никак не могут. Поэтому реальных прав рабочих никто не защищает. В тоже время специалисты высокого уровня могут не рискуя вполне мигрировать в другую страну и жить без приключений (типа неадекватного вышестоящего руководителя). Почитайте что сейчас происходит с пилотами - им искусственно установили низкую стоимость зп (ниже чем в других странах, в том же Китае платят дороже + уважение как к специалистам). Профсоюзы давно уже заняты сбором денег на дни рождения и корпоративы. Соответственно люди в массовом порядке пакуют вещички и валят (международные рейсы предполагают обязательное знание пилотами английского языка). Чтобы этого не происходило сейчас пытаются лишить лицензий несколько тысяч пилотов. Аэрофлот + государство это наше все. С одной стороны понятно, что в них деньги вложили (обучение там тоже не копеечное, просто если даже прикинуть практические учебные вылеты - сколько топливо например только стоит), с другой стороны работать за половину стоимости это явное не уважение к людям как к специалистам (у которых требования отличаются от требований разнорабочего). К 2020 году не то что пилотов хватать не будет, хорошо если самолеты на голову падать не начнут. Тоже самое касается всяческих Роскосмосов и Газпромов. Старые опытный конструктор это хорошо, но вот проектирование на чертежных досках это плохо. Отсюда драма, грусть, печаль и беда.

Отредактировано utkin (2017-08-24 13:34:29)

0

13

utkin написал(а):

а не в Кремль.

Есть сайт администрации президента, туда можно написать. Зачем обязательно к местному чиновнику?
http://online.government.ru/letters/

0

14

Зачем обязательно к местному чиновнику?

Затем, что если Вы не укажете достаточных данных, Вас рассматривать не будут. А если укажите переадресуют на соответствующую территорию. И это я считаю правильно. Если президент будет каждый вопрос сам рассматривать (ну, кроме пиара на прямой линии, где традиционно защищают обиженных и показательно разоблачают особенно оборзевших), то у него от напряжения и количества проблем последние волосы выпадут причем во всех местах и окончательно. Поэтому готовьтесь к проекту добавить березку, балалайку и шапку-ушанку, потому что иначе будет не тренд, а чиновникам проект пох (им и на патриотизм давно пох), им чтобы тренд звенел надо. И еще, по своему опыту знаю - когда с Москвы спускают (любой вопрос) - обязательно надо отчитываться, да еще в срок. Короче Вы изначально заставите шевелиться чиновника чуть больше чем ему хочется и тем самым на стартовых позициях у Вас будет немного минус, чем если напрямую подойдете к нужному человеку. Нарушение субординации нигде не приветствуется.

Отредактировано utkin (2017-08-24 15:01:51)

0

15

Лис написал(а):

Yacc-подобные инструменты развиваются, Antlr, Marpa, например.
Только они неправильно развиваются. Потому что теоретическая часть не проработана в достаточной мере

Потому что их теоретическая часть - это надуманные проблемы неэффективного промежуточного представления.

utkin написал(а):

Какой паровоз без таких деталей? Яндекс? Майл? 1с?

По факту же 1с с самого начала поддерживал кириллицу. Сейчас, конечно, это уже не существенно, но в своё время могло играть роль.
Яндекс вон объявил об алгоритме поиска со смысловым разбором языка. Т.е. уже явно заявили о подстраивании под язык потребителей, а не вычислительные архитектуры.
Потому что разработчики процессоров им платить не будут.

utkin написал(а):

Будден специалист и одиночка. Он не система. Также как и Вы и я не система.

Но специалист по Лиспу, а не русскому языку. Поэтому его язык будет интересен в первую очередь другим спецам по Лиспу, среди которых очень мало русскоговорящих.
А его заявления о серьёзных преимуществах ЯраО-врага для последних притянуты за уши.

utkin написал(а):

Хороший специалист стоит дороже менеджер-сити или губернатора, а этого они допустить никак не могут.

Только одна широко доступная качественная лекция будет стоить несколько млн. р. - не меньше, чем концерт какого-нибудь популярного певца/артиста.

Отредактировано MihalNik (2017-08-24 15:36:28)

0

16

MihalNik написал(а):
Лис написал(а):

Yacc-подобные инструменты развиваются, Antlr, Marpa, например. Только они неправильно развиваются. Потому что теоретическая часть не проработана в достаточной мере

надуманные проблемы неэффективного промежуточного представления.

Поясни, пожалуйста, эту мысль более развёрнуто (это я вежливо выражаюсь).

Отредактировано Лис (2017-08-24 16:04:37)

0

17

Преобразования над текстом неэффективны. И человек и машина работают с сетями данных (графами).
Если естественный текст ещё позволяет более менее удобно отображать графы для людей, то ограниченная грамматика (в теориях Хомского) - нет,
и производные от неё методы оптимизации (лекс., синтакс., и семант. разбора и кодогенерации) направлены на постоянное повторное проделывание чуть менее чем полностью одного и того же.
Изменил строчку - полная перезапись исходного файла от точки правки и пересборка всей программы. Конечно, тут любители "пакетирования" могут заявить о раздельной подготовке модулей, но матан сразу говорит о потере в той самой пресловутой оптимизации из-за преждевременного отсечения ряда неизвестных данных.
Поэтому какая-нибудь IDEA жутко тормозит из-за синхронизации с текстом, а в веб разрабатываются постоянные представления исходного кода сразу в виде деревьев, потому что в машину проще загрузить кусок памяти, непосредственно готовый к употреблению.

Отредактировано MihalNik (2017-08-24 18:54:34)

0

18

Тебе над прочитать:
1) про рослин и его красно-зелёные деревья
2) инкрементальный алгоритм Earley
3) ну и там разное - http://www.aclweb.org/anthology/E89-1033.pdf
Если реализовать инкрементальный Эрли для EBNF,
то можно будет сделать прямое преобразование изменения дерева в соответствующее изменение текста
(то, что сейчас для XML сделано - недоработано)

То есть не за горами тот день (и десяти лет не пройдёт), как У НИХ всё будет.

Отредактировано Лис (2017-08-24 19:04:11)

0

19

то можно будет сделать прямое преобразование изменения дерева в соответствующее изменение текста

Можно будет. Но не будет нужно.

0

20

Ну как же не будет, когда нужно уже сейчас?

Будет инкрементальная (и поэтому более эффективная) трансформация в обе стороны.

0

21

Лис написал(а):

трансформация в обе стороны.

JS давно это умеет над html.

Отредактировано MihalNik (2017-08-24 20:28:08)

0

22

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

0

23

Лис написал(а):

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

Текст для этого вообще не подходит, Карл! Нельзя вставить произвольный кусок данных в линейный массив без смещения.
А значит, там где-то обманчивая игра слов или с понятием текста или с понятием производительности.
В принципе, текст - понятие скорее графическое, а не структура в памяти, поэтому всё очень неоднозначно.

Отредактировано MihalNik (2017-08-24 20:39:37)

0

24

MihalNik написал(а):

без смещения

А зачем тебе без смещения, со смещением тоже неплохо, если инкрементально

MihalNik написал(а):

или с понятием производительности

Определённо будет быстрее чем сейчас. Кроме того, можно, наверное, как-нибудь распараллеливать.

Отредактировано Лис (2017-08-24 20:41:34)

0

25

Лис написал(а):

А зачем тебе без смещения, со смещением тоже неплохо, если инкрементально

Что Вы под этим понимаете в применении к тексту? Я поправил в середине букву. Что будет инкрементально лучше в переходе к его новому состоянию?

Отредактировано MihalNik (2017-08-24 20:45:17)

0

26

Я тоже чего-то не сильно понял вопрос. Давайте на конкретном примере. Вот есть какой фрагмент текста, типа

Код:
if (x=0) x=1;

Программист исправил на

Код:
if (x=0) {

И все там блок, там надо полдерева пересобирать.

0

27

utkin написал(а):

там надо полдерева пересобирать.

Я уже писал на эту тему - справа-налево

CYK алгоритм может начинать с любой позиции, в любом направлении,
при этом сдвинувшееся после скобки остаётся валидным (не требует повторного анализа)

можно с помощью CYK (он же CKY) ещё обрабатывать текст параллельно.

Отредактировано Лис (2017-08-25 08:34:18)

0

28

Я уже писал на эту тему - справа-налево

Эта идея будет работать, если текст не содержит ошибок. То есть если программист допустил корректное исправление. А если нет? Тогда будет переразбор в обе стороны, то есть затрачено в два раза больше времени напрасно.

CYK алгоритм может начинать с любой позиции, в любом направлении,
при этом сдвинувшееся после скобки остаётся валидным (не требует повторного анализа)

Два цикла верхнего уровня, один цикл с тремя вложенными это сильно. Говорить о эффективности методики без доказательств производительности ну не знаю.

Отредактировано utkin (2017-08-25 09:21:11)

0

29

будет переразбор в обе стороны, то есть затрачено в два раза больше времени напрасно

да почему же? Переразбор будет идти до первой ошибки, то есть слева на один символ вправо и справа на один символ влево. И всё, ничего больше (если символ ошибочный, то оба разбора на нём остановятся). А если не ошибочный, то работа не будет дублироваться, потому что кеш.

0

30

Переразбор будет идти до первой ошибки

Да, я не учел подсчет обратных скобок с конца, а не с начала. Тут есть над чем подумать. Идея с одновременным обратным разбором может стать интересным вариантом. Однако производительность все равно мерить надо. Как уже говорилось выше - вставка большого фрагмента текста (например перенос и/или объединение функций). Надо размышлять.

Отредактировано utkin (2017-08-25 09:36:34)

0


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » планирование » Сколько стоит разработка компилятора