Haha! Me serais-je tiré une balle dans le pied?
Bien, cette intervention est bonne pour l'autre post, qui concerne le code du TicTacToe (pauvre code... est-il si méchant?).
Outre le fait que cette construction est utile pour le programme; je ne suis pas sans savoir qu'on peut faire plus court, par exemple avec des opérateurs logiques qui ne interrompraient la lecture quand une condition est fausse... bref.
"Le problème du C++ c'est l'apprentissage..."
Alors là, c'est tout a fait VRAI!!! Je suis 100% d'accord avec ça, C++ est loin d'être évident, la doc est énorme et il vaut mieux être compétant pour le manier. Je veux dire par là que, par exemple si on prend un autre langage objet comme Java, il y a beaucoup plus de limite conceptuelles, ce qui le rend plus "facile" a manier (en fait on est tellement encadrer qu'on peut du coup pas trop faire de betises...).
C++ est un outil bien plus efficace que Java, et pour faire un parallèle, les concepteurs de Java reprochent a C++ son manque de "sécurité".
En réalité, s'il est vrai qu'un programmeur peu expérimenté peut créer potentiellement plus de failles de sécurité en C++ qu'en Java, il n'apprendra jamais à les gérer s'il n'utilise qu'un environnement soi-disant "sécurisé".
Un programmeur expérimenté préférera toujours un outils qui lui laisse la liberté de conception de son application, donc par exemple C++ plutot que Java. En outre, l'aspect multi-paradigme de C++, bien que n'étant pas sans danger, peut être un vrai +! Bref, si C++ est là encore après 30 ans (1980 je crois? environ...), il y a des raisons...
C'est tout a fait vrai que depuis 1990 on ne voit que des langages objets, ou fonctionnels.
A mon avis, il y a deux raisons.
1/ La POO a bénéficiée d'un marketing de première qualitée, avec C++ et ensuite Java (pour ne citer qu'eux), parceque le paradigme objet répond a des besoins:
*On construit des niveaux d'abstractions plus haut, plus facilement.
*Du coup, on peut coder plus vite.
*Les PC digèrent mal l'abstraction, ca fait vendre des nouvelles machines plus puissantes.
2/ En procédural, c'est considéré comme de la mauvaise programmation d'appeler des fonctions qui pèsent trop lourd, peut-être a cause de l'approche traditionnellement "proche du métal" de ces langages (prog système, ect...). Donc les programmeurs n'auraient pas compris l'intérêt un langage C2 (je viens de l'inventer) qui serai plus haut niveau. J'ignore si c'est totalement vrai, mais on semble considérer que au dessus de l'Assembleur, il y a le C, et apparemment c'est assez compliqué de faire "mieux" en procédural (ADA par exemple est proche, il possède une syntaxe plus lourde pour éviter les bêtises courantes, mais il reste beaucoup moins utilisé. Bon après je connais pas tous les langages non plus.)
On entend souvent dire que C n'est pas sur. C'est faux. Autant dire qu'une brique n'est pas sur, parceque vous pouvez très bien vous la faire tomber sur le pied, et qu'on ne devrai plus faire les maisons avec. Or une maison assemblée en brique peut très bien s'écrouler sur vous si elle est mal construite, ou vous protéger de l'orage et abriter votre famille (Okay j'arrete avec les images...).
La joie du C (et du C++ aussi tant qu'on y est), c'est la responsabilité. Vous pouvez tout faire, et vous apprendrez beaucoup.
L'avantage que je vois du C sur le C++, c'est la simplicité. Peu de mots. Des fonctions basiques.
L'avantage que je vois du C++ sur le C, c'est qu'on peut y faire de l'objet.
Simplement, a mon avis, faire tout de suite de l'objet masque beaucoup trop le fonctionnement du PC. On y a beaucoup moins la notion de la façon dont l'information est traitée. On a plus de chance de développer de "mauvaises" habitudes (des pratiques pas trop efficaces quoi...).
N'oublions pas que la POO n'existe qu'au niveau de la conception du programme. Le PC reste procédural, il ne traite pas d'objets.
Ca n'empêche pas qu'on peut faire de bons programmes en POO hein! Simplement, il ne faut mélanger les choses, et ne pas opposer procédural et objet.
(Par exemple, moi, si ces %£~@#{] de concepteurs de Java avaient mieux fait leur coup, j'aimerai utiliser des UI en Java sur des programmes en C. Parceque, franchement, faire les interfaces en C, c'est chiant. Mais voilà, interfacer les langages, c'est encore plus chiant )
Comme je suis taquin, voilà un lien pour faire de l'objet en C:
http://happyleptic.org/~rixed/pooc.html
Et pour être profitable a tous (si vous avez lu jusque là, vous méritez bien un petit quelque chose, non?): Le Guide C Superflu
http://docs.google.com/viewer?a=v& [...] gLdZP2vJkA
Et enfin, un projet en C:
http://trustleap.com/
Comme je ne programme pas en C++, je n'ai pas de ressource a proposer...