Cтраница 2
Этим операциям, однако, необходим строительный материал для конструирования объектов нового типа, поэтому конструкция языка программирования, служащая для создания типа - конструктив типа - должна содержать также указания, данные какого ( или каких) из существующих типов являются таким строительным материалом. Такое указание называется представлением типа, а используемые для этого типы - представляющими типами. Все операции нового типа реализуются в терминах операций представляющего его типа; как представление типа, так и реализация его операций скрываются в конструктиве типа таким образом, что на уровень использования выносится абстрактное описание операций, содержащее в простейшем случае имена и типы их операндов. [16]
Возможно, что экстремальным шагом в дальнейшем совершенствовании архитектуры ЭВМ было бы создание такого оборудования, которое обеспечивает непосредственную реализацию конструкций языка программирования высокого уровня. Последняя машина спроектирована для выполнения высокоуровневого языка SPL, объединяющего ряд черт таких языков, как ПЛ / 1, Алгол и АПЛ. Данная ЭВМ не имеет операционной системы, а все традиционные функции ОС выполняет машина. Естественно, что достижение заданного уровня надежности системы обработки информации должно здесь решаться на аппаратурном уровне, что сделать значительно проще при существующих успехах в достижении надежности сложных технических систем. [17]
Основные недостатки метода - в том, что программы, правильность которых доказана, могут все же содержать ошибки; кроме того, доказательства сложны, утомительны и требуют много времени, а многие конструкции широко распространенных языков программирования не поддаются доказательству. Ниже приводится более детальный список имеющихся трудностей. [18]
Конструкция языка программирования оказывает определенное влияние на надежность ПО, несмотря на то, что большая часть ошибок попадает в программу до того, как она будет закодирована на каком-либо языке программирования. Однако использование некоторого набора конструкций языка программирования, порождающих двусмысленность в процессе трансляции программ, может дать такую неожиданную по серьезности и неудачную по времени возникновения ошибку, которая повлечет дорогостоящие последствия. Обычно в этом случае ссылаются на пример неудачного исхода первого полета на Венеру американской автоматической станции из-за ошибки в списке оператора цикла на Фортране, где вместо разделителя запятой в списке была поставлена точка. [19]
Тогда объекты, обрабатываемые визуальными языками, можно рассматривать как объектные иконы или иконы с логической частью и физической частью, представляющими объект. Подобным образом конструкции языков программирования в визуальном языке можно рассматривать как процессные иконы или иконы с логической частью и физической частью, представляющими вычислительный процесс. Различие между объектным и процессным иконами зависит как от контекста, так и от интерпретации. Например, дорожный знак с диагональной линией внутри крута может быть интерпретирован компьютерной визуальной системой как стоп-сигнал. В нашей интерпретации это пример объектного икона. [20]
Имеются различные предложения по расширению реляционной алгебры с той целью, чтобы можно было выражать большее множество операций над отношениями. Эти предложения сводятся в общем к добавлению некоторых конструкций языков программирования или операторов неподвижной точки. [21]
Имеются различные предложения по расширению реляционной алгебры с той целью, чтобы можно было выражать большее множество операций над отношениями. Эти предложения сводятся в общем к добавлению некоторых конструкций языков программирования или операторов неподвижной точки. [22]
Несмотря на то, что требование эффективность любой ценой весьма быстро теряет свое значение по мере снижения стоимости аппаратных средств и роста их производительности, остается ряд областей применения, для которых вопросы эффективности по-прежнему имеют огромное значение, причем эффективность языков программирования в таких случаях существенно влияет на способы их использования. В частности, программисты обычно стараются избегать использования тех конструкций языков программирования, которые считаются неэффективными. Аналогично, программисты обычно стремятся к активному использованию тех конструкций языков программирования, которые считаются эффективными. Примером этого может служить широчайшее распространение использования общих ( COMMON) блоков в языке Фортран. [23]
Поскольку тип данных определяется множеством операций ( функций), а каждая конструкция языка программирования является некоторым типом данных, то программа, написанная на алгоритмическом языке, представляет собой, по сути дела, композицию функций и функциональных форм, что обычно считается свойством функционального языка программирования. [24]
Два рассмотренных типа визуальных языков не исчерпывают всех возможностей. Объектам, которые обрабатываются визуальными языками, может быть свойственна визуальность или невизуальность, однако они обязательно должны допускать визуальное представление. Конструкции языков программирования могут быть визуальными или линейными. [25]
Конструкция языка программирования оказывает определенное влияние на надежность ПО, несмотря на то, что большая часть ошибок попадает в программу до того, как она будет закодирована на каком-либо языке программирования. Однако использование некоторого набора конструкций языка программирования, порождающих двусмысленность в процессе трансляции программ, может дать такую неожиданную по серьезности и неудачную по времени возникновения ошибку, которая повлечет дорогостоящие последствия. Обычно в этом случае ссылаются на пример неудачного исхода первого полета на Венеру американской автоматической станции из-за ошибки в списке оператора цикла на Фортране, где вместо разделителя запятой в списке была поставлена точка. [26]
Изучение схем программ преследует по крайней мере три принципиальные цели. Рассматриваемые схемы воплощают как раз те особенности или конструкции языков программирования, которые кажутся существенными, - наше исследование и предназначено для того, чтобы показать, являются ли они действительно существенными в каком-то смысле. Во-вторых, развить теорию, обосновывающую оптимизацию программ, опять-таки независимо от какой-либо конкретной машины или языка программирования. И третьей целью является нахождение общих методов ( например, систем правил вывода или преобразований программ) для проверки правильности и контроля данной программы по ее спецификациям. Разумеется, эти цели не являются независимыми. [27]
Несмотря на то, что требование эффективность любой ценой весьма быстро теряет свое значение по мере снижения стоимости аппаратных средств и роста их производительности, остается ряд областей применения, для которых вопросы эффективности по-прежнему имеют огромное значение, причем эффективность языков программирования в таких случаях существенно влияет на способы их использования. В частности, программисты обычно стараются избегать использования тех конструкций языков программирования, которые считаются неэффективными. Аналогично, программисты обычно стремятся к активному использованию тех конструкций языков программирования, которые считаются эффективными. Примером этого может служить широчайшее распространение использования общих ( COMMON) блоков в языке Фортран. [28]
Фактом является то, что они не помогают программисту мыслить в терминах абстракций, подходящих к решаемой задаче, и не содействуют более тщательной проверке транслятором с используемого языка программирования правильности. Вместо этого они просто обеспечивают представление структур, соответствующих аппаратным средствам, но наряженных в одежды конструкций языков программирования высокого уровня, оставляя программисту решение задачи поиска подходящих абстракций. Поэтому при использовании языков программирования высокого уровня, имеющих такие средства, преимущества по сравнению с использованием языка ассемблера предельно малы. Возможно, что использование таких языков программирования высокого уровня и повышает производительность труда программиста, измеряемую числом написанных им за день строк. Но использование таких языков программирования высокого уровня не обеспечивает решение более важной задачи обеспечения программиста средствами, облегчающими поиск структур, наилучшим образом соответствующих решаемой задаче, наиболее эффективных способов решения задачи и создания надежного программного обеспечения. [29]
Когда модуль или процедура программы на языке проектирования закончены, они должны быть конвертированы в программу на языке программирования. Как указывалось ранее, это означает преобразование каждой операции языка проектирования в комментарий и вставление соответствующих операций языка программирования в текст. Преобразование стандартных конструкций языка проектирования в комментарии, раздвигание этих комментариев для того, чтобы было можно вставить текст на языке программирования, и вставка конструкций языка программирования могут быть выполнены автоматически. [30]