Машинно-ориентированные и универсальные языки программирования

Программное обеспечение, реализованное на машинно-ориентированных языках (автокоде, Ассемблере), было разработано на первом этапе использования ЭВМ для решения задач моделирования (при отсутствии более удобных средств программирования). Машинно-ориентированные языки используют в тех случаях, когда главным требованием к программной реализации модели является эффективность ее функционирования (минимальные время решения задачи на ЭВМ и объем оперативной памяти, занимаемой программой). В последнем случае считается, что потери, возникающие из-за неэффективности программного обеспечения моделирования, будут более значительны, чем затраты труда и времени на его разработку.
В большинстве практических ситуаций использование машинно-ориентированных языков для разработки прикладного обеспечения считается неразумным [73]. Наиболее рациональным следует признать использование машинно-ориентированных языков в качестве инструмента лишь программистов-профессионалов для построения сложных и ответственных системных программ или для реализации тех фрагментов имитационных моделей или систем, которые в наибольшей степени требуют оптимизации. В этом случае возможен подход, когда первоначальная версия программы пишется на языках высокого уровня (универсальных или специализированных), затем определяются оптимизируемые части программ, которые и переписываются уже на машинно-ориентированном языке. Большинство языков высокого уровня позволяет пользователю писать подпрограммы на языке Ассемблера для использования возможностей, не предусмотренных или трудно программируемых в данном языке.
Значительное число задач моделирования все еще реализуется на универсальных алгоритмических языках программирования (Фортран, ПЛ/1 и др.), что характерно для текущего этапа программирования прикладных задач. Алгоритмические языки являются машинно-независимыми, что делает написанные на них программы более мобильными, чем при использовании машинно-ориентированных языков. Как правило, программы, реализованные на Фортране, ПЛ/1 и. других языках высокого уровня, воспринимаются легче, чем программы на Ассемблере или автокоде. Процесс разработки программы становится более эффективным, так как, во-первых, операторы языка высокого уровня являются более мощными, чем команды Ассемблера, и, во-вторых, эти языки, как правило, имеют более развитые средства отладки и документирования программ. При наличии оптимизирующих компиляторов основных языков высокого уровня вопрос о более высокой эффективности программы, написанной на Ассемблере, снимается.
Машинно-ориентированные и универсальные языки программирования высокого уровня, как средство построения имитационных моделей, позволяют обеспечить, в первую очередь, высокие эксплуатационные показатели качества создаваемого программного обеспечения имитационных исследований. Однако у них следует отметить низкие функциональные, технологические и, как следствие, экономические показатели. В частности, общим недостатком машинно-ориентированных и универсальных языков программирования при использовании их в качестве средств разработки имитационных моделей является то обстоятельство, что в пределах этих средств программирования нет аппарата для организации автоматического сбора, анализа и вывода результатов моделирования, организации имитации (управления «модельным временем») и машинного эксперимента в целом. В связи с этим при разработке программ имитационных моделей помимо разработки собственно модели процесса дополнительно пользователь должен решать и большое число трудоемких обеспечивающих задач.
Машинно-ориентированные и универсальные языки высокого уровня целесообразно использовать лишь для программирования небольших задач моделирования, когда применение других средств по какой-либо причине невозможно или нецелесообразно (отсутствие более эффективных средств в составе математического обеспечения используемой ЭВМ, требования по стыковке с компонентами других программных систем, в составе которых будет использоваться разрабатываемая модель). Указанные средства могут использоваться и для программирования обеспечивающих и расчетных функций в рамках больших имитационных систем.