Один из языков программирования низкого уровня
Язык программирования. Языки низкого и высокого уровня
Язык программирования — формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, определяющих внешний вид программы и действия, которые выполнит исполнитель под её управлением.
Со времени создания первых программируемых машин человечество придумало более восьми тысяч языков программирования (включая нестандартные, визуальные и эзотерические языки). Каждый год их число увеличивается. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты могут владеть десятком и более разных языков программирования.
Язык программирования предназначен для написания компьютерных программ, которые представляют собой набор правил, позволяющих компьютеру выполнить тот или иной вычислительный процесс, организовать управление различными объектами, и т. п. Язык программирования отличается от естественных языков тем, что предназначен для
взаимодействия человека с ЭВМ, в то время как естественные языки используются для общения людей между собой. Большинство языков программирования использует специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений.
Как правило, язык программирования существует в виде:
- стандарта языка — набора спецификаций, определяющих его синтаксис и семантику; стандарт языка может исторически развиваться (см. подробнее стандартизация);
- воплощений (реализаций) стандарта — собственно программных средств, обеспечивающих работу согласно тому или иному варианту стандарта языка; такие программные средства различаются по производителю, марке и варианту (версии), времени выпуска, полноте воплощения стандарта, дополнительным возможностям; могут иметь определённые ошибки или особенности воплощения, влияющие на практику использования языка или даже на его стандарт.
Способы реализации языков
Языки программирования могут быть реализованы как: компилируемые, интерпретируемые и встраиваемые.
Программа на компилируемом языке при помощи компилятора (особой программы) преобразуется (компилируется) в машинный код (набор инструкций) для данного типа процессора и далее собирается в исполнимый модуль, который может быть запущен на исполнение как отдельная программа. Другими словами, компилятор переводит исходный текст программы с языка программирования высокого уровня в двоичные коды инструкций процессора.
Если программа написана на интерпретируемом языке, то интерпретатор непосредственно выполняет (интерпретирует) исходный текст без предварительного перевода. При этом программа остаётся на исходном языке и не может быть запущена без интерпретатора. Процессор компьютера, в этой связи, можно назвать интерпретатором для машинного кода.
Разделение на компилируемые и интерпретируемые языки является условным. Так, для любого традиционно компилируемого языка, как, например, Паскаль, можно написать интерпретатор. Кроме того, большинство современных «чистых» интерпретаторов не исполняют конструкции языка непосредственно, а компилируют их в некоторое
высокоуровневое промежуточное представление (например, с разыменованием переменных и раскрытием макросов).
Для любого интерпретируемого языка можно создать компилятор — например, язык Лисп, изначально интерпретируемый, может компилироваться без каких бы то ни было ограничений. Создаваемый во время исполнения программы код может так же динамически компилироваться во время исполнения.
Как правило, скомпилированные программы выполняются быстрее и не требуют для выполнения дополнительных программ, так как уже переведены на машинный язык. Вместе с тем, при каждом изменении текста программы требуется её перекомпиляция, что замедляет процесс разработки. Кроме того, скомпилированная программа может выполняться только на том же типе компьютеров и, как правило, под той же операционной системой, на которую был рассчитан компилятор. Чтобы создать исполняемый файл для машины другого типа, требуется новая компиляция.
Интерпретируемые языки обладают некоторыми специфическими дополнительными возможностями (см. выше), кроме того, программы на них можно запускать сразу же после изменения, что облегчает разработку.
Программа на интерпретируемом языке может быть зачастую запущена на разных типах машин и операционных систем без дополнительных усилий.
Однако интерпретируемые программы выполняются заметно медленнее, чем компилируемые, кроме того, они не могут выполняться без программы-интерпретатора.
Некоторые языки, например, Java и C#, находятся между компилируемыми и интерпретируемыми. А именно, программа компилируется не в машинный язык, а в машинно-независимый код низкого уровня, байт-код. Далее байт-код выполняется виртуальной машиной. Для выполнения байт-кода обычно используется интерпретация, хотя отдельные его части для ускорения работы программы могут быть транслированы в машинный код непосредственно во время выполнения программы по технологии компиляции «на лету» (Just-in-time compilation, JIT). Для Java байт-код исполняется виртуальной машиной Java (Java Virtual Machine, JVM), для C# — Common Language Runtime.
Подобный подход в некотором смысле позволяет использовать плюсы как интерпретаторов, так и компиляторов. Следует упомянуть, что есть языки, имеющие и интерпретатор, и компилятор (Форт).
Языки программирования низкого уровня
Первые компьютеры приходилось программировать двоичными машинными кодами. Однако программировать таким образом — довольно трудоемкая и тяжелая задача. Для упрощения этой задачи начали появляться языки программирования низкого уровня, которые позволяли задавать машинные команды в понятном для человека виде. Для преобразования их в двоичный код были созданы специальные программы — трансляторы.
Трансляторы делятся на:
- компиляторы — превращают текст программы в машинный код, который можно сохранить и после этого использовать уже без компилятора (примером является исполняемые файлы с расширением *.exe).
- интерпретаторы — превращают часть программы в машинный код, выполняют его и после этого переходят к следующей части. При этом каждый раз при выполнении программы используется интерпретатор.
Примером языка низкого уровня является ассемблер. Языки низкого уровня ориентированы на конкретный тип процессора и учитывают его особенности, поэтому для переноса программы на ассемблере на другую аппаратную платформу её нужно почти полностью переписать. Определенные различия есть и в синтаксисе программ под разные компиляторы. Правда, центральные процессоры для компьютеров фирм AMD и Intel практически совместимы и отличаются лишь некоторыми специфическими командами. А вот специализированные процессоры для других устройств, например, видеокарт и телефонов содержат существенные различия.
Языки низкого уровня, как правило, используют для написания небольших системных программ, драйверов устройств, модулей стыков с нестандартным оборудованием, программирование специализированных микропроцессоров, когда важнейшими требованиями являются компактность, быстродействие и возможность прямого доступа к аппаратным ресурсам. Ассемблер — язык низкого уровня, широко применяется до сих пор.
Языки программирования высокого уровня
Особенности конкретных компьютерных архитектур в них не учитываются, поэтому созданные приложения легко переносятся с компьютера на компьютер. В большинстве случаев достаточно просто перекомпилировать программу под определенную компьютерную архитектурную и операционную систему. Разрабатывать программы на таких языках значительно проще и ошибок допускается меньше. Значительно сокращается время разработки программы, что особенно важно при работе над большими
программными проектами.
Сейчас в среде разработчиков считается, что языки программирования, которые имеют прямой доступ к памяти и регистров или имеют ассемблерные вставки, нужно считать языками программирования с низким уровнем абстракции. Поэтому большинство языков, считавшихся языками высокого уровня до 2000 года сейчас уже таковыми не считаются.
- Адресный язык программирования
- Фортран
- Кобол
- Алгол
- Pascal
- Pascal ABC
- Python
- Java
- C
- Basic
- C++
- Objective-C
- Smalltalk
- C#
- Delphi
Недостатком некоторых языков высокого уровня является большой размер программ в сравнении с программами на языках низкого уровня. С другой стороны, для алгоритмически и структурно сложных программ при использовании суперкомпиляции преимущество может быть на стороне языков высокого уровня. Сам текст программ на языке высокого уровня меньше, однако, если взять в байтах, то код, изначально написанный на ассемблере, будет более компактным. Поэтому в основном языки высокого
уровня используются для разработки программного обеспечения компьютеров и устройств, которые имеют большой объём памяти. А разные подвиды ассемблера применяются для программирования других устройств, где критичным является размер программы.
Используемые символы
Современные языки программирования рассчитаны на использование ASCII, то есть доступность всех графических символов ASCII является необходимым и достаточным условием для записи любых конструкций языка. Управляющие символы ASCII используются ограниченно: допускаются только возврат каретки CR, перевод строки LF и
горизонтальная табуляция HT (иногда также вертикальная табуляция VT и переход к следующей странице FF).
Ранние языки, возникшие в эпоху 6-битных символов, использовали более ограниченный набор. Например, алфавит Фортрана включает 49 символов
(включая пробел): A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 = + — * / () . , $ ‘ :
Заметным исключением является язык APL, в котором используется очень много специальных символов.
Использование символов за пределами ASCII (например, символов KOI8-R или символов Юникода) зависит от реализации: иногда они разрешаются только в комментариях и символьных/строковых константах, а иногда и в идентификаторах. В СССР существовали языки, где все ключевые слова писались русскими буквами, но большую популярность подобные языки не завоевали.
Расширение набора используемых символов сдерживается тем, что многие проекты по разработке программного обеспечения являются международными. Очень сложно было бы работать с кодом, где имена одних переменных записаны русскими буквами, других — арабскими, а третьих — китайскими иероглифами. Вместе с тем, для работы с текстовыми данными языки программирования нового поколения (Delphi 2006, C#, Java) поддерживают Unicode.
Язык программирования низкого уровня
Низкоуровневый язык программирования (язык программирования низкого уровня) — язык программирования, близкий к программированию непосредственно в машинных кодах используемого реального или виртуального (например, Java, Microsoft .NET) процессора. Для обозначения машинных команд обычно применяется мнемоническое обозначение. Это позволяет запоминать команды не в виде последовательности двоичных нулей и единиц, а в виде осмысленных сокращений слов человеческого языка (обычно английских).
Иногда одно мнемоническое обозначение соответствует целой группе машинных команд, выполняющих одинаковое действие над разными ячейками памяти процессора. Кроме машинных команд языки программирования низкого уровня могут предоставлять дополнительные возможности, такие как макроопределения (макросы). При помощи директив есть возможность управлять процессом трансляции машинных кодов, предоставляя возможность заносить константы и литеральные строки, резервировать память под переменные и размещать исполняемый код по определенным адресам. Часто эти языки позволяют работать вместо конкретных ячеек памяти с переменными.
Как правило, использует особенности конкретного семейства процессоров. Общеизвестный пример низкоуровнего языка — язык ассемблера, хотя правильнее говорить о группе языков ассемблера. Более того! Для одного и того же процессора существует несколько видов языка ассемблера! Они совпадают в машинных командах, но различаются набором дополнительных функций (директив и макросов).
Также к языкам низкого уровня условно можно причислить MSIL, применяемый в платформе Microsoft .NET, Форт, .
См.также
Ссылки
Wikimedia Foundation . 2010 .
Смотреть что такое «Язык программирования низкого уровня» в других словарях:
Язык программирования высокого уровня — Высокоуровневый язык программирования язык программирования, разработанный для быстроты и удобства использования программистом. Основная черта высокоуровневых языков это абстракция, то есть введение смысловых конструкций, кратко описывающих такие … Википедия
Язык программирования Модула — алгоритмический язык, предназначенный для составления программ, работающих в реальном времени. В языке Модула используются: понятия модуля и процесса; средства программирования низкого уровня. Программа на языке Модула формируется из независимых… … Финансовый словарь
ЯЗЫК ПРОГРАММИРОВАНИЯ — это совокупность набора символов (алфавита) системы, правил образования (синтаксис) и истолкования конструкции из символов (семантика) для задания алгоритмов с использованием символов естественного языка. В самом общем виде формальный язык… … Большая политехническая энциклопедия
ЯЗЫК ПРОГРАММИРОВАНИЯ — (programming language) Язык, используемый для выдачи задания (программы) (program) компьютеру (computer). Существует два основных вида языков программирования: языки низкого уровня (low level languages) и языки высокого уровня (high level… … Словарь бизнес-терминов
Язык программирования Си — Си Семантика: процедурный Тип исполнения: компилируемый Появился в: 1969 73 г. Автор(ы): Кен Томпсон, Денис Ритчи Типизация данных: статическая Основные реализации … Википедия
Язык программирования C — Си Семантика: процедурный Тип исполнения: компилируемый Появился в: 1969 73 г. Автор(ы): Кен Томпсон, Денис Ритчи Типизация данных: статическая Основные реализации … Википедия
Язык программирования — Язык программирования формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия,… … Википедия
ЯЗЫК ПРОГРАММИРОВАНИЯ — формальный язык для описания данных (информации) и алгоритма (программы) их обработки на ЭВМ. Основу Я. п. составляют алгоритмические языки. Первыми Я. п. были внутренние машинные языки, представляющие собой системы команд конкретной ЭВМ,… … Большой энциклопедический политехнический словарь
Низкоуровневый язык программирования — (язык программирования низкого уровня) язык программирования, близкий к программированию непосредственно в машинных кодах используемого реального или виртуального (например, Java, Microsoft .NET) процессора. Для обозначения машинных команд обычно … Википедия
Cyclone (язык программирования) — У этого термина существуют и другие значения, см. Cyclone. Cyclone Семантика: процедурный … Википедия
Студентик.РФ
Уровни языков программирования
Уровни языков программирования.
Если язык программирования ориентирован на конкретный тип процессора и учитывает его возможности, то он называется языком программирования низкого уровня.
Низкий уровень языка программирования не означает плохой уровень.
Имеется ввиду, что операторы языка близки к машинному коду и ориентированы на конкретные команды процессора.
Языком самого низкого уровня является язык ассемблера, который представляет каждую команду машинного кода с помощью удобных для восприятия человеком символических условных обозначений, называемых мнемокодами.
Язык ассемблера дает возможность составлять программы в терминах команд машинного языка, но с использованием более удобной системы обозначений.
Использование языка ассемблера, как правило, ограничивается областью системного программирования, т.е. разработкой операционных систем или их компонентов, разработкой драйверов и т.д.
Так как наборы команд для каждой модели процессора отличаются между собой, то конкретной компьютерной архитектуре соответствует свой язык ассемблера.
Для перевода программы с языка ассемблера в понимаемый процессором машинный код требуется специальная программа, которая также называется ассемблером.
В общем случае программу, которая переводит программу, написанную на языке высокого уровня в машинный код, называют компилятором.
С помощью языков низкого уровня создаются очень эффективные и быстро выполняемые программы, так как разработчик получает доступ ко всем возможностям процессора. С другой стороны, при этом требуется очень хорошо понимать устройство компьютера, требуется больше времени для программирования и результирующая программа не может быть перенесена на компьютер с другим типом процессора.
Языки низкого уровня часто применяют для написания системных приложений, например драйверов устройств, когда важнейшими требованиями становятся быстродействие и возможность прямого доступа к аппаратным ресурсам.
Языки программирования высокого уровня значительно ближе и понятнее человеку. Особенности конкретных компьютерных архитектур в них не учитываются, поэтому создаваемые программы на уровне исходных текстов легко переносятся на другие платформы, для которых создан транслятор этого языка. Разрабатывать программы на языках высокого уровня значительно проще, а ошибок при этом допускается гораздо меньше.
Для перевода отдельных инструкций программы, написанной на языке высокого уровня, в двоичный код, с которым может работать процессор, служат специальные программы, которые называются трансляторами.
Иногда рассматривают три уровня языков программирования:
- машинные (самого низкого уровня);
- машинно-ориентированные (ассемблеры);
- машинно-независимые (высокого уровня).
Машинные и машинно-ориентированные языки требуют подробного описания самых мелких деталей процесса обработки данных.
При программировании на машинном языке можно держать под контролем каждую команду процессора и использование каждой ячейки памяти, тем самым максимально использовать все возможности компьютера. Но процесс этот очень трудоемкий и утомительный, а программы получаются громоздкими.
Поэтому, если нужно разработать эффективную программу, в максимальной степени учитывающую специфику конкретного компьютера, то вместо машинных языков используют близкие к ним машинно-ориентированные языки (ассемблеры). Во всех остальных случаях используют, как правило, языки высокого уровня.
Языки высокого уровня были созданы для того, чтобы освободить программиста от учета технических особенностей конкретных компьютеров.
Уровень языка характеризуется степенью его близости к обычной человеческой речи. Машинный язык радикально от нее отличается.
Важным преимуществом языков высокого уровня является их универсальность, независимость от аппаратуры. Программа, написанная на таком языке, может выполняться на разных компьютерах.
Транслятор — это программа, предназначенная для автоматического перевода описания алгоритма решения задачи с одного формального языка на другой. Причем исходным языком является язык высокого уровня, а конечным – машинный язык (машинный код).
Если трансляция сопровождается выполнением каждой команды после ее перевода в машинный код, то такой транслятор называют интерпретатором.
Если же трансляция сопровождается только переводом программы с одного языка на другой (т.е. с языка высокого уровня на машинный язык) без выполнения каждой команды после ее перевода в машинный код, то такой транслятор называют компилятором.
В настоящее время в мире существует несколько тысяч языков программирования. Для программирования выбирают тот язык, который наилучшим образом подходит для решения той тли иной задачи.
Языки программирования, приспособленные для каких-то специфических задач, называют специальными.
Например, для решения инженерных задач раньше часто использовали ФОРТРАН (FORTRAN), программы для выполнения в сети Интернет пишут, например, на языках PHP, Perl, JavaScript и др.
Специальные языки имеют такие операторы, которые позволяют решать специальные задачи наиболее просто. Обычно эти языки изучают после устройства на работу. Изучать их заранее не имеет смысла.
Кроме специальных существуют универсальные языки программирования. Это языки, с помощью которых можно решать очень широкий круг задач.
Список языков программирования. Языки программирования низкого и высокого уровня
Как развитие компьютерных технологий не стоит на месте, так и постоянно совершенствуются способы и методы программирования, а также языки программирования. Рассмотрим, какие языки существуют в современной компьютерной области и их классификацию.
Общие сведения
Список языков программирования настолько широк и многообразен, что полностью выкладывать его — задача практически невыполнимая. Среди всех языков можно выделить три основные подгруппы:
- машинные (языки программирования низкого уровня);
- машинно-ориентированные (ассемблеры);
- машинно-независимые (высокого уровня);
Среди разработчиков современного программного обеспечения наиболее популярны следующие основные языки программирования. Список приведён в порядке убывания популярности:
Этот список языков программирования далеко не полный, однако это наиболее востребованные языки, знание которых могут потребовать у программиста при устройстве на работу. Все они являются языками программирования высокого уровня.
Основы программирования
Языки программирования низкого уровня — это такие языки, которые требуют учитывать тип и возможности процессора. Операторы и методы работы таких языков программирования достаточно близки к машинному коду, они требуют знания устройства памяти персонального компьютера и того, как процессор обращается к ней.
Сложно назвать различные языки программирования низкого уровня. Список все равно сведётся к одному главенствующему языку — ассемблеру. Поскольку он позволяет составлять коды программ в обозначениях близких машинному коду, то используется ассемблер исключительно при написании системного программного обеспечения, такого как операционные системы, драйверы устройств и при программировании управляющих кодов микросхем.
Минусом таких языков программирования является то, что программы на них пишутся для выполнения конкретных задач, на конкретном устройстве и их выполнение невозможно в случае переноса на другой процессор.
Разработка приложений
Список языков программирования для создания пользовательских приложений, а также для разработки и внедрения пользовательского программного обеспечения насчитывает тысячи позиций. Как понимаете, такое многообразие обусловлено тем, что конкретный язык подходит для решения определённых задач.
Несмотря на то что эти языки программирования определяют в отдельную группу, их выполнение происходит в машинном коде. Для выполнения готовой программы построчно и перевода её в машинный код используются специальные программы — интерпретаторы. Если перевод программного кода с одного языка на другой осуществляется без выполнения команд, то этим занимаются программы-компиляторы. В общем случае программы, предназначенные для перевода написанных программ из одного формального языка программирования в другой, называются трансляторами.
Рассмотрим подробнее языки программирования высокого уровня. Список составлять не будем, просто распишем несколько подробнее о каждом из наиболее популярных.
Специализированный язык программирования предназначен в первую очередь для работы с системами управления базами данных и их программирования. SQL переводится как «специализированный язык запросов». Поскольку в последние десятилетия рынок СУБД вырос многократно, популярность этого языка не становится сюрпризом.
Существуют различные мнения касательно будущего этого языка. Однозначно считается, что технология создания реляционных баз данных была на высоте, однако её время уходит. Необходимость развития в связи с возрастающими объёмами обрабатываемых данных приводит специалистов к мысли, что в будущем человечеству просто необходим переход от реляционных технологий к постреляционным, но с учетом сохранения совместимости с существующими банками данных.
Javascript
По праву занимает второе место среди языков программирования высокого уровня. Прост в освоении, удобен в работе. Повышенная по сравнению с прародителем приспособленность к программированию приводит к тому, что работают с этим языком миллионы человек по всему миру. Объектно-ориентированный язык основанный на С++, приспособлен к созданию программ и приложений, способных обрабатывать огромные потоки информации в специализированных средах и учитывать специфику среды внедрения готового программного продукта.
Технология Java — это основа, позволяющая в неограниченных количествах увеличивать инфраструктуру предприятий и компаний, способная связать воедино системы самого различного калибра, начиная от подключения к сети телефона по Wi-fi и заканчивая суперкомпьютерами.
Потомок HTML, эта технология являет собой расширяемый язык разметки. Она приспособлена для интерпретирования документов. На нем проводятся сложнейшие преобразования и изменения документов. Язык XML используется для передачи и временного хранения данных при работе с различными реляционными базами через интернет.
XML уже достиг того уровня, когда может претендовать на роль основополагающей технологии для построения корпоративных сетей.
Программируем по-русски
Большинство популярных языков программирования используют лексику английского языка. Однако кроме них существуют также русские языки программирования. Список на русском невелик, а предметная область, в которой они используются, очень специализирована. Приведём некоторые примеры.
- 1С:Предприятие. Целая система, предназначенная для управления организацией во всех сферах деятельности. Нередко в объявлениях по поиску сотрудников можно встретить «Программист 1С».
- Глагол. Аналог англоязычного Pascal.
- Робик. Специализированный язык программирования, предназначенный для обучения детей основам программирования.
- Рапира. Язык с динамической типизацией, основанный на процедурах.
Как видите, список языков программирования настолько широк и разнообразен, что его невозможно охватить никакими классификациями и перечнями. Если вы решите заняться программированием на любительском или профессиональном уровне, то помните, что программист — творческая профессия, требующая не только знаний, но и фантазии, воображения, интуиции и даже немного удачи.
Высокие и низкие языки программирования
Эволюция языков программирования с точки зрения уровня абстракции
В эпоху появления первых компьютеров (1940-е гг.) средства создания компьютерных программ были достаточно сложны и требовали длительной и сложной профессиональной подготовки. Фактически специалистам приходилось кодировать алгоритмы в так называемых машинных кодах.
Машинные коды — система номеров, присваиваемых командам компьютерного процессора, распознавая которые он выполняет элементарные операции: загрузку данных в регистры, запись содержимого регистров в оперативную память, выполнение арифметических и логических операций над регистрами и т.п.
Рисунок 1. Перфокарта — носитель машинных кодов для программирования старых компьютеров. Автор24 — интернет-биржа студенческих работ
Успешность труда программиста на начальных этапах развития компьютерной техники зависела от того, насколько хорошо он знает машинные коды и порядок их использования. Эта ситуация порождала существенные проблемы:
- специалистов по программированию было мало, их обучение стоило дорого;
- программы в машинных кодах были громоздкими и с трудом поддавались редактированию;
- программист не мог сосредоточиться на предметной области, поскольку большая часть его мыслительных усилий уходила на оперирование трудно запоминаемыми машинными кодами.
Попробуй обратиться за помощью к преподавателям
Первым шагом в направлении создания более эффективных средств программирования стало появление языка ассемблера. В нем невразумительные машинные коды были заменены на мнемонические команды, напоминающие слова обычного английского языка: MOV для перемещения данных между регистрами, ADD для сложения регистров и т.д.
Ассемблер хотя и стал шагом вперед в решении проблемы упрощения процесса написания компьютерных программ, но, все-таки, оставался достаточно сложным для освоения. Кроме того, он привнес в процесс программирования дополнительный технологический этап — компилирование, т.е. преобразование текста программы в машинные коды.
Большим шагом вперед в повышении уровня абстракции языков программирования стало создание языка программирования Си, разработанного в конце 1960-х гг. при участии выдающегося специалиста ой эпохи Денниса Ритчи. Программы, написанные на Си, стали больше напоминать алгебраические формулы, чем безликие столбцы машинных кодов. Это позволило привлечь к программированию большое количество специалистов из других отраслей, сделать его более демократичным. Развивая идеи языка Си, Бьерн Страуструп в 1970-1980-е годы разработал язык C++ («Си с классами»), который позволил писать более крупные и устойчивые программы.
Задай вопрос специалистам и получи
ответ уже через 15 минут!
Несмотря на прорывной характер языков Си и C++, в них оставалось немало специфики, освоение которой требовало глубокого знания архитектуры компьютеров. 1990-е гг. стали временем появления и развития языка Java, который базировался на синтаксисе C++, но снимал с программиста ответственность за такие рутинные операции, как выделение и освобождение памяти, наблюдение за поддержанием изначально заданных типов переменных и т.п. Появление Java стало отправной точкой для развития высокоуровневых языков нового поколения, при использовании которых специалист может в большей степени сосредоточиться на предметной области (C#, Go, JavaScript и т.д.).
Рисунок 2. Иерархия языков программирования по уровню абстракции. Автор24 — интернет-биржа студенческих работ
Языки программирования низкого уровня
Низкоуровневые языки программирования, называемые также языками программирования низкого уровня, представляют собой, как было сказано выше, синтаксические системы, близкие к тому виду, который представляют собой программы, написанные в машинных кодах. Их часто называют языками ассемблера (to assemble по-английски означает собирать).
Ассемблер — мнемоническая (т.е. рассчитанная на удобство запоминания) надстройка над системой машинных кодов того или иного компьютерного процессора.
Корпорациями выпускается множество процессоров, и архитектуры этих чипов могут сильно различаться. Наиболее широкое распространение получили процессоры фирмы Intel x86, используемые в персональных компьютерах, но есть и другие, рассчитанные на решение специфических задач (например, в компактных устройствах используются процессоры ARM). Более того, для одного и того же процессора может существовать несколько вариантов ассемблера, различающихся директивами и макросами (например, для написания программ для различных операционных систем).
Рисунок 3. Процессоры с различной архитектурой. Автор24 — интернет-биржа студенческих работ
Помимо процессоров-чипов (хардварных процессоров) существуют софтварные процессоры (виртуальные машины), представляющие собой компьютерные программы, обрабатывающие особый байт-код, получающийся в результате компиляции программ, написанных на таких языках, как Java, C#. У таких виртуальных машин собственная система команд, а байт-код можно считать низкоуровневым языком программирования.
С некоторой натяжкой можно назвать низкоуровневым языком программирования Си, поскольку он позволяет вручную управлять памятью и ресурсами процессора. Кроме того, программы на Си могут содержать т.н. ассемблерные вставки, что также роднит его с низкоуровневыми языками.
Языки программирования высокого уровня
Высокоуровневые языки ориентированы на эффективность и высокую скорость разработки. Как правило, порог вхождения (затраты времени на освоение) для них более низкий, чем для ассемблера и Си.
Для ЯП высокого уровня характерен высокий уровень абстракции. Программист, используя их, больше умственной энергии может посвятить осмыслению предметной области, т.е. достижению цели, для которой он пишет программу (онлайн-продажи, электронный справочник, моделирование физических систем и т.п), а также позаботиться об удобстве пользователя, и других моментах, связанных скорее с дизайном, маркетингом и т.п., чем с программированием. О таких технологических операциях, как выделение и утилизация оперативной памяти заботится сам язык в момент компиляции или исполнения программы. Например, во многих высокоуровневых языках (Java, C#, JavaScript) предусмотрены «сборщики мусора», автоматически освобождающие память от больше неиспользуемых объектов.
Достоинством языков высокого уровня является и то, что многие из них обладают кроссплатформенностью: программа, написанная, единожды, будет работать не только на исходной архитектуре, но и будучи перенесенной в иное окружение. Например, программа, разработанная на языке Java в операционной системе Linux может быть запущена без изменений в среде Microsoft Windows или на iOS.
В качестве примеров современных языков высокого уровня можно назвать:
Так и не нашли ответ
на свой вопрос?
Просто напиши с чем тебе
нужна помощь