Файл: Обзор языков программирования высокого уровня (История возникновения и развития ЯП).pdf

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

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

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

Добавлен: 04.07.2023

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

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

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

Введение

В современном мире электроника не просто стала частью нашей жизни, как это было лет 10-20 назад, сегодня электроника – это часть большинства из нас. Мы просыпаемся от будильника на домашнем мультимедийном центре. После этого мы собираемся на работу, попутно просматривая информацию с десятка гаджетов: задачи в CRM на планшете, погода, пробки, электропитание квартиры, автономная сигнализация и видеонаблюдение. Мы выходим из квартиры, и нас так же окружают, системы, датчики, компьютеры, и на билбордах реклама очередного «облачного сервиса». И даже во сне за нашим здоровьем следит датчик на запястье, а для нашего спокойного сна такие же датчики следят за здоровьем наших близких.

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

Но все вышеперечисленное – лишь бытовой уровень, демонстрирующий доступность и повсеместность систем и гаджетов на микроконтроллерах и микропроцессорах. Сегодня общество находится на так называемом информационном этапе развития, информация – основной ресурс и ценность. Все наше сверхсовременное общество рассыплется на кусочки без систем управления: полетами, энергетикой, финансами, безопасностью.

Актуальность темы определена современной жизнью, где технологии становятся определяющим фактором нашего комфорта, безопасности, а количество систем и их сложность с каждым годом возрастает. Вместе с этим возрастает потребность в качественном программном обеспечении тех систем, от которых в конечном счете могут зависеть жизни людей. Такое ПО возможно создать, поддерживать и модифицировать в оптимальном режиме возможно только с использованием языков программирования высокого уровня.

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

Цели исследования:

  1. Описать историю появления и развития языков программирования
  2. Сделать обзор языков программирования высокого уровня
  3. Обозначить критерии языков, по которым можно выбрать тот или иной ЯП.

Задачи исследования:

1. Ознакомления с языками программирования ВУ.

2. Рассмотрение истории развития языков программирования.

3. Обзор современных языков программирования.


4. Отбор критериев по которым можно выбрать наиболее подходящий под задачи и навыки ЯПВУ.

В первой главе рассмотрена история развития языков программирования.

Во второй главе обозначены важнейшие понятия и классификаци языков программирования

В третьей главе рассмотрены самые перспективные, признанные и полезные языки программирования на сегодняшний день.

Глава 1. История развития и классификация языков программирования

1.1. История возникновения и развития ЯП

Язы́к программи́рования — формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, определяющих внешний вид программы и действия, которые выполнит исполнитель (обычно — ЭВМ) под её управлением.[1]

Потребность человечества в языках программирования, их совершенствовании, развитии прямо коррелирует с совершенствованием технологических процессво на производственных предприятиях. Так самыми первыми в истории предшественниками языков программирования можно назвать сложные станки и механизмы на фабриках того времени. Одним из ярчайших примеров является ткацкий станок, где по определенной модели, в определенной последовательности нужно было выполнить приладку и только в таком случае получался удовлетворительный результат.

Первый электронный компьютер появился в конце 40х годов прошлого века и тогда же появились первые языки программирования - машинные языки – последовательности «нулей» и «единиц», которые понимала машина. Такой код был полностью машинно-зависимым и непереносимым, так как подходил только под структуру ЭВМ одного типа.

Код с которым работали первые машины назывался машинным кодом. Машинный код (платформенно-ориентированный код), машинный язык — система команд (набор кодов операций) конкретной вычислительной машины, которая интерпретируется непосредственно процессором или микропрограммами этой вычислительной машины.[2] По сути первым появившимся языком программирования и являются машинные команды – последовательность нулей и единиц. Программы для машин заносились в чисто цифровом виде, иногда с использованием переключателей.


Языки программирования делятся в зависимости от приближенности к машинным командам по уровню абстракции на языки:

- с низким уровнем абстракции, такие как группа языков Ассемблера. Такие языки называются низкоуровневыми.

- с высоким уровнем абстракции при составлении компьютерной программы.

Первыми языками программирования с низким уровнем абстракции били Ассемблеры появившиеся в 40-50е годы. Язык ассе́мблера (англ. assembly language) — машинно-ориентированный язык низкого уровня с командами, обычно соответствующими командам машины, который может обеспечить дополнительные возможности вроде макрокоманд[3]. Языки Ассемблера относятся ко второму поколению языков программирования. Код написанный на Ассемблере требовал перевода в машинный язык, для чего необходимо было использовать компилятор или транслятор.

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

Для таких небольших по объему операций вполне можно было учесть все параметры, такие как адресация памяти, последовательность машинных команд. Но такой подход был весьма неудобен даже на начальных этапах развития компьютерной техники и программирования, требовалась высокая квалификация для работы с компьютерным оборудованием. Была высока вероятность допустить ошибку в коде. К тому же необходимость помнить все ячейки памяти, адресацию и вручную набирать команды приводила к сильному удорожанию труда программиста и машины как в трудовом так и во временном выражении.

Кроме того, как уже говорилось выше, во времена первых компьютеров под каждый новый компьютер раньше требовалась переписать программу заново, так как компьютеры разных компаний на разных континентах развивались разными путями. Следствием были отличия в архитектуре процессоров, схемам адресации памяти, отличалась адресация и запросы к периферийным устройствам. Компьютеры были мало распространены, т.к. стоили баснословных денег. Были существенные различия в архитектуре, отсутствовала всеобщая международная система стандартов в производстве оборудования, стандартов, расширений и кодов.


Естественно, что с развитием технологий и удешевлением производства появились ПК – класс персональных компьютеров, которые стали доступными для большего круга лиц, в том числе частных. В то же время задачи, решаемые компьютерами становились все сложнее и сложнее, появлялись и развивались новые операционные системы – то к чему мы давно и крепко привыкли.

Но у самых первых «операционных систем» была только одна задача – исполнение программы, которая загружалась оператором через устройства ввода. Появление тех операционных систем, которые мы знаем сегодня, а так же практически всех программ стало возможным только лишь благодаря языкам программирования высокого уровня. Языки программирования высокого уровня так же называются языками программирования третьего поколения.

Языками программирования четвертого поколения являются простые для изучения и использования узкоспециализированные языки. Ярчайший пример – язык структурных запросов SQL.

Языки пятого поколения – системы машинного кода для проектирования и разработки искусственного интеллекта и систем с элементами самообучения.

1.2. Классификация языков программирования

Сегодня языков программирования создано великое множество. Они все отличаются, имеют множество критериев различия, на которых в данной работе будет заострено внимание. Языки создаются и отмирают, постоянно изменяются и дополняются. Сегодня ни один знакомый с IT технологиями человек не скажет сколько существует языков программирования. Языков и назначений применения великое множество, сами языки программирования обрастают ветками (fork), которые могут претендовать на звание отдельного ЯП. Сегодня существуют языки программирования, которыми пользуется четыре человека на планете (секретные разработки),а есть такие, которыми пользуется четверть миллиарда (php, html).

Первый критерий определен темой данной работы: уровень абстракции. Сегодня этот критерий можно назвать одним из наиболее важных. По уровню абстракции языки программирования бывают:

Высокоуровневыми и низкоуровневыми

Низкоуровневые языки программирования представлены языками группы ассемблера.

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


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

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

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

Минимальное количество избыточного кода (использование меньшего количества команд и обращений в память). Как следствие — большая скорость и меньший размер программы.

Большие объемы кода, большое число дополнительных мелких задач. Экономически нецелесообразно использовать ассемблер для написания крупных программ. И даже несмотря на то что в современном мире IT существует много приверженцов среди языков програмировани, платформи, производителей техники, ни один самый ярый фанат ассемблера не возьмется за написание крупной программы на ассемблере.

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

Общепринятого стандарта для синтаксиса языков ассемблера не существует. Однако, существуют стандарты де-факто — традиционные подходы, которых придерживаются большинство разработчиков языков ассемблера. Основными такими стандартами являются Intel-синтаксис и AT&T-синтаксис.

Общий формат записи инструкций одинаков для обоих стандартов:

`[метка:] опкод [операнды] [;комментарий]`