Здравствуйте, SaZ, Вы писали:
SaZ>Здравствуйте, _hum_, Вы писали:
SaZ>>>Когда работал в Варгейминге (проект wot blitz), да и не только там, у нас в команде была позиция, которая так и называлась — build engineer. Собственно сейчас, средствами CMake, танчики собираются под всё (ios/win/android + все десктопы). У всех стоит IncrediBuild. 20 минут — полная пересборка проекта (без конвертации ресурсов).
__>>и вы считаете это естественным? а что будет через пару лет, когда объем проектов во много раз возрастет?
SaZ>Конечно. Свою карьеру я начинал в Епаме. Там для нашего проекта была целая команда билд инженеров. А ещё devops-ы есть.

то, что есть де-факто, не значит, что это естественно

раньше наверное тоже отдельные должности были по набиванию перфокарт, и что?
SaZ>В вашем же случае получается так: вы заранее знаете о том, что сложность проекта будет нелинейно расти в течение нескольких лет, но всё равно не хотите выделить должные ресурсы на проработку архитектуры.
нет, не так. я НЕ ЗНАЛ, что скорость роста времени компиляции от роста проекта такая нелинейная, потому это и вызывало во мне соответствующие вопросы — в первую очередь, как же тогда большие проекты разрабатываются.
SaZ>>>Если у вас в одиночку получился столь большой проект, что вас парит время комипляции — то что-то тут не то. Или плохо накодили или не туда двигаетесь. Где-то тут, несколько лет назад, пробегал этюд товарища Nikov (правда для C#). Как обычным дженериком на 5 аргументов нагенерить 25 метров кода и ждать компиляции более 7 минут. Жаль не могу найти.
__>>ну и? что в таком случае делать?
__>>да и вообще, почему программиста должны заботить проблемы компилятора, и он должен знать все эти нюансы с тем, где он как-то там проходит, что подключает и проч., чтобы не дай бог не ввести его в глубокую рекурсию.
SaZ>В вашем понимании программист — это кодер. Таких, конечно, не должны заботить проблемы компилятора. Такие обычно делают всякие несложные фронтэнды на пхп/асп на аутсорс.
SaZ>В моём понимании программист — это инженер. Это человек, который способен спроектировать и реализовать систему, которая будет работать. А при наличии требований к масштабированию — спроектировать хорошую архитектуру.
в моем понимании тоже. обратите внимание, вы НИГДЕ не указали, что программист должен знать особенности компиляции. всюду участвуют только
особенности языка и исполнителя (машины). промежуточное звено, ака компилятор, вынесен вами за скобки.
вот об этом я и говорю, почему разработчик должен зависет и знать особенности выносимого за скобки, чтобы реализовать нормальную работающую систему?
ну это сродни тому, что повар должен уметь разбираться, как работает микроволновка (на каком клистроне, как испускающем волны, в каких местах узлы стоячих волн и проч.), чтобы приготовить вкусное блюдо.
SaZ>Например, в серьёзном геймдеве (да и не только) нечего ловить, если вы не знаете, что такое thiscall / fastcall / stdcall и т.п, если не понимаете, зачем нужен и когда нужен inline. Если не знаете, что такое кэш-мисс или конвеер команд в процессоре. Вроде бы это всё и не нужно, чтобы писать код на С++, но специалист тем и отличается от кодера-любителя, что понимает, как работает система.
это тоже все относится к языку и исполнителю алгоритма, но никак не к компилятору.