Une bien bell et intéressante question que voilà !
La réponse, elle, n'est par contre pas du tout simple et plutôt subjective.

Je pense qu'effectivement, les concepts mis en jeu dans un langage et la façon dont ils sont abordés, le rendent plus ou moins complexe. Mais c'est extrêmement subjectif parce que, par exemple, l'orienté objet, certains n'imaginent pas pouvoir faire sans, alors que d'autres n'arrivent pas à s'y mettre. Et certains langages abordent l'OO différemment et du coup parfois on comprend très bien dans un mais pas du tout dans l'autre.

Citation Yannick: donc moins il y a de concept, plus c'est simple, et plus c'est simple, et moins ce langage a d'intérêt .

Je ne pense pas qu'on puisse relier la simplicité et l'intérêt. L'intérêt, ça dépend toujours de ce qu'on a envie de faire et quel est le contexte. Parfois, on veut justement qu'un langage soit simple, par exemple pour ajouter du scripting dans une application. Le but dans ce cas n'est pas de prendre un langage puissant et compliqué, mais quelque chose de simple et abordable par un plus grand nombre.

Je ne pense pas non plus qu'on puisse si facilement relier le nombre de concepts invoqués et la simplicité. Certains langages n'utilisent pas beaucoup de concepts compliqués, et pourtant ils ne sont pas si simples que ça, parce que les dits concepts sont relativement mal combinés les uns avec les autres. Là je vise php par exemple, php étant le langage mal foutu par excellence, créé à l'origine je cite par quelqu'un qui n'aime pas programmer (véridique!).

Maintenant si on reprend les arguments de notre second Yannick:
* la sensibilité à la cass. Encore que sur ce point cela peut très bien être la faute de l'IDE qui n'ajuste pas automatiquement les majuscules et minuscules
des mots clés;
Et entre nous, c'est peut-être le point qui me fait le plus ch... chez certains langages de programmation (c, c++, java,...).

Ca, c'est une question d'habitude, et ce n'est pas à l'IDE de compenser ton manque de rigueur avec la casse. Si tu adoptes une convention comme la camel case, tu verras que ce n'est pas du tout compliqué, et que ce qui est en minuscule ou en majuscule est totalement logique.
Personnellement, je n'aime pas l'abus d'underscores en tout cas !

* l'absence de garbage collector ou cet outil intégré sensé supprimer automatiquement de la mémoire les variables et objets non utilisés; Obligeant dès lors à le faire manuellement.

Sur ce point, effectivement; c'est ce qui fait assurément du C et du C++ un langage difficile. A ma connaissance, il n'y a pas d'autre langage qui est encore massivement utilisé et qui n'a pas de GC. A noter qu'il existe des implémentations de GC pour le C et le C++, surchargeant malloc/realloc&co, ou l'opérateur new du C++. Cela dit, on s'aperçoit de plus en plus que, mine de rien, un GC, ce n'est pas du tout gratuit pour les performances. Donc parfois il est intéressant de s'abstenir.

* le typage fort, voir même stricte. Ou cette propention à exiger les déclarations obligatoires de type, qui exclu dans certains langages les convertions implicite de types.

Ca, c'est une arme à double tranchant. AVoir un langage au typage statique et obligeant aux déclarations explicites, ça rend certes la phase de conception plus compliquée. Mais débugger un logiciel écrit dans un langage à typage complètement dynamique comme python, php, lua, ruby et autres, c'est ô combien plus fastidieux que pour du java par exemple. Le problème des déclarations non obligatoires et des typages faibles, c'est que ton programme peut potentiellement planter à cause d'une bête faute de frappe en pleine exécution. De même si tu croyais que telle variable contenait un int alors que pour une raison ou une autre c'est une string parce que quelque part tu as oublié de la convertir. ET ça, c'est con je trouve. Du coup tu n'y gagnes rien: d'un côté du conceptualises plus, mais de l'autre tu dois tester et débugger plus longtemps.

* les noms de constantes globales, fonctions, objets, et bibliothèque peu évocateurs parce que trop court ou trop codifié. Ici, je dénonce le défaut de signification des mots ou groupes de mots entrant dans la désignation des antités du langage.
Le c++ est pointé du doigts.

Je ne comprends pas bien où tu veux en venir là, tu peux développer ?

* Le côté usine à gaz du langage. Par exemple, dans le vb.net, pour atteindre un objet, on est parfois obligé d'entrer dans l'objet d'un objet d'un objet d'un objet...
Et si en plus c'est mal nommé comme relevé dans le point précédent...

Ca c'est pas la faute du langage mais des bibliothèques. Cela dit c'est juste, ça donne une mauvaise impression de difficulté, quand la bibliothèque standard ou une des bibliothèques phare est mal conçue. LE champion dans ce domainelà, c'est quand même java je pense.

* le manque de cohérence dans le langage. Par exemple, en VBA access, il m'est arrivé de trouver que pour qu'une date soit acceptée par un control, il fallait d'abord la convertir en variable de type double... alors que le type date existe bien. Illogique ! Imaginez combien de temps on peut mettre avant de comprendre ce genre de bizarreries. Ou même encore des conventions de nommage ou de structuration différentes d'une bibliothèque à l'autre, d'une classe à l'autre, etc.

Là pour moi dans ce domaine, le champion, c'est php. Il excelle dans les incohérences, les noms de fonction qui ne veulent rien dire, l'ordre des paramètres qui ne suivent aucune logique, les conversions implicites voulues ou non, la couche OO bancale...


* la difficulté à y créer des interfaces graphique. Avez-vous par exemple déja observé le code de l'interface d'une fenêtre MFC faite en c++ ? C'est à donner des meaux de tête. Mais sur ce point, des fonctionnalités de l'IDE peuvent très bien aider l'utilisateur et masquer la complexité du code de l'interface mis en arrière plan.

Ca de nouveau, c'est pas le langage, mais les bibliothèques.

* la complexité des concepts du langages. Je prendrais pour preuve celui des pointeurs dans le c++. D'autres langage ont simplifié ce concept en créant celui des références, mais cela n'en reste pas moins obligatoire à certains moment, et requière dès lors plus de vigilence que d'habitude.

Oui, assurément, le concept de pointeur n'est pas simple et la philosophie du tout est pointeur comme en java (parce que les références en java, en fait, ce n'est rien d'autres que des pointeurs avec quelqeus enrobages bonus, et c'est le cas dans la plupart des autres langages) simplifie grandement la chose. Mais le fait que le C++ soit un des langages les plus difficiles est qu'il est à la fois bas niveau et haut niveau. Le C est bas niveau seulement, et tous les autres sont haut niveau uniquement, en tout cas pour moi. ON compte pas l'assembleur évidemment.

* la permissivité de l'écriture du code. Là, ce sont principalement les langages à accolades que j'incrimine. En effet, on peut carrément y écrire l'accolade ou on veut, sans indentation et avec aucune règle d'espacement, donnant à certains codes l'allure de spaguetty.
Ce qui complique considérablement la tache lors de la lecture.
Alors qu'en visual basic ou en python, le code est automatiquement ou obligatoirement indenté, et les blocks facilement identifiables.

Là par contre j'ai un avis totalement opposé à toi. Ce n'est pas au langage de m'imposer des règles d'indentation, d'écriture, de formatage. C'est à l'IDE s'il y en a un que doit revenir le travail de formater le code pour qu'il soit facile à lire. Les langages à accolades, c'est cool, tu as la liberté de formater comme tu veux, comme ça t'arrange pour pouvoir travailler plus efficacement.

C'est comme si on te disait que pour écrire du français, il fallait exactement 10 mots par ligne, et que le verbe doit toujours être à la 2ème ou la8ème colonne. C'est pas le rôle du langage que de t'imposer ce genre de règles à la con. Ca doit se limiter à la syntaxe, point barre; pas à la présentation. C'est pour ça que, dans ce sens-là, le python est pour moi un langage mal conçu, il t'impose un truc qui est plus casse-pieds q'autre chose, pour aucun bénéfice notable. Encore une fois ce n'est pas au programmeur de se soucier de la présentation de son code, mais à l'IDE.



Bonne nuit.
Progliste :
Pour se d�sinscrire de la liste : 
mailto:[email protected]?subject=unsubscribe

Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/       

Je vous rappelle que les pi�ces jointe sont activ�s leur taille est limit� � 2 MO
Pour acc�der aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en priv�, je 
vous r�pondrez en priv�.
        
        

Répondre à