Avez-vous utilisé du C++ interprètes (pas des compilateurs)?
Je suis curieux de savoir si quelqu'un a utilisé UnderC, Cint, de s'Accrocher, Ch, ou de toute autre C++ interprète et ont pu partager leur expérience.
Cette question est sur le C++, pas de C.
Le vote pour la fermer comme trop large.
Le vote pour la fermer comme trop large.
OriginalL'auteur Allan Wind | 2008-09-16
Vous devez vous connecter pour publier un commentaire.
REMARQUE: ce qui suit est plutôt CINT spécifiques, mais étant donné que c'est probablement le plus largement utilisé C++ interprète il peut être valable pour tous.
Comme un étudiant diplômé en physique des particules, qui est utilisé CINT largement, je dois vous avertir de suite. Alors qu'il ne "travail", il est en train d'être progressivement, et ceux qui passent plus d'un an en physique des particules, généralement apprendre à éviter pour plusieurs raisons:
En raison de ses racines comme un C de l'interpréteur, il ne parvient pas à interpréter certains des composants les plus critiques de C++. Modèles, par exemple, ne fonctionnent pas toujours, de sorte que vous serez découragés d'utiliser les choses qui font du C++ donc flexible et utilisable.
Il est plus lent (par au moins un facteur 5) que minimale C++ optimisé.
Les messages de débogage sont beaucoup plus visibles que celles produites par g++.
De la portée est incompatible avec compilé en C++: il est assez courant de voir le code de la forme
alors que tout travail compilateur C++ serait se plaignent que
correcton
a disparu hors de portée, CINT le permet. Le résultat est que CINT code n'est pas vraiment C++, juste quelque chose qui ressemble à cela.En bref, CINT a aucun des avantages du C++, et tous les inconvénients, en plus de certains.
Le fait que CINT est encore utilisé à tous est probablement plus d'un accident historique en raison de son inclusion dans le cadre de ROOT. En arrière quand il a été écrit (il y a 20 ans), il y avait un réel besoin pour un langage interprété interactif de traçage /raccord. Maintenant il y a beaucoup de logiciels qui remplissent ce rôle, dont beaucoup ont des centaines de développeurs actifs.
Aucune de ces sont écrits en C++. Pourquoi? Tout simplement, le C++ n'est pas destiné à être interprété. Le typage statique, par exemple, vous permet d'acheter de grands progrès dans l'optimisation lors de la compilation, mais sert essentiellement à l'encombrement et à la sur-contraindre votre code si l'ordinateur n'est autorisé à voir lors de l'exécution. Si vous avez le luxe d'être en mesure d'utiliser un langage interprété, apprendre Python ou Ruby, le temps qu'il vous faut pour apprendre le sera moins que vous perdez, trébuchant sur CINT, même si tu connais déjà le C++.
Dans mon expérience, les plus anciens les chercheurs qui travaillent avec de la RACINE (le paquet, vous devez installer pour exécuter CINT) fin de la compilation de la RACINE des bibliothèques en C++ exécutables pour éviter CINT. Ceux de la jeune génération soit suivre cette voie ou de l'utilisation de Python pour l'écriture de scripts.
D'ailleurs, la RACINE (et donc CINT) prend à peu près une demi-heure pour compiler sur une assez moderne, ordinateur, et parfois échouer avec les nouvelles versions de gcc. C'est un paquet qui sert un objectif important il y a plusieurs années, mais maintenant c'est en montrant clairement c'est l'âge. En regardant dans le code source, vous trouverez des centaines de déprécié c-style de moulages, d'énormes trous dans la sécurité du type, et de la forte utilisation de variables globales.
Si vous allez écrire C++, écrire le C++, c'est censé être écrit. Si vous devez absolument avoir un C++ interprète, CINT est probablement un bon pari.
Croyez-moi, je suis heureux que nous sommes de ne pas travailler avec de la PATTE. Mon point n'est pas que CINT est pire que tout, seulement qu'il y a beaucoup de choses qui serait le mieux.
comment peut-il être plus lent?
Je ne sais pas si je vous comprends: les interprètes sont plus lent que le code compilé
ce n'est pas juste un wrapper autour de compilateur? Probablement, vous pouvez définir l'optimisation que vous voulez (je suppose -O0 est par défaut pour plus d'interactivité et de la liaison incrémentielle). root.le cern.ch/download/R2002/Cint2002.pdf - optimisation mentionné.
OriginalL'auteur Shep
Il est s'accrocher du Cern projet de C++ interprète basé sur clang - c'est nouvelle approche basé sur 20 ans d'expérience dans RACINE cint et c'est tout à fait stable et recommandé par le Cern, les gars.
Est sympa Google Talk: présentation de s'accrocher, C++ Interprète Basés sur clang/LLVM.
OriginalL'auteur Grzegorz Wierzowiecki
cint est le processeur de commande pour la physique des particules, de l'analyse du package RACINE. Je l'utilise régulièrement, et il fonctionne très bien pour moi.
Il est assez complet et s'en sort bien avec le code compilé (vous pouvez charger les modules compilés pour une utilisation dans l'interpréteur...)
fin edit:: Copié à partir d'un plus tard, en double parce que l'affiche que les questions ne semblent pas à l'envie de la poster ici: igcc. Jamais essayé personnellement, mais la page web a l'air prometteur.
Eh bien, c'est le c++ avec une ajouter une couche de complexité de la nécessité de construire l'interpréteur<-->binaire code de dictionnaires. En Plus de la classe racine de l'arbre est une douleur. Mais cint œuvres. Il fonctionne beaucoup mieux que COMIS a fait dans le cernlib jours.
Pour dire la racine "répond à nos besoins" est un peu généreux. Le cadre est terriblement erronée sur plusieurs niveaux de base, et ne continue à voir l'utilisation générale, car il est entièrement non-modulaire et donc presque impossible à enlever. CINT est un premier exemple de quelque chose que vous à installer quand tout ce que vous voulez faire est de lire dans un fichier de données.
+1 pour le lien vers igcc.
OriginalL'auteur dmckee
J'ai (environ un an), joué un peu avec Ch et l'a trouvé pour être très bon.
OriginalL'auteur Alan
Il y a longtemps, j'ai utilisé le C++ interprète appelé CodeCenter. C'était assez sympa, bien qu'il ne pouvait pas gérer les choses comme bitfields ou de fantaisie pointeur de la déformation. Les deux choses cool sur c'était que vous pouviez les regarder quand variables changé, et que l'on pourrait évaluer code C/C++ à la volée pendant le débogage. Ces jours-ci, je pense qu'un débogueur comme GDB est fondamentalement juste comme bonne.
Oui, tous les RPC trucs et les modèles étaient tous partie de la langue interprétée. Assez agréable.
OriginalL'auteur jfm3
Aussi il y a longtemps, j'ai utilisé un produit d'appel Instant C mais je ne sais pas qu'il ait jamais été développé plus loin
OriginalL'auteur user11269
J'ai regardé à l'aide de ch un certain temps en arrière pour voir si je pouvais l'utiliser pour en boîte noire Dll dont je suis responsable. Malheureusement, je ne pouvais comprendre comment l'obtenir pour charger et d'exécuter des fonctions de la Dll. Alors encore une fois, je n'étais pas très motivé et il pourrait bien y avoir un moyen.
OriginalL'auteur Jon Trauntvein
Il y a un programme appelé c-repl qui fonctionne par à plusieurs reprises de la compilation de votre code dans les bibliothèques partagées à l'aide de GCC, puis en chargeant les objets qui en résultent. Il semble évoluer rapidement, compte tenu de la version dans Ubuntu référentiel est écrit en Ruby (sans compter la GCC de cours), tandis que le dernière git est en Haskell. 🙂
OriginalL'auteur Matthew Flaschen