Являются ли языки программирования высокого уровня, как правило, объектно-ориентированными, в то время как языки низкого уровня процедурно ориентированы? - PullRequest
1 голос
/ 02 июня 2009

Я просто немного запутался во всех типах языков. В чем разница - если она есть - между различением языков высокого уровня / низкого уровня по сравнению с различием объектно-ориентированного / процедурного? Многие аналогии кажутся похожими.

Ответы [ 7 ]

7 голосов
/ 02 июня 2009

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

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

Язык высокого уровня может быть процедурным, объектно-ориентированным, функциональным и т. Д. *

В языках нижнего уровня могут отсутствовать такие понятия, как ориентация объекта, поскольку ориентация объекта является абстракцией.

1 голос
/ 02 ноября 2010

не совсем.

C ++, например, является объектно-ориентированным, и это довольно низкий уровень.

1 голос
/ 02 июня 2009

Высокий уровень / низкий уровень относится к воспринимаемой «близости» языка к ассемблеру и машинному коду (ассемблер низкоуровневый, C рассматривается как более низкий уровень, чем C ++ или Java и т. Д.).

ОО и процедурное программирование - это языковые средства, предназначенные для поддержки определенного способа разработки программ (так называемых парадигм программирования). Они не имеют никакого отношения к тому, является ли язык высоким или низким уровнем, за исключением того факта, что язык ОО имеет тенденцию не быть низким уровнем, поскольку ассемблер не знает об объектах и ​​классах. Существует множество других парадигм, например, функциональное программирование.

0 голосов
/ 30 ноября 2016

Я думаю, что здесь можно привести хорошую аналогию.

Языки, которые являются объектно-ориентированными, имеют тенденцию быть более высокого уровня, чем чисто функциональные. Посмотрите на c ++ и c. Да, c ++ все еще находится на довольно низком уровне, как упоминает docesam, но c ++ все еще находится на более высоком уровне, чем его чисто функциональный старший брат, c.

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

Но ориентации объекта недостаточно для определения языка наивысшего уровня.

Я бы посмотрел на следующие вещи:

  • Имеет ли язык статическую или динамическую типизацию? (Javascript и Python против Java и C ++)
  • объектно-ориентированный или нет? (c против c ++)
  • чистые текстовые макросы или шаблоны? (c против c ++)
  • Динамическое связывание против статического связывания (снова Javascript и Python против Java и c ++)
  • Поддерживает ли язык именованные функции или вам нужно использовать переносы строк?
  • Позволяет ли язык такие вещи, как комментарии?
  • еще много
0 голосов
/ 02 июня 2009

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

Аналогии схожи, потому что все сводится к одному - машинному коду!

0 голосов
/ 02 июня 2009

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

0 голосов
/ 02 июня 2009

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

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

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

...