2009-10-03 26 views
16

Czy istnieje język skryptowy dla języka C++ (takiego jak perl), który może być używany do szybkiego tworzenia i używania jakiegoś narzędzia, które można przekonwertować na program C/C++, aby uzyskać wyższą wydajność wdrażania?Język skryptowy dla C/C++?

EDYCJA: Na podstawie kilku komentarzy, pozwól mi wyjaśnić pytanie. Powinienem móc przekonwertować skrypt na program C/C++ lub plik binarny bez modyfikowania skryptu.

+0

@rjoshi, może musisz wyjaśnić. Założyłem przeciwieństwo @Mike'a, że ​​chciałeś obsługiwać język skryptowy w aplikacji C++. Zrobiłem to dla Windows z silnikiem VBScript, więc może to było moje doświadczenie jako moje nastawienie. – kenny

+0

Chcę zrobić szybki prototyp w języku skryptowym do programowania i powinienem być w stanie wdrożyć dla wysokiej wydajności, więc zastanawiałem się, czy można przekonwertować skrypt do programu C/C++ do wdrożenia. – rjoshi

+0

@rjoshi: Proszę nie komentować własnego pytania. Zaktualizuj swoje pytanie. Komentowanie własnego pytania jest głupie - masz pytanie. Możesz to naprawić, aby wyjaśnić rzeczy. –

Odpowiedz

25

z C/C++ interpretera można użyć C/C++ jako język skryptowy


Uwaga: Do tej pory próbowałem tylko Ch i CInt. Dodałem ccons i UnderC, aby lista była bardziej kompletna.

+0

te linki są bardzo, bardzo interesujące, dzięki za podzielenie się z nami! Nie sądziłem, że istnieje możliwość tworzenia skryptów w języku C++ :) – MaciekTalaska

+0

Jeszcze jedno: ** SCC **: http://volnitsky.com/project/scc/ –

+0

Co to jest "C/C++"? Czy ci tłumacze obsługują język C lub C++? –

2

Wiele projektów łączy się np. C++ i Python - patrz na przykład boost.python.

Preferuję R i używam interfejsu Rcpp od R do C++.

Każda skrzynka zapewnia język skryptowy do prototypowania i łatwe "przyklejenie" do C++ pod kątem wydajności.

9

Możesz spróbować często używać Lua z C++ w branży gier. Ma mały ślad pamięci i jest dość dojrzały, ma świetną bibliotekę ... po prostu spróbuj.

hm ... Nie rozumiem, co chcesz osiągnąć: czy chcesz znaleźć język skryptowy, który w jakiś sposób zostanie w magiczny sposób przekształcony w źródło C++? Czy naprawdę chcesz tylko utworzyć plik wykonywalny ze skryptu?Jeśli to drugie - możesz spróbować py2Exe.

+0

"Mały odcisk stopy" jest terminem względnym ... Lau wymaga więcej pamięci niż niektóre systemy, które chciałbym użyć. – NoMoreZealots

+0

W przypadku wbudowanego programowania (i podobne), gdzie każdy bajt pamięci jest wartościowy, używanie dowolnego języka, który ma własną maszynę wirtualną, może nie być najlepszym rozwiązaniem (zakładam). Nie określiłeś, do czego chcesz używać języka skryptowego, na jakiej platformie, jakie były ograniczenia ... Trudno było zgadnąć;) A jeśli chcesz porównać wydajność różnych języków: http : //shootout.alioth.debian.org/ – MaciekTalaska

1

Dla Pythona czasami przydaje się psyco. Nie jestem pewien, czy istnieje jakiś ekwiwalent dla perla.

Wybierając język dla zadania, bardziej przydatny jest wybór języka, który najlepiej pasuje do danego zadania. Jeśli zadanie wymaga większej wydajności niż język skryptowy może zapewnić w normalnych warunkach, zwykle lepiej jest po prostu przełączać się, niż pochylać się do tyłu, aby szybko wykonać kod.

+0

Zgadzam się z twoim komentarzem, ale problem polega na tym, że robisz szybki prototyp i nie będziesz znać wymagań wydajności, dopóki produkt nie odniesie sukcesu, a wydajność stanie się wąskim gardłem. – rjoshi

0

Pytanie może być interpretowany na różne sposoby ...

Jeśli już zakodowana część aplikacji w C++ i trzeba dodać moduły lub skryptów, które chcesz dodać w kodzie C++ ostatecznie na poprawie wydajność, można użyć Qt, która jest solidną, bardzo kompletną platformą wieloplatformową.

Obejmuje obsługę scripts (ECMAScript, standardowa wersja Javascript), z której można uzyskać dostęp do obiektów C++, jeśli trzeba. Zapewnia także obsługę wtyczek.

Przy tym podejściu, można nawet przebiegać w trzech etapach,

  • najpierw zrobić kilka testów w JavaScript,
  • następnie zakodować bazę aplikacji w C++ i nadal korzystać z udziału w skryptach (dla na przykład, jeśli chcesz wypróbować różne algorytmy),
  • i na końcu portuj wszystko, lub przynajmniej najważniejsze części, w C++.

Inną opcją jest osadzenie interpretera Pythona w kodzie, chociaż prawdopodobnie będzie to wymagało więcej pracy.

2

pawn

pionek jest prosty, typeless, 32-bitowy język przedłużenie o składni C-podobne. Program "źródłowy" pionka jest kompilowany do pliku binarnego w celu uzyskania optymalnej prędkości wykonania. Kompilator pionków wyświetla kod P (lub kod bajtowy), który następnie jest uruchamiany na maszynie abstrakcyjnej. Szybkość wykonania, stabilność, prostota i niewielka powierzchnia stanowiły podstawowe kryteria projektowe zarówno dla języka, jak i maszyny abstrakcyjnej.

Ten język jest bardzo podobny do składni c, więc każdy, kto zrobił C++, c, C#, java będzie mógł go przeczytać i po prostu go przeczyta, tak aby nikt nie mógł go przeczytać. Ten język jest obecnie używany dookoła, między innymi skryptowania na serwerach halflife 1 i halflife2.

+0

/Ja kocham mojego pionka, a faceci AMX zrobili kilka INNYCH rzeczy z tym językiem. –

0

Nie jestem pewien, czy rozumiem twoje pytanie, ale jeśli chcesz wdrożyć własny język skryptowy, który może łączyć się z twoim kodem C++, możesz rzucić okiem na boost :: spirit. Musisz po prostu powiedzieć mu swoją gramatykę i masz język skryptowy, robiący cokolwiek mu powiesz w C++. Możesz określić swoją gramatykę za pomocą operatorów C++, co czyni ją bardzo łatwą i intuicyjną.

Tego właśnie używałem do moich niedawnych potrzeb i wygląda na to, że będzie dobrze. Masz pełny dostęp do obiektów C++ podczas określania gramatyki, a użytkownik może mieć bardzo prosty język do nauczenia się (w porównaniu do CINT, gdzie językiem byłoby samo C++).

Czas kompilacji jest teraz trochę powolny, ale jeśli nie trzeba implementować bardzo skomplikowanego języka, to powinno być możliwe do opanowania (nie chciałbym zobaczyć czasu kompilacji dla czegoś takiego jak C++). Również w najnowszej wersji brakuje trochę dokumentacji (a najnowsza wersja jest trochę trudna do znalezienia), ale jest stosunkowo łatwa w użyciu, więc warto ją sprawdzić, w zależności od potrzeb.

2

Istnieje nowy pakiet Chaiscript, który został zaprojektowany dla języka C++. Jest stosunkowo nowy i nie do końca stabilny.

4

Każdy zainteresowany w języku skryptowym, który jest (w większości) bardzo podobny do C++, może chcesz przyjrzeć angelscript (ZLIB):

AngelCode Scripting Library lub AngelScript jak to jest również znane , to wyjątkowo elastyczna biblioteka skryptów międzyplatformowych zaprojektowana, aby umożliwić aplikacjom rozszerzenie ich funkcjonalności za pomocą zewnętrznych skryptów. Został zaprojektowany od początku jako łatwy w użyciu komponent, zarówno dla programisty aplikacji, jak i twórcy skryptów.

Podjęto wysiłki, aby umożliwić wywoływanie standardowych funkcji C i metod C++ bez potrzeby korzystania z funkcji proxy. Aplikacja po prostu rejestruje funkcje, obiekty i metody, z którymi skrypty powinny być w stanie pracować, i nic więcej nie trzeba robić z kodem. Te same funkcje używane wewnętrznie przez aplikację mogą być również używane przez silnik skryptów, co eliminuje potrzebę duplikowania funkcjonalności.

Dla twórcy skryptów język skryptowy jest zgodny z powszechnie znaną składnią C/C++ (z drobnymi zmianami), ale bez potrzeby martwienia się o wskaźniki i wycieki pamięci. W przeciwieństwie do większości języków skryptowych, AngelScript używa typowych typów C/C++ dla bardziej wydajnej komunikacji z aplikacją hosta.

Aby uzyskać więcej informacji, sprawdź: http://www.angelcode.com/angelscript/sdk/docs/manual/index.html

+0

fajne rzeczy! :-RE – ASBai

Powiązane problemy