Нельзя требовать высокой программистской квалификации от мальчишки, который в 8-м классе пытается создать игровую программу. Бухгалтер, использующий Excel для выполнения рутинных расчётов, - вряд ли ему необходимо понимать механизм работы Windows.
Но программист, который пытается создать программу, которой будут пользоваться несколько человек, должен обладать знаниями, несколько более глубокими, чем пользователь, согласны?
К примеру, чего ждать от автора дизассемблера, если он не знает даже, откуда необходимо начинать дизассемблирование РЕ-файла? И ещё: известнейший многотомник Дональда Кнута называется "Искусство программирования". Вдумайтесь – искусство! Но, скорее всего, тут же будет задан встречный вопрос – что, и работу компилятора, при помощи которого создаются исполняемые файлы, нужно представлять до тонкостей? Понимать всё, что происходит внутри компилятора? Знать, где, какой флажок и при каких условиях он устанавливает или сбрасывает?
А ведь кроме компилятора в арсенале программиста имеется немало инструментария... Что на это можно ответить? Если бы мы жили в идеальном мире и у нас был бы избыток времени, то, наверное, знать, как работает любая программа, было бы весьма неплохо. Но, к сожалению, наш мир не идеален, а задачи, которые ставятся перед программистом, часто напоминают следующее: "напиши то, не знаю что, но чтобы можно было делать вот это, вот то и даже вот это, причем, всё должно работать к завтрашнему утру".
Знакомая ситуация? Выход из неё один – должен существовать какой-то минимум, который обязан знать любой программист. Что-то вроде кандидатского минимума. В состав этого минимума должны, наверное, входить базовые знания программирования (функции, подпрограммы, переходы, циклы, работа с памятью, работа с файлами и т.д.), основные структуры данных (массивы, векторы, списки, хэш-таблицы и их вариации), основы операционных систем, основы web и т. д. и т. п.
Фото: careergirls.org
Освоив этот минимум, программист в большинстве случаев будет знать, с чего начать решение поставленной перед ним задачи. Вот в этот момент и можно начинать пользоваться всевозможными визардами. То есть путь программиста должен начинаться с изучения. В какой-то момент спутником программиста может и, наверное, должен стать визард.
Никоим образом программист не должен начинать нелёгкое дело обучения с визарда! Это является одним из лучших способов заставить перестать работать тот агрегат, который находится у нас в голове и называется мозгом.
Кстати, возвращаясь к визарду MFC, – после того, как программист начнет понимать, каким образом работает MFC, визард становится для него весьма и весьма полезным инструментом, сокращающим время разработки на несколько часов. Понимая тот код, который генерируется визардом, программист может оценить степень его надёжности, а не полагаться только на заверения разработчиков MFC о том, что, мол, лучше и надежнее средства нет. Разве не так?
То же самое, наверное, можно сказать и о других средствах разработки – для того, чтобы их правильно использовать и быть в них уверенным, нужно понимать, каким образом они работают.
Фото: codeandhack.com
Есть ещё один нюанс, о котором нельзя не сказать. У некоторых, в основном, очень молодых (речь о возрасте) представителей этой профессии весьма и весьма велика тяга ко всевозможным "взломам" и так далее. Можно допустить это как разновидность интеллектуального развлечения, так сказать, гимнастики для ума.
Но! Большинство руководств по такого рода деятельности написаны примерно так – ставь бряк на такую-то функцию и жди, когда "всплывет" отладчик. В данном случае работа по интеллектуальному наполнению занимает второе место после перетягивания каната. Можно ли говорить о том, что "специалист", начитавшийся подобных руководств, снимет защиту действительно грамотно?
Каждому известны случаи зависания программ, запущенных с CD, которые продаются чуть ли не на каждом углу... Нет, и здесь не обойтись без хотя бы базовых знаний! Кстати, именно базовые знания зачастую позволяют решить проблему "малой кровью", а не ломать программу "через колено", используя отладчик и заменяя в программе несколько байтов. К сожалению, в большинстве школ и вузов использованию вычислительной техники учат достаточно своеобразно.
Сейчас вычислительная техника и программные средства развиваются такими темпами, что уследить за ними практически невозможно. Однако это не оправдывает отставания школьных учителей и появления недоучек в компьютерной области после вузов. Как выйти из этого положения? Наверное, универсального рецепта нет и быть не может. Однако что-то делать всё же нужно!