Безумие и отвага
Feb. 15th, 2014 01:59 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Вопрос на собеседование:
Вам дается 100 проектов, содержащих t4 шаблоны, написанные старообрядческими псоглавцами.
Ваша задача написать MSBuild скрипт, который перегенерирует весь код, созданный из этих шаблонов.
Смех тут в том, что студия перегенерирует код только если зайти в t4 шаблон и пересохранить его, чтобы время изменилось. А изменение файлов, включенных через include не вызывает перегенерацию.
Вам дается 100 проектов, содержащих t4 шаблоны, написанные старообрядческими псоглавцами.
Ваша задача написать MSBuild скрипт, который перегенерирует весь код, созданный из этих шаблонов.
Смех тут в том, что студия перегенерирует код только если зайти в t4 шаблон и пересохранить его, чтобы время изменилось. А изменение файлов, включенных через include не вызывает перегенерацию.
no subject
Date: 2014-02-15 03:23 pm (UTC)no subject
Date: 2014-02-15 03:35 pm (UTC)Во-вторых 10 миллионов строк кода на C++, которые еще и продаются, определенно стоит если не переписать, то потихоньку переписывать. Вынимать high-level логику в более приспособленный язык. Этот путь уже прошли даже игры, где производительность и память в абсолюте. Если у вас какой-нибудь QT на плюсах для UI - вы просто слоупоки.
no subject
Date: 2014-02-15 03:38 pm (UTC)no subject
Date: 2014-02-15 03:42 pm (UTC)no subject
Date: 2014-02-15 03:47 pm (UTC)no subject
Date: 2014-02-15 03:49 pm (UTC)Да ну! Где? И что же вы такое пишете на 10 миллионов строк высокопроизводительное?
no subject
Date: 2014-02-15 03:57 pm (UTC)Но для этого в проекте есть два своих встроенных языка. Собственно, проект заключается в написании платформы для построения других приложений. Также, хочу заметить, что 10 миллионов строк кода - это только сама основа. Ещё туева хуча кода на встроенных языках, кода клиентов (тонкий на js, мобильные клиенты и т.п.), кода тестов, кода сторонних приложений (всякие сервера поиска), кода сервисов (в т.ч. на жабе, например). Не сомневаюсь, что и это всё тоже надо переписать на руби.
no subject
Date: 2014-02-16 08:22 am (UTC)no subject
Date: 2014-02-16 08:50 am (UTC)no subject
Date: 2014-02-16 05:30 pm (UTC)Зачастую при переписывании на функциональном языке проявляются алгоритмические проёбы, которые никаким с++ не компенсируются.
no subject
Date: 2014-02-16 05:40 pm (UTC)- С++ неадекватный язык - несмотря на то, что на нём уже написан огромный проект и он приносит прибыль, так что непонятны ваши критерии адекватности
- система не разбита на подсистемы - а она разбита, и весьма грамотно
- существуют "адекватные" и "неадекватные" языки в вакууме, т.е. сами по себе, без конкретной ситуации
- сами по себе языки (а именно функциональные) позволяют выявить какие-то там проёбы, видимо, они и есть серебряная пуля
В общем, мне даже непонятно, как тут можно спорить, вы совершенно во всём правы.
http://www.joelonsoftware.com/articles/fog0000000069.html
The idea that new code is better than old is patently absurd. Old code has been used. It has been tested. Lots of bugs have been found, and they've been fixed.
no subject
Date: 2014-02-16 05:51 pm (UTC)В подавляющем большинстве случаев.
"несмотря на то, что на нём уже написан огромный проект и он приносит прибыль"
На коболе тоже написаны огромные проекты, которые приносят прибыль. Однако появились более удачные языки и на коболе больше не пишут.
"существуют "адекватные" и "неадекватные" языки в вакууме"
Нет, если бы существовали адекватные языки в вакууме, я бы предложил переписать весь проект на адекватный язык. Я же предложил переписать часть подсистем на адекватный язык. Очевидно, адекватный предметке конкретной подсистемы.
"сами по себе языки (а именно функциональные) позволяют выявить какие-то там проёбы"
Вы в это не верите? Серьёзно? Даже ни тени сомнения? Ну извини, даже обсуждать тогда не хочется.
no subject
Date: 2014-02-16 05:58 pm (UTC)no subject
Date: 2014-02-16 06:04 pm (UTC)Ещё раз, я ни разу не сказал, что нужно всё и безоговорочно переписывать. Нужно в любом случае сравнивать отдачу от переписывания с затратами.
no subject
Date: 2014-02-16 06:08 pm (UTC)no subject
Date: 2014-02-15 03:56 pm (UTC)no subject
Date: 2014-02-15 03:58 pm (UTC)no subject
Date: 2014-02-15 04:21 pm (UTC)Но может оказаться, что трудозатраты на поддержку и доработку некоторых подсистем можно сократить, втащив лямбды и прочую чернягу, тогда нужно будет сравнивать - то ли лучше долго, медленно, но без потрясений писать на С++, то ли втянуть одноразово что-нибудь более вменяемое, с учетом потенциальных затрат на поддержку в будущем.
no subject
Date: 2014-02-17 07:02 am (UTC)no subject
Date: 2014-02-17 07:30 am (UTC)no subject
Date: 2014-02-17 09:59 am (UTC)