Скриптовый язык для C/C++?
Существует ли язык сценариев для C++ (например, perl), который можно использовать для быстрой разработки и использовать какой-либо инструмент, который можно преобразовать в программу C/C++, чтобы повысить производительность при развертывании?
РЕДАКТИРОВАТЬ:
Основываясь на некоторых комментариях, позвольте мне прояснить вопрос. Я должен быть в состоянии преобразовать скрипт в программу на C/C++ или в двоичный файл без изменения моего скрипта.
12 ответов
С помощью интерпретатора C / C++ вы можете использовать C / C++ в качестве языка сценариев
Ch: http://www.softintegration.com/
Коммерческий переводчик C / C++ с бесплатной стандартной версией. Имеет поддержку различных популярных библиотек и оконных инструментов.
CINT: http://root.cern.ch/drupal/content/cint
Активно разработанный интерпретатор C / C++ с открытым исходным кодом (лицензия MIT). Разработано как часть среды ROOT в ЦЕРН. Используется многими физиками.
ccons: http://code.google.com/p/ccons/
Интерактивная консоль C, в которой используется LLVM и ее новый интерфейс C (clang). В стадии активного развития
UnderC: http://home.mweb.co.za/sd/sdonovan/underc.html
Интерпретатор C++ с открытым исходным кодом (LGPL). Кажется, немного устарела (2002).
Примечание: до сих пор я пробовал только Ch и CINT. Я добавил ccons и UnderC, чтобы сделать список более полным.
Вы можете попробовать Lua, довольно часто используемый с C++ в игровой индустрии. Он имеет небольшой объем памяти и достаточно зрел, имеет отличную библиотеку... просто попробуйте.
хм... я не понимаю, чего вы хотите достичь: хотите ли вы найти язык сценариев, который каким-то образом волшебным образом преобразуется в исходный код C++? Или что вы действительно хотите, это просто вариант создания исполняемого файла из сценария? Если последнее - тогда вы можете попробовать py2Exe.
Любой, кто интересуется языком сценариев, который (в основном) очень похож на C++, может захотеть взглянуть на angelscript (ZLIB):
Библиотека сценариев AngelCode, или AngelScript, как ее еще называют, представляет собой чрезвычайно гибкую библиотеку межплатформенных сценариев, разработанную для того, чтобы приложения могли расширять свои функциональные возможности с помощью внешних сценариев. С самого начала он был разработан как простой в использовании компонент как для программиста приложения, так и для сценариста.
Были предприняты усилия, чтобы он вызывал стандартные функции C и методы C++ без необходимости использования прокси-функций. Приложение просто регистрирует функции, объекты и методы, с которыми должны работать скрипты, и больше ничего не нужно делать с вашим кодом. Те же функции, которые используются внутри приложения, также могут использоваться механизмом сценариев, что устраняет необходимость дублирования функций.
Для автора сценариев язык сценариев следует широко известному синтаксису C/C++ (с небольшими изменениями), но без необходимости беспокоиться о указателях и утечках памяти. В отличие от большинства языков сценариев, AngelScript использует общие типы данных C / C++ для более эффективной связи с хост-приложением.
Для получения дополнительной информации, проверьте: http://www.angelcode.com/angelscript/sdk/docs/manual/index.html
pawn - это простой, не типизированный, 32-битный язык расширения с C-подобным синтаксисом. Пешечная "исходная" программа компилируется в двоичный файл для оптимальной скорости выполнения. Компилятор пешки выводит P-код (или байт-код), который впоследствии выполняется на абстрактной машине. Скорость исполнения, стабильность, простота и небольшая занимаемая площадь были важными критериями проектирования как для языка, так и для абстрактной машины.
Этот язык очень похож на синтаксис c, поэтому любой, кто выполнил любой C++,c, C#,java, сможет прочитать его и его просто, так что ни один кодер не сможет его прочитать. Этот язык в настоящее время используется повсеместно, в том числе в сценариях для серверов HalfLife 1 и HalfLife2.
Многие проекты сочетают, например, C++ и Python - см., Например, boost.python.
Я предпочитаю R и использую интерфейс Rcpp от R до C++.
В любом случае вы можете использовать свой язык сценариев для создания прототипов и легко "приклеить" C++ к производительности.
Появился новый пакет Chaiscript, предназначенный для C++. Это относительно новый и еще не совсем стабильный.
Для Python я иногда нахожу психо полезным. Не уверен, что есть какой-нибудь эквивалент для perl.
Когда я выбираю язык для задачи, я считаю более полезным выбрать язык, наиболее подходящий для работы. Если задание требует большей производительности, чем язык сценариев может обеспечить в нормальных условиях, обычно лучше просто переключиться, чем наклониться назад, чтобы попытаться сделать ваш код быстрым.
Вы можете кодировать, используя язык программирования D в качестве скрипта или быстрого скомпилированного вывода.
Вот статья, которая подробно рассказывает о D и его преимуществах "Дело для D"
Вопрос можно интерпретировать по-разному...
Если вы уже написали часть своего приложения на C++ и вам необходимо добавить модули или сценарии, которые вы хотите в конечном итоге добавить в код C++ для повышения производительности, вы можете использовать Qt, который представляет собой надежную, очень полную многоплатформенную инфраструктуру.
Он включает поддержку сценариев (ECMAScript, стандартизированная версия Javascript), из которой вы можете получить доступ к вашим объектам C++, если вам это нужно. Он также обеспечивает поддержку плагинов.
При таком подходе вы можете даже выполнить три шага,
- сначала сделайте несколько тестов в Javascript,
- затем закодируйте базу вашего приложения на C++ и по-прежнему используйте часть в скриптах (например, если вам нужно попробовать разные алгоритмы),
- и, наконец, перенести все, или, по крайней мере, критические части, в C++.
Другой вариант - встроить интерпретатор Python в ваш код, хотя это, вероятно, потребует дополнительной работы.
Я не уверен, что понимаю ваш вопрос, но если вы хотите реализовать свой собственный язык сценариев, который мог бы взаимодействовать с вашим кодом C++, вы можете взглянуть на boost::spirit. Вы просто должны сказать ей свою грамматику, и ваш язык сценариев делает все, что вы скажете в C++. Вы задаете свою грамматику, используя операторы C++, что делает ее очень простой и интуитивно понятной.
Это то, что я сейчас использую для своих недавних нужд, и, похоже, это отлично справится с работой. У вас есть полный доступ к вашим объектам C++ при указании грамматики, и у вашего пользователя может быть очень простой для изучения язык (по сравнению с CINT, где языком будет сам C++).
Время компиляции сейчас немного медленное, но если вам не нужно реализовывать очень сложный язык, он должен быть управляемым (я не хотел бы видеть время компиляции для чего-то вроде C++). Также немного не хватает документации для самой новой версии (а самую последнюю версию найти довольно сложно), но ее относительно легко использовать, поэтому ее стоит проверить, в зависимости от ваших потребностей.