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

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

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

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

Добавлен: 31.03.2023

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

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

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

Введение

Сегодня мы разберём такие темы как: «Классификация языков программирования» и «Критерии выбора среды и языка разработки программ». Я выбрал эти темы потому что они ближе всего к моей будущей профессии и хотелось побольше бы узнать о языках разработки программ, и научиться их отличать друг от друга и какой больше подходит в программировании той или иной программы. Для общества эти темы будут полезны тем что они тоже научатся различать языки программирования. Сегодня мы поговорим о таких проблемах как: Что такое языки программирования? Для чего они созданы? Какие группы языков есть? Какова история развития языков программирования? И м.м.д.

Так что здесь вы узнаете просто невообразимое, полезное количество информации. По этим 2-м темам. Некоторое может быть не понятно обычному человеку по тому что здесь говорят. но я это сделал по 2-м причинам.

Если человеку и вправду будет интересна моя информация, то он сам тоже примет участие на нахождение ответов на его вопросы.

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

Я сам смотрел и читал полезную информацию по теме компьютеров и программирования, не зная что эти знания мне пригодятся сейчас, я просто получал знания чисто из любопытства и интереса. Из этого соответствует логичный вывод: Надо изучать всё что есть в этом мире, что бы понимать больше чем все остальные, однако я это понял только недавно, ведь до этого мне никто не объяснял этого, и я не понимал зачем учить предметы в школе при том что они в будущем мне не пригодятся и они были мне не интересны. Однако они увеличивают твой кругозор восприятия. И с людьми будет о чём поговорить, если же конечно они соответствуют вашему уровню и не посылают вас на 3 буквы, когда вы начинаете рассказывать что то интересное. Про это можно ещё днями и ночами рассуждать, однако это очень далеко от наших тем, по этому, давай те же разбираться.

Глава 1. Низкоуровневые языки программирования

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


Языки программирования созданы для написания компьютерных программ, которые хранят в себе набор правил, дающие возможность компьютеру выполнять разного рода вычисления, организовывать управление различными объектами, и т. д. Языки программирования  различаются от естественных языков тем, что созданы для  управления человека с ЭВМ (Электронно-Вычислительной-Машиной), в то время как естественные языки  используются для общения людей между собой. Многие языки  программирования используют специальные функции для определения и  управления структурами данных и управления вычислений.

Первые языки программирования появились примерно в середине 20-го века. Они были примитивны по современным меркам, но справлялись с поставленными задачами. Классификация языков программирования – это очень объемное и сложное занятие, которое может растянуться на многие часы.

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

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

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

Процедурные языки разделяют на языки низкого и высокого уровня.

Разные типы процессоров имеют разные наборы команд. Если язык программирования ориентирован на конкретный тип процессора и учитывает его особенности, то он называется языком программирования низкого уровня.
Имеется в виду, что операторы языка близки к машинному коду и ориентированы на конкретные команды процессора.

Не процедурные можно разделить на объектно-ориентированные и Декларативные. Декларативные делятся на Логические (Пролог) и Функциональные (Лисп). Про объектно-ориентированные языки поговорим чуть попозже.

Языки программирования бывают 2-х основных групп: низкого уровня (низкоуровневые) и высокого уровня (высокоуровневые). И бывают 5-ти не основных групп: среднеуровневые, алгоритмические, формальные, машинные, символические, императивные. Для начала поговорим об основных языках программирования.

О низкоуровневом языке.


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

Справочный словарь:

ЭВМ - Электронно Вычислительная Машина - компьютер

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

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

Справочный словарь:

ПО — программное обеспечение

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

Низкоуровневые языки, предполагают, что ответственность за все внутри-компьютерные ресурсы (время выполнения команд процессора, объемы выделяемой памяти и т. п.) берёт программист. И за этого недостатка языки низкого уровня считаются "небезопасным": потому что, при написании с их помощью нормальных обширных программ, в коде появляется больше ошибок, нежели чем на языках высокого уровня. Низкоуровневое программирование обычно используется для создания компактного ПО, например, для программирования систем реального времени, т. е. внешними устройствами (когда недопустимы задержки в работе), встраиваемых систем (микроконтроллеров), а также драйверов.


Справочный словарь:

Константа - способ адресации данных, изменение которых рассматриваемой программой не предполагается или запрещается.
Литерал - адресная, числовая или символьная константа.

Переменная - поименованная, либо адресуемая иным способом область памяти, адрес которой можно использовать для осуществления доступа к данным.

Низкоуровневый язык программирования — очень тесно связан с машинным кодом, используемого реального или виртуального процессора. Для обозначения машинного кода применяется мнемоническое обозначение. Оно запоминает команды машинного кода в виде человеческого языка (английского).

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

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

Преимущества

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

Недостатки

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

Ассемблер

Следующими после машинных кодов появился язык ассемблер. Особенность языка в том что команд и возможностей стало гораздо больше и они строго не соответствуют командам ЭВМ. Главными преимуществами ассемблера по сравнению с машинным кодом называют:

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

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

Ассемблер - не язык программирования с формализованным синтаксисом, а принцип создания синтаксисов для управления процессорами разных архитектур. Процессоры, выпускаемые современной промышленностью, обладают разными архитектурами, разными командами, поэтому и языки ассемблера различаются. И даже, для одного и того же процессора разработано несколько видов языка ассемблера (например, для работы в разных операционных системах). Однако создаются ассемблеры на основе одних принципов: машинные коды заменяются удобными для запоминания синтаксическими конструкциями, потому, что они напоминают слова обычного языка. Большая часть вычислительной техники разрабатывается в США и Европе, и за этого, слова в ассемблерах используются английские. Например, команда ADD означает сложение регистров процессора и соответствует английскому глаголу to add — складывать.