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