Question

Les langages dynamiques sont en hausse et ils sont nombreux: par exemple. Ruby, Groovy, Jython, Scala (statique, mais ressemble à un langage dynamique), etc. Mon expérience est dans la programmation Java SE et EE et je souhaite étendre mes connaissances dans l’un de ces langages dynamiques afin de mieux me préparer pour l’avenir.

Mais quelle langue dynamique devrais-je privilégier pour apprendre et pourquoi? Laquelle de ces langues sera la langue préférée dans un proche avenir?

Était-ce utile?

La solution

Apprendre Ruby ou Python (et dans une moindre mesure Scala) signifie que vous aurez des compétences très transférables: vous pourrez utiliser la version Java, la version native ou la version .NET (IronRuby / IronPython). Groovy est sympa mais spécifique à la JVM.

Etre "mieux préparé pour l'avenir" est délicat à moins d’envisager des scénarios spécifiques. Sur quel genre de chose veux-tu travailler? Avez-vous un projet que vous pourriez utilement mettre en œuvre dans un langage dynamique? Est-ce assez petit pour en essayer quelques-uns, pour avoir une idée de la différence?

Autres conseils

Scala n’est pas du tout un langage dynamique. L'inférence de type ne signifie pas que c'est non typé. Cependant, c’est un très beau langage qui offre un bon mélange de POO et de programmation fonctionnelle. Le seul problème est quelques pièges que vous rencontrez en cours de route.

Puisque vous êtes déjà un programmeur Java expérimenté, cela conviendra parfaitement à vos compétences. Maintenant, si vous voulez aller jusqu'au bout de la dynamique, Ruby ou Python sont des langages géniaux. Il existe une demande pour les deux langues.

Je recommanderais personnellement Clojure. Clojure est un nouveau langage génial qui gagne en popularité plus rapidement que tout ce que j'ai jamais vu. Clojure est un Lisp puissant, simple et rapide implémenté sur la JVM. Il a bien sûr accès à toutes les bibliothèques Java, tout comme Scala. Il a déjà écrit un livre à ce sujet, il est arrivé à la version 1.0 et il a trois plugins IDE en développement, les trois étant très utilisables.

Je regarderais Scala. Pourquoi?

  1. c'est un langage JVM, vous pouvez donc exploiter vos compétences Java actuelles
  2. il a maintenant beaucoup de support outillage / IDE (par exemple, Intellij gérera les projets Scala)
  3. il présente un aspect fonctionnel . Les langages fonctionnels semblent avoir beaucoup de succès en ce moment, et je pense que c'est un paradigme qui vaut la peine d'être appris pour l'avenir

Mon point de vue (entièrement subjectif) est que Scala semble attirer beaucoup l'attention de Groovy il y a un an ou deux. Je n’essaie pas d’être contentieux ici, ni de suggérer que cela en fasse un meilleur langage, mais cela semble être le nouveau langage de la JVM de jour .

Soit dit en passant, une langue qui a certains attributs dynamiques est le F # de Microsoft. . Je suis en train de regarder cela (et en ignorant mes propres conseils concernant les points 1 et 2 ci-dessus!). C’est un langage fonctionnel avec des objets, construit sur .Net et qui attire beaucoup l’attention en ce moment.

Dans l’industrie du jeu, Lua est également un bon concepteur basé sur Adobe. Si vous êtes un programmeur embarqué, Lua est pratiquement la seule solution légère, mais si vous vous penchez sur le développement Web et l’outil Général écrire en Python serait plus pratique

J’ai trouvé que Groovy constituait un saut relativement facile à partir d’un vaste arrière-plan Java - c’est en quelque sorte une version plus pratique de Java. Il s'intègre également très bien au code Java existant, si vous avez besoin de faire ce genre de choses.

Je recommanderais Python. Il a une énorme communauté et une implémentation mature (avec plusieurs prometteuses mais pas encore matures). Pour autant que je sache, Perl perd beaucoup de traction par rapport aux nouveaux langages, probablement à cause de son "non-intuitivité". (non, ne me lancez pas dessus).

Lorsque vous avez réalisé un projet ou deux en Python, passez à autre chose pour obtenir une perspective plus large. Si vous avez fait quelques choses non triviales dans deux langages dynamiques différents, vous n'aurez aucun problème à assimiler un autre langage.

JScript est très utile, et c’est certainement un langage dynamique ...

Si vous voulez une langue avec un bon nombre de modules (pour presque tout!), optez pour Perl . Grâce à son CPAN , vous trouverez toujours ce que vous voulez sans réinventer la roue.

En gardant à l’esprit vos antécédents, je vous recommanderais un langage dont la sémantique est similaire à celle que vous connaissez. Par conséquent, un langage comme Scala, Fan, Groovy serait un bon point de départ. Une fois que vous maîtriserez la sémantique de base de l’utilisation d’un langage fonctionnel (et que vous commencerez à l’aimer), vous pourrez passer à un langage comme Ruby. Le temps de traitement pour vous de cette manière est réduit ainsi que le fait que vous pouvez devenir un programmeur polyglotte.

Je voterais +1 pour Groovy (et Grails). Vous pouvez toujours taper avec le style Java ou Groovy (vous pouvez aussi mélanger les deux sans vous inquiéter). Aussi, vous pouvez utiliser des bibliothèques Java.

En règle générale, évitez les langages à typage dynamique. La perte de vérification du temps de compilation et la nature auto-documentée d'un typage fort et statique valent bien la nécessité de mettre des informations de type dans votre code source. Si la saisie supplémentaire que vous devez faire lorsque vous écrivez votre code représente un effort trop important, une langue avec inférence de type (Scala, Haskell) peut être intéressante.

Les informations de type rendent le code beaucoup plus lisible et cette dernière devrait être votre premier critère de codage. Il est coûteux pour une personne de lire du code, tout ce qui empêche une compréhension claire et précise par le lecteur est une mauvaise chose. Dans les langues OO, c'est encore pire, parce que vous créez toujours de nouveaux types. Un lecteur qui commence à se familiariser va patauger parce qu’il ne connaît pas les types qui sont transmis et modifiés. Par exemple, dans Groovy, ce qui suit est légal def accountHistoryReport (entrée, sortie) En lisant cela, je n’ai aucune idée de ce que in et sortie sont . Lorsque vous examinez 20 méthodes de rapport différentes qui ressemblent à cela, vous pouvez rapidement passer complètement homicide.

Si vous pensez vraiment que vous devez utiliser un typage non statique, un langage comme Clojure est un bon compromis. Les langages de type Lisp sont construits sur un petit ensemble d’abstractions clés et sur des capacités énormes sur chacune des abstractions. Donc, dans Clojure, je vais créer une carte (hash) qui a les attributs de mon objet. C'est un peu réductionniste, mais je n'aurai pas à parcourir toute la base de code pour l'implémentation d'une classe non nommée.

Ma règle d'or consiste à écrire des scripts dans des langages dynamiques et des systèmes dans des langages compilés et typés de manière statique.

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