Cтраница 2
При создании средних по размеру приложений ( несколько тысяч строк исходного кода) используется структурное программирование, идея которого заключается в том, что структура программы должна отражать структуру решаемой задачи, чтобы алгоритм решения был ясно виден из исходного текста. Для этого надо иметь средства для создания программы не только с помощью трех простых операторов, но и с помощью средств, более точно отражающих конкретную структуру алгоритма. С этой целью в программирование введено понятие подпрограммы - набора операторов, выполняющих нужное действие и не зависящих от других частей исходного кода. Программа разбивается на множество мелких подпрограмм ( занимающих до 50 операторов - критический порог для быстрого понимания цели подпрограммы), каждая из которых выполняет одно из действий, предусмотренных исходным заданием. Комбинируя эти подпрограммы, удается формировать итоговый алгоритм уже не из простых операторов, а из законченных блоков кода, имеющих определенную смысловую нагрузку, причем обращаться к таким блокам можно по названиям. Получается, что подпрограммы - это новые операторы или операции языка, определяемые программистом. [16]
Мы должны признать, что замкнутая подпрограмма является одним из величайших изобретений программного обеспечения. Оно пережило три поколения компьютеров и переживет еще больше, потому что воплощает одну из наших фундаментальных абстракций. К сожалению, важность-подпрограммы недооценивалась при создании третьего поколения компьютеров, в котором большое число явно присвоенных имен регистров арифметического устройства приводит к большим непроизводительным затратам при реализации подпрограмм. Но даже это не погубило понятие подпрограммы, и нам только остается молиться о том, чтобы эта мутация не передалась по наследству. [17]
![]() |
Представление непримитивного события Выходы прямоугольником. [18] |
Петри и другие предложили представлять непримитивные события в сети Петри в виде прямоугольника [244], как показано на рис. 3.5, а примитивные события - планками, как мы делали это раньше. Это упростит некоторые сети Петри, например, такую, как на рис. 3.6, которая эквивалентна сети Петри, изображенной на рис. 3.3. Но так как в принципе предложенное понятие выражено в терминах более примитивных конструкций, мы не будем использовать обозначение в виде прямоугольника. Прямоугольник может иметь существенное значение при моделировании сложных систем на нескольких иерархических уровнях, так как он позволяет выделить в отдельный элемент сети целые подсети. Это в некотором смысле подобно понятиям подпрограммы или макроса в языках программирования. [19]
Но вместе с тем, как отмечает Менабреа, с точки зрения быстроты вычислений иногда выгоднее каждый раз производи. Для этого используются наборы перфокарт, которые можно подключать - по ходу решения к любой задаче. Мы бы сказали теперь, что это был способ хранения информации не в виде перечисления всех объектов - данных, а в виде алгоритма, программы получения любого из этих объектов. Тем самым Менабреа уже затрагивает вопрос о противоречии между объемом таблиц данных, хранимых в готовой форме, и скоростью доступа к элементам этих таблиц, а также предлагает радикальный способ разрешения этого противоречия - хранить не данные, а программу. Вместе с тем здесь фактически вводится понятие подпрограммы. [20]