Question

Dans la société où je travaille, nous faisons beaucoup de fichier de la base de traitement de la transaction.Les centres de traitement autour de la conversion de fichiers entre de nombreux formats pour convenir à de nombreux systèmes dans de nombreuses entreprises.

Le traitement implique presque toujours une XML stade et peuvent inclure un mal de texte d'analyse, recherches en base de données, conversion de données et de validation des données.

Actuellement, les programmes de l'accomplissement de toutes ces tâches sont écrits dans C++ et ils exécutent très rapidement, le tout sur un serveur moyen.Je suis étudiant les possibilités de l'utilisation d'un plus "moderne" de la langue que les nouveaux diplômés programmeurs sont plus susceptibles d'être familier avec.(Bon d'allocation de mémoire dans C++ semble causes des problèmes avec beaucoup de nouveaux programmeurs de ces jours)

Basé sur la brève information fournie, serait un langage comme python fournir les fonctionnalités et les performances, ainsi que pour résoudre l'allocation de mémoire (et de divers autres C++ liées à des problèmes qui se posent?

J'aime l'idée de ne pas avoir à compiler les programmes chaque fois que nous faisons un changement.Je comprends que les langages interprétés probablement l'habitude de frapper le même rendement, nous avons actuellement.

Nos systèmes sont Linux ce qui restreignent également quelques options.

Tous les commentaires sur la fonctionnalité et la performance disponible avec Python ou des suggestions d'autres langues serait très apprécié.

Était-ce utile?

La solution

J'aime l'idée de ne pas avoir à compiler les programmes chaque fois que nous faisons un changement.Je comprends que les langages interprétés probablement l'habitude de frapper le même rendement, nous avons actuellement.

C'est la question la plus importante;pouvez-vous vivre avec l'impact sur les performances.Vous pouvez essayer d'utiliser Python et en l'étendant avec votre C++ modules pour l'exécution des pièces lourdes.Encore, la commutation de l'ensemble de votre système semble comme un gros effort si la seule raison est le manque de C++ talent.L'embauche de personnes qui connaissent le C++ semble être l'option la moins chère.

Autres conseils

Ce qui est plus important, obtenir rapidement les programmes de travail, ou obtenir les programmes de travail rapidement?

Si vous avez affaire à un grand nombre de fichiers volumineux, alors vous pourriez être mieux de rester en C++ et l'enseignement de votre diplômé programmeurs de ce qu'est un pointeur (!)

Sinon je serais conseillons fortement que vous regardez un script à base de solution, parce que le développement dans ces, une fois que vous êtes à la vitesse, est donc beaucoup plus rapide.Et beaucoup plus de plaisir, si nous sommes honnêtes, pour la plupart des gens à moins.

Si le nombre d'enregistrements de la charge de traitement n'est pas élevé, vous pourriez être surpris de voir combien peu de performance que vous perdez:e / s de fichier sera presque certainement être traitée dans un compilés (C) de la bibliothèque, de sorte que l'interprète de surcharge peut être relativement faible.La peine d'essayer, je vous suggère de le.

De l'impératif langues, Perl est une option évidente, Python est populaire et Ruby a un haut profil (et probablement plus propre OO fonctionnalités que les deux premiers).Ensuite, il y a un peu plus, euh, ésotérique domaine des langages fonctionnels, mais je ne suis pas qualifiés pour faire des commentaires sur ceux-ci.

Python serait probablement supprimer la plupart du faible niveau des choses que vous utilisez dans votre application.L'allocation de la mémoire ne serait pas plus un problème.Aussi, au moins mon université semble être embrassant Python comme langage de programmation, car les élèves n'ont pas à écrire toutes les choses plus formelles pour commencer.Votre seul problème serait les performances de la partie, comme le Python ne sera jamais aussi rapide que la compilation d'un programme C++.

Je vous conseille de prendre une couple de semaines pour apprendre à connaître les langages de programmation que vous envisagez.J'avais découvrez Ruby aussi.Peut-être que le jouet autour avec Haskell, un peu?

Ce que je comprends Python semble bien équipé pour traiter avec tout ce dont vous parlez.XML, base de données de recherches, de validation, d'analyse.Il est généralement un choix sécuritaire, non seulement en raison de la facilité et de plaisir expérience de la programmation, mais si vous êtes coincé, il y a une communauté impressionnante autour de la langue qui sont tout simplement heureux de l'aider.

Une autre alternative consiste à incorporer Python dans votre programme C++.Vous pouvez garder beaucoup de votre demande la même chose, et de faire des appels à Python pour les pièces qui changent souvent, ou ont besoin de la flexibilité qu'un langage de script fournit.

À partir de la Python docs

Les chapitres précédents ont examiné comment étendre Python, qui est, comment étendre la fonctionnalité de Python par l'attachement d'une bibliothèque de fonctions C pour c'.Il est également possible de faire de la inverse:enrichir votre C/C++ application par l'incorporation de Python en elle.L'incorporation permet à votre application avec la capacité de mettre en œuvre certaines de les fonctionnalités de votre application en Python plutôt que C ou C++.Cette peut être utilisé à plusieurs fins;un exemple serait de permettre aux utilisateurs de adapter l'application à leurs besoins par l'écriture de scripts en Python.Vous pouvez également l'utiliser vous-même si certaines de la fonctionnalité peut être écrit dans Python plus facilement.

Je déteste dire cela, mais si vous voulez quelque chose que les développeurs vont être familier avec, aller avec Java.Java est le langage que la plupart des récents diplômés seront plus familiers avec.Vous avez encore à compiler, mais les temps de compilation sera plus courte que C++.Ça va fonctionner sur Linux et à peu près partout.Il a une bonne garbage collector.Il est assez rapide.Et ai-je mentionné que vos développeurs sera familier avec elle?Non, il n'est pas "cool" comme le Python, mais c'est un très tenté-et-vrai de la langue.

Honnêtement, je doute que vous avez beaucoup de l'arrivée de développeurs qui sucent avec le C++, mais serait génial avec Python de toute façon.Les personnes qui utilisent Python bien ont tendance à être bien avec manuel de gestion de la mémoire.Les gens qui sont mal avec la gestion de la mémoire a tendance à être mauvais avec toutes les langues.

Il est inquiétant de voir que vous avez les développeurs qui sont si mal avec la gestion de la mémoire que vous souhaitez basculer entre les différentes langues.C'est un signe indiquant un problème, mais je ne suis pas sûr que le problème est avec la langue.

Si vous êtes bien avec séjour avec un langage compilé, je resterais avec C++ et vous conseille de choisir un bon ensemble de bibliothèques et d'enseigner aux débutants sur l'utilisation correcte et le respect de solides motifs.

Si vous parvenez à trouver un agréable ensemble de bibliothèques, il sera facile pour les débutants à apprendre l'écriture solide code.Ma (courant) de préférence personnelle est l'intervalle Qt bibliothèque de classe, car elle rend la gestion de la mémoire facile et sécuritaire et agréable de travailler avec.Il dispose également de support pour XML analyse et de génération, a regexp est construit dans, les capacités du réseau, est multi-plateforme, ...et il est également très utile pour les non-GUI systèmes.

Pour moi, c'est une énorme différence entre travailler avec du C++, std de la bibliothèque et de la STL et de travailler avec une puissante bibliothèque comme Qt.Sans doute, en regardant dans boost goodies est également très mériteraient.

Je suggère d'essayer groovy.La prise en charge de XML est fine et l'analyse ainsi que la validation des données ne devrait pas être trop difficile.

Cependant, certaines personnes ont souligné que la migration peut-être pas l'idée la plus lumineuse.Ne pouvez-vous pas essayer de facteur commun des trucs dans des "macher des objets" et "validation des objets", de sorte que les nouveaux programmeurs d'utiliser votre bibliothèque C++ au lieu d'essayer d'écrire des erreurs nouveau code que seuls les doublons existants fragments?

Aussi faire m'a assurez-vous d'utiliser les e / s de fichier (iostreams) et pas C comme les IO en C++, ce qui devrait aider avec les problèmes de mémoire de beaucoup.

Également à la recherche pour les bibliothèques boost peut être utile.

Les performances en Python peut être un très gros problème.Une fois que j'ai eu à créer des programmes d'optimisation de l'algorithme sur la liste de tâches.J'ai commencé avec Python, il a créé des super-rapide et propre, puis vu qu'il va prendre des heures pour fournir un résultat.La réécriture ligne par ligne de C++ donné lieu à plus de 100x amélioration de la vitesse...

Alors parfois, il n'est pas une question de 5 à 10% de perte de performances comme vous pouvez le voir.Vous devez étudier dans votre cas (peut-être un petit test?).

Ou devrait essayer de stocker vos règles d'analyse sur une base de données au lieu de les laisser codée en dur dans votre code.Comme Ken Bas cité à juste titre, minimiser code, de maximiser les données.De cette façon, vous n'auriez pas besoin de recompiler à chaque fois un petit changement.

Si vous pouvez vous en sortir avec l'aide de Python, Ruby, Groovy ou Perl vsC++, vous serait mieux de passer par avec un de ces langues.La productivité va augmenter considérablement.Si vous trouvez que vous avez besoin de plus de performances, puis aller avec Java.Tout le monde devrait connaître et d'utiliser au moins un typées dynamiquement de la langue.

devrait passer à python que languange faire dans la mise en réseau, si vous avez besoin de déplacement rapide vers c/c++

si la nature du projet que vous faites vous permet même d'envisager de déplacer, puis déplacez (en supposant que vous avez une idée).Dans de nombreux projets C++ toutefois, votre seul choix est de déménagement en bas un ou deux niveaux d'abstraction (par exemple, de C ou de l'Assemblée).

Je suis d'accord avec les autres, vous devriez coller avec C++.La commutation d'un non-langage compilé est un pas en arrière.Alors que de nombreux programmeurs peuvent avoir de la difficulté à traiter avec certains de l'importun aspects de la langue (tels que les pointeurs), au moins la plupart des programmeurs ont été exposés à certains C++.Je vous recommande de passer votre temps et de l'argent à l'amélioration de votre base de code et les programmeurs plutôt que de changement de langue.

Comme pour les autres langues, vous pouvez garder un œil sur votre ALLER lang.Un ami à moi l'a utilisé assez largement.C'est un moderne langage compilé.Il a tendance à être clair, concis et moderne.ALLEZ les applications s'exécutent généralement à des vitesses comparables à celles écrites en C++ et il s'interface bien avec le web.Ce n'est pas très mature à ce point, mais il semble prometteur.

Bonne Chance!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top