Разместить заказ
Вы будете перенаправлены на Автор24

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

8-800-775-03-30 support@author24.ru
Статья предоставлена специалистами сервиса Автор24
Автор24 - это сообщество учителей и преподавателей, к которым можно обратиться за помощью с выполнением учебных работ.
как работает сервис
Все предметы / Программирование / Высокие и низкие языки программирования
Высокие и низкие языки программирования

Эволюция языков программирования с точки зрения уровня абстракции

В эпоху появления первых компьютеров (1940-е гг.) средства создания компьютерных программ были достаточно сложны и требовали длительной и сложной профессиональной подготовки. Фактически специалистам приходилось кодировать алгоритмы в так называемых машинных кодах.

Определение 1

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

Перфокарта - носитель машинных кодов для программирования старых компьютеров. Автор24 — интернет-биржа студенческих работ

Рисунок 1. Перфокарта - носитель машинных кодов для программирования старых компьютеров. Автор24 — интернет-биржа студенческих работ

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

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

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

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

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

Большим шагом вперед в повышении уровня абстракции языков программирования стало создание языка программирования Си, разработанного в конце 1960-х гг. при участии выдающегося специалиста ой эпохи Денниса Ритчи. Программы, написанные на Си, стали больше напоминать алгебраические формулы, чем безликие столбцы машинных кодов. Это позволило привлечь к программированию большое количество специалистов из других отраслей, сделать его более демократичным. Развивая идеи языка Си, Бьерн Страуструп в 1970-1980-е годы разработал язык C++ ("Си с классами"), который позволил писать более крупные и устойчивые программы.

Несмотря на прорывной характер языков Си и C++, в них оставалось немало специфики, освоение которой требовало глубокого знания архитектуры компьютеров. 1990-е гг. стали временем появления и развития языка Java, который базировался на синтаксисе C++, но снимал с программиста ответственность за такие рутинные операции, как выделение и освобождение памяти, наблюдение за поддержанием изначально заданных типов переменных и т.п. Появление Java стало отправной точкой для развития высокоуровневых языков нового поколения, при использовании которых специалист может в большей степени сосредоточиться на предметной области (C#, Go, JavaScript и т.д.).

Иерархия языков программирования по уровню абстракции. Автор24 — интернет-биржа студенческих работ

Рисунок 2. Иерархия языков программирования по уровню абстракции. Автор24 — интернет-биржа студенческих работ

Языки программирования низкого уровня

Низкоуровневые языки программирования, называемые также языками программирования низкого уровня, представляют собой, как было сказано выше, синтаксические системы, близкие к тому виду, который представляют собой программы, написанные в машинных кодах. Их часто называют языками ассемблера (to assemble по-английски означает собирать).

Определение 2

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

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

Процессоры с различной архитектурой. Автор24 — интернет-биржа студенческих работ

Рисунок 3. Процессоры с различной архитектурой. Автор24 — интернет-биржа студенческих работ

Помимо процессоров-чипов (хардварных процессоров) существуют софтварные процессоры (виртуальные машины), представляющие собой компьютерные программы, обрабатывающие особый байт-код, получающийся в результате компиляции программ, написанных на таких языках, как Java, C#. У таких виртуальных машин собственная система команд, а байт-код можно считать низкоуровневым языком программирования.

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

Языки программирования высокого уровня

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

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

Достоинством языков высокого уровня является и то, что многие из них обладают кроссплатформенностью: программа, написанная, единожды, будет работать не только на исходной архитектуре, но и будучи перенесенной в иное окружение. Например, программа, разработанная на языке Java в операционной системе Linux может быть запущена без изменений в среде Microsoft Windows или на iOS.

В качестве примеров современных языков высокого уровня можно назвать:

  • C++
  • С#
  • Go
  • Java
  • JavaScript
  • Python
  • Rust
  • Swift