2012-06-10 1 views
0

Есть много языков oop, но я не мог найти ни одного, у которого есть удобства, такие как сбор мусора, но компилируется изначально в машинный код. Как и между C и java/C#. Один интересный язык, который я нашел, был Вала, но это ограничивается платформой GNOME и не так хорошо известноСуществует ли какой-либо высокоуровневый, ориентированный на языке объектно-ориентированный язык в широком использовании?

ответ

1

Go, вероятно, ближайший.

Но почему вы хотите, чтобы он изначально был скомпилирован?

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

+0

использование памяти и доверие к VM/интерпретатору могут быть возможными причинами – niagr

+0

@thelaststud : это были, конечно, возможные причины в 1980-х и начале 1990-х годов .... но на современных аппаратных средствах ПК это почти не имеет значения. Даже мобильные/встроенные устройства могут работать довольно сложной виртуальной машиной в настоящее время. – mikera

+0

Мне еще предстоит найти популярную программу, написанную на сайте go. –

0

Вы думаете о C++? Это очень удобно и может быть составлено практически на любой (основной) платформе.

+0

ой извините, я имел в виду «сборки мусора», а не «управление памятью» ... изменили его. – niagr

+0

Является ли это причиной этого? –

+0

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

0

В случае, если вы хотите использовать язык оо, который скомпилирован с использованием собственного кода, вы будете «всегда» использовать заголовочные файлы и прочее, поскольку формат elf не поддерживает oo (в эльфе нет информации о классе) . Если вы хотите использовать классы из внешних библиотек, вам нужно как-то сообщать компилятору о том, что есть классы, функции и т. Д., Которые объявлены вне вашего проекта. В C++ это разрешается с помощью файлов заголовков. Это, я думаю, главный недостаток в родных объектно-ориентированных языках. Чтобы решить эту проблему, нужно будет сделать несколько настроек для эльфа/загрузчика/компоновщика, чтобы поддерживать такие функции (например, «связывание» с «классами»), которые вы могли бы ожидать. Хотя механизм сбора мусора может быть реализован даже на родных языках. Но это не подходит для реализации ОС.

Есть ЛИЭС C++, чтобы сделать это для таких приложений, как пользовательскими:
Boehm collector
Smart pointers