2015-02-03 11 views
-3

Теперь, когда Apple быстро выпустила Apple, я думал о возможности использования gobject в качестве среды выполнения для существующих языков, таких как ржавчина или даже быстрая.Можно ли использовать gobject в качестве языковой среды так же, как это может сделать какао?

Моя основная забота состоит в том, что, хотя vala делает это, он компилируется до c и требует языковых привязок, даже если библиотека, которую вы пытаетесь использовать, уже использует gobject и даже тогда каким-то образом vala cant использует функции, которые c не поддерживает таких как перегрузка функций, в то время как объект-с не поддерживает его, но быстро и все еще можно использовать с ним.

С хорошей стороны обе системы во время выполнения имеют много общих черт, например, с помощью подсчета ссылок, имея сигналы и быть более динамичным, чем в среднем

+1

Это не вопрос. –

+0

Это был мой первый вопрос в переполнении стека, извините, если я пропустил какое-либо из правил этого сайта, мог бы кто-нибудь ответить на более важный вопрос или на другой сайт. –

+0

Отлично! - * welcome * для переполнения стека. Пожалуйста, возьмите бесплатный тур! http://stackoverflow.com/tour. Я уверен, что скоро вы столкнетесь с вещами, и я и тысячи других энтузиастов с удовольствием ответим на ваши вопросы. Тебе это понравится. –

ответ

3

библиотек можно просматривать GObject (и в выдвижении БОЙКОГО и экосистему БОЙКОГО на основе) в качестве общего языка для выполнения нескольких языков:

  • Вала/Genie
  • GJS (то версия GNOME из ECMAScript/JavaScript)
  • C
  • C++
  • Python (через PyGObject)
  • Вероятно, другие, на самом деле любой язык, который может поговорить с C API

На самом деле это действительно является расширением среды выполнения C (который ядро общее время работы большинства операционных систем), что добавляет поддержку ООП.

Существуют и другие такие технологии, как Java JVM .NET CLR, и, поскольку вы описываете, что Apple использует среду выполнения Objective C для нескольких языков.

Существует (в принципе) ничего, что мешает кому-либо писать компилятор Rust или Swift, который делает что-то похожее на Vala (испускает код C и использует GObject как его объектную систему).

О вашей заботы:

Вала, а также может испускать объектный код непосредственно (без промежуточного «компилировать C» шаг).

Есть некоторые преимущества для концепции valac написана на данный момент, хотя:

  • Вы можете взять излучаемые файлы C и использовать их в программе C без необходимости иметь valac установлены
  • Гораздо проще для Валы потреблять файлы C и
  • Интерфейс внешней функции (называемый VAPI в Vala) был разработан, чтобы упростить использование библиотек C и абстрактных из общих C-идиом (например, строки с нулевым завершением, передающие массив длиной параметр и т. д.)
  • сгенерированный код C может быть оптимизирован компилятором C
  • Standard C инструментов могут быть использованы для проверки сгенерированного кода C
  • Вы действительно можете прочитать код C, чтобы увидеть, что Вала делает внутренне (большой плюс для люди, которые уже знают C)

Vala использует C как более высокий уровень «сборки» языка.

+0

спасибо Дженсу, но у меня все еще есть несколько вопросов, которые я уже выяснил, но я не уверен: 1- файлы vapi похожи на мостовой механизм betweven objetive c и swift (adf .ly/ywXS3), и если другой язык должен был использовать gobject, я мог бы использовать одни и те же файлы vapi. Перегрузка метода не используется из-за соглашений об именах, но это может быть 3-какао может использоваться непосредственно из c, как gobject adf.ly/yx9sH - Diego Antonio Rosario Palomino 12 мин назад –

+0

В stackoverflow вы всегда должны задавать один вопрос сразу, это не дискуссионный форум, а сайт вопросов и ответов. Это означает, что вы задаете один конкретный вопрос, а другие попытаются предоставить максимально точный ответ. –

+0

Если вас интересует обсуждение, я бы посоветовал вам перейти в список рассылки или канал IRC, см. Раздел контакта на этой странице: https://wiki.gnome.org/Projects/Vala –

 Смежные вопросы

  • Нет связанных вопросов^_^