metaclass: (Default)
[personal profile] metaclass
Вопрос на собеседование:
Вам дается 100 проектов, содержащих t4 шаблоны, написанные старообрядческими псоглавцами.
Ваша задача написать MSBuild скрипт, который перегенерирует весь код, созданный из этих шаблонов.

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

Date: 2014-02-15 03:49 pm (UTC)
From: [identity profile] jakobz.livejournal.com
> Речь шла о производительности программы

Да ну! Где? И что же вы такое пишете на 10 миллионов строк высокопроизводительное?

Date: 2014-02-15 03:57 pm (UTC)
From: [identity profile] bydlorus.livejournal.com
Да, реально речь шла наоборот, о переписывании логики на высокоуровневом языке, не так понял.

Но для этого в проекте есть два своих встроенных языка. Собственно, проект заключается в написании платформы для построения других приложений. Также, хочу заметить, что 10 миллионов строк кода - это только сама основа. Ещё туева хуча кода на встроенных языках, кода клиентов (тонкий на js, мобильные клиенты и т.п.), кода тестов, кода сторонних приложений (всякие сервера поиска), кода сервисов (в т.ч. на жабе, например). Не сомневаюсь, что и это всё тоже надо переписать на руби.

Date: 2014-02-16 08:22 am (UTC)
From: [identity profile] blackyblack.livejournal.com
2 своих встроенных языка, 10 млн строк на с++, повысить производительность и снизить выделение памяти... Вам по такому проекту никто ничего конкретного посоветовать не сможет, потому как специфика какая-то очень специфичная. Переписывать всё не нужно, но выделять из системы подсистемы (с 10 млн строк кода это просто необходимо) и переписывать их на более поддерживаемых языках вполне реально. В итоге вполне вероятно может вырости и производительность, и кодовая база может уменьшиться, и на поддержку можно будет меньше народа сажать.

Date: 2014-02-16 08:50 am (UTC)
From: [identity profile] bydlorus.livejournal.com
Смешно, да. Только портировали на линукс и другие платформы (типа макос), а теперь будут опять переписывать. Всё чтобы хипстеры не остались без работы.

Date: 2014-02-16 05:30 pm (UTC)
From: [identity profile] blackyblack.livejournal.com
Причём тут хипстеры? Вы при портировании увеличили кодовую базу и увеличили затраты на поддержку. Грамотное разбиение софта на подсистемы и переписывание части подсистем на адекватные языки позволит снизить затраты на поддержку и уменьшить кодовую базу.
Зачастую при переписывании на функциональном языке проявляются алгоритмические проёбы, которые никаким с++ не компенсируются.

Date: 2014-02-16 05:40 pm (UTC)
From: [identity profile] bydlorus.livejournal.com
Вы предполагаете, что
- С++ неадекватный язык - несмотря на то, что на нём уже написан огромный проект и он приносит прибыль, так что непонятны ваши критерии адекватности
- система не разбита на подсистемы - а она разбита, и весьма грамотно
- существуют "адекватные" и "неадекватные" языки в вакууме, т.е. сами по себе, без конкретной ситуации
- сами по себе языки (а именно функциональные) позволяют выявить какие-то там проёбы, видимо, они и есть серебряная пуля

В общем, мне даже непонятно, как тут можно спорить, вы совершенно во всём правы.

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.

Date: 2014-02-16 05:51 pm (UTC)
From: [identity profile] blackyblack.livejournal.com
"С++ неадекватный язык"
В подавляющем большинстве случаев.

"несмотря на то, что на нём уже написан огромный проект и он приносит прибыль"
На коболе тоже написаны огромные проекты, которые приносят прибыль. Однако появились более удачные языки и на коболе больше не пишут.

"существуют "адекватные" и "неадекватные" языки в вакууме"
Нет, если бы существовали адекватные языки в вакууме, я бы предложил переписать весь проект на адекватный язык. Я же предложил переписать часть подсистем на адекватный язык. Очевидно, адекватный предметке конкретной подсистемы.

"сами по себе языки (а именно функциональные) позволяют выявить какие-то там проёбы"
Вы в это не верите? Серьёзно? Даже ни тени сомнения? Ну извини, даже обсуждать тогда не хочется.

Date: 2014-02-16 05:58 pm (UTC)
From: [identity profile] bydlorus.livejournal.com
Так я не понял, надо переписывать все старые проекты с кобола на что-то современное, или не надо? Потому как вопрос стоит так, что надо и это не обсуждается - если речь о с++. А про кобол, тоже безоговорочно переписывать? Я так понимаю, что да, странно, что вы упомянули только, что на нём больше не пишут, ведь очевидно, что все проекты на коболе давно переписывают на руби и функциональных языках, позволяющих выявить проёбы старых проектов на коболе.

Date: 2014-02-16 06:04 pm (UTC)
From: [identity profile] blackyblack.livejournal.com
Я не знаю, переписывают ли все проекты на коболе или нет. Если бы у меня был проект на коболе, то я бы его не трогал, до тех пор, пока не потребуется новый функционал, который внедрить будет дороже, чем переписать заново.
Ещё раз, я ни разу не сказал, что нужно всё и безоговорочно переписывать. Нужно в любом случае сравнивать отдачу от переписывания с затратами.

Date: 2014-02-16 06:08 pm (UTC)
From: [identity profile] bydlorus.livejournal.com
Мне почему-то утверждают, что безусловно С++ нужно переписать. Несмотря на то, что люди проект в глаза не видели, а ответственные за него уже приняли решение не переписывать, а продолжать и портировать, и это при том, что в проекте уже достаточно других языков. Рад, что речь наконец-то зашла о затратах. А может, дело даже и не в затратах. Просто у людей есть опыт работы с функциональщиками, и она решили - а ну его нахер, пусть лучше С++. Всякое бывает ;-)

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 27th, 2025 05:36 pm
Powered by Dreamwidth Studios