Инженер-программист (языковые процессоры). С. Н. Баранов
При постановке задачи на ЭВМ главным инструментом в ее решении является формализованный язык, на котором взаимодействуют человек и ЭВМ. С одной стороны, этот язык должен быть удобен для специалиста, то есть отражать принятые в этой области понятия и методы решения задач. С другой стороны, он должен быть достаточно формализованным, чтобы допускать однозначный перевод в действия ЭВМ с помощью, известных методов.
Например, биологи, изучающие влияние различных факторов на параметры некоторой популяции животных (ее количественные и качественные характеристики), предлагают теоретические модели, которые описывают различные взаимозависимости между параметрами. Например, зависимость среднего веса животных в данной возрастной группе от их затрат на добывание единицы корма; эти затраты, в свою очередь, зависят от общего числа имеющегося корма, его распределения по площади обитания и численности данной популяции и т. д.
Чтобы с помощью таких моделей можно было решать практические задачи, например, регулирование численности данной популяции с сохранением экологического равновесия, нужно разработать программу для ЭВМ, моделирующую поведение популяции. Входными данными для этой программы являются параметры, описывающие моделируемую популяцию, и предлагаемые теорией зависимости одних параметров от других. Наблюдая экспериментально различные популяции в природе, можно с помощью этой программы проверять соответствие теоретической модели экспериментальным данным и на основе этого уточнять теорию. Далее, на основе такой проверенной теоретической модели, задавая только часть параметров популяции, можно вычислять остальные, получая, таким образом, научно обоснованные прогнозы поведения популяции в новых условиях.
Разработка языковых процессоров
После того как такая программа разработана, с ней будут взаимодействовать не профессиональные программисты, а специалисты-биологи. А они не станут пользоваться данной программой, если общение с ней будет трудным и неестественным. Поэтому надо подготовить для биологов удобные и понятные способы задания параметров популяции и теоретических зависимостей между ними и выдачи результатов моделирования, разработать входной и выходной языки для данной программы.
Язык общения с ЭВМ может быть одним из уже имеющихся формализованных языков, либо специально созданных для данной задачи или класса задач. Например, большое распространение получили языки ФОРТРАН для численных расчетов по формулам, КОБОЛ для задач бухгалтерского учета, СНО-БОЛ для обработки текстовой информации, АЛГОЛ для научных приложений и т. д. Эти языки реализованы для многих типов ЭВМ, созданы программы, позволяющие электронно-вычислительным машинам исполнять те или иные действия, сформулированные в виде предложений на этих языках.
Разработка таких программ-трансляторов, переводящих текст с одного формализованного языка на другой, выделилась в отдельное направление системного программирования - разработку языковых процессоров. Практические потребности научно-технического прогресса стимулируют быстрый рост исследований в этой области, поскольку, с одной стороны, наблюдается все возрастающее разнообразие специализированных языков, а с другой стороны, создаются все новые типы ЭВМ со все большими возможностями.
Разработчик языковых процессоров должен уметь быстро и эффективно реализовать новый язык на данной ЭВМ, то есть создать соответствующую программу-транслятор. При этом зачастую эта реализация оказывает встречное влияние на реализуемый язык - в первоначальную версию языка вносят различные изменения, связанные с неучтенными ранее требованиями. В дальнейшем могут быть выявлены новые требования, которые приводят к изменениям в языке и реализации и т. д. Обычно над такими проектами работают хорошо слаженные коллективы от 3 до 10 и более программистов.
Разработчик языковых процессоров должен быть, прежде всего, высококвалифицированным программистом, чтобы быстро и качественно создавать свои программы. Для этого необходимо уметь программировать на нескольких языках, хорошо представлять себе их сравнительные возможности, знать особенности операционных систем и способы реализации тех или иных языковых конструкций на ЭВМ разной архитектуры, следить за последними достижениями в этой области. Ему требуется основательная общематематическая подготовка и навыки аналитического мышления, чтобы находить точную и корректную постановку задачи трансляции и обосновывать правильность полученных на ЭВМ результатов. Помогают ему в работе хорошая память и умение концентрировать внимание на конкретном вопросе.
Чтобы быть в курсе последних достижений на мировом уровне, необходимо хорошее знание английского языка. Во-первых, потому что много научной литературы по этому вопросу издается на английском языке. Во-вторых, во многих формализованных языках, прежде всего в языках программирования, традиционно используется англоязычная мнемоника. У разработчика языковых процессоров должен быть широкий научный кругозор, так как ему приходится привлекать результаты разработок в области инженерной психологии, технической эстетики, прикладной лингвистики и других дисциплин.
Важной особенностью работы инженера-программиста и, в частности, разработчика языковых процессоров является то, что ее конечный продукт - программа или программный комплекс - создается как бы "из ничего", здесь не требуется никаких материальных затрат, кроме машинного времени. Каждую новую идею можно тут же воплотить в действующую программу при очередном сеансе работы на ЭВМ. В то же время такая возможность быстрой реализации возникающих творческих замыслов таит в себе опасность быстрого разрастания программы в неуправляемый конгломерат, который уже невозможно отладить. А если такая программа используется как технологическое звено в каком-нибудь производственном процессе, то материальные потери от ошибок в программах могут оказаться огромными. Поэтому требуется особая тщательность, продуманность и обоснованность любых изменений в действующих программах. В характере специалиста должна быть эмоциональная сдержанность, не полагающаяся на первое впечатление, что "в программе все в порядке".
Инженеры-программисты, разработчики языковых процессоров, работают в группах, отделах и лабораториях системного программирования в научно-исследовательских и проектных организациях и на производстве.
Работа в этой области дает человеку возможность выявлять свои творческие способности в создании средств взаимодействия людей с ЭВМ. Удачные находки таких специалистов быстро становятся общим достоянием и получают широкое распространение.
Инженеров-программистов, разработчиков языковых процессоров, готовят в рамках специальностей "Системное программирование" и "Математическое обеспечение ЭВМ" на физико-математических факультетах университетов и политехнических институтов.