пособие по выживанию КРИС КАСПЕРСКИ Спецвыпуск: Хакер, номер #071, стр. 071-012-6 Но даже в рамках одного языка (например, того же Си) необходимо согласовать используемые компиляторы, поскольку «смешанное» программирование еще никого не доводило до добра. Достаточно привести один пример: в Borland C++ тип char по умолчанию unsigned, а у Microsoft Visual C++ signed, поэтому программа, разработанная на Borland C++, может разваливаться при компиляции под Microsoft Visual C++ и наоборот. Но с этим еще можно хоть как-то бороться. Скажем, взять за правило компилировать программу несколькими компиляторами и давить баги еще в зародыше. При переносе на другие платформы это очень помогает! Но никогда не надо собирать программу из объектных файлов, откомпилированных разными компиляторами, поскольку каждый из них завязан на свой RTL, а RTL должен быть только один! В крайнем случае, транслируйте объектные файлы, созданные различными компиляторами, в DLL-модули. Это снижает производительность (и подчас довольно значительно), но исключает конфликт RTL. Другой больной вопрос — это хаки, то есть нестандартные приемы программирования, зачастую завязанные на малоизвестные или недокументированные возможности операционной системы, языка программирования или компилятора. Их следует избегать любой ценой! И это не обсуждается! [размер имеет значение, или о том, как программисты меряются писками и что из этого обычно выходит.] Как говорится, «тормозит обычно тот, кто за клавиатурой, да и то, лишь по мнению тех, кто не за ней». Критиковать чужие ошибки и просчеты всегда легко, но зачем?! Только чтобы почувствовать превосходство над остальными? «Все, мол, кретины и дураки, один я умный, весь проект держится на мне, чтобы вы, идиоты, без меня делали и т.д.». Да, в команде могут (и должны!) встречаться программисты различного уровня квалификации. Тезис о том, что все члены должны стоять на одной ступеньке, в корне неверен и вот почему: программное обеспечение крайне неоднородно по своей структуре и состоит из модулей различной сложности. С одними справится даже девушка, закончившая двухнедельные курсы, другие же потребуют консолидации усилий нескольких матерых спецов. Какой смысл поручать спецам писать простой код? Не лучше ли использовать их навыки там, где они действительно необходимы? И потом, специалистами не рождаются. Старшие передают опыт младшим, так было испокон веков. Профессионалы, кстати говоря, встречаются самые разные. Одни смотрят на салаг свысока, другие же общаются с ними как с равными, зачастую вступая в разборки по поводу и без. Но подробных объяснений ждать в любом случае не стоит. Ты не в институте, и за твое обучение денег никто не получает. А объяснять очередному пионеру в сотый раз одни и те же истины — скучно, неинтересно и непродуктивно. |