Насколько сложно написать фронтенд компилятора C++?
От: Eternity Россия  
Дата: 10.09.13 06:27
Оценка:
Насколько сложно написать фронтенд компилятора C++, строящий объектную модель кода для анализа и манипуляций а ля clang-LLVM (в целях развлечения и самообучения)?

Например, в человекогодах?
Re: Насколько сложно написать фронтенд компилятора C++?
От: Zhendos  
Дата: 10.09.13 07:15
Оценка:
Здравствуйте, Eternity, Вы писали:

E>Насколько сложно написать фронтенд компилятора C++, строящий объектную модель кода для анализа и манипуляций а ля clang-LLVM (в целях развлечения и самообучения)?


E>Например, в человекогодах?


Поищите в инете о том как наши C++ компилятор писали.
Насколько я помню там речь шла о нескольких годах (2-4),
и команд 2-3 человек разработчиков и X человек тестеров (они писали
тестовый framework и заполняли его тестами из стандарта).
Re[2]: Насколько сложно написать фронтенд компилятора C++?
От: Chorkov Россия  
Дата: 10.09.13 07:24
Оценка:
Здравствуйте, Zhendos, Вы писали:

Z>Поищите в инете о том как наши C++ компилятор писали.

Z>Насколько я помню там речь шла о нескольких годах (2-4),
Z>и команд 2-3 человек разработчиков и X человек тестеров (они писали
Z>тестовый framework и заполняли его тестами из стандарта).

Число разработчиков тоже, было 3-4.
Причем речь шла о предыдущем стандарте. (Его объем последнего вырос раза в 2-3.)
Re: Насколько сложно написать фронтенд компилятора C++?
От: A13x США  
Дата: 10.09.13 07:46
Оценка:
Здравствуйте, Eternity, Вы писали:

E>Насколько сложно написать фронтенд компилятора C++, строящий объектную модель кода для анализа и манипуляций а ля clang-LLVM (в целях развлечения и самообучения)?


E>Например, в человекогодах?


я думаю это десятки человеколет.
если хочется писать фронтенд для самообучения и развлечения лучше взять в качестве целевого языка что-то попроще — java или С.
Re[2]: Насколько сложно написать фронтенд компилятора C++?
От: Zhendos  
Дата: 10.09.13 08:03
Оценка:
Здравствуйте, A13x, Вы писали:

A>я думаю это десятки человеколет.


Не согласен, если скажем говорим о С++98, то
во-первых, ИМХО, большинство кода, существующих сейчас монстров-компиляторов составляют
не лексеры + парсеры, а оптимизаторы, ТС же хочет просто front-end.

во-вторых, основные алгоритмические проблемы, связанные с тем, что C++ имеет контекстно зависимую
грамматику, решены

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

в-четвертых, libstdc++, тоже есть готовые opensource.

Т.е. вполне посильная на мой взгляд задача, на пару-тройку лет для одного человека,
если до начала работы разобраться как подобная работа уже была проделана.
Re[3]: Насколько сложно написать фронтенд компилятора C++?
От: Vzhyk  
Дата: 10.09.13 08:22
Оценка:
10.09.2013 11:03, Zhendos пишет:

> A>я думаю это десятки человеколет.


> Т.е. вполне посильная на мой взгляд задача, на пару-тройку лет для

> одного человека,
> если до начала работы разобраться как подобная работа уже была проделана.
Еще пару-тройку лет. Итого уже 6 человеко-лет. И это супероптимистичная
оценка.
Posted via RSDN NNTP Server 2.1 beta
http://rsdn.org/File/27746/bel.gif
Re[4]: Насколько сложно написать фронтенд компилятора C++?
От: Zhendos  
Дата: 10.09.13 08:48
Оценка: :)
Здравствуйте, Vzhyk, Вы писали:

V>10.09.2013 11:03, Zhendos пишет:


>> A>я думаю это десятки человеколет.


>> Т.е. вполне посильная на мой взгляд задача, на пару-тройку лет для

>> одного человека,
>> если до начала работы разобраться как подобная работа уже была проделана.
V>Еще пару-тройку лет.

Но это все-таки не великая научная проблема,
как-то вы очень пессиместично сроки оцениваете.

Начать можно с чего-нибудь типо moc из состава Qt.

Разобраться с ней — 1 неделя,
потом научиться строить AST дерево — 1-2 недели,
и генерировать из него (дерева) код на скажем C — еще неделя.

И того, через месяц можно научиться компилировать программы
уровня расчета последовательности Фибоначи.

После этого, подогреваемый энтузиазмом, что вот, почти все сделал,
заняться теорией: месяц на перечитывании книги красного дракона,
потому обновив базовые знания, можно уже поискать нужные теоретические работы,
и инструменты, ИМХО и для C++ сейчас найдется автоматический построитель
парсера по грамматике. Я бы оценил это в два месяца.
Потом с готовыми инструментами, можно за еще месяц научиться генерировать,
уже опробованное в moc AST дерево и вуаля, мы уже
можем считать на Фибоначи в compile-time на шаблонах.

Далее уже можно разбираться с clang/gcc, и покрывать свой код все большим
количеством тестов.

Вот на доводку и уйдет большее количество времени.
Но проекту основанному на энтузиазме, ИМХО это и не нужно.
Отладит свой компилятор до компиляции им какой-нибудь сложной программы,
и хватит на этом, не продавать же он его будет.

Таким образом ИМХО и за один год вполне управиться.
Re[5]: Насколько сложно написать фронтенд компилятора C++?
От: Vzhyk  
Дата: 10.09.13 09:11
Оценка:
Здравствуйте, Zhendos, Вы писали:

Z>Но это все-таки не великая научная проблема,

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

Ниже ты приводишь тоже сильно оптимистичные оценки, но не вижу смысла их обсуждать.
Z>Таким образом ИМХО и за один год вполне управиться.
http://rsdn.org/File/27746/bel.gif
Re: Насколько сложно написать фронтенд компилятора C++?
От: AleksandrN Россия  
Дата: 10.09.13 09:14
Оценка: 2 (2) +1
Здравствуйте, Eternity, Вы писали:

E>(в целях развлечения и самообучения)?


А может в этих целях язык попроще взять?


Статья Евгения Зуева "Редкая профессия" про то, как для иностранных заказчиков писался компилятор C++.
http://www.interstron.ru/upload/images/pubs/Redkaya_professiya.pdf
Re[6]: Насколько сложно написать фронтенд компилятора C++?
От: Zhendos  
Дата: 10.09.13 09:46
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>Здравствуйте, Zhendos, Вы писали:


Z>>Но это все-таки не великая научная проблема,

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

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

И вы, ИМХО, упускаете тот факт, что это проект энтузиаста и основанный на энтузиазме.
Да, будь это реальный коммерческий проект, чтобы за него взяться надо быть камикадзе,
если до этого вы разработкой компиляторов не занимались.
Но это здесь нет строго заданного критерия успеха:
"сложно по имени найти тип, давайте забьем на namespace",
"сложно написать препроцессор, давайте возьмем готовый",
трудно придумать типы, структуры, функции для AST, давайте возьмем готовый.

и т.д. и т.п. Главное получить фан и написать что-то условно работающие.

P.S.

C++ парсер для gcc состоит из 157936 строчек кода.
Re: Насколько сложно написать фронтенд компилятора C++?
От: Шахтер Интернет  
Дата: 10.09.13 10:33
Оценка: 1 (1) +1 -1
Здравствуйте, Eternity, Вы писали:

E>Насколько сложно написать фронтенд компилятора C++, строящий объектную модель кода для анализа и манипуляций а ля clang-LLVM (в целях развлечения и самообучения)?


E>Например, в человекогодах?


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

Если же мозги наличиствуют, то достаточно небольшой рабочей группы из нескольких человек и 2-3 года работы. Плюс желательно иметь группу тестеров, здесь особые способности не нужны, нужна въедливость и добросовестность.
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[2]: Насколько сложно написать фронтенд компилятора C++?
От: Abyx Россия  
Дата: 10.09.13 15:08
Оценка:
Здравствуйте, Шахтер, Вы писали:

Ш>Вопрос некорректный. Проблема не в человеко-годах, а в качестве людей. Недостаточно способные люди с этой задачей просто не справятся, при любом количестве человеко-лет.

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

это не так. нет там никаких неограниченных ресурсов и команд по 100 индусов.
сейчас над VC++ работает что-то порядка полутора человек.
In Zen We Trust
Re: Насколько сложно написать фронтенд компилятора C++?
От: __kot2  
Дата: 10.09.13 18:28
Оценка:
Здравствуйте, Eternity, Вы писали:
E>Насколько сложно написать фронтенд компилятора C++, строящий объектную модель кода для анализа и манипуляций а ля clang-LLVM (в целях развлечения и самообучения)?
E>Например, в человекогодах?
мне называлась как-то цифра шарящим человеком 10 или 15 человеколет
Re[3]: Насколько сложно написать фронтенд компилятора C++?
От: RonWilson Россия  
Дата: 10.09.13 18:45
Оценка:
Здравствуйте, Abyx, Вы писали:

A>сейчас над VC++ работает что-то порядка полутора человек.


откуда такая информация?
Re[4]: Насколько сложно написать фронтенд компилятора C++?
От: MT-Wizard Украина  
Дата: 10.09.13 19:14
Оценка:
Здравствуйте, RonWilson, Вы писали:

RW>Здравствуйте, Abyx, Вы писали:


A>>сейчас над VC++ работает что-то порядка полутора человек.


RW>откуда такая информация?


Ну я там работаю, правда в бекэнде. На фронтенде — 2 человека, причём второго взяли с год назад
А ти, москалику, вже приїхав (с)
Re[5]: Насколько сложно написать фронтенд компилятора C++?
От: RonWilson Россия  
Дата: 10.09.13 19:41
Оценка:
Здравствуйте, MT-Wizard, Вы писали:

MW>Ну я там работаю, правда в бекэнде. На фронтенде — 2 человека, причём второго взяли с год назад


расскажите пожалуйста, если не сложно, как у вас там происходит разработка? правда ли что для excel используется не тот же vc++ что и шипится или сейчас уже это не так?
Re[6]: Насколько сложно написать фронтенд компилятора C++?
От: MT-Wizard Украина  
Дата: 10.09.13 19:45
Оценка:
Здравствуйте, RonWilson, Вы писали:

RW>Здравствуйте, MT-Wizard, Вы писали:


MW>>Ну я там работаю, правда в бекэнде. На фронтенде — 2 человека, причём второго взяли с год назад


RW>расскажите пожалуйста, если не сложно, как у вас там происходит разработка? правда ли что для excel используется не тот же vc++ что и шипится или сейчас уже это не так?


Я тут не настолько давно чтобы понимать — что можно рассказывать а что нет, так что пока промолчу
Но соответствие стандарту — это точно не главный критерий и совершенно не самая важная цель.
А ти, москалику, вже приїхав (с)
Re[7]: Насколько сложно написать фронтенд компилятора C++?
От: RonWilson Россия  
Дата: 10.09.13 19:47
Оценка:
Здравствуйте, MT-Wizard, Вы писали:
RW>>расскажите пожалуйста, если не сложно, как у вас там происходит разработка? правда ли что для excel используется не тот же vc++ что и шипится или сейчас уже это не так?

MW>Я тут не настолько давно чтобы понимать — что можно рассказывать а что нет, так что пока промолчу

эхх(
MW>Но соответствие стандарту — это точно не главный критерий и совершенно не самая важная цель.
а что же тогда? или тоже секрет
Re[7]: Насколько сложно написать фронтенд компилятора C++?
От: flаt  
Дата: 11.09.13 06:06
Оценка:
Здравствуйте, MT-Wizard, Вы писали:

MW>Я тут не настолько давно чтобы понимать — что можно рассказывать а что нет, так что пока промолчу

MW>Но соответствие стандарту — это точно не главный критерий и совершенно не самая важная цель.

Тоже было бы интересно, чем сейчас занимаются по VC++. Видимо, WinRT и доводка С++11, но были бы интересны подробности
Re[2]: Насколько сложно написать фронтенд компилятора C++?
От: niXman Ниоткуда https://github.com/niXman
Дата: 11.09.13 07:17
Оценка:
Здравствуйте, Zhendos, Вы писали:

Z>Поищите в инете о том как наши C++ компилятор писали.

"наши" — это кто?
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.