Je me demande pourquoi un développeur C++, C #, Java voudrait-il apprendre un langage dynamique?
En supposant que l'entreprise ne changera pas son langage de développement principal de C++/C #/Java vers un langage dynamique, à quoi sert un langage dynamique?
Quelles tâches d'assistance peuvent être effectuées par les langages dynamiques plus rapidement ou mieux après seulement quelques jours d'apprentissage qu'avec le langage statique que vous utilisez depuis plusieurs années?
Après avoir vu les premières réponses, il est clair qu'il y a deux problèmes. Mon principal intérêt serait quelque chose que l'employeur peut justifier en tant que dépense. C'est-à-dire que je cherche des justifications pour que l'employeur finance l'apprentissage d'une langue dynamique. Hormis l'évidence que l'employé aura une vision plus large, les employeurs recherchent généralement des avantages "réels".
Souvent, une tâche rapide survient et ne fait pas partie du logiciel principal que vous développez. Parfois, la tâche est unique, comparez ce fichier à la base de données et faites-moi connaître les différences. Il est beaucoup plus facile de faire de l'analyse de texte en Perl/Ruby/Python qu'en Java ou C # (en partie parce qu'il est beaucoup plus facile d'utiliser des expressions régulières). Il faudra probablement beaucoup moins de temps pour analyser le fichier texte en utilisant Perl/Ruby/Python (ou peut-être même vbscript cringe puis le charger dans la base de données que pour créer un programme Java/C # pour faites-le ou faites-le à la main.
De plus, en raison de la facilité avec laquelle la plupart des langages dynamiques analysent le texte, ils sont parfaits pour la génération de code. Bien sûr, votre projet final doit être en C #/Java/Transact SQL, mais au lieu de couper et coller 100 fois, de trouver des erreurs et de couper et coller encore 100 fois, il est souvent (mais pas toujours) plus facile d'utiliser un générateur de code.
Un exemple récent au travail est que nous devions obtenir des données d'un système comptable 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 assorties). La tâche n'est pas de créer un programme pour migrer les données encore et encore. Il s'agit d'introduire les données dans notre système, puis de les conserver à l'avenir. Donc, même si nous sommes une boutique C # et SQL Server, j'ai utilisé Python pour convertir les données dans le format qui pourrait être importé par notre application. En fin de compte, peu importe que j'utilise python, il importe que les données soient dans le système. Mon patron était assez impressionné.
Où je vois souvent les langages dynamiques utilisés pour les tests. Il est beaucoup plus facile de créer un programme Python/Perl/Ruby pour se lier à un service Web et y jeter des données que de créer le programme Java équivalent. Vous pouvez également utiliser python pour frapper des programmes en ligne de commande, générer une tonne de données de test (mais toujours valides), etc., assez facilement.
L'autre chose sur laquelle les langages dynamiques sont importants est la génération de code. Création du code C #/C++/Java. Voici quelques exemples:
La première tâche de génération de code que je vois souvent est que les gens utilisent des langages dynamiques pour maintenir des constantes dans le système. Au lieu de coder manuellement un tas d'énumérations, un langage dynamique peut être utilisé pour analyser assez facilement un fichier texte et créer le code Java/C # avec les énumérations.
SQL est un tout autre jeu de balle, mais souvent vous obtenez de meilleures performances en coupant et en collant 100 fois au lieu d'essayer de faire une fonction (en raison de la mise en cache des plans d'exécution ou de la mise en place d'une logique compliquée dans une fonction vous obligeant à aller ligne par ligne au lieu de dans un ensemble). En fait, il est très utile d'utiliser la définition de table pour créer automatiquement certaines procédures stockées.
Il est toujours préférable d'obtenir l'adhésion à un générateur de code. Mais même si vous ne le faites pas, est-ce plus amusant de passer du temps à couper/coller ou est-ce plus amusant de créer une fois un script Perl/Python/Ruby et de le faire générer le code? Si cela vous prend des heures pour coder 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 économisé du temps et donc de l'argent. S'il vous faut plus de temps pour créer un générateur de code qu'il n'en faut pour remettre le code une fois mais que vous savez que vous devrez mettre à jour le code plus d'une fois, cela peut quand même avoir du sens. Si cela vous prend 2 heures pour coder manuellement, 4 heures pour faire le générateur, mais vous savez que vous devrez manipuler un code équivalent pour travailler 5 ou 6 fois de plus qu'il est évidemment préférable de créer le générateur.
De plus, certaines choses sont plus faciles avec les langages dynamiques que Java/C #/C/C++. On pense en particulier aux expressions régulières. Si vous commencez à utiliser des expressions régulières en Perl et réalisez leur valeur, vous pouvez soudainement commencer à utiliser la bibliothèque d'expressions régulières Java si vous ne l'avez pas déjà fait. Si c'est le cas, il peut y avoir autre chose.
Je vous laisse avec un dernier exemple d'une tâche qui aurait été formidable pour un langage dynamique. Mon collègue de travail a dû prendre un répertoire plein de fichiers et les graver sur divers CD pour divers clients. Il y avait quelques clients mais beaucoup de fichiers et il fallait les regarder pour voir de quoi il s'agissait. Il a fait cette tâche à la main ... Un programme Java/C # aurait fait gagner du temps, mais pour une fois et avec tous les frais de développement, cela n'en vaut pas la peine. Cependant, gifler quelque chose ensemble en Perl/Python/Ruby en 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, faire correspondre le client vers lequel il va, puis déplacer le fichier à l'endroit approprié ... Encore une fois, il ne fait pas partie du travail standard. Mais la tâche s'est présentée de manière ponctuelle. Est-il préférable de le faire vous-même, de passer le plus de temps pour que Java/C # fasse la tâche, ou de passer beaucoup moins de temps à le faire en Python/Perl/Ruby. Si vous utilisez C ou C++, le point est encore plus dramatique en raison des problèmes supplémentaires de programmation en C ou C++ (pointeurs, pas de vérification des limites du tableau, etc.).
Permettez-moi de tourner votre question sur sa tête en demandant à quoi sert à un anglophone américain d'apprendre une autre langue?
Les langues que nous parlons (et celles que nous programmons) informent notre façon de penser. Cela peut se produire à un niveau fondamental, tel que c ++ par rapport à javascript par rapport à LISP, ou à un niveau d'implémentation, dans lequel une construction Ruby fournit un moment eureka pour une solution dans votre "vrai travail".
En parlant de votre vrai travail, si le marché va vers le sud et que votre employeur décide de vous "dimensionner", comment pensez-vous que vous vous comparerez à un gars flexible parce qu'il a écrit des logiciels dans des dizaines de langues, au lieu de votre limité exposition? Toutes choses étant égales par ailleurs, je pense que la réponse est claire.
Enfin, vous programmez pour vivre parce que vous aimez la programmation ... non?
Je ne pense pas que quiconque l'ait encore mentionné. Apprendre une nouvelle langue peut être amusant! C'est sûrement une raison suffisante pour essayer quelque chose de nouveau.
Je programme principalement en Java et C # mais j'utilise des langages dynamiques (Ruby/Perl) pour prendre en charge un déploiement plus fluide, lancer des tâches de système d'exploitation, des rapports automatisés, une analyse syntaxique des journaux, etc.
Après un court instant d'apprentissage et d'expérimentation avec Ruby ou Perl, vous devriez être capable d'écrire des scripts de manipulation regex qui peuvent modifier les formats de données ou récupérer des informations dans les journaux. Un exemple d'un petit script Ruby/Perl qui pourrait être écrit rapidement serait un script pour analyser un très gros fichier journal et signaler seulement quelques événements intéressants dans un format lisible par l'homme ou un format csv.
De plus, avoir de l'expérience avec une variété de langages de programmation différents devrait vous aider à réfléchir à de nouvelles façons de résoudre les problèmes dans des langages plus structurés comme Java, C++ et C #.
Une grande raison d'apprendre Perl ou Ruby est pour vous aider à automatiser toutes les tâches compliquées que vous devez faire encore et encore.
Ou si vous devez analyser le contenu des fichiers journaux et que vous avez besoin de plus de mungeing que disponible en utilisant grep, sed, etc.
Utiliser également d'autres langues, par ex. Ruby, qui n'a pas beaucoup de "coût d'installation" vous permettra de prototyper rapidement des idées avant de les implémenter en C++, Java, etc.
HTH
à votre santé,
Rob
Comptez-vous travailler pour cette entreprise pour toujours? Si vous êtes sur le marché du travail, certains employeurs potentiels seront peut-être conscients du paradoxe Python .
n bon joueur de hockey joue où la rondelle est. Un grand joueur de hockey joue où la rondelle va être. - Wayne Gretzky
Notre industrie est en constante évolution. Aucune langue ne peut être intégrée pour toujours. Pour moi, Java, C++, .Net est là où se trouve le Puck en ce moment. Et python, Ruby, Perl est l'endroit où la rondelle va être. Décidez par vous-même si vous voulez être bon ou super!
Paul Graham a publié un article il y a plusieurs années sur les raisons pour lesquelles les programmeurs Python améliorés Java programmeurs. ( http://www.paulgraham.com/ pypar.html )
Fondamentalement, peu importe si la nouvelle langue est pertinente pour la méthodologie actuelle de l'entreprise, apprendre une nouvelle langue signifie apprendre de nouvelles idées. Quelqu'un qui veut apprendre une langue qui n'est pas considérée comme "classe affaires" signifie qu'il s'intéresse à la programmation, au-delà du simple fait de gagner un salaire.
Pour citer le site de Paul:
Et les gens n'apprennent pas Python parce que cela leur donnera un emploi; ils l'apprennent parce qu'ils aiment vraiment programmer et ne sont pas satisfaits des langues qu'ils connaissent déjà.
Ce qui fait d'eux exactement le type de programmeurs que les entreprises devraient embaucher. D'où ce que, faute d'un meilleur nom, j'appellerai le paradoxe Python: si une entreprise choisit d'écrire son logiciel dans un langage relativement ésotérique, elle pourra embaucher de meilleurs programmeurs , car ils n'attireront que ceux qui se soucient suffisamment de l'apprendre. Et pour les programmeurs, le paradoxe est encore plus prononcé: la langue à apprendre, si vous voulez obtenir un bon emploi, est une langue que les gens n'apprennent pas simplement obtenir un emploi.
Si un employeur était disposé à payer le coût de l'apprentissage d'une nouvelle langue, il est probable que les personnes qui se sont portées volontaires pour apprendre (en supposant que ce n'était pas une classe obligatoire) seraient les mêmes que celles qui sont déjà sur la "voie rapide".
Quand j'ai appris Python pour la première fois, je travaillais pour une boutique Java. Parfois, je devais faire de sérieuses tâches de traitement de texte qui étaient beaucoup plus faciles à faire avec des scripts Python rapides qu'avec des programmes Java. Par exemple, si je devais analyser un fichier CSV complexe et déterminer laquelle de ses lignes correspondait aux lignes de notre base de données Oracle, c'était beaucoup plus facile à faire avec Python qu'avec Java.
Plus que cela, j'ai trouvé que l'apprentissage de Python faisait de moi un bien meilleur programmeur Java; après avoir appris plusieurs des mêmes concepts dans une autre langue, je sens que je comprends beaucoup mieux ces concepts. Et quant à ce qui rend Python plus facile que Java, vous pouvez vérifier cette question: Java -> Python?
Edit: J'ai écrit ceci avant de lire la mise à jour de la question d'origine. Voir mon autre réponse pour une meilleure réponse à la question mise à jour. Je laisserai cela comme un avertissement contre le fait d'être le pistolet le plus rapide de l'ouest =)
Il y a plus d'une décennie, lorsque j'apprenais les méthodes de l'informatique, les vieux sages avec barbe ont expliqué comment le C et le C++ sont les outils de l'industrie. Personne n'a utilisé Pascal et seuls les téméraires risqueraient leurs entreprises avec un assembleur.
Et bien sûr, personne ne mentionnerait même la chose horriblement lente et laide appelée Java. Ce ne sera pas un outil pour les affaires sérieuses.
Donc. Hum. Remplacez les langues dans l'histoire ci-dessus et vous pourrez peut-être prédire l'avenir. Peut-être pas. Le fait est que Java ne sera jamais le dernier langage de programmation et vous changerez probablement aussi d'employeur. L'avenir vous coûte 24 heures par jour. Soyez prêt.
Apprendre de nouvelles langues est bon pour vous. De plus, dans certains cas, cela peut vous donner des droits de vantardise pendant longtemps. Mon premier cours universitaire était dans Scheme. Donc, quand les gens me parlent de la nouvelle langue du jour , ma réponse est quelque chose comme "Des fonctions de première classe? C'est tellement le siècle dernier."
Et bien sûr, vous obtenez plus de choses sont faites avec un langage de haut niveau.
Pour répondre à la question mise à jour, c'est un problème de poulet/œuf. La meilleure façon de justifier une dépense est de montrer comment elle réduit un coût ailleurs, vous devrez donc peut-être consacrer un peu de temps supplémentaire/personnel à apprendre d'abord quelque chose pour construire une sorte de prototype fonctionnel.
Montrez à votre patron une démo comme "hé, j'ai fait cette chose, et ça me fait gagner beaucoup de temps [ou mieux encore, beaucoup $$], imaginez si tout le monde pourrait utiliser combien d'argent nous économiserions"
puis, une fois qu'ils sont d'accord, expliquez en quoi il s'agit d'une autre technologie et que cela vaut la peine d'obtenir plus de formation et une formation pour les autres sur la façon de mieux la faire.
L'apprentissage d'une nouvelle langue est un processus à long terme. Dans quelques jours, vous apprendrez les bases, oui. Mais! Comme vous le savez probablement, l'applicabilité pratique réelle de n'importe quelle langue est liée à la bibliothèque standard et aux autres composants disponibles. Apprendre à utiliser efficacement nécessite beaucoup d'expérience pratique.
Le seul avantage immédiat à court terme est peut-être que les développeurs apprennent à distinguer les clous qui ont besoin d'un marteau Python/Perl/Ruby. Et s'ils sont bons, ils peuvent alors en étudier davantage (en ligne, peut-être!) Et devenir de vrais experts.
Les avantages à long terme sont plus faciles à imaginer:
L'employé devient un meilleur développeur. Meilleur développeur => meilleure qualité. Nous vivons dans une économie du savoir de nos jours. Il est plus sage d'investir dans ces cerveaux qui travaillent déjà pour vous.
Il est plus facile de s'adapter lorsque la prochaine grande langue émerge. Il est très probable que la NBL aura de nombreuses fonctionnalités présentes dans les langages de script d'aujourd'hui: fonctions de première classe, fermetures, flux/générateurs, etc.
Nouvelles possibilités de marché et capacité à répondre plus rapidement. Même si vous n'écrivez pas Python, d'autres personnes le sont. Vos clients? Un autre vendeur dans le projet? Peut-être qu'un élément critique a été écrit dans une autre langue? Cela vous coûtera du temps et de l'argent si vous n'avez pas de personnes capables de comprendre le code et de s'y connecter.
Recrutement. Si votre entreprise a la réputation d'enseigner des choses nouvelles et intéressantes aux gens, il sera plus facile de recruter les meilleures personnes. Tout le monde fait Java/C #/C++. Ce n'est pas un moyen très efficace de se différencier sur le marché du travail.
Étant donné l'attention croissante portée à l'exécution de langages dynamiques (da-vinci vm, etc.) sur la JVM et le nombre croissant de langages dynamiques qui s'exécutent dessus (JRuby, Grrovy, Jython), je pense que les cas d'utilisation ne font qu'augmenter. Certains des scénarios que j'ai trouvé vraiment bénéfiques sont
Prototypage - utilisez RoR ou Grails pour construire des prototypes rapides avec l'avantage de pouvoir les exécuter sur le serveur d'application standard et (peut-être) réutiliser les services existants, etc.
Testing - les tests unitaires de droite sont beaucoup plus rapides dans les langages dynamiques
Script de test de performance/d'automatisation - certains de ces outils commencent à permettre l'utilisation du langage dynamique standard de choix pour écrire les scripts de test au lieu des langages de script propriétaires. L'avantage secondaire pourrait être de pouvoir réutiliser un code de test unitaire que vous avez déjà écrit.
Je pense que les principaux avantages des langues dynamiques peuvent se résumer à
Le temps de cycle court de conception-test de code rend les langages dynamiques idéaux pour le prototypage, les outils et les scripts ponctuels rapides et sales. À mon humble avis, les deux derniers peuvent avoir un impact énorme sur la productivité d'un programmeur. Cela m'étonne combien de personnes se faufilent dans les choses manuellement au lieu de fouetter un outil pour le faire pour elles. Je pense que c'est parce qu'ils n'ont pas quelque chose comme Perl dans leur boîte à outils.
La possibilité de s'interfacer avec à peu près n'importe quoi (autres programmes ou langages, bases de données, etc.) facilite la réutilisation du travail existant et l'automatisation des tâches qui autrement devraient être effectuées manuellement.
J'ai souvent constaté que l'apprentissage d'une autre langue, en particulier une langue typée dynamiquement, peut vous apprendre des choses sur d'autres langues et faire de vous un meilleur programmeur global. L'apprentissage de Ruby, par exemple, vous apprendra la programmation orientée objet de différentes manières Java wont, et vice versa. Dans l'ensemble, je crois qu'il vaut mieux être un programmeur bien équilibré que coincé dans un langue unique. Il vous rend plus précieux pour les entreprises/clients pour lesquels vous travaillez.
J'ai trouvé que plus je jouais avec Ruby, mieux je comprenais C #.
1) Lorsque vous basculez entre ces langues, chacune d'elles a ses propres concepts et philosophies derrière les problèmes qu'elle essaie de résoudre. Cela vous aidera à trouver le bon outil pour le travail ou le domaine d'un problème.
2) Le rôle du compilateur (ou interprète pour certaines langues) devient plus important. Pourquoi le système de type Ruby diffère-t-il du système .Net/C #? Quels problèmes chacun d'eux résout-il? Vous vous retrouverez à comprendre à un niveau inférieur les constructions du compilateur et son influence sur le langage
3) Basculer entre Ruby et C # m'a vraiment aidé à mieux comprendre Design Patterns. Je suggère vraiment d'implémenter des modèles de conception communs dans un langage comme C # puis dans un langage comme Ruby. Cela m'a souvent aidé à voir à travers une partie de la cérémonie de compilation la philosophie d'un modèle particulier.
4) Une autre communauté. C #, Java, Ruby, Python, etc. ont tous des communautés différentes qui peuvent aider à engager vos capacités. C'est un excellent moyen de faire passer votre art au niveau supérieur.
5) Dernier point mais non le moindre, car les nouvelles langues sont amusantes :)
Apprendre quelque chose avec un système flexible OOP, comme LISP ou Perl (voir Moose), vous permettra de mieux développer et comprendre vos réflexions sur le génie logiciel. Idéalement, chaque langue a une facette unique (que ce soit que ce soit CLOS ou une autre technique) qui améliore, étend et développe vos capacités en tant que programmeur.
découvrez les réponses à cette thead:
Apprendre de nouvelles langues, c'est garder l'esprit ouvert et apprendre de nouvelles façons de faire.
Je ne sais pas si c'est ce que vous recherchez, mais nous écrivons notre application principale avec Java dans la petite entreprise pour laquelle je travaille, mais j'ai utilisé python pour écrire des scripts plus petits rapidement. Logiciel de sauvegarde, scripts temporaires pour manipuler les données et pousser les résultats. Il semble parfois plus facile de s'asseoir avec python et d'écrire un script rapide que de jouer avec les classes et autres choses dans Java.
Les scripts temporaires qui ne vont pas rester ne nécessitent pas beaucoup de temps de conception.
Et je suis paresseux, mais il est bon d'apprendre le plus possible, bien sûr, et de voir quelles fonctionnalités existent dans d'autres langues. En savoir plus ne vous blesse jamais dans les futurs changements de carrière :)
Il s'agit d'élargir vos horizons en tant que développeur. Si vous vous limitez à des langues de type fort, vous ne finirez peut-être pas par le meilleur programmeur possible.
En ce qui concerne les tâches, Python/Lua/Ruby/Perl sont parfaits pour les petites tâches simples, comme trouver des fichiers et les renommer. Ils fonctionnent également très bien lorsqu'ils sont associés à un framework (par exemple Rails, Django, Lua pour Windows) pour développer rapidement des applications simples. Enfer, 37Signals est basé sur la création d'applications simples mais très utiles dans Ruby on Rails.
Ils sont utiles pour le "Quick Hack" qui consiste à combler un écart dans votre langue principale pour une correction rapide (et potentiellement sale) plus rapidement qu'il ne faudrait pour le développer dans votre langue principale. Un exemple: un simple script en Perl pour parcourir un grand fichier texte et remplacer toutes les instances d'une adresse e-mail par une autre est trivial avec une durée de 10 minutes. Pirater une application console ensemble pour faire de même dans votre langue principale en prendrait plusieurs.
Vous avez également l'avantage de vous exposer à des langues supplémentaires pour élargir vos capacités et apprendre à attaquer les problèmes dans une perspective de langues différentes peut être aussi précieux que la langue elle-même.
Enfin, les langages de script sont très utiles dans le domaine de l'extension. Prenons l'exemple de LUA. Vous pouvez intégrer un interpréteur lua dans votre application avec très peu de frais généraux et vous avez maintenant un moyen de créer de riches fonctionnalités de script qui peuvent être exposées aux utilisateurs finaux ou modifiées et distribuées rapidement sans nécessiter une reconstruction de l'application entière. Ceci est utilisé à bon escient dans de nombreux jeux, notamment World of Warcraft.
Si tout ce que vous avez est un marteau, chaque problème commence à ressembler à un clou.
Il y a des moments où avoir un tournevis ou une paire de pinces rend un problème compliqué trivial.
Personne ne demande aux entrepreneurs, charpentiers, etc. "Pourquoi apprendre à utiliser un tournevis si j'ai déjà un marteau?". De très bons entrepreneurs/charpentiers ont des tonnes d'outils et savent bien les utiliser. Tous les programmeurs devraient faire la même chose, apprendre à utiliser de nouveaux outils et à bien les utiliser.
Mais avant d'utiliser des outils électriques, prenons un moment pour parler de la sécurité de l'atelier. Assurez-vous de lire, de comprendre et de suivre toutes les règles de sécurité fournies avec vos outils électriques. Cela réduira considérablement le risque de blessures. Et rappelez-vous ceci: il n'y a pas de règle plus importante que de les porter: lunettes de sécurité - Norm
Personnellement, je travaille sur une application Java, mais je ne pouvais pas m'en passer sans Perl pour certains scripts de support.
J'ai des scripts pour retourner rapidement la base de données que je pointe, des scripts pour exécuter des scripts de construction, des scripts pour extraire des données et comparer des choses.
Bien sûr, je pourrais faire tout cela avec Java, ou peut-être des scripts Shell (j'en ai aussi), mais qui veut compiler une classe (en s'assurant que le chemin de classe est bien défini, etc.) lorsque vous juste besoin de quelque chose de rapide et sale. La connaissance d'un langage de script peut supprimer 90% de ces tâches manuelles ennuyeuses/répétitives.
Ne dites pas à votre employeur que vous voulez apprendre le rubis. Dites-lui que vous souhaitez en savoir plus sur l'état de l'art des technologies de framework Web. il se trouve que les plus chauds sont Django et Ruby on Rails.
Les langages dynamiques sont fantastiques pour les idées de prototypage. Souvent, pour des raisons de performances, ils ne fonctionneront pas pour des solutions ou des produits permanents. Mais, avec des langages comme Python, qui vous permettent d'incorporer du C/C++/Java standard à l'intérieur ou vice versa, vous pouvez accélérer les bits vraiment critiques mais le laisser collé avec la flexibilité d'une dynamique Langue.
... et ainsi vous obtenez le meilleur des deux mondes. Si vous devez justifier cela en expliquant pourquoi plus de gens devraient apprendre ces langues, indiquez simplement beaucoup plus rapidement que vous pouvez développer le même logiciel et à quel point la solution est plus robuste (car, selon mon expérience, le débogage/correction des problèmes dans les langues dynamiques, considérablement plus facile!).
Essai.
Il est souvent plus rapide et plus facile de tester votre application C #/Java en utilisant un langage dynamique. Vous pouvez effectuer des tests exploratoires à l'invite interactive et créer rapidement des scripts de test automatisés.
Vous devriez également envisager d'apprendre un langage de programmation fonctionnel comme Scala. Il présente de nombreux avantages de Ruby, notamment une syntaxe concise et des fonctionnalités puissantes telles que les fermetures. Mais il se compile dans les fichiers de classe Java et s'intègre de manière transparente dans une pile Java, ce qui peut faciliter la tâche à votre employeur pour avaler).
Scala n'est pas typé dynamiquement, mais sa fonction de "conversion implicite" offre de nombreux, peut-être même tous les avantages du typage dynamique, tout en conservant de nombreux avantages du typage statique.
Pour le travail après le travail, pour les emplois indépendants ... :) et final pour être aussi alphabétisé que possible en programmation ...;)
Connaître grep et Ruby a permis d'affiner un problème et de vérifier le correctif, un problème impliquant des tonnes d'exceptions Java Java sur certains serveurs de production. Parce que J'ai jeté la solution ensemble dans Ruby, cela a été fait (conçu, implémenté, testé, exécuté, corrigé, corrigé, amélioré, analysé les résultats) en un après-midi au lieu de quelques jours. J'aurais pu résoudre le même problème en utilisant une solution tout Java ou une solution C #, mais cela m'aurait probablement pris plus de temps.
Avoir une expertise linguistique dynamique vous conduit parfois à des solutions plus simples dans des langues moins dynamiques. Dans Ruby, Perl ou python, vous accédez intuitivement à des tableaux associatifs (hachages, dictionnaires, quel que soit le mot que vous souhaitez utiliser) pour les plus petites choses, où vous pourriez être tenté de créer une hiérarchie de classes complexe dans un langage de type statique lorsque le problème ne l'exige pas nécessairement.
De plus, vous pouvez connecter la plupart des langages de script à la plupart des runtimes. Il n'est donc pas nécessaire que ce soit/ou.
Les langages dynamiques sont une façon différente de penser et parfois les pratiques que vous apprenez d'un langage dynamique ou fonctionnel peuvent être transférées vers des langages plus typés statiquement mais si vous ne prenez jamais le temps d'apprendre différentes langues, vous n'aurez jamais l'avantage d'avoir un savait comment penser lorsque vous codez.
Le "véritable avantage" qu'un employeur pourrait voir est un meilleur programmeur qui peut mettre en œuvre des solutions plus rapidement; cependant, vous ne serez pas en mesure de fournir de chiffres précis pour justifier les dépenses et un employeur vous fera probablement travailler sur ce qui fait de l'argent maintenant, au lieu de vous faire travailler sur des choses qui améliorent l'avenir.
La seule fois où vous pouvez obtenir une formation sur le centime de l'employeur, c'est quand ils en perçoivent le besoin et c'est moins cher que d'embaucher une nouvelle personne qui possède déjà cet ensemble de compétences.
Mis à part les problèmes philosophiques, je sais que j'ai tiré de la valeur de l'écriture rapide et sale Ruby scripts pour résoudre des problèmes de force brute qui Java était tout simplement trop gros) L'année dernière, j'avais trois structures de répertoires distinctes qui étaient toutes plus ou moins les mêmes, mais avec beaucoup de différences entre les fichiers (le client n'avait pas entendu parler de contrôle de version et je laisserai le reste à votre imagination) .
Il aurait fallu beaucoup de temps pour écrire un analyseur en Java, mais en Ruby j'en avais un qui fonctionnait en 40 minutes environ).
Souvent, les langages dynamc (en particulier python et lua) sont incorporés dans des programmes pour ajouter une fonctionnalité plus proche du plugin et parce que ce sont des langages de haut niveau qui facilitent l'ajout de certains comportements, où un un langage bas/moyen n'est pas nécessaire.
Il manque spécifiquement à Lua tous les appels système de bas niveau car il a été conçu pour être facile à utiliser pour ajouter des fonctionnalités au sein du programme, et non en tant que langage de programmation général.
Ne dérangez pas votre employeur, dépensez ~ 40 $ pour un livre, téléchargez des logiciels et consacrez du temps chaque jour à lire/faire des exercices. En peu de temps, vous serez formé :)
D'autres ont déjà expliqué pourquoi l'apprentissage de plus de langues fait de vous un meilleur programmeur.
Quant à convaincre votre patron que cela en vaut la peine, c'est probablement juste la culture de votre entreprise. Certains endroits font de l'avancement professionnel et des compétences une politique (monter ou descendre), certains endroits l'apprécient mais laissent à l'initiative de l'employé, et certains endroits sont très axés sur les résultats.
Si vous devez expliquer pourquoi apprendre une langue est une bonne chose pour votre patron, mon conseil serait de ne rester au travail que le temps nécessaire, puis de rentrer chez vous et d'étudier de nouvelles choses par vous-même.