Насколько сложно написать фронтенд компилятора C++, строящий объектную модель кода для анализа и манипуляций а ля clang-LLVM (в целях развлечения и самообучения)?
Здравствуйте, Eternity, Вы писали:
E>Насколько сложно написать фронтенд компилятора C++, строящий объектную модель кода для анализа и манипуляций а ля clang-LLVM (в целях развлечения и самообучения)?
E>Например, в человекогодах?
Поищите в инете о том как наши C++ компилятор писали.
Насколько я помню там речь шла о нескольких годах (2-4),
и команд 2-3 человек разработчиков и X человек тестеров (они писали
тестовый framework и заполняли его тестами из стандарта).
Здравствуйте, Zhendos, Вы писали:
Z>Поищите в инете о том как наши C++ компилятор писали. Z>Насколько я помню там речь шла о нескольких годах (2-4), Z>и команд 2-3 человек разработчиков и X человек тестеров (они писали Z>тестовый framework и заполняли его тестами из стандарта).
Число разработчиков тоже, было 3-4.
Причем речь шла о предыдущем стандарте. (Его объем последнего вырос раза в 2-3.)
Здравствуйте, Eternity, Вы писали:
E>Насколько сложно написать фронтенд компилятора C++, строящий объектную модель кода для анализа и манипуляций а ля clang-LLVM (в целях развлечения и самообучения)?
E>Например, в человекогодах?
я думаю это десятки человеколет.
если хочется писать фронтенд для самообучения и развлечения лучше взять в качестве целевого языка что-то попроще — java или С.
Здравствуйте, A13x, Вы писали:
A>я думаю это десятки человеколет.
Не согласен, если скажем говорим о С++98, то
во-первых, ИМХО, большинство кода, существующих сейчас монстров-компиляторов составляют
не лексеры + парсеры, а оптимизаторы, ТС же хочет просто front-end.
во-вторых, основные алгоритмические проблемы, связанные с тем, что C++ имеет контекстно зависимую
грамматику, решены
в-третьих, для того, чтобы проверить что компилятор работает, тесты писать не нужно, и движок, чтобы
их прогонять тоже, т.к. их (тесты) можно взять из clang или gcc.
в-четвертых, libstdc++, тоже есть готовые opensource.
Т.е. вполне посильная на мой взгляд задача, на пару-тройку лет для одного человека,
если до начала работы разобраться как подобная работа уже была проделана.
10.09.2013 11:03, Zhendos пишет:
> A>я думаю это десятки человеколет.
> Т.е. вполне посильная на мой взгляд задача, на пару-тройку лет для > одного человека, > если до начала работы разобраться как подобная работа уже была проделана.
Еще пару-тройку лет. Итого уже 6 человеко-лет. И это супероптимистичная
оценка.
Здравствуйте, Vzhyk, Вы писали:
V>10.09.2013 11:03, Zhendos пишет:
>> A>я думаю это десятки человеколет.
>> Т.е. вполне посильная на мой взгляд задача, на пару-тройку лет для >> одного человека, >> если до начала работы разобраться как подобная работа уже была проделана. V>Еще пару-тройку лет.
Но это все-таки не великая научная проблема,
как-то вы очень пессиместично сроки оцениваете.
Начать можно с чего-нибудь типо moc из состава Qt.
Разобраться с ней — 1 неделя,
потом научиться строить AST дерево — 1-2 недели,
и генерировать из него (дерева) код на скажем C — еще неделя.
И того, через месяц можно научиться компилировать программы
уровня расчета последовательности Фибоначи.
После этого, подогреваемый энтузиазмом, что вот, почти все сделал,
заняться теорией: месяц на перечитывании книги красного дракона,
потому обновив базовые знания, можно уже поискать нужные теоретические работы,
и инструменты, ИМХО и для C++ сейчас найдется автоматический построитель
парсера по грамматике. Я бы оценил это в два месяца.
Потом с готовыми инструментами, можно за еще месяц научиться генерировать,
уже опробованное в moc AST дерево и вуаля, мы уже
можем считать на Фибоначи в compile-time на шаблонах.
Далее уже можно разбираться с clang/gcc, и покрывать свой код все большим
количеством тестов.
Вот на доводку и уйдет большее количество времени.
Но проекту основанному на энтузиазме, ИМХО это и не нужно.
Отладит свой компилятор до компиляции им какой-нибудь сложной программы,
и хватит на этом, не продавать же он его будет.
Таким образом ИМХО и за один год вполне управиться.
Здравствуйте, Zhendos, Вы писали:
Z>Но это все-таки не великая научная проблема, Z>как-то вы очень пессиместично сроки оцениваете.
Нет, просто опыт большой в выслушивании оптимистичных оценок и потом обломов. С опытом это проходит и программист начинает осознавать, что задача может оказаться сложнее, чем кажется на первый взгляд и по дороге возникнет еще куча непредвиденных промежуточных задач.
Ниже ты приводишь тоже сильно оптимистичные оценки, но не вижу смысла их обсуждать. Z>Таким образом ИМХО и за один год вполне управиться.
Здравствуйте, Vzhyk, Вы писали:
V>Здравствуйте, Zhendos, Вы писали:
Z>>Но это все-таки не великая научная проблема, Z>>как-то вы очень пессиместично сроки оцениваете. V>Нет, просто опыт большой в выслушивании оптимистичных оценок и потом обломов. С опытом это проходит и программист начинает осознавать, что задача может оказаться сложнее, чем кажется на первый взгляд и по дороге возникнет еще куча непредвиденных промежуточных задач.
Это смотря у кого какой опыт. Первые несколько пунктов плана, приведены на основе собственного опыта,
и сроки в посте я увечил в несколько раз по сравнению с действительностью.
И вы, ИМХО, упускаете тот факт, что это проект энтузиаста и основанный на энтузиазме.
Да, будь это реальный коммерческий проект, чтобы за него взяться надо быть камикадзе,
если до этого вы разработкой компиляторов не занимались.
Но это здесь нет строго заданного критерия успеха:
"сложно по имени найти тип, давайте забьем на namespace",
"сложно написать препроцессор, давайте возьмем готовый",
трудно придумать типы, структуры, функции для AST, давайте возьмем готовый.
и т.д. и т.п. Главное получить фан и написать что-то условно работающие.
P.S.
C++ парсер для gcc состоит из 157936 строчек кода.
Здравствуйте, Eternity, Вы писали:
E>Насколько сложно написать фронтенд компилятора C++, строящий объектную модель кода для анализа и манипуляций а ля clang-LLVM (в целях развлечения и самообучения)?
E>Например, в человекогодах?
Вопрос некорректный. Проблема не в человеко-годах, а в качестве людей. Недостаточно способные люди с этой задачей просто не справятся, при любом количестве человеко-лет.
Майкрософт это блестяще доказывает уже не первое десятилетия -- ресурсы не ограничены, но толпа посредственностей эту задачу решить не может.
Если же мозги наличиствуют, то достаточно небольшой рабочей группы из нескольких человек и 2-3 года работы. Плюс желательно иметь группу тестеров, здесь особые способности не нужны, нужна въедливость и добросовестность.
Здравствуйте, Шахтер, Вы писали:
Ш>Вопрос некорректный. Проблема не в человеко-годах, а в качестве людей. Недостаточно способные люди с этой задачей просто не справятся, при любом количестве человеко-лет. Ш>Майкрософт это блестяще доказывает уже не первое десятилетия -- ресурсы не ограничены, но толпа посредственностей эту задачу решить не может.
это не так. нет там никаких неограниченных ресурсов и команд по 100 индусов.
сейчас над VC++ работает что-то порядка полутора человек.
Здравствуйте, Eternity, Вы писали: E>Насколько сложно написать фронтенд компилятора C++, строящий объектную модель кода для анализа и манипуляций а ля clang-LLVM (в целях развлечения и самообучения)? E>Например, в человекогодах?
мне называлась как-то цифра шарящим человеком 10 или 15 человеколет
Здравствуйте, RonWilson, Вы писали:
RW>Здравствуйте, Abyx, Вы писали:
A>>сейчас над VC++ работает что-то порядка полутора человек.
RW>откуда такая информация?
Ну я там работаю, правда в бекэнде. На фронтенде — 2 человека, причём второго взяли с год назад
Здравствуйте, MT-Wizard, Вы писали:
MW>Ну я там работаю, правда в бекэнде. На фронтенде — 2 человека, причём второго взяли с год назад
расскажите пожалуйста, если не сложно, как у вас там происходит разработка? правда ли что для excel используется не тот же vc++ что и шипится или сейчас уже это не так?
Здравствуйте, RonWilson, Вы писали:
RW>Здравствуйте, MT-Wizard, Вы писали:
MW>>Ну я там работаю, правда в бекэнде. На фронтенде — 2 человека, причём второго взяли с год назад
RW>расскажите пожалуйста, если не сложно, как у вас там происходит разработка? правда ли что для excel используется не тот же vc++ что и шипится или сейчас уже это не так?
Я тут не настолько давно чтобы понимать — что можно рассказывать а что нет, так что пока промолчу
Но соответствие стандарту — это точно не главный критерий и совершенно не самая важная цель.
Здравствуйте, MT-Wizard, Вы писали: RW>>расскажите пожалуйста, если не сложно, как у вас там происходит разработка? правда ли что для excel используется не тот же vc++ что и шипится или сейчас уже это не так?
MW>Я тут не настолько давно чтобы понимать — что можно рассказывать а что нет, так что пока промолчу
эхх( MW>Но соответствие стандарту — это точно не главный критерий и совершенно не самая важная цель.
а что же тогда? или тоже секрет
Здравствуйте, MT-Wizard, Вы писали:
MW>Я тут не настолько давно чтобы понимать — что можно рассказывать а что нет, так что пока промолчу MW>Но соответствие стандарту — это точно не главный критерий и совершенно не самая важная цель.
Тоже было бы интересно, чем сейчас занимаются по VC++. Видимо, WinRT и доводка С++11, но были бы интересны подробности