it-swarm-eu.dev

Použili jste některého z tlumočníků C++ (ne kompilátorů)?

Jsem zvědavý, jestli někdo použil UnderC, Cint, Cling, Ch, nebo jakéhokoli jiného tlumočníka C++ a mohl sdílet své zkušenosti.

65
Allan Wind

POZNÁMKA: co následuje, je spíše CINT specifické, ale vzhledem k tomu, že jeho pravděpodobně nejvíce široce používaným C++ interpretem může být pro všechny platné.

Jako postgraduální student ve fyzice částic, který používá CINT rozsáhle, bych vás měl varovat. I když to "práce", je je v procesu vyřazování , a ti, kteří tráví více než rok ve fyzice částic typicky naučit se vyhnout z několika důvodů: 

  1. Protože jeho kořeny jako C interpretor, to nedokáže interpretovat některé ty kritické komponenty C + +. Šablony, například, ne vždy fungují, takže budete odradeni od používání věcí, které dělají C++ tak flexibilní a použitelné. 

  2. Je pomalejší (alespoň o faktor 5) než minimálně optimalizovaný C++. 

  3. Debugovací zprávy jsou mnohem kryptičtější než ty, které produkuje g ++. 

  4. Scoping je nekonzistentní s kompilovaným C++: je docela běžné vidět kód formuláře 

    if (energy > 30) { 
        float correction = 2.4;
    }
    else {
        float correction = 6.3;
    }
    
    somevalue += correction; 
    

    vzhledem k tomu, že jakýkoli pracovní překladač C++ by si stěžoval, že correcton je mimo rozsah, což CINT umožňuje. Výsledkem je, že CINT kód není opravdu C++, jen něco, co to vypadá. 

Stručně řečeno, CINT nemá žádnou z výhod C++ a všechny nevýhody plus některé. 

Skutečnost, že CINT je stále používán, je pravděpodobně více historická nehoda díky jeho začlenění do rámce ROOT. Když bylo napsáno (před 20 lety), existovala opravdová potřeba interpretovaného jazyka pro interaktivní vykreslování. Nyní existuje mnoho balíčků, které tuto roli plní, z nichž mnohé mají stovky aktivních vývojářů. 

Žádný z nich není napsán v jazyce C++. Proč? Zcela jednoduše, C++ není určen k interpretaci. Statické psaní například kupuje velké zisky v optimalizaci během kompilace, ale většinou slouží ke zmatení a přepsání kódu, pokud je počítač povolen pouze za běhu. Pokud máte luxus v tom, že jste schopni používat interpretovaný jazyk, naučte se Python nebo Ruby, čas, který vám trvá, než se dozvíte, bude menší než to, co ztrácíte po CINTu, i když již znáte C++. 

Podle mých zkušeností, starší výzkumníci, kteří pracují s ROOT (balíček, který musíte nainstalovat ke spuštění CINT) skončí kompilací knihoven ROOT do normálních C++ spustitelných souborů, aby se zabránilo CINT. Ti v mladší generaci buď následují toto vedení nebo používají Python pro skriptování. 

Mimochodem, ROOT (a tedy CINT) trvá zhruba půl hodiny na kompilaci na poměrně moderním počítači a občas selže s novějšími verzemi gcc. Je to balíček, který před mnoha lety sloužil důležitému účelu, ale nyní jasně ukazuje, že je to věk. Při pohledu do zdrojového kódu najdete stovky zastaralých odlitků ve stylu c, velké díry v bezpečnosti typu a velké využívání globálních proměnných. 

Pokud chcete psát C++, napište C++, jak to má být napsáno. Pokud jste absolutně musí mít C + + interpret, CINT je pravděpodobně dobrá sázka. 

29
Shep

Tam je cling Cernův projekt interpreta C++ na základě clang - je to nový přístup na základě 20 let zkušeností v {ROOT cint a je docela stabilní a doporučeno Cern kluky.

Zde je Nice Google Talk: Představujeme cling, C++ Interpreter založený na clang/LLVM .

23

cint je příkazový procesor pro balíček ROOT . Používám ho pravidelně a funguje to velmi dobře.

Je to docela kompletní a dostane se dobře s kompilovaný kód (můžete načíst kompilované moduly pro použití v tlumočníku ...)

pozdní edit :: Zkopírováno z pozdějšího duplikátu, protože plakát na těchto otázkách zřejmě nechce posílat zde: igcc . Nikdy to nezkoušeli osobně, ale webová stránka vypadá slibně.

19
dmckee

Mám (asi před rokem) hraní s Ch a zjistil, že je to docela dobré.

4
Alan

Už dávno jsem použil tlumočníka C++ s názvem CodeCenter. Bylo to pěkné Nice, ačkoli to nemohlo zvládnout věci jako bitfields nebo fantazijní ukazatel mangling. Dvě úžasné věci o tom byly, že byste mohli sledovat, kdy se proměnné změnily, a že můžete během ladění vyhodnotit kód C/C++. V těchto dnech si myslím, že debugger jako GDB je v podstatě stejně dobrý.

2
jfm3

Už dávno jsem použil produktový hovor Instant C, ale nevím, že se to ještě dále rozvíjelo

2
user11269

Existuje program nazvaný c-repl , který opakovaně kompiluje váš kód do sdílených knihoven pomocí GCC a poté načte výsledné objekty. Vypadá to, že se rychle vyvíjí a zvažuje verze v úložišti Ubuntu je napsána v Ruby (nepočítá samozřejmě GCC), zatímco poslední git je v Haskell. :)

0

Díval jsem se na použití ch a zpět zpět, abych zjistil, jestli bych mohl použít pro černé skříňky testování DLL, za které jsem zodpovědný. Bohužel jsem nemohl docela přijít na to, jak to načíst a spustit funkce z DLL. Pak už jsem nebyl tak motivovaný a může být i cesta. 

0
Jon Trauntvein