Язык низкого, среднего, высокого уровня , в чем разница?

Я слышал эти термины, используемые для описания языков раньше, например, C не совсем язык низкого уровня, C ++ - средний уровень, а Python - язык высокого уровня. Я понимаю, что это как-то связано с тем, как код компилируется и как он написан. Но что я хочу знать, так это то, что определяет язык в одну из этих трех категорий? Это абсолютные категории, или просто общая идея, которую программисты используют для описания языков друг другу?

32
задан 4 revs, 2 users 67% 27 November 2015 в 17:31
поделиться

7 ответов

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

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

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

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

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

  • C ++ делает все, что может делать C, но добавляет возможность абстрагировать вещи в классы.

  • Java / C # в некотором смысле делает то же самое, что и C ++, но без возможности делать все, что вы можете делать на C (например, манипуляции с указателями в случае Java [спасибо, Джо!]). Однако у них есть сборка мусора, которую вам нужно делать вручную на C ++.

  • Python / Ruby еще более высокого уровня и позволяют забыть о многих деталях, которые вам необходимо указать в чем-то вроде Java или C #.

  • SQL еще более высокого уровня (декларативный). Просто скажите «Дайте мне все элементы в таблице, отсортированные по возрасту», и это поможет вам найти наиболее эффективный способ сделать это.

67
ответ дан 27 November 2019 в 19:47
поделиться

Очень низкий уровень: Машинный код

Низкий уровень: Ассемблер, Форт

Средний уровень: C, C ++, большинство языков системного программирования

Средний / Высокий уровень: D, Go, языки системного программирования со сборкой мусора

Высокий уровень: Java, C #, большинство интерпретируемых языков

Еще более высокий уровень: диалекты Lisp

Самый высокий уровень: SQL, декларативные языки программирования

Если есть что-то еще добавил, подскажите.

13
ответ дан 27 November 2019 в 19:47
поделиться

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

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

Среднеязычные языки находятся между двумя вышеупомянутыми

8
ответ дан 27 November 2019 в 19:47
поделиться

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

«Уровень» - это, по сути, мера того, насколько программист абстрагируется от реальных аппаратных операций. На языке низкого уровня вам, возможно, придется заботиться о фактических ячейках памяти, тогда как на языке высокого уровня вы просто создаете переменные и позволяете ОС обрабатывать память.

Обычный ЦП обрабатывает 32- или 64-разрядные инструкции. В простейшей форме представьте, что это 32 единицы и 0 подряд - это то, что на самом деле интерпретирует и выполняет процессор. Написание этого напрямую (машинный код) будет «самым низким уровнем».

4
ответ дан 27 November 2019 в 19:47
поделиться

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

1
ответ дан 27 November 2019 в 19:47
поделиться

Термин "язык среднего уровня" я никогда не слышал.

"Низкий" и "высокий" относятся к тому, насколько "близко" к машине вы находитесь в своем программировании. Самый низкий уровень - это машинный (двоичный) код. Следующий (и все еще считающийся низким) - ассемблер. Языки более высокого уровня включают в себя больше символики и конструкций, которые должны быть ближе к тому, как человек обычно мыслит. Язык C (и отчасти C++) имеет репутацию некоего гибрида низкого и высокого уровня, поскольку в нем много конструкций, которые есть в языках высокого уровня, но также есть инструкции (например, сдвиги), которые есть в языках низкого уровня, но часто отсутствуют в языках более высокого уровня.

1
ответ дан 27 November 2019 в 19:47
поделиться

По возрастанию вы можете классифицировать языки следующим образом.

Машинный код -> Язык ассемблера -> Скомпилированный язык -> Интерпретируемый язык

Помните, что это не абсолютные черно-белые определения, а скорее оттенки серого. Это скорее рекомендация, чем правило.

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

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

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

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

Мы будем называть Java и C # (.NET) языками среднего уровня, потому что у них есть автоматическое управление памятью (сборка мусора), множество высокоуровневых абстракций (объекты IE ... все же C ++ поддерживает объекты.Вы понимаете, почему шкала считается неопределенной?)

В интерпретируемом языке интерпретатор находится в памяти и считывает исходный код напрямую. Это языки высокого уровня. Python, Perl, Javascript и PHP - все это примеры языков высокого уровня.

1
ответ дан 27 November 2019 в 19:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: