Можно рискнуть и сравнить компьютер с каким-нибудь музыкальным инструментом, пианино, например. Прежде чем вы прикоснетесь к клавишам, ваш инструмент должны были построить мастера, а композиторы написать музыку на понятном для всех языке - нотными знаками. То же самое и с компьютерами: есть люди, которые создают аппаратуру, и те, кто пишет музыку - компьютерные программы. Аппаратуру принято называть "хард" (от английского hard - твердый, жесткий или еще проще - "железо"), а программное обеспечение - "софт" (от английского soft - мягкий). Создатели "софта" как раз и есть "композиторы" компьютерного мира. И так же, как в музыке, здесь есть несколько специализаций, о которых нам предстоит поговорить ниже. А пока немного истории.
Как это было раньше
Электронные вычислительные машины появились в середине 40-х годов нашего века. Первой в мире считается ЭНИАК, созданная в 1946 году в США. В Советском Союзе первая машина начала работу в 1951 году, называлась она МЭСМ (Малая Счетная Электронная Машина). Честь ее создания принадлежит группе С. А. Лебедева, впоследствии знаменитого академика, которого называют отцом отечественной вычислительной техники.
Первые ЭВМ были уникальными установками, и круг специалистов, умевших заставить их решать сложные вычислительные задачи, оставался очень ограниченным. Программирование выполнялось на уровне машинных команд, то есть машине нужен был подробный и детальный список операций, которые должны были выполнять все ее узлы. Команды кодировались числами, представленными в восьмеричной, шестнадцатиричной или двоичной системе. От программиста требовалось не только знание множества деталей, связанных с устройством машины, но и большая интуиция, изворотливость ума, чтобы втиснуться в прокрустово ложе весьма скромных, по современным понятиям, возможностей электронной машины.
Процесс кодировки программ шел очень медленно, появлялось большое количество ошибок, и класс программиста определялся его умением быстро находить собственные промахи. В то время возникли два рода специалистов - алгоритмисты и программисты -кодировщики. В задачу алгоритмиста входило точное описание выбранного метода вычислений, в задачу программиста - кодирование алгоритма на цифровом языке, понятном машине. Скоро, однако, стало ясно, что последняя операция представляет собой техническую работу, если, конечно, алгоритм расписан детально и точно. Возникла идея заставить электронную машину самой выполнять эту работу.
Трансляторщики - специалисты по системам программирования
Сегодня написанием программ для компьютеров занимаются представители самых разнообразных профессий, студенты и даже школьники. Это стало возможным благодаря появлению специальных языков, на которых мы даем команды компьютеру. Создают машинные языки представители новой профессии - специалисты по системам программирования, или, как их еще называют, трансляторщики.
Упрощенно говоря, существует два типа компьютерных языков: машинно-зависимые и машинно-независимые. Первые (ассемблеры, или языки автокодов) служат для общения с машиной на ее же языке. Ассемблерами и до настоящего времени пользуются высококва лифицированные специалисты.
Родоначальником машинно-независимых языков программирования считается Фортран. Это название - абревиатура двух английских слов FORmula TRANslation (транслятор формул). Он приближен к общепринятой математической записи.
Затем появились другие языки (Бэйсик, Пролог, семейство Си). Именно освоив эти машинно-независимые языки, филолог или бухгалтер может написать конкретную прикладную программу. Но чтобы машина могла с ней работать, нужен транслятор - программа, которая переводит написанное на язык компьютера. Создание компьютерного языка и трансляторов требует высокой квалификации специалистов. Кроме того, в этой сфере возникает много проблем, требующих теоретического разрешения.
Возникли новое направление исследований и новая специальность - теоретическое программирование. Оно опирается на такие разделы математики, как теория алгоритмов, математическая логика, алгебра, теоретические основы приближенных методов вычислений, теоретические основы методов поиска, теории графов, теории формальных языков и грамматик. Именно поэтому данным дисциплинам на факультетах вычислительной математики придается большое значение.
В середине 80-х годов начался массовый выпуск персональных компьютеров. Сначала выпускалось несколько сотен тысяч в год, затем несколько миллионов, а в настоящее время - около тридцати миллионов компьютеров ежегодно.
Проблема простой и доступной для каждого человека формы общения с компьютером - дружественного интерфейса, как говорят, приобрела иное социальное звучание. Поэтому задачи системных программистов расширились и качественно изменились. В самом деле, для того чтобы ориентироваться во множестве колонок с английскими абревиатурами, требуется известная подготовка, а "щелкнуть" мышью по иконке или по понятной надписи может и младший школьник.
Дружественный интерфейс основан на идее диалогового взаимодействия человека с машиной. Компьютеру в таком диалоге отводится роль проводника по дорогам своих уникальных возможностей и ненавязчивого руководителя действиями пользователя. От пользователя же требуется правильно формулировать свои запросы и выбирать дальнейшее шаги из вариантов, предлагаемых компьютером.
В целом можно сказать, что профессиональный багаж системного программиста включает языки программирования, трансляторы, методы сборки программ из готовых кусков, программы отладки в терминах языков высокого уровня, библиотеки готовых заготовок.
Операционщики - разработчики операционных систем
Операционные системы - сердце всего программного обеспечения компьютера. Они управляют вводом в машину информации, поступающей от клавиатуры или с дисков, размещением входных и выходных данных в запоминающих устройствах и манипуляцией с ними. Эти программы включают в работу трансляторы, загрузчики, отыскивают нужные библиотечные программы, отвечают за работу монитора, высвечивая необходимую информацию, и многое другое.
Сложность операционных систем с каждым годом возрастает, ведь растут и требования массового пользователя, и потребности науки и техники. Поэтому от специальности системного программирования как бы отпочковалась новая специальность - разработчики операционных систем, операционщики, как их называют.
С появлением мультипрограммирования (одновременного решения на компьютере нескольких задач, находящихся на разных стадиях исполнения) функции операционных систем особенно резко усложнились и возникло несколько сложных проблем.
Первая проблема связана со стратегией распределения ресурсов машины между конкурирующими между собой в динамике счета программами. Если стратегия распределения выбрана неудачно, то эффективность машины ощутимо снизится и пользователю придется долго ждать результатов, теряя драгоценное время, а иногда и деньги. При хорошей стратегии пользователи могут сэкономить и то и другое. Вторая проблема состоит в исключении влияния одних задач на решение других, одновременно находящихся в работе. Третья проблема - в распределении оперативной памяти между независимыми задачами. От рядового пользователя все эти проблемы, естественно, скрыты, и он не должен учитывать, что одновременно с его задачей в машине находятся многие другие.
Операционщикам массу новых головоломок доставил режим дистанционного многотерми нального доступа. Такой режим возникает, когда с центральной ЭВМ соединены терминалы, позволяющие одновременно работать на машине нескольким независимым пользовате лям. Терминалы представляют собой клавиатуру для набора данных и монитор, находящиеся от компьютера на большом расстоянии, в другом помещении или даже городе. Режим терминального доступа - своего рода предтеча сетевого взаимодействия.
Сетевики - разработчики программ сетевого взаимодействия
Объединение вычислительных машин, создание локальных и глобальных сетей потребова ло от операционных систем выполнения новых функций. Сравнительно недавно возникла новая специальность программистов-сетевиков.
Вся компьютерная сеть, с точки зрения управления ею, подразделяется на взаимосвязан ные уровни. Программы, реализующие алгоритмы управления на этих уровнях, называются сетевыми. Правила работы здесь строго стандартизированы специальными протоколами соответствующих уровней. Поэтому специалисты, разрабатывающие сетевые программы, должны хорошо знать систему протоколов, принятых в данной сети, правила формирования адресов точек сети, способы транспортировки информации и т. д.
В настоящее время глобальные компьютерные сети, самая известная из которых Интернет, способны передавать своим абонентам не только текстовую информацию, но и аудиовизуальную. Их собственность получила название "мультимедиа". Разработка программ, управляющих ею, достаточно сложна. Дело в том, что передача кодов изображений и звуков требует высокой скорости и, вообще говоря, ведет к большой загрузке линий связи. Поэтому необходимы программы, умеющие "сжимать" текстовую и аудиовизуальную информацию на входе и расшифровывать ее на выходе. Кроме того, на всех уровнях работы сети предусмотрены способы контроля правильности передачи, способы защиты информации от случайных и преднамеренных искажений. Так появилась необходимость в специалистах по защите информации от несанкционированного доступа. В этой области, тесно связанной с теорией кодирования и шифровального дела, существуют свои подходы, своя методика и свои технические приемы.
Базовики - специалисты по базам данных
Основной смысл развития глобальных сетей состоит в создании единого информацион ного пространства, не имеющего государственных границ и пределов расстояний. Это означает, что каждому абоненту сети следует предоставить возможность доступа к знаниям, накопленных человечеством и размещенных в многочисленных институтах разных стран и континентов. Хранится эта информация в специальных базах данных.
Прежде в компьютерных базах данных содержалось в основном буквенно-цифровая информация. В настоящее время в закодированном виде присутствует аудиовизуальная и иная по своему содержанию информация, например формулы химических соединений, таблицы интегралов, сведения о физических процессах, программные продукты и т. д.
Абонента сети не интересует, как устроена та или иная база данных, ему необходимо получить ответ на свой запрос к сети. К примеру, его интересует, в каких библиотеках можно найти редкую книгу. Система поиска, отвечающая на такого рода запросы, должна обратиться ко всем доступным для сети базам данных библиотек, сформулиро вать для каждой из них запрос, соответствующий требованиям конкретной модели. Именно базовики, специалисты по базам данных, создают эти системы. Это достаточно сложно, ведь система поиска должна определять, как устроена та или иная база данных и как к ней обратиться.
Машинные графики - специалисты по виртуальной реальности
Естественное желание придать тем вещам, которые мы видим на дисплее компьютера, привычный вид привело к необходимости изучения оптических эффектов в полупрозрач ных телах и других тонкостей, связанных с реалистичным видением сцен, высвечива емых на дисплее. Результаты этих исследований воплощаются в алгоритмы и программы машинной графики.
Здесь следует упомянуть компьютерные игры, в которых действия игрока и объектов игры имеют первостепенное значение. Увлечение компьютерными играми многие осуждают, но что касается машинной графики, то ее развитие в значительной степени было стимулировано именно популярностью компьютерных игр.
Различают двумерную графику, создающую изображения плоских фигур, и трехмерную графику, проектирующую на экран пространственные изображения. Ведутся работы по созданию с помощью компьютера голографических картин, создающих эффект пространственной реальности.
Начиная с 70-х годов широкое развитие получили тренажеры, управляемые компьютерами. Перед взором человека находится большой экран, на котором средствами машинной графики отображается внешняя ситуация. Она изменяется в зависимости от действий человека или по воле компьютера, создающего необходимые для тренировки ситуации. Например, тренажер, обучающий правилам взлета и посадки, имитирует то, что должен видеть летчик из своей кабины в ходе полета.
По воле фантазии разработчиков в недрах компьютера создается свой мир, населенный предметами и существами, способными действовать и общаться. Компьютер дает возможность человеку взаимодействовать с воображаемым миром. Это научно-техничес кое направление получило название виртуальная реальность.
Замечу, что многие ученые считают, что погружение человека в подобный искусственный мир может оказать очень вредное влияние на психику.
Но у виртуальной реальности есть важное и полезное назначение. Ее средства позволяют исследовать и изучать явления реального мира, физические и биологические процессы. Можно "посмотреть", что происходит внутри организма, внутри клетки, увидеть "изнутри", как работает реактивный двигатель, "походить" по Луне или по Марсу.
Системы виртуальной реальности требуют колоссальных вычислительных мощностей, специального сложного оборудования типа стереоскопических экранов, различного рода имитаторов сенсорных воздействий. Для решения задач, связанных с виртуальной реальностью, быстродействия отдельно взятой машины не хватает. Такие задачи приходится распараллеливать и использовать многопроцессорные супер-ЭВМ.
Новые специальности возникнут завтра
Компьютерные специальности можно сравнить с множественными побегами, которые дал единый корень. Мы с вами говорили только о профессиях, требующих серьезной математической подготовки, и увидели, как одна за другой отпочковывались новые специализации от системного программирования.
То же самое происходит и в других областях, связанных с компьютерами. Прикладные программы сегодня создают физики и филологи, химики и биологи, экономисты и обществоведы.
Появились специалисты сферы обслуживания, которые могут поставить на компьютере нужные программы, задать режимы его использования, сетевые администраторы, специалисты по защите компьютеров от вирусов и т. д.
Поэтому можно лишь в общих чертах сказать о специальностях, востребованных сегодня, но нет сомнений, что завтра потребуются все новые и новые компьютерные профессии.
См. в номере на ту же тему
Д. УСЕНКОВ - Профессия - пользователь.