Имеется Код Программы на Языке Паскаль


Языки программирования, базовый курс.
Сентябрь 20, 2016 – 09:22
Число больных гриппом в школе

—Материя это объективная реальность,
данная нам в ощущениях

—Кем данная ?

От внешнего вида программ перейдем к их функционированию. И тут же обнаружим одно важное разделение - на программный код и данные. Обычно предполагается, что существует некое описание вычислительных или иных алгоритмических действий, отдельное от тех данных, над которыми эти действия выполняются. Надо сказать, что такое разделение существует не во всех языках. Иногда явного различия между данными и алгоритмом нет, и программист сам определяет, что считать данными, а что программой. Очевидно, что в таких языках возможна обработка программы как данных, и даже модификация выполняемого кода в процессе выполнения. Разумеется, почти в любом языке программирования можно открыть файл, в котором находится текст программы, и что-то с ним делать, но здесь речь идет именно об использовании данных самой программы как исполняемого кода и наоборот. Если бы язык Pascal давал нам такую возможность, мы бы могли писать что-то вроде:

var p, s: string; a:integer; begin readln(s); p:=’a:=2*’ +s; execute(p); writeln(a); end.

При вводе строки ‘2+2’ программа печатала бы нам число 6. Понятно, что такая возможность дает нам больше возможностей для ошибок, чем реальной пользы. Поэтому смешивать программы и данные обычно позволяется только в языках с очень простым синтаксисом, где вероятность ошибки существенно ниже.

С точки зрения компьютера, который в конечном итоге выполняет программу, ситуация тоже двойственная. Известно как минимум две основных архитектуры компьютеров, так называемые гарвардская и фон-Неймановская. Вторая из них, наиболее распространенная в настоящее время, предполагает, что данные и выполняемый код находятся в одной и той же памяти, и физической разницы между ними нет. Когда программа загружается с диска в обычном компьютере, она, как и любой другой файл, рассматривается как данные для помещения в память. После загрузки программы она начинает выполняться, и тут эти данные становятся программой. Гарвардская архитектура, напротив, разделяет программу и данные физически, помещая их в разные “хранилища”. Выполнить данные как программу процессор не может, хотя обычно возможность считать программу у него есть. По такому принципу устроено большинство микроконтроллеров, которые встраивают в различные бытовые приборы, автомобили и другие устройства.

Source: speleoastronomy.org
Похожие публикации