Скриптовый язык для C / C ++? - PullRequest
       58

Скриптовый язык для C / C ++?

16 голосов
/ 03 октября 2009

Существует ли язык сценариев для C ++ (например, perl), который можно использовать для быстрой разработки и использовать какой-либо инструмент, который можно преобразовать в программу C / C ++ для повышения производительности при развертывании?

EDIT:
Основываясь на некоторых комментариях, позвольте мне прояснить вопрос. Я должен быть в состоянии преобразовать скрипт в программу на C / C ++ или в двоичный файл без изменения моего скрипта.

Ответы [ 12 ]

25 голосов
/ 03 октября 2009

С интерпретатором C / C ++ вы можете использовать C / C ++ в качестве языка сценариев

  • Ch : http://www.softintegration.com/

    Коммерческий переводчик C / C ++ с бесплатной стандартной версией. Имеет поддержку различных популярных библиотек и оконных инструментов.

  • CINT : http://root.cern.ch/drupal/content/cint

    Активно разработанный интерпретатор C / C ++ с открытым исходным кодом (лицензия MIT). Разработано как часть ROOT в CERN . Используется многими физиками.

  • 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 , чтобы сделать список более полным.

10 голосов
/ 03 октября 2009

Вы можете попробовать Lua , довольно часто используемый с C ++ в игровой индустрии. Он имеет небольшой объем памяти и достаточно зрел, имеет отличную библиотеку ... просто попробуйте.

хм ... Я не понимаю, чего вы хотите достичь: вы хотите найти язык сценариев, который каким-то образом волшебным образом преобразуется в исходный код c ++? Или что вы действительно хотите, это просто вариант создания исполняемого файла из сценария? Если последнее - тогда вы можете попробовать py2Exe .

4 голосов
/ 08 марта 2010

Любой, кто интересуется языком сценариев, который (в основном) очень похож на C ++, может захотеть взглянуть на angelscript (ZLIB):

Библиотека сценариев AngelCode или AngelScript, как ее еще называют, представляет собой чрезвычайно гибкую библиотеку межплатформенных сценариев, разработанную для того, чтобы приложения могли расширять свои функциональные возможности с помощью внешних сценариев. С самого начала он был разработан как простой в использовании компонент как для программиста приложения, так и для сценариста.

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

Для автора сценариев язык сценариев следует широко известному синтаксису C / C ++ (с небольшими изменениями), но без необходимости беспокоиться о указателях и утечках памяти. В отличие от большинства языков сценариев, AngelScript использует общие типы данных C / C ++ для более эффективной связи с хост-приложением.

Для получения дополнительной информации, проверьте: http://www.angelcode.com/angelscript/sdk/docs/manual/index.html

2 голосов
/ 04 октября 2009

Появился новый пакет Chaiscript , предназначенный для C ++. Это относительно новый и еще не совсем стабильный.

2 голосов
/ 03 октября 2009

пешка

pawn - простой, не типизированный, 32-битный язык расширения с C-подобным синтаксисом. Пешечная исходная программа компилируется в двоичный файл для оптимальной скорости выполнения. Компилятор пешки выводит P-код (или байт-код), который впоследствии выполняется на абстрактной машине. Скорость исполнения, стабильность, простота и компактность были важными критериями проектирования как для языка, так и для абстрактной машины.

Этот язык очень похож на синтаксис c, поэтому любой, кто выполнил любой c ++, c, c #, java, сможет прочитать его и его просто, так что никто из кодеров не сможет его прочитать. Этот язык в настоящее время используется повсеместно, в том числе в сценариях для серверов halflife 1 и halflife2 .

2 голосов
/ 03 октября 2009

Многие проекты объединяют, например, C ++ и Python - см. Например boost.python .

Я предпочитаю R и использую интерфейс Rcpp от R до C ++.

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

1 голос
/ 03 октября 2009

Для Python я иногда нахожу psyco полезным. Не уверен, есть ли какой-нибудь эквивалент для perl.

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

0 голосов
/ 29 сентября 2016

Cling является интерпретатором для c ++ cling

0 голосов
/ 23 июля 2013

Вы можете кодировать, используя язык программирования D в качестве скрипта или быстрого скомпилированного вывода.

вот статья, в которой подробно рассказывается о D и его преимуществах «Дело за Д»

0 голосов
/ 04 октября 2009

Я не уверен, что понимаю ваш вопрос, но если вы хотите реализовать свой собственный язык сценариев, который мог бы взаимодействовать с вашим кодом C ++, вы можете взглянуть на boost :: spirit. Вы просто должны сказать ей свою грамматику, и ваш язык сценариев делает все, что вы скажете, в c ++. Вы задаете свою грамматику, используя операторы c ++, что делает ее очень простой и интуитивно понятной.

Это то, что я сейчас использую для своих недавних нужд, и похоже, что он отлично справится со своей задачей. У вас есть полный доступ к вашим объектам c ++ при указании грамматики, и у вашего пользователя может быть очень простой язык для изучения (по сравнению с CINT, где языком будет сам c ++).

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

...