Файл: Классификация языков программирования. Критерии выбора среды и языка разработки программ (Исследование предметной области).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 28.03.2023

Просмотров: 367

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Машинный код можно рассматривать как самое низкоуровневое представление скомпилированной или собранной компьютерной программы или в качестве примитивного и аппаратно-зависимого языка программирования. Писать программы непосредственно в машинном коде возможно, однако это утомительно и подвержено ошибкам, так как необходимо управлять отдельными битами и вычислять числовые адреса и константы вручную. По этой причине машинный код практически не используется для написания программ. [2, 6]

Каждый процессор или семейство процессоров имеет свой собственный набор инструкций машинного кода. Инструкции являются паттернами битов, которые в силу физического устройства соответствуют различным командам машины. Говорят, что процессор A совместим с процессором B, если процессор A полностью «понимает» машинный код процессора B. Если процессоры A и B имеют некоторое подмножество инструкций, по которым они взаимно совместимы, то говорят, что они одной архитектуры. Таким образом, набор команд является специфическим для одного класса процессоров. Новые процессоры одной архитектуры часто включают в себя все инструкции предшественника и могут включать дополнительные. Иногда новые процессоры прекращают поддержку или изменяют значение какого-либо кода команды (как правило, потому, что это необходимо для новых целей), влияя на совместимость кода до некоторой степени; даже почти полностью совместимые процессоры могут показать различное поведение для некоторых команд, но это редко является проблемой. [1]

Assembler — язык программирования низкого уровня, представляющий собой формат записи машинных команд, удобный для восприятия человеком.

Команды языка ассемблера один в один соответствуют командам процессора и, фактически, представляют собой удобную символьную форму записи (мнемокод) команд и их аргументов. Также язык ассемблера обеспечивает базовые программные абстракции: связывание частей программы и данных через метки с символьными именами и директивы. [1]

Директивы ассемблера позволяют включать в программу блоки данных (описанные явно или считанные из файла); повторить определённый фрагмент указанное число раз; компилировать фрагмент по условию; задавать адрес исполнения фрагмента, менять значения меток в процессе компиляции; использовать макроопределения с параметрами и др. [21]

Каждая модель процессора, в принципе, имеет свой набор команд и соответствующий ему язык (или диалект) ассемблера.

Достоинства и недостатки ассемблера следующие:


  • минимальное количество избыточного кода (использование меньшего количества команд и обращений в память). Как следствие — большая скорость и меньший размер программы;
  • большие объемы кода, большое число дополнительных мелких задач;
  • плохая читабельность кода, трудность поддержки (отладка, добавление возможностей);
  • трудность реализации парадигм программирования и любых других сколько-нибудь сложных конвенций, сложность совместной разработки;
  • меньшее количество доступных библиотек, их малая совместимость;
  • непосредственный доступ к аппаратуре: портам ввода-вывода, особым регистрам процессора;
  • возможность написания самомодифицирующегося кода (т.е. метапрограммирования, причем без необходимости программного интерпретатора);
  • максимальная «подгонка» для нужной платформы (использование специальных инструкций, технических особенностей «железа»);
  • непереносимость на другие платформы (кроме двоично совместимых). [1, 3]

2.2 Программирование на языке Fortran

Фортран — это язык программирования, в основном используемый научным сообществом. Его название — сокращение FORmula TRANslation, и его цель — предоставить способ рассказать компьютерам о вычислении сложных математических выражений с большей легкостью, чем язык ассемблера.

FORTRAN — один из самых ранних языков программирования. В оригинальных версиях использовались перфокарты для написания программ. С одной стороны, FORTRAN имеет огромное количество доступных библиотек. Тем не менее, Fortran также имеет много архаичных функций, особенно в более ранних версиях. [4]

Первоначально Fortran включал не очень понятный синтаксис с фиксированными полями (5-значный номер строки, маркер продолжения и область оператора (плюс область номера последовательности карт в некоторых версиях). Однако новые спецификации для FORTRAN, такие как Fortran 90, 95, 2003 и 2008, не требуют такого странного форматирования. Кроме того, многие компиляторы имеют дополнительные улучшения для нестандартного кода. Новые стандарты добавляют функциональность и полностью совместимы со старыми версиями. При необходимости различия между этими устаревшими версиями и современным стандартом будут выделены, так как существует значительная база кода, написанная в более старых версиях, особенно FORTRAN 77.

FORTRAN, язык программирования, созданный в 1957 году Джоном Бэкусом, который сократил процесс программирования и сделал компьютерное программирование более доступным. [8, 9]


Создание FORTRAN, дебютировавшее в 1957 году, ознаменовало собой значительный этап в развитии языков компьютерного программирования. Предыдущее программирование было записано на языке машинного (первого поколения) языка или сборки (второго поколения), что требовало от программиста писать инструкции в двоичной или шестнадцатеричной системе. Неээфективность такого программирования привело к поиску более простого и доступного способа общения с компьютерами. В течение трехлетнего этапа развития Бэкус возглавил команду из 10 сотрудников International Business Machines (IBM) для создания языка, сочетающего форму английского сокращения с алгебраическими уравнениями.

FORTRAN позволил быстро записывать компьютерные программы, которые выполнялись почти так же эффективно, как программы, которые были трудоемко закодированы вручную на машинных языках. Поскольку компьютеры были редкими и чрезвычайно дорогими, неэффективные программы были большой финансовой проблемой, чем длительная и кропотливая разработка программ на машинных языках. С созданием эффективного более высокого уровня (или естественного) языка, также известного как язык третьего поколения, компьютерное программирование вышло за пределы небольшой группы, в которую вошли инженеры и ученые, которые сыграли важную роль в расширении использования компьютеров.

Позволяя создавать программы на естественном языке, которые работают так же эффективно, как и ручные, FORTRAN стал языком программирования, который был выбран в конце 1950-х годов. Он был обновлен несколько раз в 1950-х и 1960-х годах, чтобы оставаться конкурентоспособным с более современными языками программирования. FORTRAN 77 был выпущен в 1978 году, за ним последовал FORTRAN 90 в 1991 году и дальнейшие обновления в 1996 и 2004 годах. Однако языки четвертого и пятого поколений в значительной степени вытеснили FORTRAN за пределы академических кругов, начиная с 1970-х годов. [4, 9, 15]

2.3 Процедурный язык программирования Pascal

Паскаль — это процедурный язык программирования, разработанный в 1968 году и изданный в 1970 году Никлаусом Виртом и названный в честь французского математика и философа Блейса Паскаля. Pascal работает на различных платформах, таких как Windows, Mac OS и различных версиях UNIX/Linux.

Язык Pascal (Паскаль) почти не имеет практического значения, но часто используется для обучения программированию (для этого он и был разработан). В настоящее время существует ряд его диалектов и сред разработки, имеющих незначительные различия между собой.


Паскаль — это язык на основе Алгола и включает в себя множество конструкций Алгола. Алгол 60 является подмножеством Паскаля. Паскаль предлагает несколько типов данных и структуры программирования. Легко понять и поддерживать программы Pascal. [1, 2]

Паскаль вырос в популярности в учебной и академической арене по разным причинам:

  • легко изучаем;
  • структурированный язык;
  • он создает прозрачные, эффективные и надежные программы;
  • он может быть скомпилирован на различных компьютерных платформах.

Особенности языка Pascal. Паскаль имеет следующие функции:

  • Паскаль — строго типизированный язык;
  • он предлагает обширную проверку ошибок;
  • он предлагает несколько типов данных, таких как массивы, записи, файлы и наборы;
  • он предлагает различные структуры программирования;
  • он поддерживает структурированное программирование через функции и процедуры;
  • он поддерживает объектно-ориентированное программирование. [3]

Ниже приведен простой код паскаль (листинг 1), который будет печатать слова «Hello, World!». 

Листинг 1 — Простая программа на Pascal

program HelloWorld;

uses crt;

begin

writeln('Hello, World!');

readkey;

end.

Определение переменной помещается в блок, начинающийся с ключевого слова var , с последующим определением переменных следующим образом: «var A_Variable, B_Variable ... : Variable_Type;»

Переменные Pascal объявляются вне тела кода функции, что означает, что они не объявлены в парах начала и конца, но они объявляются после определения процедуры/функции и перед ключевым словом begin. Для глобальных переменных они определяются после заголовка программы. [3]

В Паскале процедура состоит из команд, которые должны быть выполнены, без возвращаемого значения, а функция — это процедура с возвращаемым значением. Определение функции/процедур будет таким, как показано в листинге 2.

Листинг 2 — Определение процедур

Function Func_Name(params...) : Return_Value;

Procedure Proc_Name(params...);

Многострочные комментарии заключены в фигурные скобки и звездочки как {* ... *}. Паскаль допускает однострочный комментарий, заключенный в фигурные скобки {...} (листинг 3).

Листинг 3 — Комментарии

{* Это многострочный

комментарий *}

{ Это однострочный комментарий }

Объявление типа используется для объявления типа данных идентификатора. Синтаксис объявления типа: type-identifier-1, type-identfier-2 = type-specifier;

Например, следующее объявление определяет переменные days и age как integer type, yes и true как Boolean type, name и city как тип строки, сборы и расходы как реальный тип (листинг 4). [3]


Листинг 4 — Определение переменных

type

days, age = integer;

yes, true = boolean;

name, city = string;

fees, expenses = real;

Основные переменные в Паскаль показаны ниже:

  1. Символ. Обычно один байт. Это целочисленный тип.
  2. Целое число. Самый естественный размер целого для машины.
  3. Числа с плавающей запятой. Значение с плавающей запятой с одиночной точностью.
  4. Логический. Задает истинные или ложные логические значения. Это также целочисленный тип.
  5. Перечислимый. Определяет пользовательский список.
  6. Поддиапазон. Представляет переменные, значения которых лежат в пределах диапазона.
  7. Строка. Сохраняет массив символов. [2, 3]

Язык программирования Pascal также позволяет определять различные другие типы переменных, таких как «Указатель», «Массив», «Записи», «Наборы и файлы» и т. д.

Все переменные должны быть объявлены до их использования в программе Pascal. За всеми объявлениями переменных следует ключевое слово var . Объявление определяет список переменных, за которым следует двоеточие (:) и тип. Синтаксис объявления переменной показан на листинге 5.

Константа — это объект, который остается неизменным во время выполнения программы. [2] Паскаль позволяет объявлять только константы следующих типов:

  • порядковые типы;
  • установочные типы;
  • типы указателей;
  • реальные типы;
  • строка.

Синтаксис для объявления констант показан на листинге 5.

Листинг 5 — Объявление констант

const

identifier = constant_value;

В таблице 1 показаны все арифметические операторы, поддерживаемые Pascal. Предположим, что переменная A имеет место 10, а переменная B имеет 20, тогда результаты будут таким как в таблице ниже.

Необходимо соблюдать форматирование в выводе программы. Переменная c должна быть отформатирована с общим числом цифр 7 и 2 цифрами после десятичного знака. Pascal допускает такое форматирование вывода с числовыми переменными. [1, 2, 3]

Таблица

Арифметические операторы

Оператор

Описание

Пример

+

Добавляет два операнда

A + B даст 30

-

Вычитает второй операнд с первого

A - B даст -10

*

Умножает оба операнда

A * B даст 200

/

Делит числитель на знаменатель

B / A даст 2

%

Оператор модуля и остаток после целочисленного деления

B% A даст 0

В данной главе были рассмотрены процедурные и низкоуровневые языки такие, как Fortran, Pascal и Assembler. Были рассмотрены их особенности и изучены элементы синтаксиса.