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

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

Date: 2014-02-15 11:11 am (UTC)
From: [identity profile] bydlorus.livejournal.com
Из того, что я успел заметить в этом вашем чятике, решение очевидно - переписать всё на кложуре. Ну или на руби. Но обязательно переписать!

Date: 2014-02-15 11:47 am (UTC)
From: [identity profile] metaclass.livejournal.com
Если переписывание упростит жизнь на десять лет вперед - обязательно переписать.

Date: 2014-02-15 11:54 am (UTC)
From: [identity profile] bydlorus.livejournal.com
Конечно же упростит. Этот вопрос даже не обсуждается. Очевидно, что основная проблема любой разработки на 100 подпроектов - это выбранный язык.

Date: 2014-02-15 12:01 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Если нужны функции высшего порядка, лямбды и метапрограммирование, а выбрана жаба - то это действительно проблема.

Я не знаю, может у вас на лавке запасных сидит сотня мидлов с джуниорами и всем похер, будут они код писать один день или неделю. А у меня сокращение трудозатрат на фигню вида "как сымитировать на дотнете лисп" сильно упрощает жизнь.

Date: 2014-02-15 12:06 pm (UTC)
From: [identity profile] bydlorus.livejournal.com
> сымитировать на дотнете лисп

Да просто странные задачи в вашей предметной области. Обычно нужно что-то вроде "написать сайт". Из требований обычно сроки и затраты, "функции высшего порядка" в требованиях не встречал. Особенно после 10 лет разработки и при наличии 100 проектов.

Date: 2014-02-15 12:16 pm (UTC)
From: [identity profile] metaclass.livejournal.com
У меня обычно по другому задача ставится. Сделать новую функцию или новую подсистему в один из продающихся проектов.
Причем сделать так, чтобы при этом не сломались основанные на этом же коде еще пару десятков проектов, полученный код могли использовать коллеги, а в идеале - новая функция появилась сразу во всех проектах и чтобы это можно было поддерживать на много лет вперед.

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

Date: 2014-02-15 12:29 pm (UTC)
From: [identity profile] bydlorus.livejournal.com
> Причем сделать так, чтобы при этом не сломались основанные на этом же коде еще пару десятков проектов,

Я так понимаю, для этого обычно все эти десятки проектов и переписываются на функциях высшего порядка.

Date: 2014-02-15 12:41 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Они не переписываются, они изначально так пишутся.

А вообще - если я вижу что одной лямбда функцией можно заменить интерфейс+реализацию (до какого-то там дотнета не было лямбд и вывода типов нормального), то я так и делаю - меньше кода, меньше в голове держать.

Edited Date: 2014-02-15 12:42 pm (UTC)

(no subject)

From: [identity profile] bydlorus.livejournal.com - Date: 2014-02-15 12:44 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2014-02-15 12:52 pm (UTC) - Expand

(no subject)

From: [identity profile] bydlorus.livejournal.com - Date: 2014-02-15 01:11 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2014-02-15 01:24 pm (UTC) - Expand

(no subject)

From: [identity profile] bydlorus.livejournal.com - Date: 2014-02-15 03:30 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2014-02-15 04:23 pm (UTC) - Expand

(no subject)

From: [identity profile] fraks-nsk.livejournal.com - Date: 2014-02-15 04:35 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2014-02-15 04:50 pm (UTC) - Expand

(no subject)

From: [identity profile] bydlorus.livejournal.com - Date: 2014-02-15 04:59 pm (UTC) - Expand

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2014-02-15 06:47 pm (UTC) - Expand

(no subject)

From: [identity profile] bydlorus.livejournal.com - Date: 2014-02-15 07:09 pm (UTC) - Expand

(no subject)

From: [identity profile] berezovsky.livejournal.com - Date: 2014-02-15 07:13 pm (UTC) - Expand

(no subject)

From: [identity profile] bydlorus.livejournal.com - Date: 2014-02-15 07:18 pm (UTC) - Expand

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2014-02-16 08:14 am (UTC) - Expand

(no subject)

From: [identity profile] berezovsky.livejournal.com - Date: 2014-02-16 08:21 am (UTC) - Expand

(no subject)

From: [identity profile] osdm.livejournal.com - Date: 2014-02-17 09:51 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2014-02-17 10:27 am (UTC) - Expand

(no subject)

From: [identity profile] osdm.livejournal.com - Date: 2014-02-17 10:32 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2014-02-17 11:16 am (UTC) - Expand

Date: 2014-02-16 05:26 am (UTC)
From: [identity profile] mudasobwa.livejournal.com
А писать подпроекты на разных языках — запрещено директивой №125887432504?

Date: 2014-02-16 07:53 am (UTC)
From: [identity profile] bydlorus.livejournal.com
Все на разных или можно комбинировать? Сколько должно быть подязыков в подпроектах, чтобы хипстеры остались довольны, есть какие-то критерии? А то хипстеры не спрашивают ведь, какие и что... слышат С++ и сразу "переписать!" орут, ручки трясутся, жилка синяя на лбу бьётся, слюна в уголке рта...

Date: 2014-02-16 09:27 am (UTC)
From: [identity profile] mudasobwa.livejournal.com
Я не собирался оскорблять ваши религиозные догматы, я лишь заметил, что проблема выбора языка устарела на 15 лет.

Date: 2014-02-16 09:58 am (UTC)
From: [identity profile] bydlorus.livejournal.com
Именно поэтому, кроме 10mloc на с++, используется ещё куча других языков, для своих задач. Но это никого не интересует, общая диспозиция такая: "C++? - Заменить!".

Date: 2014-02-15 02:23 pm (UTC)
From: [identity profile] jakobz.livejournal.com
Если что, эти ваши джавы, на которых эти ваши 10 джуниоров с эффективностью в -0.01% от метакласса пилят опердени, придумали такие же точно метаклассы. Нет ничего плохого и невозможного в том, что умный чувак напилит себе уютный язык/фреймворк/тулзу/генератор кода, который позволит ему делать работу в 10 раз быстрее. И ничего плохого нет в том, что эта тулза будет сыроватая и пропиетарная, и юзабельна только автором. В конечном итоге все библиотеки выкристализовываются из такого вот опыта.

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

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

Date: 2014-02-15 03:35 pm (UTC)
From: [identity profile] jakobz.livejournal.com
Во-первых, нигде выше в камментах нету упоминания про этот проект.

Во-вторых 10 миллионов строк кода на C++, которые еще и продаются, определенно стоит если не переписать, то потихоньку переписывать. Вынимать high-level логику в более приспособленный язык. Этот путь уже прошли даже игры, где производительность и память в абсолюте. Если у вас какой-нибудь QT на плюсах для UI - вы просто слоупоки.

Date: 2014-02-15 03:38 pm (UTC)
From: [identity profile] bydlorus.livejournal.com
И на чём переписывают C++, чтобы производительность выросла, а потребление памяти упало?

Date: 2014-02-15 03:42 pm (UTC)
From: [identity profile] jakobz.livejournal.com
Чтобы производительность приложения выросла - на шейдеры. Чтобы производительность команды выросла - на все что угодно - по производительности труда C++ сосет у всех существующих и даже влачащих жалкое существование языков.

Date: 2014-02-15 03:47 pm (UTC)
From: [identity profile] bydlorus.livejournal.com
Речь шла о производительности программы, не надо перескакивать на команду. GPU в проекте используется - отдельно для особо нагруженных статвычислений. На какой именно из языков программирования вы предложили в предыдущем комменте переписать проект на 10 млн строк, чтобы выросла производительность его исполнения и уменьшилось потребление памяти? Весь целиком на шейдерах или какой-то другой вариант?

(no subject)

From: [identity profile] jakobz.livejournal.com - Date: 2014-02-15 03:49 pm (UTC) - Expand

(no subject)

From: [identity profile] bydlorus.livejournal.com - Date: 2014-02-15 03:57 pm (UTC) - Expand

(no subject)

From: [identity profile] blackyblack.livejournal.com - Date: 2014-02-16 08:22 am (UTC) - Expand

(no subject)

From: [identity profile] bydlorus.livejournal.com - Date: 2014-02-16 08:50 am (UTC) - Expand

(no subject)

From: [identity profile] blackyblack.livejournal.com - Date: 2014-02-16 05:30 pm (UTC) - Expand

(no subject)

From: [identity profile] bydlorus.livejournal.com - Date: 2014-02-16 05:40 pm (UTC) - Expand

(no subject)

From: [identity profile] blackyblack.livejournal.com - Date: 2014-02-16 05:51 pm (UTC) - Expand

(no subject)

From: [identity profile] bydlorus.livejournal.com - Date: 2014-02-16 05:58 pm (UTC) - Expand

(no subject)

From: [identity profile] blackyblack.livejournal.com - Date: 2014-02-16 06:04 pm (UTC) - Expand

(no subject)

From: [identity profile] bydlorus.livejournal.com - Date: 2014-02-16 06:08 pm (UTC) - Expand

Date: 2014-02-15 03:56 pm (UTC)
From: [identity profile] anonim-legion.livejournal.com
САПР какой-то пишете?

Date: 2014-02-15 03:58 pm (UTC)

Date: 2014-02-15 04:21 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Переписывать в таком виде нахрен не надо, да.
Но может оказаться, что трудозатраты на поддержку и доработку некоторых подсистем можно сократить, втащив лямбды и прочую чернягу, тогда нужно будет сравнивать - то ли лучше долго, медленно, но без потрясений писать на С++, то ли втянуть одноразово что-нибудь более вменяемое, с учетом потенциальных затрат на поддержку в будущем.

Date: 2014-02-17 07:02 am (UTC)
From: [identity profile] bydl0coder.livejournal.com
Если вы такие умные, почему строем не ходите? Почему на хаскеле, скале и окамле ни одного продукта нет?

Date: 2014-02-17 07:30 am (UTC)
From: [identity profile] metaclass.livejournal.com
На скале есть, а хаскель с окамлом весьма специфические в плане библиотек и их версий.

Date: 2014-02-17 09:59 am (UTC)
From: [identity profile] bydl0coder.livejournal.com
Как раз на хаскеле что-то (бессмысленное и мало кем используемое) есть, а на скале нет. Сервисы, фреймворки, но не продукты.

Date: 2014-02-15 03:27 pm (UTC)
From: [identity profile] avnik.livejournal.com
Даже на lein скорее, а не просто на кложури.

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