Добавлен: 29.03.2023
Просмотров: 330
Скачиваний: 4
Компиляция программы состоит из двух действий: анализа или выявление точности записи первоначальной программы в соответствии с принципами построения языковых конструкций входного языка, и синтеза – порождения равноценной программы в машинных кодах.[[25]] Для трансляции программы компилятор производит анализ текста. При наличии ошибок объектный код не строится. Если программа состоит из нескольких частей или использует библиотеки, то её объектный код не содержит всех необходимых команд. Компоновщик связывает все составные части программы в единое целое и создает выполняемый файл.[[26]]
Компьютером выполняется уже оттранслированная программа .Также можно перевести программу на промежуточный язык, максимально приближенный к языку машинных команд, который был бы независим от архитектуры конкретного компьютера. В дальнейшем программа на промежуточном языке может быть исполнена специальной программой - интерпретатором. Существует также вариант " компиляции на лету", когда фрагмент программы, который должен быть исполнен непосредственно перед выполнением переводится с промежуточного языка на язык машинных команд. [[27]]
Потеря информации о программе это главный недостаток трансляции. Очень сложно порой найти ошибку, так как трудно определить какой из операторов программы выполнялся на начальном языке, и что за объекты данных использовались в нем. Кроме того, в отличии от команды машинного языка, оператор на языке высокого уровня содержит гораздо больше информации, поэтому исполняемая форма программы занимает большой объем места в памяти.[[28]]
Интерпретация предполагает пооператорную трансляцию и последующее исполнение оттранслированного оператора начальной программы. Исходя из этого, можно отметить два существенных недочета метода интерпретации. Во-первых, данная программа в течение всего процесса выполнения первоначальной программы должна находиться в памяти ЭВМ, тем самым занимая достаточный объем памяти. Во-вторых, существенно снижается производительность работы программы, из-за процесса трансляции одного и того же оператора, который повторяется столько раз, сколько раз должна быть исполнена эта команда в программе.[[29]]
Метод, когда посредством программы (интерпретатора), выполняемой на аппаратном компьютере, создается виртуальный компьютер с машинным языком высокого уровня, называется программной имитацией. Интерпретатор декодирует и исполняет каждый оператор программы на языке высокого уровня в определенной очередности и производит вывод результирующих данных, определяемый этой программой.[[30]]
Так как трансляторы-интерпретаторы удобны при разработке и отладке исходных программ, несмотря на свои недостатки, они получили достаточное распространение.[[31]]
1.3 Языки программирования и сеть Интернет
По мере того, как развивалась глобальная сеть, было разработано множество языков программирования, которые были специально адаптированы для Интернета.
Характерные особенностями состоят в том, что они являются интерпретируемыми, программы- в начальных текстах, а интерпретаторы для них распространяются бесплатно. Эти языки называют скрипт-языками.[[32]]
Основное предназначение языков веб – программирования эта работа с веб - технологиями. Условно их можно разделить на серверные и клиентские.
Программы на клиентских языках обрабатываются на языке пользователя, зачастую выполняются браузером. В этом и заключается главная проблема клиентских языков – результат выполнения программы (скрипта) полностью зависит от браузера пользователя. Говоря иначе, если пользователь запретил выполнять клиентские программы, они исполняться не будут, как бы того не желал программист. Помимо этого, бывает, что в разных браузерах или в разных версиях одного и того же браузера, может выполняться по-разному один и тот же скрипт. Существуют и положительные стороны, если программист возлагает большие надежды на серверные программы, то может упростить их работу, снизив нагрузку на сервер за счет программ, которые исполняются на стороне клиента, так как перезагрузки страницы они требуют не всегда.
Самыми распространенными на сегодняшний день клиентскими языками являются:
-HTML;
-CSS;
-JavaScript;
VBScript;
-ActionScript;
-Java.[[33]]
Браузер – (он же веб-обозреватель) специальная программа, созданная для просмотра веб-сайтов.[[34]]
Когда пользователь запрашивает какую-либо страницу (переходит на эту страницу по ссылке или вводит адрес в адресной строке своего браузера), то она сначала обрабатывается на сервере, т.е. выполняются все программы, связанные с этой страницей, и только потом она возвращается к посетителю по сети в виде файла. Данный файл может иметь одно их перечисленных расширений: HTML, PHP, ASP, ASPX, Perl, SSI, XML, DHTML, XHTML.
Работа программ уже полностью зависима от сервера, на котором располагается сайт, а также от того, какая версия того или иного языка поддерживается.
К серверным языкам программирования относят:
-PHP;
-Perl;
-Python;
-Ruby;
- любой .NET язык программирования (технология ASP.NET);
-Java;
-Groovy.[[35]]
На основании изложенного выше, можно сделать вывод, что языки программирования высокого уровня отличаются от языка Ассемблера. Программа написанная на Ассемблере зависит от архитектуры компьютера, в то время как программа написанная на языке программирования высокого уровня машинно-независима. Кроме того, разрабатывать программы на языке высокого уровня проще, так как он максимально приближен к естественному для нас языку. Алфавит языков высокого программирования шире, а следовательно нагляднее. Но помимо плюсов, у языков высокого уровня есть свои недостатки: программы написанные на них занимают больше памяти и выполняются медленнее, чем программы написанные на машинных языках.
2 Языки программирования высокого уровня
2.1 Основные компоненты языка
Основными требованиями, которые можно предъявить к языкам программирования служат: их наглядность, единство, гибкость, модульность, однозначность.
Под наглядностью понимается по возможности использование в языке уже существующих символов, которые понятны и хорошо известны программисту и любому обывателю. Что же касается единства, то тут речь идёт об использовании родственных или одних и тех же понятий в различных частях алгоритма. По возможности число таких символов должно быть минимальным. Ещё одним требованием к языку является его гибкость, или возможность сравнительно несложного и удобного описания наиболее часто используемых приёмов математических вычислений при помощи существующего в языке доступного набора изобразительных средств. Модульность это средство описания сложных алгоритмов в виде совокупности простых модулей, составленных отдельно и использованных в разнообразных сложных алгоритмах. Под однозначностью понимается недвусмысленность записи любого алгоритма. Её отсутствие при решении задач может привести к неправильным ответам.
Лексическая структура языка программирования – это набор элементарных правил, определяющих, как пишутся программы на этом языке. Данный набор задает вид имен переменных, символы, используемые для комментариев, и правила отделения одной инструкции от другой.[[36]]
Под элементами языка понимают его основополагающие конструкции, которые используются для написания программ.[[37]] Основными составляющими любого языка являются алфавит, семантика и синтаксис.[[38]]
Алфавит - характерный набор символов для определенного языка, из которых может состоять любой текст на этом языке. Никакие иные для записи текстов символы не допускаются.
Синтаксис – система правил, которая разрешает определённые конструкции из букв алфавита. Посредством этих конструкций представлены отдельные элементы алгоритма и алгоритм в целом, написанные на данном языке программирования.
Семантика – система правил толкования отдельных конструкций языка, позволяющих четко воспроизвести процесс обработки данных по указанной программе.[[39]]
Синтаксические правила показывают, как данное понятие образуется из букв алфавита или других понятий, а семантические правила определяют свойства данного понятия в зависимости от свойств понятий используемых в нём.[[40]]
В естественном языке слово состоит из морфем, фраза из слов, предложения из фраз, текст из предложений, а книга из глав. Подобную аналогию можно проследить и в языках программирования: фразы и предложения сроят с помощью операторов, отдельные смысловые единицы с помощью функций и объектов, набор смысловых единиц нам одну тему объединяют в библиотеки (модули). То есть компьютерные программы представляют из себя некий набор логических компонентов.
Операторы это простейшие элементы программы, которые позволяют производить действия с данными. Для того, чтобы запрограммировать логику любого линейного алгоритма достаточно трех операторов, которые составляют основу любого языка программирования.[[41]]
Так, с помощью оператора присваивания можно задать начальные условия задачи. Условный оператор (оператор ветвления) позволяет выбрать то или иное действие, в зависимости от заданных условий или начальных значений и является аналогом конструкции русского языка «если…,то…,иначе». Циклические операторы позволяют для каждого действия или набора действий задать, сколько раз их необходимо выполнить, и избавляют программистов от многократной записи одних и тех же действий для разных значений.
Функция это фрагмент кода, оформленный по определенным в каждом языке программирования правилам, и решающий одну задачу, который можно вызывать из любого места программы. Функции в общем виде состоят из набора операторов и позволяют уменьшить избыточность программного кода и повысить его структурированность.
Модули могут включать в себя наборы операторов, отдельные функции, классы.[[42]]
2.2 Обзор языков программирования высокого уровня
Язык FORTRAN (FORmula TRANslating system – система трансляции формул); старейший язык, который используется в решении задач математической ориентации. Классический язык для программирования на ЭВМ инженерных и математических задач.[[43]]
Язык был разработан для фирмы IBM под руководством Джона Бэкуса в
1954 году. Значение этого события огромно. Фортран первый язык программирования высокого уровня. Наконец-то программист стал независим от особенностей машинной архитектуры.[[44]] Хотя уже существовали разработки языков, которые выполняли преобразование арифметических выражений в машинный код, создание языка Фортран, предоставляющего возможность записи алгоритма вычислений с использованием условных операторов и операторов ввода/вывода, стало отправной точкой эры языков программирования высокого уровня.
На язык Фортран возлагались огромные надежды по созданию высокоэффективного кода. Именно по этой причине большое число конструкций языка изначально разрабатывались с учетом архитектуры IBM407. Успехом разработки данного языка явилось то, что производители других вычислительных систем стали создавать свои версии трансляторов. С целью создать некоторую унификацию, язык FORTRAN IV, который был разработан в 1966 году, стал первым стандартом, именуемым FORTRAN 66.[[45]]
Язык Фортран и сегодня используется для научных вычислений.[[46]] Он имеет изъяны в виде отсутствия многих знакомых языковых конструкций и атрибутов, компилятор практически не проверяет синтаксически правильную программу с точки зрения семантической коррекции (соответствие типов и пр.). В нем не поддерживаются современные способы структурирования кода и данных. Это понимали и сами разработчики. Как признавался позже и сам Бэкус, ими разрабатывался скорее компилятор, нежели язык.
Внедрение Фортрана подверглось еще более яростным критическим нападкам, чем появление ассемблера. Программисты боялись, снижения эффективности программ из-за использования промежуточного звена - компилятора. Действительно, уважающий себя программист, при решении какой-либо небольшой задачи самостоятельно напишет код, который будет работать быстрее, чем код, полученный в результате компиляции. И только через некоторое время пришло понимание того, что без применения языков высокого уровня реализация больших проектов невозможна.[[47]] Вычислительные машины становились мощнее, и с тем падением эффективности, которое раньше считалось опасным, теперь стало возможно смириться. Преимущества языков высокого уровня со временем стали настолько очевидными, что подтолкнули разработчиков к созданию еще более совершенных языков. [[48]]