Подтвердить что ты не робот

Низкий, средний, высокий уровень языка, какая разница?

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

4b9b3361

Ответ 1

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

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

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

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

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

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

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

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

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

Ответ 2

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

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

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

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

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

Даже более высокий уровень: диалоги Lisp

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

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

Ответ 3

низкий уровень = длительное время разработки + очень быстрый исполняемый файл

высокий уровень = более короткое время разработки + более медленный исполняемый файл

средний уровень находится между двумя

Ответ 4

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

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

Языки среднего уровня находятся между двумя вышеуказанными

Ответ 5

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

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

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

Ответ 6

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

Ответ 7

Термин среднеуровневый язык - это тот, который я никогда не слышал.

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

Ответ 8

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

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

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

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

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

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

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

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

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

Ответ 9

C - это язык среднего уровня BECOZ        мы можем использовать код на языке ассемблера только небольшую разницу        указатель сделать его мощным (если указатель удалить в c, то он будет рассматривать на низком уровне)        Это портативная функция делает средний лавел  поэтому мы можем сказать, что это язык среднего уровня.

Ответ 10

все относительное... "уровень" отражает объем абстракции.

Ответ 11

Как только вы добавите спектр уровней языка программирования, вы добавите нюанс в определение. Очевидно, что машинный код и сборка зависят от машины. C и С++ в теории являются независимыми от машины, но, по правде говоря, не универсальны. В элементах C, таких как выравнивание NEED, необходимо учитывать, и вы всегда можете управлять стеком в C и в подмножестве C на С++) с помощью указателя и одной инициализированной переменной - если вы достаточно сумасшедшие - так что (x86) rsp никогда не используется. Итак, C, да, это средний уровень. Все остальное - высокий уровень высшего уровня.

Ответ 12

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