IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

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 !

Les langages statiques sont-ils trop sophistiqués et complexes ?
Un cadre de Google montre Java et C++ du doigt

Le , par Katleen Erna

40PARTAGES

0  1 
Mise à jour du 26.07.2010 par Katleen
Les langages statiques sont-ils trop sophistiqués et complexes ? Un cadre de Google montre Java et C++ du doigt


Il y a trois jours, dans l'Oregon, lors de la conférence O'Reilly consacrée à l'open source, le prestigieux ingénieur de Google Rob Pike a tenu des propos assez durs envers "les langages de programmation industrielle".

Il reproche aux langages actuels (Java et C++ en tête de liste) d'être trop complexes et pas assez adaptés aux environnements informatiques d'aujourd'hui.

"Ces langages sont trop difficiles à utiliser, trop subtils. Ils sont bien trop verbeux et leur subtilité, leur complexité et leur verbosité semble ne jamais cesser d'augmenter. En plus, ils sont vendus de façon excessive et bien trop largement utilisés.", assène-t-il.

Pour argumenter ses propos, il a montré quelques exemples de code C++, dont une déclaration variable qui s'étendait sur presque une ligne complète de l'écran. Pour lui, "de telles choses" ne peuvent assurément pas être "le standard de l'informatique enseigné à l'école et utilisé dans l'industrie".

Pour lui, ce type de programmation est "trop bureaucratique : il faut justifier de tout auprès du compilateur".

Il explique ensuite que le C++ a été crée pour répondre à la frustration des programmeurs à propos du langage low-level C. Java est ensuite arrivé pour simplifier C++. Mais de nouvelles fonctionnalités ont été ajoutées aux deux langages, les rendant encore plus complexes. A l'inverse, ils s'accommodent très mal des processus multicoeurs (qui sont apparus après leur développement et s'adaptent mal à ces environnements.

Le mois dernier, lors de la conférence annuelle USENIX, un autre ingénieur de renom à tenu un discours similaires. Adam de Boor (Gmail) a ainsi révélé que le service de mail en ligne de Google était intégralement écrit en Javacript (443.000 lignes de code) et ce, à la main.

Si Java est plus expressif, il est aussi plus verbeux selon lui. Face à cela, les langages comme JavaScript, Ruby et Python (qui ont été développés en réponse à la complexité grandissante de C++ et de Java), ont aussi leurs défauts : "leur syntaxe est plus simple, mais ils sont plus lents et peuvent abriter davantage d'erreurs", a-t-il argumenté.

"La saisie dynamique n'est pas forcément une bonne chose, vous obtenez des erreurs statiques en run time que vous pourriez éviter en compilant", termine-t-il.

Revenons à Rob Pike. Il a terminé sa keynote en présentant Go, un nouveau langage de programmation qu'il a développé avec d'autres ingénieurs de Google.

Il explique qu'il s'agit d'une tentative de fusion des meilleures qualités des deux catégories de langages (dynamiques et statiques) : "Go a pour but de combiner la sécurité et la performance des langages statiques avec la praticité et la décontraction des langages dynamiques".

Source : Déclarations de Rob Pike

Voir aussi

Installer Go

Et vous ?

Pensez-vous que Java et C++ soient devenus trop complexes ?

Pourquoi les langages gagnent-ils toujours en complexité ?

Que pensez-vous de l'initiative Go ?

Go deviendra-t-il à terme aussi compliqué que les autres langages lorsqu'il sera beaucoup utilisé ?

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

Avatar de Fr@ncky
Membre régulier https://www.developpez.com
Le 26/07/2010 à 11:03
Pour argumenter ses propos, il a montré quelques exemples de code C++, dont une déclaration variable qui s'étendait sur presque une ligne complète de l'écran.
Le problème là n'est pas le langage, mais le programmeur...
21  0 
Avatar de bubulemaster
Membre éclairé https://www.developpez.com
Le 26/07/2010 à 9:34
Citation Envoyé par Katleen Erna Voir le message

Il reproche aux langages actuels (Java et C++ en tête de liste) d'être trop complexes et pas assez adaptés aux environnements informatiques d'aujourd'hui.
Ces langages ne sont-ils pas à l'image de l'informatique aujourd'hui, c'est à dire complexe. L'assembleur est quant à lui peu complexe, par contre, sortir de gros programmes, c'est dur et long de l'utiliser.

Citation Envoyé par Katleen Erna Voir le message

"Ces langages sont trop difficiles à utiliser, trop subtiles. Ils sont bien trop verbaux et leur subtilité, leur complexité et leur verbalité semble ne jamais cesser d'augmenter. En plus, ils sont vendus de façon excessive et bien trop largement utilisés.", assène-t-il.
C'est sûr que le Cobol ou Logo sont moins subtiles. En plus, ils sont moins utilisés.
Le fait qu'un langage soit vendu de façon excessive peut irriter, mais qu'ils soient trop largement utilisés, là, faut rappeler au gars, dans ce cas, qu'il y a la même chose avec l'anglais. Trop vendu, trop utilisé. Je suis sûr qu'il sera d'accord pour abandonner l'anglais et passer l'Espérento

Citation Envoyé par Katleen Erna Voir le message

Pour argumenter ses propos, il a montré quelques exemples de code C++, dont une déclaration variable qui s'étendait sur presque une ligne complète de l'écran. Pour lui, "de telles choses" ne peuvent assurément pas être "le standard de l'informatique enseigné à l'école et utilisé dans l'industrie".
Ah, des arguments, des preuves (scientifiques), des stats ?

Citation Envoyé par Katleen Erna Voir le message

Pour lui, ce type de programmation est "trop bureaucratique : il faut justifier de tout auprès du compiler".
Oui, c'est vrai que les langages informatiques sont de natures agricoles

Citation Envoyé par Katleen Erna Voir le message

Il explique ensuite que le C++ a été crée pour répondre à la frustration des programmeurs à propos du langage low-level C. Java est ensuite arrivé pour simplifier C++.
C'est sa vision des choses, où il se base sur des faits ou des sondages ?
Jamais entendu dire ça.

Citation Envoyé par Katleen Erna Voir le message

Mais de nouvelles fonctionnalités ont été ajoutées aux deux langages, les rendant encore plus complexes. A l'inverse, ils s'accommodent très mal des processus multicoeurs (qui sont apparus après leur développement et s'adaptent mal à ces environnements.
Là, je suis assez d'accord (si, si)

Citation Envoyé par Katleen Erna Voir le message

Si Java est plus expressif, il est aussi plus verbal selon lui. Face à cela, les langages comme JavaScript, Ruby et Python (qui ont été développé en réponse à la complexité grandissante de C++ et de Java), ont aussi leurs défauts : "leur syntaxe est plus simple, mais ils sont plus lents et peuvent abriter davantage d'erreurs", a-t-il argumenté.
Des chiffres pour étayer ?

Citation Envoyé par Katleen Erna Voir le message

"La saisie dynamique n'est pas forcément une bonne chose, vous obtenez des erreurs statiques en run time que vous pourriez éviter en compilant", termine-t-il.
Ça c'est sûr, on apprend rien de nouveau.

Citation Envoyé par Katleen Erna Voir le message

Revenons à Rob Pike. Il a terminé sa keynote en présentant Go, un nouveau langage de programmation qu'il a développé avec d'autres ingénieurs de Google.
Voilà le véritable enjeu, il veut vendre son produit.
Je suis sûr qu'il veut le vendre de façon excessive et qu'il soit trop largement utilisés

Citation Envoyé par Katleen Erna Voir le message

Il explique qu'il s'agit d'une tentative de fusion des meilleures qualités des deux catégories de langages (dynamiques et statiques) : "Go a pour but de combiner la sécurité et la performance des langages statiques avec la praticité et la décontraction des langages dynamiques".
A voir...

Citation Envoyé par Katleen Erna Voir le message
Pensez-vous que Java et C++ soient devenus trop complexes ?
Ils l'ont toujours été.

Citation Envoyé par Katleen Erna Voir le message
Pourquoi les langages gagnent-ils toujours en complexité ?
Parce que l'humain est réticent, à réapprendre tout, tout les 4 matins.

Citation Envoyé par Katleen Erna Voir le message
Que pensez-vous de l'initiative Go ?
A suivre.

Citation Envoyé par Katleen Erna Voir le message
Go deviendra-t-il à terme aussi compliqué que les autres langages lorsqu'il sera beaucoup utilisé ?
Certainement
11  0 
Avatar de S(ô.Ô)B
Membre régulier https://www.developpez.com
Le 26/07/2010 à 11:43
On peut programmer de façon "simple" avec C++ et Java, mais à partir du moment où on veut faire des choses compliquées, je crois bien qu'on est obligé de programmer de façon "complexe".

S'il veut un langage peu verbeux, moi je lui propose Prolog, mais gare à l'entorse du cerveau pour pondre les quelques lignes permettant de résoudre une grille de Sudoku...

Il ne faut pas se leurrer, on ne peut pas tout avoir sans virer dans l'utopie.
7  0 
Avatar de Julien Bodin
Membre éclairé https://www.developpez.com
Le 26/07/2010 à 9:37
En fait il essaye de vendre sa came quoi
Quelqu'un a déjà essayé "Go" ?
4  0 
Avatar de Camille_B
Membre éclairé https://www.developpez.com
Le 26/07/2010 à 12:09
Avec des frameworks comme GWT ou Wicket, ça reste à voir... (encore faut-il les connaître)
Oui, on pourrait aussi citer Grails ou Play.

Malheureusement il y a la réalité du langage et de son écosystème, et sa "réputation".

Prenons Perl, par exemple. Qui sait que Perl (sa version 5) est un langage qui s'est très largement "modernisé" ? Qu'il offre plusieurs modèles objets extrêmement souples (voire MooseX) ? Qu'il permet de faire des trucs fun "à la" Ruby avec beaucoup de sucre syntaxique ? Tout en conservant son "framework" monstrueux (CPAN), une excellente documentation, et une histoire suffisamment longue pour en faire un langage solide et dont la communauté a atteint une grande maturité ?

Presque personne, car Python et Ruby ont meilleure réputation.

Qui connaît les extraordinaires framework web écrits en Common LISP ? Qui sait que les langages de la famille LISP ont bien souvent des performances proche du C pour une souplesse inégalée et une concision dans l'écriture semblable aux Python et aux Ruby ?

Personne, car LISP a une réputation de langage vieux et conçu exclusivement pour l'intelligence artificielle.

Bref, il y a le langage, et son image. Et parfois, malheureusement, le monde industriel (ou amateur) passe à un nouveau langage pour de simples raisons de "réputation".

Or, au jour d'aujoud'hui, Java a toujours sa réputation de langage verbeux (alors que l'on peut garder le framework et passer à Scala, Rhino, Clojure etc.) aux framework lourdingues.

Peut-être la communauté a-t-elle un rôle à jouer sur ces points ? Sans doute le joue-t-elle déjà d'ailleurs !
4  0 
Avatar de dissert
Membre averti https://www.developpez.com
Le 26/07/2010 à 10:39
Je suis presque d'accord sur la conclusion, à avoir les langages mainstream actuels sont trop complexes et pas adaptés aux besoins d'aujourd'hui, mais les arguments développés sont complètement à côté de la plaque (voire dépassés) et non étayés. Je pense, comme les autres, qu'il cherche à vendre son langages, mais ses arguments sont mauvais.

Je suis d'accord avec le fait que Java (je ne m'exprimerai pas sur C++) soit trop verbeux, mais c'est la contrepartie au fait que le langage soit relativement simple. Si on fait du Scala, par exemple, il faut apprendre plein de nouvelles notions abstraites compliquées qui nous permettent de bénéficier des mêmes API qu'en Java, mais avec trois fois moins de code.

Après il faut voir de quels développeurs on bénéficie et de l'écosystème, des contraintes ...

Pour faire un système complexe, en ce qui me concerne, je prendrais aujourd'hui un langage statique. Pour certains usages, essentiellement marginaux, oui, j'ai envie d'utiliser des langages dynamiques, voire des DSL (donc statiques).

Il serait intéressant de savoir quels usages Go est capable d'adresser de la manière la plus pertinente.

Mais si l'objectif de Go est de devenir un langage mainstream pour gros systèmes, à la place de Java et C++, d'une part je lui souhaite bonne chance, d'autre part je lui souhaite de meilleurs promoteurs.
3  0 
Avatar de Louis Griffont
Inactif https://www.developpez.com
Le 26/07/2010 à 10:41
C'est de la pub pour un langage développé par Google.
3  0 
Avatar de dingoth
Membre expérimenté https://www.developpez.com
Le 26/07/2010 à 10:48
Pour être polyvalent, un langage a besoin de subtilités. Je ne comprends pas ce faux-problème.

En interne, Google utilise très fort Java (regardez le nombre de bibliothèques Java que Google crée et maintient) et ils ont des pontes du langage tel Josh Bloch. C'est quoi ce double discours ?

Citation Envoyé par Katleen Erna
Si Java est plus expressif, il est aussi plus verbal selon lui. Face à cela, les langages comme JavaScript, Ruby et Python (qui ont été développés en réponse à la complexité grandissante de C++ et de Java), ont aussi leurs défauts : "leur syntaxe est plus simple, mais ils sont plus lents et peuvent abriter davantage d'erreurs", a-t-il argumenté.
Faux : JavaScript n'a pas été construit en réponse à une complexité grandissante, mais bien à un besoin différent dans le contexte (browser, bande passante limitée, etc.) ; Ruby n'est pas non plus une réponse à Java ou C++ spécifiquement, mais davantage aux tendances de tous les langages de l'époque.

P.S. C'est bien "verbeux" et "verbosité" qu'il faut utiliser et non "verbal" et "verbalité".
3  0 
Avatar de _skip
Expert éminent https://www.developpez.com
Le 29/07/2010 à 15:42
S'il ne s'agit pas d'en inventer une carrée en prétendant que la ronde est démodée...
3  0 
Avatar de cfranco
Membre du Club https://www.developpez.com
Le 26/07/2010 à 12:23
Par rapport au cas de Java, il est clair que l'ajout des génériques a rendu le language beaucoup plus verbeux... Mais beaucoup plus sûr aussi, et finalement plus simple à utiliser (quand on les a bien compris) puisque cela évite tout un tas de casts plus ou moins hasardeux. Et au niveau du développement, on gagne forcément à détecter les erreurs dès la compilation (ou même plus précisément dès la frappe du code source, la plupart des IDE les signalant en temps réel), qu'à l'execution.

Le véritable problème est à mon avis plutôt lié au fait que bon nombre de développeurs sont incapables de structurer leur programmes. Or ce type de langage ne peut être utilisé sur un projet un peu plus gros qu'un exercice scolaire que si les méthodes, les classes, les packages sont délimitées de manière extrèmement restrictive, et logique. Dans le cas contraire, on se retrouve vite avec un boxon incompréhensible.

Mais dès qu'on travaille sur un projet un peu gros, ça implique plusieurs personnes travaillant ensemble et/ou de reprendre un code source qu'on a soi-même écrit, plusieurs mois voir plusieurs années après l'avoir vu pour la dernière fois. Et là, ce genre de fonctionnalités du langage s'avère incontournable pour réussir à s'en sortir sans trop s'arracher les cheveux.

Je programme en Java, Javascript et Objective-C, et très clairement c'est en Java que je peux avoir le plus de facilité à programmer, et c'est grâce justement à la complexité du langage. Par contre, c'est sûr que ça ne se maîtrise pas en 5min...
2  0