Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Langages dynamiques contre langages statiques,
Que préférez-vous ?

Le , par maa

0PARTAGES

0  0 
Bonjour,

J'aimerais comprendre l'engouement actuel pour les langage dynamiques tel que Python, PHP ou Ruby. J'ai récemment dû travailler sur un projet PHP et j'ai perdu un temps fou à debugger des erreurs de syntaxe, de typage, de propriétés ou méthodes inexistantes, etc. Il faut dire que je dois faire pas mal d'erreurs d'inattentions, étant habitué à ce qu'une compilation me signale toute ces erreurs. Je suis programmeur c#, qui est statique et fortement typé. L'auto-complétion me guide partout et je développe en .NET incomparablement plus rapidement qu'avec un langage comme PHP. Comprendre un programme existant est aussi bien plus évident quand on connait le type des objets et que l'on peut remonter à leurs définitions ou la définition de leurs membres, et ceci n'est pas possible avec un langage dynamique.
Aujourd'hui je dois choisir un ERP pour mon entreprise. Je devrais pas mal le personnaliser donc le langage sur lequel il est basé a pas mal d'importance. Ceux qui m'intéressent sont en Python ou Java et franchement je préférerai à priori mettre les mains dans du java, pour ce que j'ai vu de Python... Avec python, je crains vraiment de perdre autant de temps qu'en développant en PHP. Mais si vous arrivez à me convaincre du contraire...
Plus généralement, je ne vois pas de vrais avantages au langages dynamiques. Ils sont pour moi un retour à l'age de pierre.

Merci d'avance pour tout vos conseils.

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de gangsoleil
Modérateur https://www.developpez.com
Le 03/12/2009 à 11:17
Bonjour,

Citation Envoyé par maa Voir le message

Aujourd'hui je dois choisir un ERP pour mon entreprise. Je devrais pas mal le personnaliser donc le langage sur lequel il est basé a pas mal d'importance. Ceux qui m'intéressent sont en Python ou Java et franchement je préférerai à priori mettre les mains dans du java, pour ce que j'ai vu de Python... Avec python, je crains vraiment de perdre autant de temps qu'en développant en PHP. Mais si vous arrivez à me convaincre du contraire...
Chaque langage a ses specificites, ses contraintes, ses avantages et ses inconvenients. Mais aussi, et on l'oublie souvent, ses domaines d'application privilegies.

Ainsi, il est theoriquement possible d'ecrire tout programme en tout langage, mais c'est plus ou moins raisonnable. Et c'est bien la que se situe le probleme : une partie des developpements n'est pas ecrite dans le langage optimal, et une partie d'entre eux sont ecrits dans un langage contre-indiqué.

Ainsi, ecrire un serveur d'application en assembleur est possible, mais pas forcement conseille. Ecrire un micro-kernel en java n'est peut-etre pas non plus la solution ideale.

Je pense que tu n'as pas l'utilite des langages dont tu parles, et que c'est pour ca que tu ne vois pas leur interet. Apres, on peut aussi se poser la question de l'interet de l'ERP en python, qui ne semble pas forcement le langage le plus adapte au premier abord.

Et pour finir avec ta question premiere, je pense que tu devrais identifier precisement tes besoins, et voir si un ERP est la reponse adequate a tes besoin. Ensuite seulement tu pourras voir duquel tu as besoin, et de la decouleront les formations dont tu as besoin, soit en langage de programmation, soit en autre chose.

En esperant t'avoir apporte un point de vue complementaire.
1  0 
Avatar de Médinoc
Expert éminent sénior https://www.developpez.com
Le 30/11/2009 à 14:15
Je ne sais pas si c'est tellement le fait que le langage soit dynamique. Le principal attrait des langages de script, c'est que l'application hôte peut les exécuter sans compromettre sa sécurité.
0  0 
Avatar de maa
Membre actif https://www.developpez.com
Le 30/11/2009 à 15:03
Quelle application hôte ?
Pourquoi est-ce qu'avec un langage de script il y a plus de sécurité ?
0  0 
Avatar de Médinoc
Expert éminent sénior https://www.developpez.com
Le 30/11/2009 à 15:07
Parce qu'un langage de script n'a généralement pas d'accès direct à la mémoire ou aux fichiers. Comme une machine virtuelle, en fait.
0  0 
Avatar de maa
Membre actif https://www.developpez.com
Le 30/11/2009 à 15:10
ok, mais sinon ne trouves-tu pas qu'il est plus lent de développer avec un langage de script ?
0  0 
Avatar de Jedai
Expert éminent https://www.developpez.com
Le 30/11/2009 à 18:09
Citation Envoyé par maa Voir le message
ok, mais sinon ne trouves-tu pas qu'il est plus lent de développer avec un langage de script ?
La plupart des gens semble penser le contraire, du moins jusqu'à ce qu'ils essayent de programmer à grande échelle... Mais j'aurais tendance à dire que cela dépend plus des qualités et niveaux d'abstraction respectifs de tes langages dynamiques/statiques que simplement de leur appartenance à l'une de ces deux catégories.

Par exemple je ne doute pas qu'on développe plus vite en Python qu'en C (NB : PHP est à mon avis l'un des pires exemple de langages de programmation, donc ne laisse pas trop ton expérience avec lui influencer ton opinion de tous les langages dynamiques) en général.

D'un autre côté pas mal d'aficionados des langages dynamiques tendent à attribuer au dynamisme des avantages qui sont plutôt dûs au niveau d'abstraction et à imputer au typage statiques des désavantages qui n'existent que dans les systèmes de typage explicite faiblement expressifs et fragiles des langages mainstream... Un langage comme Haskell est une tout autre expérience dans le genre : il est au moins aussi expressif qu'un langage dynamique et l'inférence de types et la puissance du système de types le rendent nettement plus sûr qu'un langage dynamiquement typé tout en préservant la légèreté de notation. De plus il est compilé et beaucoup plus performant que les implémentations vedettes de PHP/Python/Ruby.

--
Jedaï
0  0 
Avatar de Jedai
Expert éminent https://www.developpez.com
Le 30/11/2009 à 18:13
Citation Envoyé par Médinoc Voir le message
Parce qu'un langage de script n'a généralement pas d'accès direct à la mémoire ou aux fichiers. Comme une machine virtuelle, en fait.
Pas accès aux fichiers les langages de scripts ? A part JavaScript, je ne vois pas trop. De plus vu l'énorme quantité de bugs et d'exploit dûs à des problèmes de l'implémentation de PHP, l'argument ne convainc pas.
Un langage statique rationnel se prête à des analyses statiques et à une compilation dans un environnement restreint qui permettent la même sécurité avec des performances supérieures : voir par exemple le bot IRC lambdabot qui compile et exécute du code Haskell à longueur de journée sur #haskell.

--
Jedaï
0  0 
Avatar de maa
Membre actif https://www.developpez.com
Le 30/11/2009 à 22:33
Merci beaucoup pour ta réponse.

PHP est à mon avis l'un des pires exemple de langages de programmation, donc ne laisse pas trop ton expérience avec lui influencer ton opinion de tous les langages dynamiques
D'accord, c'est plutôt rassurant.


La plupart des gens semble penser le contraire, du moins jusqu'à ce qu'ils essayent de programmer à grande échelle...
Pour ma part, j'ai l'impression que le peu de temps que l'on perd en rigueur avec un langage statique est largement compensé par le temps de debuggage perdu avec les langage dynamiques. Donc à moins de n'avoir qu'à faire de très petite modification sur un programme existant, j'ai l'impression que d'avoir un typage dynamique n'est jamais un gain de temps.

D'un autre côté pas mal d'aficionados des langages dynamiques tendent à attribuer au dynamisme des avantages qui sont plutôt dûs au niveau d'abstraction et à imputer au typage statiques des désavantages qui n'existent que dans les systèmes de typage explicite faiblement expressifs et fragiles des langages mainstream...
Je ne sais pas trop ce qu'est un langage mainstream. Pour ma part je programme en c#.net, et je ne trouve pas qu'il limite le niveau d'abstraction, au contraire. J'ai d'ailleurs toujours la possibilité de revenir dans le monde dynamique en utilisant des variables de type object, des generics, ou même avec c#4 des variables dynamiques. Tout ceci doit également être possible en java.
0  0 
Avatar de Médinoc
Expert éminent sénior https://www.developpez.com
Le 30/11/2009 à 23:26
@Jedai: Pas d'accès direct aux fichiers. Au final, c'est l'application hote qui autorise ou non l'accès à tel ou tel fichier.
0  0 
Avatar de gorgonite
Rédacteur/Modérateur https://www.developpez.com
Le 01/12/2009 à 22:14
Citation Envoyé par maa Voir le message
Je ne sais pas trop ce qu'est un langage mainstream. Pour ma part je programme en c#.net,
C, C++ (à la C avec des classes), C# 1.1 et Java sont les exemples classiques mainstream

Citation Envoyé par maa Voir le message

et je ne trouve pas qu'il limite le niveau d'abstraction, au contraire. J'ai d'ailleurs toujours la possibilité de revenir dans le monde dynamique en utilisant des variables de type object, des generics, ou même avec c#4 des variables dynamiques. Tout ceci doit également être possible en java.

utiliser le type object et les generics ne signifie pas du tout revenir dans le monde du typage dynamique...
  • utiliser le type object signifie juste que tu auras des vérifications de types au runtime, ie quand tu casteras pour réutiliser correctement ton object sous l'interface qui convient à la situation
  • utiliser des generics n'est pas plus dynamiques, et pas forcemment plus coûteuses, car elles ne sont plus depuis longtemps des classes standard avec cast du type object au type paramètre bien placés


ensuite, clairement avec C# 4 et l'accès au Dynamic Language Runtime, il y a clairement l'arrivée d'une notion de typage dynamique des objects... mais
  • utiliser juste le type var ne signifie pas passer réellement en typage dynamique (un peu comme si on imaginait que le auto de C++0x allait le transformer en langage de script )
  • les utilisations réelles dans C# sont assez limitées : à part des constructions "compliquées" du même type que Linq, elles sont souvent bien bornées, et donc encapsulées pour que le système de type fasse son travail
  • DLR a surtout permis d'importer rapidement des langages dynamiques sur la plate-forme .Net (IronPython, etc). Alors qu'il aurait fallu
    • soit utiliser des constructions lourdes via hashtables/vérifications de type à la main, pour émuler leur fonctionnement dans la CLR
    • soit coder un interprète embarqué dans .net et faire tourner le script via cet interprète (Perl.Net )
    • soit se restreindre à un sous-ensemble compilable du langage de script et le porter sur la CLR (exemple de sous-langage compilable statiquement RPython par rapport à Python)



enfin, il ne faut pas oublier que
  • Microsoft fait évoluer très vite le langage C#, au moins qu'il va finir par atteindre un niveau de complexité proche du C++.
  • beaucoup d'ajouts à C# viennent de l'approche fonctionnelle, et donc possèdent la plupart de ses avantages ( à l'équipe F#)
0  0