Файл: Обзор языков программирования высокого уровня (История развития и классификация языков программирования).pdf
Добавлен: 03.07.2023
Просмотров: 393
Скачиваний: 2
Общий формат записи инструкций одинаков для обоих стандартов:
`[метка:] опкод [операнды] [;комментарий]`
Опкод — непосредственно мнемоника инструкции процессору. К ней могут быть добавлены префиксы (повторения, изменения типа адресации и пр.). В качестве операндов могут выступать константы, названия регистров, адреса в оперативной памяти и пр.. Различия между стандартами Intel и AT&T касаются, в основном, порядка перечисления операндов и их синтаксиса при различных методах адресации.
Ассемблер и сейчас используется в программировании микроконтроллеров, т.к. код ассемблера легче уместить в небольшие блоки памяти самых маленьких мк.
Глава 2. Языки программирования высокого уровня
Языки высокого уровня - были разработаны для того, чтобы освободить программиста от учета технических особенностей конкретных компьютеров, их архитектуры. Уровень языка характеризуется степенью его близости к естественному, человеческому языку. Машинный язык не похож на человеческий, он крайне беден в своих изобразительных средствах. Средства записи программ на языках высокого уровня более выразительны и привычны для человека. Например, алгоритм вычисления по сложной формуле не разбивается на отдельные операции, а записывается компактно в виде одного выражения с использованием привычной математической символики. Составить свою или понять чужую программу на таком языке гораздо проще.
Важным преимуществом языков высокого уровня является их универсальность, независимость от ЭВМ. Программа, написанная на таком языке, может выполняться на разных машинах. Составителю программы не нужно знать систему команд ЭВМ, на которой он предполагает проводить вычисления. При переходе на другую ЭВМ программа не требует переделки. Такие языки – не только средство общения человека с машиной, но и людей между собой. Программа, написанная на языке высокого уровня, легко может быть понята любым специалистом, который знает язык и характер задачи.
Таким образом, можно сформулировать основные преимущества языков высокого уровня перед машинными:
- алфавит языка высокого уровня значительно шире алфавита машинного языка, что существенно повышает наглядность текста программы;
- набор операций, допустимых для использования, не зависит от набора машинных операций, а выбирается из соображений удобства формулирования алгоритмов решения задач определенного класса;
- формат предложений достаточно гибок и удобен для использования, что позволяет с помощью одного предложения задать достаточно содержательный этап обработки данных;
- требуемые операции задаются с помощью общепринятых математических обозначений;
- данным в языках высокого уровня присваиваются индивидуальные имена, выбираемые программистом;
- в языке может быть предусмотрен значительно более широкий набор типов данных по сравнению с набором машинных типов данных.
Таким образом, языки высокого уровня в значительной мере являются машинно-независимыми. Они облегчают работу программиста и повышают надежность создаваемых программ.
2.1 Типизация
Следующий критерий разделения – типизация. Он связан с системой организации данных в самой программе – типизацией. Тип данных (тип) — множество значений и операций на этих значениях (IEEE Std 1320.2-1998). [4]Языки программирования можно поделить на имеющие
статическую типизацию;
динамическую типизацию;
бестиповые языки.
Статическая типизация
Статическая типизация определяется тем, что конечные типы переменных и функций устанавливаются на этапе компиляции. Т.е. уже компилятор на 100% уверен, какой тип где находится.
- Проверки типов происходят только один раз — на этапе компиляции. А это значит, что нам не нужно будет постоянно выяснять, не пытаемся ли мы поделить число на строку (и либо выдать ошибку, либо осуществить преобразование).
- Скорость выполнения. Из предыдущего пункта ясно, что статически типизированные языки практически всегда быстрее динамически типизированных.
- При некоторых дополнительных условиях, позволяет обнаруживать потенциальные ошибки уже на этапе компиляции.
- Ускорение разработки при поддержке IDE (отсеивание вариантов, заведомо не подходящих по типу).
Динамическая типизация
В динамической типизации все типы выясняются уже во время выполнения программы.
- Простота создания универсальных коллекций — куч всего и вся (редко возникает такая необходимость, но когда возникает динамическая типизация выручит).
- Удобство описания обобщенных алгоритмов (например сортировка массива, которая будет работать не только на списке целых чисел, но и на списке вещественных и даже на списке строк).
- Легкость в освоении — языки с динамической типизацией обычно очень хороши для того, чтобы начать программировать.
Бестиповая типизация
В бестиповых языках программирования — все сущности считаются просто последовательностями бит, различной длины.
Бестиповая типизация обычно присуща низкоуровневым (язык ассемблера, Forth) и эзотерическим (Brainfuck, HQ9, Piet) языкам. Однако и у нее, наряду с недостатками, есть некоторые преимущества.
Преимущества
- Позволяет писать на предельно низком уровне, причем компилятор / интерпретатор не будет мешать какими-либо проверками типов. Вы вольны производить любые операции над любыми видами данных.
- Получаемый код обычно более эффективен.
- Прозрачность инструкций. При знании языка обычно нет сомнений, что из себя представляет тот или иной код.
Недостатки
- Сложность. Часто возникает необходимость в представлении комплексных значений, таких как списки, строки или структуры. С этим могут возникнуть неудобства.
- Отсутствие проверок. Любые бессмысленные действия, например вычитание указателя на массив из символа будут считаться совершенно нормальными, что чревато трудноуловимыми ошибками.
- Низкий уровень абстракции. Работа с любым сложным типом данных ничем не отличается от работы с числами, что конечно будет создавать много трудностей.
2.2 Способ реализации языка
Языки программирования высокого уровня отличаются по реализации. Они могут быть интерпритируемыми или компилируемыми в зависимости от способа трансляции.
Трансляция программы — преобразование программы, представленной на одном из языков программирования, в программу на другом языке и, в определённом смысле, равносильную первой.[5]
Транслятор обычно выполняет также диагностику ошибок, формирует словари идентификаторов, выдаёт для печати текста программы и т. д.
Язык, на котором представлена входная программа, называется исходным языком, а сама программа — исходным кодом. Выходной язык называется целевым языком или объектным кодом.
Программа на компилируемом языке при помощи компилятора (особой программы) преобразуется (компилируется) в машинный код (набор инструкций) для данного типа процессора и далее собирается в исполнимый модуль, который может быть запущен на исполнение как отдельная программа. Другими словами, компилятор переводит исходный текст программы с языка программирования высокого уровня в двоичные коды инструкций процессора.
Преимущества компилированных программ
выполняются быстрее
не требуют для выполнения дополнительных программ, так как уже переведены на машинный язык.
Недостатки
при каждом изменении текста программы требуется её перекомпиляция, что замедляет процесс разработки.
скомпилированная программа может выполняться только на том же типе компьютеров и, как правило, под той же операционной системой, на которую был рассчитан компилятор. Чтобы создать исполняемый файл для машины другого типа, требуется новая компиляция.
Если программа написана на интерпретируемом языке, то интерпретатор непосредственно выполняет (интерпретирует) исходный текст без предварительного перевода. При этом программа остаётся на исходном языке и не может быть запущена без интерпретатора. Процессор компьютера, в этой связи, можно назвать интерпретатором для машинного кода.
Есть ряд возможностей, которые значительно легче реализовать в интерпретаторе, чем в компиляторе:
кроссплатформенность
рефлексия и интроспекция
динамическая типизация
использование динамической области видимости и замыканий
Кроме того, принципы и стиль программирования часто не требуют создания и описания специальных конструкций, оформляющих программу (манифестов, классов, типов данных). Это позволяет разрабатывать и тестировать код постепенно, что удобно как для написания небольших программ, так и для изолированной разработки модулей для сложных систем. В силу своей универсальности их удобно применять в качестве скриптовых языков.
Существует отдельно стоящий класс языков программирования, которые создавались без цели их дальнейшего практического использования – это так называемые изотерические языки. Примером могут быть язык “Brainfuck”, писать на котором практически невозможно, однако написанные программы вполне жизнеспособны.
Глава 3. Обзор современных языков программирования высокого уровня
В силу того что данная курсовая работа претендует на некоторую долю практической полезности, описаны будут только наиболее универсальные, популярные языки имеющие практическую полезность.
3.1 FORTRUN
FORTRUN - Название Fortran является сокращением от FORmula TRANslator (переводчик формул). П
Фортран (Fortran) — первый реализованный язык программирования высокого уровня (после Планкалкюля), правда, с одной небольшой оговоркой — для машин, построенных по классической схеме фон Неймана. Создан в период с 1954 по 1957 год группой программистов под руководством Джона Бэкуса (John Backus) в корпорации IBM. Через пару лет начались его коммерческие поставки. До этого программирование велось либо непосредственно в машинных кодах, либо на символических ассемблерах.
Фортран широко используется в первую очередь для научных и инженерных вычислений. Одно из преимуществ современного Фортрана — большое количество написанных на нём программ и библиотек подпрограмм. Среди учёных, например, ходит такая присказка, что любая математическая задача уже имеет решение на Фортране, и, действительно, можно найти среди тысяч фортрановских пакетов и пакет для перемножения матриц, и пакет для решения сложных интегральных уравнений и многие, многие другие. Ряд таких пакетов создавались на протяжении десятилетий и популярны по сей день (главным образом в научной среде).
Большинство таких библиотек является фактически достоянием человечества: они доступны в исходных кодах, хорошо документированы, отлажены и весьма эффективны. Поэтому изменять, а тем более переписывать их на других языках программирования накладно, несмотря на то, что регулярно производятся попытки автоматического конвертирования FORTRAN-кода на современные языки программирования. [6]
Если раньше единственным языком для инженерных вычислений был Фортран, то сегодня на эту роль существует более десятка претендентов, значительно превосходящих как по количеству и качеству документации, так и по количеству и качеству реализованых задач, например Wolfram Mathematica.
Последней на сегодняшней день реаизацие Фортрана является
Fortran 2008 (2010)
Стандартом предполагается поддержка средствами языка параллельных вычислений (Co-Arrays Fortran). Также предполагается увеличить максимальную размерность массивов до 15, добавить встроенные специальные математические функции и др.
Кому подойдет язык Фортран?
Минусы языка
- Отсутсвует гибкость
- Неэффективны для бизнеса
- Слабая реализация ООП
Плюсы языка
- Многолетняя история, множество реализаций и подходов
- Широкая поддержка научным сообществом.
- Эффективный исполняемый код
- Межплатформная совместимость.
- Простота изучения.[7]
Почему Фортран упомянут в данной курсовой работе? Все просто – сегодня в РФ Фортран до сих пор включен в образовательную программу большинства технических специальностей Российских ВУЗов.
Многие компании, занимающиеся ранее разработкой реализаций, библиотек, программ и подпрограмм на Фортране и по сей день предлагают свои решения для студентов и профессоров образовательных учреждений. Например на сайте http://www.dreamspark.ru/ можно скачать Microsoft Fortran Powerstation 4.0.
Кроме образовательной дисциплины, сегодня язык фортран мало чего может дать, что подтверждается появлением других его современных аналогов, так и переводом лучших программ, кодов и разработок на другие программные языки. Причина этого проста – Фортран в настоящее время неэффективен в разработке бизнес приложений, многопоточных распределенных систем и прочего функционала, который нужно постоянно развивать и поддерживать.
Фортран безусловно неплох для научных организаций, ученых и в качестве учебного языка. Это тот самый язык, который будет жив и сегодня и завтра и через много лет, ведь однажды, будучи принятым на ура научным сообществом по всему миру, он так и остается его «любимцем» и для каждого из приверженцев Фортрана для этого есть свои причины.