Насколько сложно написать фронтенд компилятора 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
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>Таким образом ИМХО и за один год вполне управиться.
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 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[3]: Насколько сложно написать фронтенд компилятора C++?
От: Vzhyk  
Дата: 11.09.13 10:32
Оценка:
10.09.2013 18:08, Abyx пишет:

> это не так. нет там никаких неограниченных ресурсов и команд по 100 индусов.

> сейчас над VC++ работает что-то порядка полутора человек.
Офигеть!!! Откуда инфа.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Насколько сложно написать фронтенд компилятора C++?
От: Lorenzo_LAMAS  
Дата: 11.09.13 10:41
Оценка: 14 (1) +1
Здравствуйте, niXman, Вы писали:

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


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

X>"наши" — это кто?

Некто Зуев (преподает в МГУ вроде как) и еще кто-то — не помню второй фамилии.
Одно время их компилятор даже был доступен в онлайн.

http://www.interstron.ru/upload/images/pubs/Redkaya_professiya.pdf

Статья очень интересная. В этом форуме (С++, рсдн) одно время был кто-то, у них работавший (dupamid? == не помню ник уже )
Of course, the code must be complete enough to compile and link.
Re[3]: Насколько сложно написать фронтенд компилятора C++?
От: Шахтер Интернет  
Дата: 11.09.13 11:01
Оценка:
Здравствуйте, Abyx, Вы писали:

A>Здравствуйте, Шахтер, Вы писали:


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

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

A>это не так. нет там никаких неограниченных ресурсов и команд по 100 индусов.

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

И эти полтора человека всё время существования VC его делали?
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[7]: Насколько сложно написать фронтенд компилятора C++?
От: Шахтер Интернет  
Дата: 11.09.13 11:02
Оценка:
Здравствуйте, MT-Wizard, Вы писали:

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


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


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


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


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

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

А это другая проблема Майкрософта -- феерическая некомпетентность руководства.
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[4]: Насколько сложно написать фронтенд компилятора C++?
От: night beast СССР  
Дата: 15.09.13 14:21
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:

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

X>>"наши" — это кто?

L_L>Некто Зуев (преподает в МГУ вроде как) и еще кто-то — не помню второй фамилии.


не Кротов Александр?
Re: Насколько сложно написать фронтенд компилятора C++?
От: PM  
Дата: 15.09.13 18:22
Оценка: 14 (2)
Здравствуйте, Eternity, Вы писали:

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


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


В начале года стартовал проект C++ Grandmaster Certification (http://www.cppgm.org/) целью которого как раз было создание фронтенда компилятора C++ в учебных целях.

Недавно на reddit поднимали вопрос, добился ли кто-нибудь успехов в нем:
Anyone taking the C++ Grandmaster Certification?
Re[2]: Насколько сложно написать фронтенд компилятора C++?
От: Eternity Россия  
Дата: 15.09.13 19:35
Оценка:
Здравствуйте, PM, Вы писали:

PM>В начале года стартовал проект C++ Grandmaster Certification (http://www.cppgm.org/) целью которого как раз было создание фронтенда компилятора C++ в учебных целях.


PM>Недавно на reddit поднимали вопрос, добился ли кто-нибудь успехов в нем:

PM>Anyone taking the C++ Grandmaster Certification?

Серьезный курс!
Re[2]: Насколько сложно написать фронтенд компилятора C++?
От: Eternity Россия  
Дата: 15.09.13 19:37
Оценка:
Здравствуйте, Zhendos, Вы писали:

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

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

Зуева читал, очень интересно, но не знаю, насколько релевантно в современных условиях.
Re[2]: Насколько сложно написать фронтенд компилятора C++?
От: Eternity Россия  
Дата: 15.09.13 19:42
Оценка:
Здравствуйте, PM, Вы писали:

PM>В начале года стартовал проект C++ Grandmaster Certification (http://www.cppgm.org/) целью которого как раз было создание фронтенда компилятора C++ в учебных целях.


Следующий стартует в 2014. Как раз есть время подготовиться.

You will also earn the title Certified C++ Grandmaster [CPPGM].


Re[5]: Насколько сложно написать фронтенд компилятора C++?
От: Lorenzo_LAMAS  
Дата: 16.09.13 09:24
Оценка:
Здравствуйте, night beast, Вы писали:

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


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

X>>>"наши" — это кто?

L_L>>Некто Зуев (преподает в МГУ вроде как) и еще кто-то — не помню второй фамилии.


NB>не Кротов Александр?


Да, вроде он. Впрочем, в статье должно быть имя (перечитывать уже лень )
Of course, the code must be complete enough to compile and link.
Re[3]: Насколько сложно написать фронтенд компилятора C++?
От: Lorenzo_LAMAS  
Дата: 16.09.13 09:25
Оценка:
Здравствуйте, Eternity, Вы писали:

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


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

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

E>Зуева читал, очень интересно, но не знаю, насколько релевантно в современных условиях.


да, т.к. С++ стал еще сложнее ...
Of course, the code must be complete enough to compile and link.
Re[2]: Насколько сложно написать фронтенд компилятора C++?
От: Lorenzo_LAMAS  
Дата: 16.09.13 10:30
Оценка:
PM>Недавно на reddit поднимали вопрос, добился ли кто-нибудь успехов в нем:
PM>Anyone taking the C++ Grandmaster Certification?

интересно было бы узнать, насколько это серьезно (из комментариев не очень понятно, они там рассказывают, сколько заданий сделали, но не факт что это все как-то сравнимо с реальным компилятором,
хоть там каждое задание и соответствует каким-то фазам трансляции).
Of course, the code must be complete enough to compile and link.
Re[3]: Насколько сложно написать фронтенд компилятора C++?
От: PM  
Дата: 16.09.13 19:37
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:

PM>>Недавно на reddit поднимали вопрос, добился ли кто-нибудь успехов в нем:

PM>>Anyone taking the C++ Grandmaster Certification?

L_L>интересно было бы узнать, насколько это серьезно (из комментариев не очень понятно, они там рассказывают, сколько заданий сделали, но не факт что это все как-то сравнимо с реальным компилятором,

L_L>хоть там каждое задание и соответствует каким-то фазам трансляции).

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

Первое задание было доступно для всех после регистрации. Требовалось преобразовать исходный текст в поток лексем. В задание был включен набор тестовых данных и ожидаемый выход. После успешного выполнения задания, давали доступ ко 2-му заданию, емнип, это была фаза препроцессирования.
Re[4]: Насколько сложно написать фронтенд компилятора C++?
От: Lorenzo_LAMAS  
Дата: 16.09.13 20:42
Оценка:
PM>Полагаю, вполне сравнимо с реальным компилятором. По-видимому, задания соответствуют фазам компиляции, описанным в стандарте языка.

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


ну, в общем-то всем, кто действительно хорошо знает С++, должно быть понятно, что это развод. зачем и кому это нужно — это уже другое дело
Of course, the code must be complete enough to compile and link.
Re[5]: Насколько сложно написать фронтенд компилятора C++?
От: PM  
Дата: 17.09.13 04:05
Оценка: +1 -1
Здравствуйте, Lorenzo_LAMAS, Вы писали:

PM>>Полагаю, вполне сравнимо с реальным компилятором. По-видимому, задания соответствуют фазам компиляции, описанным в стандарте языка.


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


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


Я наверно не хорошо знаю C++, потому что не понимаю в чем тут подвох. Кто-то решил создать компилятор из стороннего кода? Тогда, возникают вопросы: кто будет делать оптимизатор, backend, заниматься поддержкой кем-то написанной кучи кода? Имхо, фронтенд в компиляторе это та самая несложная часть, подходящая для понимания языка.

Я посмотрел только на первое задание. Выглядело именно как учебное задание. Думаю, если бы я был студентом и изучал С++, то взялся бы за него.
Re[6]: Насколько сложно написать фронтенд компилятора C++?
От: Lorenzo_LAMAS  
Дата: 17.09.13 06:58
Оценка: +1
PM>Я наверно не хорошо знаю C++, потому что не понимаю в чем тут подвох. Кто-то решил создать компилятор из стороннего кода? Тогда, возникают вопросы: кто будет делать оптимизатор, backend, заниматься поддержкой кем-то написанной кучи кода? Имхо, фронтенд в компиляторе это та самая несложная часть, подходящая для понимания языка.

PM>Я посмотрел только на первое задание. Выглядело именно как учебное задание. Думаю, если бы я был студентом и изучал С++, то взялся бы за него.


ага, и очень скоро понял бы, в чем подвох. фронт-энд С++ — это просто??? ты в курсе, сколько лет
писали тот же ЕДГ (фронт-энд С++) три человека? и это отнюдь не студенты, а лучшие в этой области. как ты думаешь,
почему столько лет проходит между принятием стандарта и реализацией каких-то на первый взгляд тривиальных
фич из каждой новой редакции? почему только сейчас в 2013-ом всего 2 компилятора могут
более-менее похвастаться полной реализацией С++11 (- всякие баги да косяки)?

кстати, какой сторонний код, там вроде как "все своими руками" + стандартная библиотека.

я знаю проект, где чувак работает над интерпретатором С++. само собой, ему и в голову не пришло делать это с нуля, его бы и на работу никто не взял, сочли бы дураком.
но он очень умный. и он использует кланг и ллвм. он работает на этим уже ~4-5 лет и конца краю не видно, пара дедлайнов уже смещалась и "опоздание" где-то года ... 2 уже.
понятно, что это немного не то — т.е. ему не приходится писать парсер/синтаксический анализатор и т.п. он пользуется готовым, но сложностей, связанных именно с С++ — море.

на самом деле, мне кажется, в той же статье Зуева есть неплохой пример: кто-то взял и написал компилятор Ады, т.к. ему не объяснили, что это невозможно
так что — да, наверное, студент возьмется. только пока нет примеров, чтобы кто-то что-то сделал в итоге ну а люди, взявшиеся, наверное, умнеют
Of course, the code must be complete enough to compile and link.
Re: Насколько сложно написать фронтенд компилятора C++?
От: Danchik Украина  
Дата: 19.09.13 13:11
Оценка:
Здравствуйте, Eternity, Вы писали:

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


Может лучше из этого и выгоду/работу получить?
На сколько я знаю сейчас JetBrains работают над парсером плюсов для ReSharper и C++ IDE, и на сколько я видел по презентации, ищут людей готовых над ним работать.
Может резюме вышлите?
Re[2]: Насколько сложно написать фронтенд компилятора C++?
От: Vzhyk  
Дата: 19.09.13 13:15
Оценка:
19.09.2013 16:11, Danchik пишет:

> На сколько я знаю сейчас JetBrains работают над парсером плюсов для

> ReSharper и C++ IDE, и на сколько я видел по презентации, ищут людей
> готовых над ним работать.
После того, как те обучатся или самообучатся. Или ты оттуда и готов
платить за обучение за ваш счет?

> Может резюме вышлите?

А ограничение по возрасту есть? А сколько дадите?
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Насколько сложно написать фронтенд компилятора C++?
От: Danchik Украина  
Дата: 19.09.13 13:40
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>19.09.2013 16:11, Danchik пишет:


>> На сколько я знаю сейчас JetBrains работают над парсером плюсов для

>> ReSharper и C++ IDE, и на сколько я видел по презентации, ищут людей
>> готовых над ним работать.
V>После того, как те обучатся или самообучатся. Или ты оттуда и готов
V>платить за обучение за ваш счет?

Я там не работаю, просто смотрел презентацию, где это и было озвучено (мотоцикл не мой, я только объяву запостил).
На сколько я знаю препроцессор есть, буст разбирают, с темплитами весьма дружат.
http://blogs.jetbrains.com/dotnet/2013/06/resharper-to-support-c/

>> Может резюме вышлите?

V>А ограничение по возрасту есть? А сколько дадите?

Опять же вопрос не ко мне.
Re[4]: Насколько сложно написать фронтенд компилятора C++?
От: Vzhyk  
Дата: 19.09.13 13:51
Оценка:
19.09.2013 16:40, Danchik пишет:

> Я там не работаю, просто смотрел презентацию, где это и было озвучено

> (мотоцикл не мой, я только объяву запостил).
Ну, гугл на одной презентации уже пообещал смерть победить.

> Опять же вопрос не ко мне.

А че посылаешь тогда?
Posted via RSDN NNTP Server 2.1 beta
Re[4]: Насколько сложно написать фронтенд компилятора C++?
От: Vzhyk  
Дата: 19.09.13 13:55
Оценка:
19.09.2013 16:40, Danchik пишет:

> На сколько я знаю препроцессор есть, буст разбирают, с темплитами весьма

> дружат.
Шланг тебе в помошь или даже gcc. Их можно попросить отдать тебе AST, за
пару дней справиться можно (сам делал). Но, есть большие нюансы в том
что и как разбирают.
Posted via RSDN NNTP Server 2.1 beta
Re[5]: Насколько сложно написать фронтенд компилятора C++?
От: Danchik Украина  
Дата: 19.09.13 14:30
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>19.09.2013 16:40, Danchik пишет:


>> Я там не работаю, просто смотрел презентацию, где это и было озвучено

>> (мотоцикл не мой, я только объяву запостил).
V>Ну, гугл на одной презентации уже пообещал смерть победить.

>> Опять же вопрос не ко мне.

V>А че посылаешь тогда?

Я что-то обещал? Дал направление, поделился информацией, вам решать.
Re[5]: Насколько сложно написать фронтенд компилятора C++?
От: Danchik Украина  
Дата: 19.09.13 14:32
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>19.09.2013 16:40, Danchik пишет:


>> На сколько я знаю препроцессор есть, буст разбирают, с темплитами весьма

>> дружат.
V>Шланг тебе в помошь или даже gcc. Их можно попросить отдать тебе AST, за
V>пару дней справиться можно (сам делал). Но, есть большие нюансы в том
V>что и как разбирают.

Им врядли они в помощь, другая специфика, не только AST важно. Но это, все равно, телепатия.
Re: Насколько сложно написать фронтенд компилятора C++?
От: licedey  
Дата: 28.09.13 15:48
Оценка: 16 (3)
Здравствуйте, Eternity, Вы писали:

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


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


Я писал порядка 2х лет, когда учился в универе. Сначала препроцессор. Потом парсер и лексер написались быстро, а потом когда добрался до семантики приходилось вставлять костыли в сам парсер. На шаблонах вообще завис. В целом компилер отрабатывает С++98 без шаблонов и генерит 3-х адресный код.

Хотя дело было 10 лет назад под ANSI C++98, эти знания работают на меня до сих пор.
И как я думаю главная мотивация — была изучить все тонкости языка, быть как эти дядьки на рсдн'e . Еще у меня тогда не было интернета дома. Только стандарт и Visual Studio 6.0. Никто не отвлекал так сказать.
Re[2]: Насколько сложно написать фронтенд компилятора C++?
От: Lorenzo_LAMAS  
Дата: 30.09.13 08:43
Оценка:
L>Хотя дело было 10 лет назад под ANSI C++98, эти знания работают на меня до сих пор.
L>И как я думаю главная мотивация — была изучить все тонкости языка, быть как эти дядьки на рсдн'e . Еще у меня тогда не было интернета дома. Только стандарт и Visual Studio 6.0. Никто не отвлекал так сказать.

Хм, интересно. Он хотя бы сам себя мог компилировать? ("хотя бы" — шутка, конечно). Тест сьюты какие-нибудь компиляторные не пробовал на нем?
Of course, the code must be complete enough to compile and link.
Re[2]: Насколько сложно написать фронтенд компилятора C++?
От: BulatZiganshin  
Дата: 04.10.13 09:03
Оценка:
Здравствуйте, licedey, Вы писали:

L>И как я думаю главная мотивация — была изучить все тонкости языка, быть как эти дядьки на рсдн'e . Еще у меня тогда не было интернета дома. Только стандарт и Visual Studio 6.0. Никто не отвлекал так сказать.


сравнил, блин. при наличии интернета время разработки увеличивается в 8 раз
Люди, я люблю вас! Будьте бдительны!!!
Re[2]: Насколько сложно написать фронтенд компилятора C++?
От: Molchalnik  
Дата: 08.10.13 11:07
Оценка:
Здравствуйте, AleksandrN, Вы писали:

AN>Статья Евгения Зуева "Редкая профессия" про то, как для иностранных заказчиков писался компилятор C++.

AN>http://www.interstron.ru/upload/images/pubs/Redkaya_professiya.pdf

Подскажите, кто разбирается, на какую контору намекал/мог намекать Зуев?
Re: Насколько сложно написать фронтенд компилятора C++?
От: PavelCH  
Дата: 17.10.13 11:49
Оценка: 6 (2)
Здравствуйте, Eternity, Вы писали:

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


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


Да С++ это сложно.

Я вот пытался в образовательных целях написать С. Для начала проанализировал исходники существующих бесплатных компиляторов:

1) http://sun.hasenbraten.de/vbcc/ — cтроит дерево AST оптимизирует. Но тяжел в понимании.
2) http://bellard.org/tcc/ — самый простой, как для меня компилятор, который выдает экзешник, кроссплатформ и делает это за один проход. Некоторые методы (обратного патча) меня, например, поразили. Подсматривал туда всегда, когда что-то не понимал.

В итоге за год (с учетом изучения чужого кода) написал свою версию которая генерит простые экзешники типа hello word и в котором не реализовано половина фич С. Работает без линкера — генерит код с минимальной оптимизацией налету за два прохода (по аналогии с tcc).

Причем:

1) Лексер, тот который текст раскладывает на токены пишется за пару дней.
2) Парсер, тот который из токенов пытается сделать операции делается за месяц.
3) Больше всего времени ушло на генератор кода по операциям и генератор экзешника виндовс.
Нехай щастить
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.