Файл: Классификация языков программирования высокого уровня (ОБЗОР ТИПОВ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ).pdf

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

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

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

Добавлен: 31.03.2023

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

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

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

ВВЕДЕНИЕ

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

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

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

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

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

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

  • просмотреть общее сведения и уровни языков программирования;
  • просмотреть историю развития языков программирования;
  • сделать обзор современных языков программирования.

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

  • ознакомления с языками программирования;
  • рассмотрение истории развития языков программирования;
  • обзор современных языков программирования.

Работа состоит из введения, заключения, трех глав и списка использованных источников.

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

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

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

В данной курсовой работе использовались научно-исследовательские методы.

1 ОБЗОР ТИПОВ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

1.1 История языков программирования

Первые языки программирования появились достаточно давно, еще примерно в середине 20-го века. Конечно, они были достаточно примитивны по современным меркам, но вполне справлялись с поставленными на них задачами. Сейчас существуют разные виды языков программирования, к примеру, языки низкого и высокого уровня. Каждый из них необходим для решения определенного спектра задач. Помимо указанных вариантов, есть еще алгоритмические, формальные, машинные, символические, императивные и многие другие типы языков программирования, но наибольшее распространение и актуальность сейчас имеют именно языки низкого и высокого уровня. Даже указанной информации достаточно, чтобы понять: классификация языков программирования – это очень объемное и сложное занятие, которое может растянуться на многие часы [6].


Языки программирования низкого уровня обращаются непосредственно к «железу», давая ему определенные точные команды, а языки программирования высокого уровня оперируют более абстрактными понятиями, здесь не нужно задавать способ работы каждой детали устройства, а достаточно просто в общих чертах задавать выполнение определенных задач и функций. Программисты, работающие с языками низкого уровня, должны знать в придачу ко всему еще и основы электроники, технические нюансы устройств, с которыми они работают, для работы на высоком языке все это не так нужно [6].

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

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

Ответить конкретно на вопрос о том, когда именно появился первый язык программирования высокого уровня довольно сложно. Первые попытки внедрить что-то подобное наблюдались еще в 70 годах, но тогда массового использовался в основном Паскаль, который еще нельзя отнести к высокому уровню. Американские военные первыми взялись разрабатывать язык программирования высокого уровня для решения своих задач. В результате их работы в начале 80-х годов ими был разработан язык Ada, который был очень функциональным для своего времени, но в то же время предельно упрощен. Его главной задачей было программирование различной военной аппаратуры, встроенных систем, где любые сложности и долгие подсчеты идут только во вред [4].

Также приблизительно в те же годы был создан всеми любимый язык C, с которого в итоге развились и С++ и Си Шарп, и ряд других достойных примеров, список которых может оказаться довольно длинным. Также именно из высокоуровневого языка С берет свое начало популярнейший в наше время язык высокого уровня Java, на котором одинаково эффективно пишутся программы, скрипты, плагины и прочие «примочки» как на компьютеры, так и на разнообразные гаджеты: смартфоны, планшеты, смарт часы, очки виртуальной и дополненной реальности. Указанные языки были лидерами еще в далекие 80-90-е годы и остаются ими и поныне, хотя конечно, за это время изменилось и появилось очень многое [4].


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

Язык программирования служит двум взаимосвязанным целям: он дает программисту аппарат для задания действий, которые должны быть выполнены, и формирует концепции, которые программист использует, когда думает о том, что делать. Первая цель в идеале достигается языком, который настолько «близок к машине», что все основные аспекты машины могут быть легко и просто управляться, таким образом, который достаточно очевиден для программиста. Вторая цель в идеале достигается языком, который настолько «близок к решаемой проблеме», что понятия ее решения могут быть выражены прямо и кратко [4].

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

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

Язык предоставляет программисту набор концептуальных инструментов, если они не отвечают задаче, то их просто игнорируют. Например, серьезные ограничения концепции указателя заставляют программиста применять вектора и целую арифметику, чтобы реализовать структуры, указатели и т.п. Хорошее проектирование и отсутствие ошибок не может гарантироваться чисто за счет языковых средств [4].

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

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

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


1.1 Интерпретаторы

Одно, часто упоминаемое преимущество интерпретаторной реализации состоит в том, что она допускает «непосредственный режим». Непосредственный режим позволяет вам задавать компьютеру задачу вроде PRINT 3.14159*3/2.1 и возвращает вам ответ, как нажмете клавишу ENTER (это позволяет использовать компьютер стоимостью 3000 долларов в качестве калькулятора стоимостью 10 долларов). Кроме того, интерпретаторы имеют специальные атрибуты, которые упрощают отладку. Можно, например, прервать обработку интерпретаторной программы, отобразить содержимое определенных переменных, бегло просмотреть программу, а затем продолжить исполнение [7].

Больше всего программистам нравится возможность получить быстрый ответ в интерпретаторах. Нет необходимости компилировать, потому что интерпретатор всегда готов вмешаться в вашу программу. Введите Run и результат самого последнего изменения оказывается на экране [7].

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

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

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

Рассмотрим программу: на интерпретаторном Бэйсике 10 FOR N=1 TO 1000 20 PRINT N,SQR(N) 30 NEXT N при первом переходе по этой программе Бейсик-Интерпретатор должен разгадать, что означает строка 20:

  1. Преобразовать числовую переменную N в строку [11].
  2. Послать строку на экран.
  3. Переместить в следующую зону печати.
  4. Вычислить квадратный корень из N.
  5. Преобразовать результат в строку.
  6. Послать строку на экран.

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


Таким образом, совершенно очевидно, что если удалось каким-то образом отделить фазу сканирования/понимания от фазы исполнения мы имели бы более быструю программу. И это как раз то, для чего существуют компиляторы.

1.2 Компиляторы

Компилятор-это транслятор текста на машинный язык, который считывает исходный текст. Он оценивает его в соответствии с синтаксисом языка и переводит его на машинный язык. Другими словами, компилятор не исполняет программы, он их строит. Интерпретаторы не могут быть отделены от программ, которые они запускают, компиляторы делают свою работу и покидают сцену. При работе с языком компиляции, таким как Turbo-basic, придем к необходимости думать о своих программах с точки зрения двух основных этапов их жизни: периода компиляции и периода запуска. Большинство программ будут прогоняться в четыре - десять раз быстрее их интерпретаторных эквивалентов [11].

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

2 КЛАССИФИКАЦИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

2.1 Машинно-ориентированные языки

Машинно-ориентированные языки – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.). Машинно-ориентированные языки позволяют использовать все возможности и особенности Машинно-зависимых языков [6]:

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

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

Таким образом, машинно-ориентированные языки по степени автоматического программирования подразделяются на классы.

Машинный язык