Cтраница 3
Необходимо отметить также и негативные моменты использования языков высокого уровня. Порождаемые транслятором объектные программы менее эффективны, чем эквивалентные программы, составленные на ассемблере. При использовании языка высокого уровня трудно выдерживать жесткие временные ограничения в операциях ввода-вывода и манипулировать данными, формат которых не предусмотрен соглашениями языка. [31]
Разнообразные языки программирования различных уровней имеют различную степень сходства с разговорным ( естественным) языком. Языки программирования с высокой степенью сходства с разговорным языком значительно проще для понимания, однако по сравнению с языками низкого уровня требуют больше машинных команд для решения той же задачи, больший объем памяти для хранения данных и большее время для выполнения программ. Кроме того, использование языков высокого уровня возможно только при работе с вычислительными системами сравнительно сложной архитектуры. [32]
Но, если языки программирования с высокой степенью сходства с разговорным языком значительно проще для понимания, почему мы пользуемся языками низкого уровня. Это объясняется двумя причинами. Во-первых, при использовании языков высокого уровня по сравнению с языками низкого уровня требуется больше машинных команд для выполнения той же самой работы. Например, для реализации команды LET А 0 языка БЕЙСИК может понадобиться 100 и более машинных команд. В то же время двоичное слово 0100 1111 является машинной командой ( единственной. При работе с командами языка высокого уровня требуется больший объем памяти для хранения данных и большее время для выполнения. Следовательно, программы на машинном языке более эффективны, чем решающие те же задачи программы на языках высокого уровня. Во-вторых, использование языков высокого уровня возможно только при работе с вычислительными системами сравнительно сложной архитектуры. Так, для ведения диалога между программистом и машиной требуется специальное устройство ввода-вывода. Для выполнения за сравнительно короткое время программы, написанной на языке высокого уровня, необходимы мощный процессор и память значительного объема. [33]
По мере развития устройств управления ПР и другого технологического оборудования важную роль приобретает технология разработки ПО. Действительно, объем ПО в зависимости от назначения устройства и языка программирования в типичных случаях составляет тысячи и десятки тысяч команд. Ситуация осложняется тем, что использование языков высокого уровня часто не обеспечивает требований малых систем реального времени вследствие недостаточной эффективности соответствующих трансляторов по памяти и быстродействию генерируемых программ. Это приводит к необходимости широкого использования языков низкого уровня типа ассемблера или макроассемблера, что влечет за собой увеличение числа операторов в исходной программе. [34]
Обычно ЭФФЕКТИВНОСТЬ является антиподом МОБИЛЬНОСТИ. Например, программа, в которой не используются 28 бит 60-битового слова, как это требуется для обеспечения мобильности, не может считаться эффективной. В связи с тем, что программирование почти всегда выполняется с использованием языков высокого уровня, существуют специальные методы написания программ, позволяющие создавать входные программы, оптимизирующие работу транслятора. [35]
Лишь некоторые типы вычислительных машин могут непосредственно воспринимать язык высокого уровня. Поэтому для трансляции программы, написанной на языке высокого уровня, в последовательность машинных команд, с помощью которых решается поставленная задача, необходим компилятор. Поскольку для каждого оператора высокого уровня может потребоваться от пяти до десяти машинных команд, совершенно очевидно, что по сравнению с языком ассемблера использование языка высокого уровня для составления программ приводит к сокращению времени и стоимости их разработки. [36]
Следует отметить также серию научно-исследовательских отчетов корпорации CIRAD [9, 10] о работах в области эксплуатационной надежности программного обеспечения; в этих отчетах можно найти полезные основополагающие сведения по проблеме, а также ряд практических рекомендаций по методам программирования и метрике эксплуатационной надежности. Среди методов программирования рассматриваются, например, концептуальная группировка, нисходящее программирование, модульное построение; в качестве характеристик программного обеспечения, определяющих удобство его эксплуатации, называются осмысленность, единообразие, компактность, понятность, переносимость на другие машины, наличие комментариев, скобочных группировок и имен для ссылок. Прекрасный обзор различных современных подходов к обеспечению мобильности программного обеспечения, таких, как моделирование одной ЭВМ на другой, эмуляция, интерпретация, самозагрузка программ, использование языков высокого уровня, дан в работе Уоррена [11]; основное внимание автор уделяет рассмотрению вопросов машинной независимости лингвистических процессоров. [37]
![]() |
Однокристальная микро - ЭВМ Электроника С5 - 31. [38] |
Особое значение имеет микропроцессорная техника в создании и широком внедрении вычислительных средств во все сферы жизни. Программируемые микрокалькуляторы и персональные микро - ЭВМ существенно облегчают труд инженера, техника, студента, школьника. Современные персональные микро - ЭВМ, имеющие габариты портативных транзисторных радиоприемников, обладают развитым математическим обеспечением и, будучи подключены к обычному телевизору, позволяют решать достаточно сложные задачи с использованием языков высокого уровня. Настольные микро - ЭВМ ( например, диалоговый вычислительный комплекс ДВК-2, система ВУМС-1) можно использовать как автономные вычислительные средства с достаточно широкими возможностями или как интеллектуальные терминалы мощных вычислительных систем, базирующихся на больших ЭВМ. [39]
Технология разработки программного обеспечения ( ПО) основывается на общих принципах структурного программирования, но имеет некоторые особенности, связанные со спецификой специализированных микропроцессорных систем - хранением основной части программного обеспечения в ПЗУ. Объем программ, записываемых в ПЗУ, занимает от нескольких сотен до нескольких десятков тысяч байт. Для возможности размещения программы в пределах прямо адресуемого адресного пространства, а также для уменьшения потребления, габаритных размеров и стоимости микропроцессорной системы необходимо экономить память при программировании. Использование языков высокого уровня - ПЛ / 1, ФОРТРАН и др. - ограничено, так как объектные модули при использовании этих языков значительно больше по объему, чем при использовании ассемблера. Библиотека хранится на дисках; необходимые модули ее присоединяются к программам пользователя и совместно транслируются. Объем исходных программ, разрабатываемых пользователем, при этом уменьшается в несколько раз по сравнению с работой без использования библиотеки. [40]
Гораздо лучшим способом разработки программ для использования в специализированных приложениях оказывается применение хорошей системы разработки. Это настоящая система микро - ЭВМ, укомплектованная алфавитно-цифровым экраном, дисками и большой памятью. Она имеет программное обеспечение для редакции текстов и программ, трансляции и отладки. Такие системы обычно позволяют также производить вычисления с использованием языков высокого уровня, таких, как Фортран и Бейсик. [41]
Взаимодействие между программами в больших системах ПО для сохранения модульной структуры производится по строгим правилам. Это взаимодействие осуществляется вызовом процедуры, в описании которой указано число параметров, подлежащих обмену. Вызывающая процедура должна обеспечивать число и тип параметров, которые оговорены в описании вызываемой процедуры. Процедурный способ обмена информацией между программами основан на использовании языков высокого уровня и применяется в основном для обмена в программах процессов и мониторах. Один процесс может запросить другой о проведении некоторой операции, требующей значительного времени, например установления соединения в KTI. Первый процесс ждет ответного сообщения о том, что задание выполнено. В ответном сообщении могут содержаться и некоторые результаты выполнения задания. Таким способом несколько процессов могут взаимодействовать друг с другом. [42]
Эффективность программирования в кодах, возможно, наиболее серьезное возражение против языков высокого уровня. Конечно же, с точки зрения микроуровня хороший программист на машинном языке может создать более эффективную программу, чем компилятор. Однако в системе, содержащей миллион команд, фактор эффективности кодирования не так очевиден. Опытный программист, перекодируя ПЛ / 1-программу в коды машины, может увеличить скорость решения или эффективность распределения памяти в два-три раза. Но с точки зрения макроподхода к проблеме эффективности совершенно не очевидно, что истинная экономия сводится только к случайной экономии отдельных байтов или слов. Часто оказывается более важным то, что при использовании языка высокого уровня алгоритм решения задачи становится проще и нагляднее. К сказанному следует также добавить, что в действительности программист, создавая программу на машинном языке, редко имеет время для ее всесторонней оптимизации. [43]
Книга делится на четыре логически связанные части. Эта часть включает в себя изучение типичных проблем проектирования БД. Здесь же поясняется, что некоторые запросы к БД требуют скорее использования языков высокого уровня, нежели простого применения команд БД. Образцы запросов для dBase II и dBase III используются по всему тексту для выделения и иллюстрации определенных аспектов представляемой теории. [44]
Но, если языки программирования с высокой степенью сходства с разговорным языком значительно проще для понимания, почему мы пользуемся языками низкого уровня. Это объясняется двумя причинами. Во-первых, при использовании языков высокого уровня по сравнению с языками низкого уровня требуется больше машинных команд для выполнения той же самой работы. Например, для реализации команды LET А 0 языка БЕЙСИК может понадобиться 100 и более машинных команд. В то же время двоичное слово 0100 1111 является машинной командой ( единственной. При работе с командами языка высокого уровня требуется больший объем памяти для хранения данных и большее время для выполнения. Следовательно, программы на машинном языке более эффективны, чем решающие те же задачи программы на языках высокого уровня. Во-вторых, использование языков высокого уровня возможно только при работе с вычислительными системами сравнительно сложной архитектуры. Так, для ведения диалога между программистом и машиной требуется специальное устройство ввода-вывода. Для выполнения за сравнительно короткое время программы, написанной на языке высокого уровня, необходимы мощный процессор и память значительного объема. [45]