2009-10-03 4 views
16

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

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

+0

@rjoshi, возможно, вам нужно уточнить. Я предположил противоположность @Mike, что вы хотите разместить скриптовый язык в приложении на C++. Я сделал это для Windows с движком VBScript, поэтому, возможно, это был мой опыт как мой уклон. – kenny

+0

Я хочу сделать быстрый прототип на языке сценариев для разработки и должен иметь возможность развертывания для высокой производительности, поэтому мне было интересно, чтобы некоторые могли конвертировать скрипт в программу C/C++ для развертывания. – rjoshi

+0

@rjoshi: Пожалуйста, не комментируйте свой вопрос. Пожалуйста, обновите свой вопрос. Комментирование вашего собственного вопроса глупо - у вас есть вопрос. Вы можете исправить это, чтобы прояснить ситуацию. –

ответ

25

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

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

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

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

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

  • ccons: http://code.google.com/p/ccons/

    Интерактивное C консоль, которая использует LLVM и ее новый C интерфейс (лязг). Под активным развитием

  • UnderC: http://home.mweb.co.za/sd/sdonovan/underc.html

    С открытым исходным кодом (LGPL), C++, интерпретатора. Кажется, немного устарел (2002).


Примечание: До сих пор я пытался только Ch и CInt. Я добавил ccons и UnderC, чтобы сделать список более полным.

+0

Эти ссылки очень, очень интересны, спасибо за то, что поделились с нами! Я не думал, что на самом деле есть возможность создавать скрипты C++ :) – MaciekTalaska

+0

Еще один: ** SCC **: http://volnitsky.com/project/scc/ –

+0

Что такое «C/C++»? Поддерживают ли эти интерпретаторы C, или C++, или и то, и другое? –

2

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

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

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

9

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

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

+0

«Маленькая печать стопы» - относительный термин ... Лау требует больше памяти, чем некоторые системы, которые я бы хотел использовать на них. – NoMoreZealots

+0

Для встроенных разработок (и подобных), где каждый байт памяти является ценным, использование любого языка, который поставляется со своей собственной виртуальной машиной, может быть не лучшим решением (я полагаю). Вы не указали, на что вы хотите использовать язык сценариев, на какой платформе были ограничения ... Было довольно сложно догадаться;) И если вы хотите сравнить производительность различных языков: http : //shootout.alioth.debian.org/ – MaciekTalaska

1

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

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

+0

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

0

вопрос может быть истолкован по-разному ...

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

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

При таком подходе, вы можете даже продолжить в три этапа,

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

Другой вариант заключается в том, чтобы внедрить интерпретатор Python в ваш код, хотя для этого, вероятно, потребуется больше работы.

2

pawn

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

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

+0

/me любит мою пешку, и ребята из AMX сделали некоторые вещи INSANE с языком. –

0

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

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

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

2

Существует новый пакет Chaiscript, который предназначен для C++. Он относительно новый и еще не полностью стабильный.

4

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

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

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

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

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

+0

классные вещи! :-D – ASBai

0

Вы можете закодировать с помощью языка программирования D и как сценарий или быстро скомпилированный вывод.

вот статья, которая говорит подробно о D и его преимущества "The Case for D"

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