Re[5]: Долгая компиляция на с++ - смерть для больших проектов?
От: SaZ  
Дата: 06.05.16 13:10
Оценка: +1
Здравствуйте, _hum_, Вы писали:

SaZ>>Когда работал в Варгейминге (проект wot blitz), да и не только там, у нас в команде была позиция, которая так и называлась — build engineer. Собственно сейчас, средствами CMake, танчики собираются под всё (ios/win/android + все десктопы). У всех стоит IncrediBuild. 20 минут — полная пересборка проекта (без конвертации ресурсов).


__>и вы считаете это естественным? а что будет через пару лет, когда объем проектов во много раз возрастет?


Конечно. Свою карьеру я начинал в Епаме. Там для нашего проекта была целая команда билд инженеров. А ещё devops-ы есть.
Для того, чтобы это не было проблемой нужно понимать примерный объём проекта и заранее думать о масштабируемой архитекруте. Конечно, такие вещи мидлам и джунам доверять не стоит. Потому что если делать по вот этой книге:
  Чик-чик и в продакшн

То через пару лет как раз и выплывут ваши вопросы. Хотя квалифицированные менеджеры / разработчики это всё прекрасно понимают.

В вашем же случае получается так: вы заранее знаете о том, что сложность проекта будет нелинейно расти в течение нескольких лет, но всё равно не хотите выделить должные ресурсы на проработку архитектуры. Хотите, чтобы всё получилось само собой и как можно дешевле. В реальности же так не бывает. У вас цена багфикса (деньги == время, в т.ч. время компиляции) заведомо будет стремиться к бесконечности.
Увы, если вы хотите нанять волшебника, который скажет, что это не так, то, скорее всего, вы получите сказочника.

SaZ>>Если у вас в одиночку получился столь большой проект, что вас парит время комипляции — то что-то тут не то. Или плохо накодили или не туда двигаетесь. Где-то тут, несколько лет назад, пробегал этюд товарища Nikov (правда для C#). Как обычным дженериком на 5 аргументов нагенерить 25 метров кода и ждать компиляции более 7 минут. Жаль не могу найти.


__>ну и? что в таком случае делать?

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

В вашем понимании программист — это кодер. Таких, конечно, не должны заботить проблемы компилятора. Такие обычно делают всякие несложные фронтэнды на пхп/асп на аутсорс.
В моём понимании программист — это инженер. Это человек, который способен спроектировать и реализовать систему, которая будет работать. А при наличии требований к масштабированию — спроектировать хорошую архитектуру.

Например, в серьёзном геймдеве (да и не только) нечего ловить, если вы не знаете, что такое thiscall / fastcall / stdcall и т.п, если не понимаете, зачем нужен и когда нужен inline. Если не знаете, что такое кэш-мисс или конвеер команд в процессоре. Вроде бы это всё и не нужно, чтобы писать код на С++, но специалист тем и отличается от кодера-любителя, что понимает, как работает система.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.