Инженер-программист (прикладное программирование). В. С. Шнейдеров
Умение программировать, то есть способность выразить любой процесс средствами, доступными для передачи машине, становится второй грамотностью каждого образованного человека. Нужда в программистах в нашей стране сегодня огромна. Причем потребность в них растет в два раза быстрее, чем темпы их подготовки, хотя ни одна другая профессия не знает таких темпов роста, как профессия программиста - за последние 20 лет общее количество представителей этой профессии в мире возросло почти в 30 раз.
В чем заключается работа программиста? Предположим, что для решения какой-либо задачи необходимо применить ЭВМ. Тогда мы должны выполнить следующую последовательность действий: ясно и точно установить, что же должно быть сделано; составить алгоритм, то есть точно определенную последовательность действий, ведущую к желаемому результату; выразить алгоритм в таком виде, в котором его могла бы воспринять машина, иначе - написать и отладить программу.
Программа для ЭВМ состоит из последовательности отдельных команд. Каждая команда, в свою очередь, содержит четкие указания: "что делать" и "где делать", то есть определяет код операции, которую надо выполнить ЭВМ, адрес данных, над которыми надо произвести эту операцию, и адрес, куда поместить полученный результат. Поскольку машина понимает только числа - нули и единицы (машинные коды), то написать такую программу человеку довольно сложно. Для преодоления этого барьера были изобретены языки программирования, служащие средством связи между программистом и ЭВМ.
Современные высокоразвитые языки программирования позволяют человеку в удобной для него форме записать задание для машины (например, в виде привычных алгебраических соотношений) и ввести эту программу в ЭВМ с помощью клавиатуры, почти такой же, как у обыкновенной пишущей машинки. Заранее введенная в память ЭВМ специальная программа-транслятор передает все это (транслирует) на понятный машине язык (тот самый, где четко указывается код операции, номер ячейки оперативного запоминающего устройства и т. д.).
Последние 25 лет стали эпохой бурного развития языков программирования, и хотя в данной области уже много сделано, тем не менее "разговор" человека с ЭВМ все еще остается сложной процедурой, в большой степени, зависящей от квалификации программиста.
Мы хорошо знаем неформальность человеческого общения и понимаем, друг друга, даже если употребляем слова с ошибками или намеками. Однако в процессе общения человека с ЭВМ это совершенно исключено. Естественно, что когда школьник пишет диктант или сочинение, перед ним ставится реальная задача - не сделать ни одной грамматической ошибки. Но ведь это короткий, логически связанный текст, написанный на привычном языке. И совсем другое дело машинная программа - текст, содержащий многие сотни и тысячи строк непривычного для человека языка. Поэтому при программировании невозможно избежать ошибок. Они составляют до 10 процентов от общего числа команд конкретной программы. А какова стоимость одной ошибки? Ошибка в программе - это неудачный вывод спутника на орбиту, это деталь, испорченная на станке с числовым программным управлением, это неправильно оформленный билет на самолет и многое другое. Следовательно, ошибки в программе абсолютно недопустимы.
Однако, как это ни парадоксально, но большинство программ вообще не могут быть досконально проверены. Так, если программа предназначена для работы буквально с миллионами входных данных, то из них может быть испытана только малая часть. Обычно программист выбирает несколько испытательных процедур, которые он считает типичными, заставляет программу выполнить эти процедуры соответствующим образом.
При разработке больших программ приходится затрачивать многие месяцы, а иногда и годы на отладку - поиск и устранение ошибок.
Поэтому программист может себе позволить "роскошь" написать программу только в том случае, если она небольшая. А лучше, если это возможно, использовать существующие программы, либо, если они полностью не удовлетворяют поставленной задаче, видоизменить их, подогнать для своих потребностей. Но для этого надо уметь разбираться в существующем программном обеспечении. Для облегчения этой работы созданы и непрерывно создаются новые пакеты прикладных программ и расширяются возможности существующих. Эти пакеты программ разрабатываются программистами высокой квалификации - профессиональными или прикладными (термин "прикладной" показывает, что умение программировать прикладывается к основной профессии специалиста). Способность правильно использовать существующие программы и характеризует квалификацию программиста.
Какими качествами должен обладать программист? Об этом очень хорошо и образно сказал академик А. П. Ершов: "Программист должен обладать способностью первоклассного математика к абстракции и логическому мышлению, в сочетании с эдисоновским талантом соорудить все что угодно из нуля и единицы. Он должен сочетать аккуратность бухгалтера с проницательностью разведчика, фантазию автора детективных романов с трезвой практичностью экономиста. А, кроме того, программист должен иметь вкус к коллективной работе, понимать интересы пользователя и многое другое".
Следует отметить, что составление программ - это лучшее средство развить в себе богатое воображение, аналитический ум, интуицию, способность всеохватывающего видения, аккуратность и выдержку.
Поскольку электронно-вычислительная техника внедряется во все сферы профессиональной деятельности человека, то специалисты очень многих профессий - химики, физики, инженеры и многие другие - должны быть и программистами. Для этого необходимо одновременно с обучением своей основной специальности уделять столько же внимания изучению языков программирования и искусству программирования.
Хорошего программиста отличает высокая аккуратность и внимательность. Известно, что тот, кто аккуратно работает, обладает большей устойчивостью и оказывается незаменимым при решении сложных задач. В программировании очень важна способность довести до конца любую начатую программу и взять на себя ответственность за результаты ее работы. Нередко во время отладки программы получаются весьма странные результаты, обусловленные неуловимыми на первый взгляд ошибками. Их преодоление требует огромного напряжения, однако успех, доводка программы до конца повышает, причем скачком, квалификацию прикладного программиста, повышает веру в собственные силы. Но и здесь нужно избегать крайностей. Программирование - настолько увлекательная работа, что некоторые программисты превращают программирование в самоцель. Они постоянно что-то улучшают в своей работающей программе - то делают ее более компактной, то более экономичной, то более быстродействующей, универсальной, забывая о тех задачах, которые они должны были решить с помощью ЭВМ. Нужно не поддаваться соблазну, постоянно помнить, что программа - это всего лишь инструмент для решения поставленных задач. Специальность программиста можно получить в техникумах, квалификацию повысить в вузах соответствующего профиля.