Хобрук: Ваш путь к мастерству в программировании

Встраивание Mono против Google V8?

Мы хотим добавить скрипты в проект.

Мы колеблемся, какой скриптовый движок использовать. Я использовал в прошлом V8, и это весьма впечатляет. Я тоже использовал Mono, но только в игрушечных проектах или прототипах.

Ограничения:

  1. скорость выполнения.
  2. легкая интеграция.
  3. должен работать на окнах.
  4. 64-битная поддержка.
  5. компилируется под Visual Studio.

Какой двигатель подходит лучше всего?

(Есть ли какое-нибудь руководство по компиляции Mono под win64 с помощью Visual Studio? Есть ли пакеты, включающие файлы Lib и библиотеки DLL?)


  • Моно — это не скриптовый движок. Ему нужен код, скомпилированный в байт-код, а библиотека компилятора не так уж и мала. Кроме того, если вы собираетесь использовать его в Windows, вы можете использовать среду выполнения .NET вместо Mono, поскольку она обычно уже доступна, и это одно и то же. 03.03.2011
  • Сборка Mono под Windows — непростая задача. Файлы решения, похоже, давно не обновлялись. Есть предварительно скомпилированная версия mono для Windows. 05.03.2011
  • Что касается тех, кто говорит, что Mono не является скриптовым движком, мы должны определить термин «скриптинг» в контексте того, что необходимо в проекте. Unity и Torque предоставляют поддержку Mono для управления своими игровыми движками. 05.03.2011

Ответы:


1

В дистрибутив Mono входит файл решения MSVS, его достаточно для сборки библиотеки (но вы не сможете собрать .DLL, лучше взять их из бинарного дистрибутива). См. mkbundle способ встраивания .NET DLL в один двоичный файл. Что касается самих сценариев, вы можете либо встроить компилятор Mono C# (он не такой большой и его легко интегрировать), либо использовать любой из многочисленных языков сценариев, ориентированных на .NET, например, IronPython.

03.03.2011
  • Да, mkbundle может решить множество проблем при развертывании приложения. 07.03.2011
  • @Simon.Jacobi, это также полезный пример того, как вручную встраивать библиотеки DLL в двоичные файлы (есть возможность сохранить генерируемые промежуточные файлы). 07.03.2011

  • 2

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

    05.03.2011
  • Я голосую за это, так как считаю, что Lua можно использовать для решения многих задач. 05.03.2011
  • Lua может решить многие проблемы, но вы должны хотя бы упомянуть LuaBind (rasterbar.com/products/luabind. html), так как вопрос касается C++ и простоты интеграции. Без помощи SWIG простой Lua потребовал бы много работы с C++. 07.03.2011
  • или, если вы не используете BOOST, хорошей альтернативой будет LuaBridge. 28.03.2013

  • 3

    Поскольку ответов, за которые проголосовали, нет, я упомяну ChaiScript (да, я соавтор проэкт). Это механизм сценариев только для заголовков, разработанный исключительно для встраивания в приложения C++. Он имеет полную поддержку 64-битных систем и работает с MSVC, G++ и MinGW. Единственная внешняя зависимость — это boost.

    Где он не выигрывает, так это в скорости. Если вам нужно сделать много вычислений в самом скрипте, что ж, я утверждаю, что вы используете скрипты неправильно. Чем выше уровень функции, которую вы можете предоставить скриптовому движку, тем лучше.

    05.03.2011
  • Вы уверены, что, например, Second Life неправильно использует скрипты (они используют Mono для ускорения LSL)? 07.03.2011

  • 4

    V8. На самом деле это это механизм сценариев, а не полноценная среда программирования, такая как Mono (которая конкурирует с Java по размеру).

    Однако... если вам нужен язык сценариев, вы также можете взглянуть на Lua. Его очень легко встроить, он очень быстрый, очень маленький, для него довольно легко программировать, и у него очень либеральная лицензия. Если важна скорость, есть LuaJIT, который все еще находится в стадии разработки, но с осторожностью легко превзойдет C для численного программирования.

    03.03.2011
  • Откуда берутся эти утверждения «Язык X может быть быстрее, чем C»? Я всегда задавался вопросом. 03.03.2011
  • Ориентиры? Задайте вопрос в списке рассылки; есть ряд людей, которые делают именно это, в том числе некоторые люди, которые на самом деле используют C для высокоуровневой работы, а затем обращаются к Lua для критичных к производительности битов... 04.01.2012

  • 5

    Python тоже неплох с Boost.Python.

    03.03.2011
    Новые материалы

    Решения DBA Metrix
    DBA Metrix Solutions предоставляет удаленного администратора базы данных (DBA), который несет ответственность за внедрение, обслуживание, настройку, восстановление базы данных, а также другие..

    Начало работы с Блум
    Обзор и Codelab для генерации текста с помощью Bloom Оглавление Что такое Блум? Некоторые предостережения Настройка среды Скачивание предварительно обученного токенизатора и модели..

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

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

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

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

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