Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #65, АПРЕЛЬ 2006 г.

спроси эксперта

 

Спецвыпуск: Хакер, номер #065, стр. 065-082-2


И применений программистам очень много. Если пишешь драйверы под Windows, то вряд ли ты вдруг согласишься писать драйверы под Linux, хотя синтаксис языка С везде одинаковый. Или после драйверов вдруг начать писать трехмерные игры тоже непросто. Дело в том, что программирование уже давно не состоит из множества операторов базового языка. Всегда программисты используют писавшиеся годами библиотеки. Этих библиотек очень много, и каждую нужно изучать. Даже освоить один Win32 API тяжело, а еще, возможно, тебе нужно разобраться с MFC или ATL. Мало того, что библиотеки состоят из готового кода. Казалось бы, бери и используй, но уже придумано множество новых технологий, которые тоже нужно знать и принцип работы которых тоже нужно понять.

Как пример можно привести технологии разработки компонентов COM/DCOM, доступа к данным ADO или BDE, мультимедиа GDI, OpenGL, DirectX, сообщений MAPI и т.д. Сложность еще и в том, что все технологии постоянно совершенствуются. Ты изучал ATL3 и IDL, прошло время, а уже нужно использовать ATL7 и attributed C++. А еще есть недокументированные функции — они тоже иногда полезны.

ВОПРОС: Есть ли эффективные курсы для программистов? Или могут быть полезными только книжки и собственный опыт? В школах и институтах обычно не учат ничему дельному, как показывает практика...

Денис Батранков: Я считаю, что научить программировать невозможно! Школы и институты учат полезным вещам, есть хорошие курсы, есть хорошие преподаватели. Есть только один минус: в школе и институте могут лишь объяснить понятия и имеющиеся алгоритмы — что такое массив и список, семафор и спинлок, что такое процесс и нить, как использовать регистры и стек, как адресуется память, как выполняется быстрая сортировка и сортировка пузырьком и т.д. Но в школе/институте нельзя получить представление о том, что из этого лучше всего использовать в программе и как объединить все, в каком порядке. Остальное будет делать программист на основе имеющихся знаний и фантазии.

Программа — это творчество программиста, а не скучное собрание известных алгоритмов в единое целое. Именно поэтому все программы отличаются друг от друга, хотя, возможно, и делают одно и то же. Одна программа будет работать быстрее, другая будет меньше места на диске занимать, третья — меньше оперативной памяти требовать. Сколько людей, столько и программ. Для повышения квалификации рекомендую читать чужой код — чужой код вмещает в себя чужой опыт. В интернете достаточно примеров исходного кода, из которого можно почерпнуть знания для написания своих программ. Кроме того, нужно общаться в конференциях, не бояться задавать вопросы и, возможно, отвечать на вопросы других. Например, Microsoft очень ценит активных участников конференций и особенно активным участникам присуждает звание MPV (Most Valuable Professional).

ВОПРОС: Существует множество языков программирования, средств разработок еще больше. Как выбрать нужное направление, особенно если не имеешь четкого представления о том, что потребуется в будущем? Есть ли беспроигрышный вариант?

Назад на стр. 065-082-1  Содержание  Вперед на стр. 065-082-3