November 13th, 2007

nyaload

(no subject)

Такое ощущение, что подавляющая часть "программистов на С++" не знает самых базовых основ языка. Которые не C++, а просто С.
Основные базовые вещи, как происходит трансляция:

1) препроцессирование
2) компиляция translation unit
3) линковка объектников.

Сидят в visual studio, добавляют файлы в проект. То что нельзя .hpp откомпилировать - считают странной багой студии. То что лид почему-то просит выносить методы в .cpp, forward declaration, Pimple, абстрактные интерфейсы - считают его личной странностью или же "так принято, хз почему". Потому что их подрывная деятельность по убиванию скорости компиляции - очень плавная и незаметная сразу на фоне другого кода (поначалу).

Бррр.

Таких приходится отправлять ручками запускать
cl.exe /EP a.cpp > a_preprocessed.cpp
cl.exe /EP b.cpp > b_preprocessed.cpp

cl.exe a_preprocessed.cpp
cl.exe b_preprocessed.cpp

link.exe a_preprocessed.obj b_preprocessed.obj

(или аналогичное на gcc-tools).

Смотреть содержимое препроцессированых файлов. Видеть в глазах зажегшееся понимание "ах вот почему!".

В b.cpp можно устроить ахтунг из системных и STL-заголовков, что бы наглядно видно как изменяется время компиляции в два раза при очистке b.hpp.

C++ конечно гадость в этом плане, но надо хотя бы понимать свой инструмент и не мучать коллег "у миня не линкуется". Если несколько лет на нём "программируешь".

DISCLAIMER: пост был спровоцирован человеком не из нашей компании.