66 votes

Pourquoi apprendre le Perl, Python, Ruby, si la société est à l'aide de C++, C# ou Java, comme la langue de l'application?

Je me demande pourquoi un C++, C#, Java développeur veux apprendre un langage dynamique?

En supposant que la société ne veut pas passer son principal langage de développement C++/C#/Java pour une dynamique de l'utilisation qu'il est là pour une dynamique de la langue?

Ce qui helper les tâches peuvent être effectuées par la dynamique des langues plus rapide ou mieux, après seulement quelques jours d'apprentissage de la statique de la langue que vous utilisez pour plusieurs années?

Mise à jour

Après avoir vu les premières réponses, il est clair qu'il y a deux questions. Mon intérêt principal serait quelque chose qui est justifiable pour l'employeur comme une dépense. C'est, je suis à la recherche pour les justifications de l'employeur pour financer l'apprentissage d'un langage dynamique. Outre l'évident que l'employé n'aura point de vue plus large, l' les employeurs sont généralement à la recherche pour certains "vrais" bénéficier.

80voto

Cervo Points 2862

Un grand nombre de fois une tâche rapide que ne fait pas partie de l'interface principale du logiciel vous êtes en développement. Parfois, la tâche est un des ie comparer ce fichier à la base de données et laissez-moi savoir les différences. Il est beaucoup plus facile de faire de l'analyse de texte en Perl/Ruby/Python que c'est en Java ou en C# (en partie parce qu'il est beaucoup plus facile d'utiliser des expressions régulières). Il va probablement prendre beaucoup moins de temps pour analyser le fichier texte à l'aide de Perl/Ruby/Python (ou peut-être même vbscript grincer des dents , puis le charger dans la base de données qu'il serait de créer un Java/C# programme pour le faire ou le faire à la main.

Aussi, en raison de la facilité à laquelle la plupart de la dynamique des langues analyser le texte, ils sont parfaits pour la génération de code. Assurez-vous que votre projet final doit être en C#/Java/Transact SQL, mais au lieu de couper et coller 100 fois, de trouver les erreurs, et de couper-coller d'un autre 100 fois, il est souvent (mais pas toujours) plus facile que d'utiliser un générateur de code.

Un exemple récent au travail nous avons nécessaires pour obtenir des données à partir d'un système de comptabilité dans notre système comptable. Le système a un format d'importation, mais l'ancien système avait un format complètement différent (largeur fixe bien que certaines choses devaient être appariés). La tâche n'est pas de créer un programme de migration de données de plus et plus de nouveau. C'est à se fourrer des données dans notre système, puis de l'y maintenir à l'avenir. Donc, même si nous sommes un C# et SQL Serveur de la boutique, j'ai utilisé Python pour convertir les données dans le format qui pourrait être importé par notre application. En fin de compte il n'est pas question que j'utilise python, il est important que les données sont dans le système. Mon patron a été très impressionné.

Où je vois souvent la dynamique des langues utilisées pour les tests. Il est beaucoup plus facile de créer un Python/Perl/Ruby programme de lien vers un service web et de le jeter certaines données contre elle qu'elle ne l'est pour créer l'équivalent de Java. Vous pouvez également utiliser python pour frapper contre les programmes en ligne de commande, de générer une tonne de déchets (mais toujours valable) des données de test, etc.. assez facilement.

L'autre chose que des langages dynamiques sont big sur est la génération de code. La création de la C#/C++/Java code. Voici quelques exemples:

La première tâche de génération de code je vois souvent des gens en utilisant des langages dynamiques de maintenir constantes dans le système. Au lieu de codage à la main un bouquet de enums, un langage dynamique peut être utilisé pour assez facilement analyser un fichier texte et créer le Java/C# code avec les énumérations.

SQL est un tout autre jeu de balle, mais souvent, vous obtenez de meilleures performances en coupe et collage de 100 fois au lieu d'essayer de faire une fonction (en raison de la mise en cache des plans d'exécution ou de mise compliqué logique dans une fonction, vous obligeant à aller ligne par ligne plutôt que dans un ensemble). En fait, il est très utile d'utiliser la définition de la table à créer certaines procédures stockées automatiquement.

Il est toujours préférable d'obtenir l'adhésion pour un générateur de code. Mais même si vous n'en avez pas, il est plus amusant de passer du temps de découpage/collage ou est-il plus amusant de créer un Perl/Python/Ruby script une fois et puis de générer le code? Si vous avez mis des heures à main de code quelque chose, mais moins de temps pour créer un générateur de code, alors, même si vous l'utilisez une fois que vous avez un gain de temps et donc d'argent. Si il vous faut plus de temps pour créer un générateur de code qu'il n'en faut à main de code à la fois, mais vous savez que vous aurez à mettre à jour le code plus d'une fois, il peut encore faire sens. Si il vous prend 2 heures pour le code, 4 heures pour faire le générateur, mais vous savez que vous aurez à main équivalent au code du travail un autre 5 ou 6 fois qu'il est évidemment préférable de créer le générateur.

Certaines choses sont plus faciles avec dynamique de langages que Java/C#/C/C++. En particulier, les expressions régulières viennent à l'esprit. Si vous commencez à utiliser les expressions régulières en Perl et de réaliser leur valeur, vous pouvez soudainement commencer à faire usage de la Java expression régulière de la bibliothèque si vous n'avez pas avant. Si vous avez alors il y a peut être quelque chose d'autre.

Je vous laisse avec un dernier exemple d'une tâche qui aurait été idéal pour un langage dynamique. Mon travail s'accoupler dû prendre un répertoire plein de fichiers et les graver sur divers cd pour divers clients. Il y avait quelques clients, mais un grand nombre de fichiers et vous avez eu à regarder pour voir ce qu'ils étaient. Il fait de cette tâche par la main....Java/C# programme aurait permis d'économiser du temps, mais pour un temps et avec tout le développement frais généraux ne vaut pas le coup. Cependant gifles quelque chose ensemble en Perl/Python/Ruby aurait probablement valu la peine. Il a passé plusieurs heures à le faire. Il aurait fallu moins d'un pour créer le script Python pour inspecter chaque fichier, match qui client il va, et puis déplacez le fichier à l'endroit approprié.....Encore une fois, ne fait pas partie de la norme d'emploi. Mais la tâche est venu comme une. Est-il préférable de le faire vous-même, passez la plus grande quantité de temps à faire de Java/C# faire la tâche, ou de dépenser beaucoup plus petite quantité de temps à le faire en Python/Perl/Ruby. Si vous utilisez C ou C++ le point est encore plus dramatique en raison de l'extra préoccupations de la programmation en C ou C++ (pointeurs, pas de tableau de vérification des limites, etc.).

21voto

Pete Michaud Points 1007

Permettez-moi de revenir à votre question sur sa tête en demandant à ce que l'utilisation, il est à un Américain anglophone pour apprendre une autre langue?

Les langues que nous parlons (et ceux que nous avons programme) informer de la façon dont nous pensons. Cela peut se produire à un niveau fondamental, tels que c++ rapport à javascript rapport à lisp, ou sur un niveau de mise en œuvre, dans lequel un rubis construire fournit une épiphanie pour une solution à votre "vrai travail".

En parlant de votre vrai travail, si le marché s'étend au sud et à votre employeur décide de la "bonne taille" et vous, comment pensez-vous vous situez par rapport à un gars qui est flexible, car il est écrit des logiciels dans des dizaines de langues, au lieu de votre exposition limitée? Toutes choses étant égales par ailleurs, je pense que la réponse est claire.

Enfin, vous programme pour une vie parce que vous aimez la programmation... droit?

14voto

epochwolf Points 6329

Je ne pense pas que quelqu'un l'a mentionné encore. L'apprentissage d'une nouvelle langue peut être amusant! Certes, c'est une assez bonne raison pour essayer quelque chose de nouveau.

9voto

Alex B Points 12826

J'ai d'abord programmer en Java et C#, mais l'utilisation de langages dynamiques (ruby/perl) à l'appui de la lisse de déploiement, le coup d'envoi des OS des tâches, reporting automatisé, certains journaux d'analyse, etc.

Après une courte période d'apprentissage et d'expérimentation, avec ruby ou perl, vous devriez être en mesure d'écrire quelques regex manipuler des scripts qui peuvent modifier les formats de données ou de saisir des informations à partir de journaux. Un exemple d'un petit rubis/script perl qui peut être écrite rapidement serait un script pour analyser un très grand fichier journal et le rapport que quelques événements d'intérêt dans un format lisible par l'homme ou un format csv.

Aussi, avoir de l'expérience avec une variété de différents langages de programmation devrait vous aider à penser à de nouvelles façons de s'attaquer à des problèmes plus structuré des langues comme Java, C++ et C#.

7voto

Rob Wells Points 21714

Une grande raison pour apprendre le Perl ou Ruby est de vous aider à automatiser les tâches compliquées que vous avez à faire plus et plus.

Ou si vous avez d'analyser le contenu des fichiers journaux et vous avez besoin de plus mungeing que ce qui est disponible à l'aide de grep, sed, etc.

Aussi l'utilisation d'autres langues, par exemple, Ruby, qui n'ont pas beaucoup de "coût d'installation" va vous permettre de prototyper rapidement les idées avant de les mettre en œuvre en C++, Java, etc.

HTH

cheers,

Rob

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X