Le C est un langage de haut niveau. Les bas niveau sont plus spécifiques aux matériels. Le C est très portable. On causait à un moment de l'histoire de haut/bas niveau dans ce thread.Citation:
Envoyé par sylvain114d
Version imprimable
Le C est un langage de haut niveau. Les bas niveau sont plus spécifiques aux matériels. Le C est très portable. On causait à un moment de l'histoire de haut/bas niveau dans ce thread.Citation:
Envoyé par sylvain114d
Quel débat entre Metal Tom et Fëanor13 !
Il y a juste un truc qui m'a dérangé quand vous commenciez à parler fortement d'ordinateurs intelligent. Vous avez commencé par vous demander ce que serait la prog de demain, et vous voilà en train de penser à des ordinateurs qui "sauraient comment faire" les choses et prendraient des décisions. Seulement, ces deux notions sont à mon avis divergentes et doivent absolument le rester.
J'ai toujours eu l'intime conviction que l'intelligence et l'incompétence étaient en fait les deux facettes du même phénomène, deux notions indissociables. En d'autre termes, l'intelligence artificielle ne pourra se faire sans "incompétence articielle". Je m'explique : qu'est-ce qui fait à l'heure actuelle la puissance des ordinateus ? C'est le fait que tu peux leur demander n'importe quoi, à n'importe quel moment et autant de fois que tu veux, il te répondra toujours la même chose, de façon rationnelle et sans jamais t'envoyer chier parce qu'il en a marre de répondre. C'est sa force, et pourtant c'est ce qui prouve qu'il est particulièrement stupide. Prenons maintenant un ordinateur super intelligent, capable de prendre des décisions, de corriger tes erreurs, etc... il serait forcément amené à remettre en cause tout ce que tu lui dis, et à l'interpréter à sa façon... Il serait devenu très intelligent, mais aussi totalement faillible. Car qui dit prise de décision dit possibilité d'erreur dans cette prise de décision, ce qui est définitivement inadmissible dans le cadre du comportement d'un ordinateur tel qu'on le connait.
Je ne dis pas que l'intelligence artificielle n'a pas d'avenir dans l'informatique, ce serait absurde. Ce que je veux dire, c'est qu'il doit naître à mon avis une nouvelle espère d'ordinateurs intelligents, mais que cette nouvelle génération ne PEUT PAS faire disparaître celle que nous connaissons, celle que nous programmons, car celle-ci nous sera toujours indispensable. Je crois donc que vos avis divergent littéralement car ils se rapporte à deux modes d'évolution qui sont nécessairement amenés à se compléter, dans des domaines d'application radicalement différents.
D'autres part, quand metal tom parle de base ternaire, il n'est pas très loin de la vérité puisque la physique quantique (qui n'après de nombreux scientifiques sera amenée à supplanter la micro-électronique dans le domaine de l'informatique) permet de coder les infos à partir de trois état. Un photons peut être soit dans un état, soit dans un autre, soit les deux à la fois...
Je vais peut etre te paraïtre niais en te demandant ca, mais je pars du principe que pour débattre les choses doivent être posées clairement. Lorsque tu parles de possibilité d'erreur, sur prise de décision, j'aimerais savoir ou tu situe exactement l'erreur. Si par exemple l'erreur se situait au niveau de l'interprétation de l'ordre donné par un utilisateur, le problème ne se poserait pas. C'est bête, mais où un tel ordinateur commetrait une erreur de décision ?
J'ajouterais concernant le sujet, que trois état ne remettrons en cause qu'un petite partie du C/C++. Personnelement je les utilise assez souvent, mais je ne suis pas sur que tout le monde utilise frequement les opérateurs &, |, ^, <<, ou >> (avec des entiers, pas les surcharges). Leurs sens étant exclusivement binaire, il va falloir leur redonner un nouveau sens (pour les décalages de bits, le nouveau sens ne pose pas de problèmes).
Metal Tom a ditBien sur ça depend ou tu te places, moi je parlai par rapport au Java, Php...Citation:
Le C est un langage de haut niveau. Les bas niveau sont plus spécifiques aux matériels. Le C est très portable. On causait à un moment de l'histoire de haut/bas niveau dans ce thread.
Le C permet une manipulation direct de la memoire et ça c'est pas vraiement du haut niveau !!! :wink:
Je pense que le C++ restera, comme le C reste et l'assembleur reste.
Par contre, pour le developpement de progiciel ou de systèmes d'information le C++ me semble un peu dépassé (pas taper :lol: ). On a des platterformes de développement avec le support du xml en standard, les webservices, la possibilité de faire une partie d'un système en web sans changer de plateforme, etc... Disons que c'est des facilités qui font gagné du temps et c'est bien connus le temps c'est de l'argent.
On a maintenant entre .NET et java des plateformes de développement qui permettent de programmer plus vite et d'éviter pas mal de bug dans les programme avec la disparitions de pointeur et le code managé. Vous allez me dire qu'un programme bien fait en C++ n'as pas de bug, de dépassement de mémoire, etc ... Je suis d'accord, mais en C++ c'est une chose de plus à laquelle il faut penser donc forcément quelque part du temps "perdu".
Là ou j'émmet des doutes c'est sur les jeux et la 3D. Java ne me semble pas du tout adapté et même si on à l'impression que microsoft voudrait que tout le monde fasse ces jeux avec DX9/C# je demande quand même à voir...
Donc pour conclure, le c++ disparaitra : NON. C'est juste qu'on ne fera plus certainnes choses avec ! Mais le C++ restera dans les jeux, l'informatique industrielle, et l'informatique embarqué !
C'est évident. A mon avis ils ont la même "espérance de vie" pour être plus précis..Citation:
Envoyé par neo.51
Tu prêches pour ta paroisse, c'est un peu normal. :lol: Chaque informaticien a des langages et outils qu'il adore et des langages/outils qu'ils détestent. Et c'est de là que naissent de superbes trolls quand deux informaticiens se rencontrent sur un forum :-)Citation:
Envoyé par neo.51
C'est vrai que le débuggage en C (et en C++ dans une moindre mesure) c'est long, fastidieux et chiant.Citation:
Envoyé par neo.51
Là je suis d'accord.Citation:
Envoyé par sylvain114d
Sinon je suis d'accord avec tout ce que dit Blustuff. (pour faire court... :lol:)
Ca devient éprouvant. Surtout quand tout le monde s'y met ! :lol:Citation:
Envoyé par papapetz
Sinon ce que tu dis à propos de l'intelligence artificielle et de l'incompétence artificielle, etc. Je pense que tu vois la chose d'une façon trop philosophique. L'intelligence artificielle est par définition artificielle. Je ne crois pas qu'elle a pour but de faire émerger des sentiments à une machine. On est pas dans Star Trek (comme hier soir sur Canal Jimmy où Data apprenait à danser : c'était trop fun la gueule qu'il tirait :lol:).
Le but c'est que les machines arrivent apprendre, programmer. Après il y a la notion de vie artificielle qui va avec c'est à dire la régénération, l'autoréparation, la reproduction. Imagines t'as une machine qui fait d'autres machines : t'as tout un parc informatique pour pas un rond !!! :marteau:
Sinon quand tu dis que des ordinateurs artificiellement intellignets ne pourront pas remplacer les ordinateurs actuels. Moi je pense que justement si. Les machines actuelles seront complètement dépassées par les capacités des autres. A moins que ça ne serve de jouet pour les enfants.
C'est un exemple parmi tant d'autres de projets de machines futures.Citation:
Envoyé par papapetz
Bon, j'arrête là : je suis crevé après un message pareil. Je retourne me coucher :-)
ce qu'oublie neo.51, c'est qu'avant de gagner du temps, il faut en
perdre (formation et changement de mentalité)
Seules les entreprises bien structurées, capables d'avoir des objectifs
à long terme peuvent faire le pari des plateformes (java ou .NET)
beaucoup de directions d'entreprises naviguent à vue (elles lisent 01
Informatique pour connaître le vocabulaire à la mode) et seul le talent
des individus permet qu'elles s'en sortent
Or les plateformes .NET ou Java ne peuvent être que des choix
d'entreprises et non d'individus (car nécessitant trop d'investissements)
donc exit le langage C# qui n'existe pas en dehors de .NET
C/C++ font partie des langages préférés des individus
En fait blustuff ce que je veux dire c'est qu'une prise de décision engendre nécessairement un choix entre plusieurs solutions, sachant que ces solutions n'apporteront pas les même résultats. Il y a donc forcément une incertitude dans la qualité du résultat obtenu.
Je sais qu'un ordinateur qui commetrait des erreurs, cela peut paraître irréaliste pour nous qui ne connaissons que les ordinateurs sous forme de machines qui appliquent bêtement une tâche, et ne peuvent donc pas se tromper dans l'exécution de cette tâche (sauf erreur de leur concepteur). Mais c'est justement parce que l'intelligence apporte aux ordinateurs un mode de fonctionnement totalement différent que des notions, tout aussi nouvelles, d'erreurs et d'imprécision, feront aussi leur apparition.
En gros ce que j'essaie de dire, c'est que pour être aussi intelligent que nous, un ordinateur devra nécessairement être aussi faillible que nous. De même que pour être aussi précis et infaillible qu'un ordinateur, nous devrions nécessairement devenir aussi stupides que lui. L'un ne va pas sans l'autre.
On dit souvent que "l'erreur est humaine", moi je vais juste un peu plus loin en disant que l'erreur est le propre de toute forme d'intelligence.
Il suffit de penser aux systemes experts. Ils sont censes donner la solution la plus probable, cais celle-ci peut-etre fausse. Le fait de savoir qu'elle est fausse et de connaitre plus tard la bonne reponse va aider le systeme expert a apprendre.
Ce n'est evidement que quelque chose de tres rudimentaire par rapport a une veritable intelligence qui est en general amenee a faire des choix quasiment en permanence dans des tas des domaines differents, mais il existe deja une forme d'erreur, la ou l'intelligence se pointe.
Maintenant, une intelligence artificielle devrait toujours etre capable de ne jamais se tromper dans une addition.
Merci Elrond d'avoir cité le cas des systèmes expert, je voulais y faire à l'allusion et finalement j'ai oublié (suis-je trop intelligent ? ;))
Bien au contraire, c'est la seule chose que l'on sache faire à l'heure actuelle ! On n'a pas encore su imaginer une approche de l'intelligence qui soit radicalement différente du fonctionnement de notre cerveau. Certains spécialiste avancent d'ailleurs que cette approche nous conduit droit dans le mur...Citation:
Envoyé par Metal Tom
Enfin bref, ce que je voulais surtout dire, c'est que dans certains contextes bien précis, il est hors de question qu'un ordinateur puisse avoir le droit de prendre une décision, qu'elle soit bonne ou mauvaise. Deux types d'informatique doivent coexister : l'informatique intelligente (mais peut-on encore appeler ça de l'informatique ? le terme système cognitif serait p-e plus adapté), et l'informatique traditionnelle, celle qui exécute un ordre sans "réfléchir", sans interpréter et SURTOUT sans prendre la MOINDRE décision autonome.
Ne me dit pas qu'on n'aura un jour plus besoin de machines stupides et obéissantes sous le prétexte qu'elles seront tellement intelligentes qu'elles feront tout toutes seules. La preuve de ce besoin, tu la trouveras en observant les humains eux même : certains êtres humains en "forment" d'autres pour que ceux ci obéissent aveuglément, tout simplement parce que la démarche est plus efficace et moins risquée. Tout comme avec les ordinateurs, la moindre prise de décision ou d'autonomie de la part de ces outils (je parle des soldats, SRC et compagnie au cas ou tu n'aurais pas compris) remettrait en cause le but que se sont fixé ceux qui les utilisent. L'excés d'intelligence existe et existera toujours. Et le besoin de s'en affranchir se fera toujours sentir, dans tous les domaines, que ce soit pour une cause juste ou moins juste.
Je suis chiant Patapez, mais tu n'a rien précisé, tu as redis la même chose differement. Je ne sais toujours pas où est la possibilité d'erreur.
Je sais que mon avis sur le sujet que je vais énoncer n'est que de piètre valeur, vu que je programme d'une manière assez peu commune, c'est pour cela que j'aimerais avoir votre avis. Du C++, vers un langage qui n'a pas le type d'erreur reproché au C++, cad, pointeurs invalides, mauvaise déréférenciation, fuite de mémoire etc., ces opérations justement dangereuses sont remplaacées par quoi ? cad, que pour moi c'est opérations risquées sont effectivement très pratique, et si elles n'existent pas dans les autres langages, c'est tout de même une contrainte. Et il me semble que l'on peut très bien programmer en C++, sans pointeur, si on utilise des objets programmés par d'autres, comme celles du standard ou d'API quelconques. Vous en pesnez quoi ? (étrangement j'ai pas eu l'impression d'etre très clair)
LOL !!! Si pour toi ces 3 lignes résument l'ensemble des possibilités d'erreur d'un système cognitif, c'est que tu n'as vraiment aucune idée de la complexité d'un tel système :lol:Citation:
Envoyé par Metal Tom
Un système cognitif tel que le cerveau est puissant parce que c'est un système COMPLEXE. C'est sa complexité qui en fait la puissance. Mais c'est aussi sa complexité qui en fait l'instabilité. Un malade mental n'est rien d'autre qu'un cerveau qui a été victime de sa propre complexité. Les états d'âme sont aussi la conséquence de cette complexité. De plus, notre cerveau est en plus une méta-intelligence : il arrive à analyser et comprendre son propre mode de compréhension. Ce qui en fait un système encore un peu plus fragile : les problèmes métaphysiques ne sont qu'une barrière de plus à l'efficacité pragmatique du cerveau.
Je ne crois pas que tout ceci soit résumable en 3 lignes. Bref.
La phrase que j'avais dite précédemment est pourtant évidente, mais tu ne semble pas vouloir l'admettre : Toute prise de décision engendre une possibilité d'erreur dans cette prise de décision.
Je ne vais pas tourner et retourner cette phrase dans tous les sens pour te l'expliquer, elle me paraît simple et évidente, ne serait-ce que parce que la validité d'une décision de peut être calculée de façon déterministe.
Enfin, j'ajouterai que pour inventer un système cognitif qui ne se trompe pas, il va déjà falloir inventer un mode d'intelligence autre que tous ceux que nous connaissons. En effet, le mode d'apprentissage d'un cerveau (humain ou autre) est basé sur l'échec. Ca tu n'y peux rien, c'est comme ça. Cela dit ce n'est qu'un demi-argument puisque l'intelligence artificielle a justement pour but d'arriver à se dégager de notre propre mode de fonctionnement.
Blustuff>> de quels erreurs tu parle, les erreurs de programmation et d'exécution d'un programme ?? Si c'est le cas on ne parle plus du tout de la même chose là...
Par contre, si tu parle bien des erreurs engendrées par une prise de décision quelle qu'elle soit : Tu me demande de préciser les "erreurs" auxquelles je fais allusion. Tu vas p-e trouver ça un peu facile, mais je pense (comme je le sous-entendait plus haut) que vouloir les énumérer ne ferait que montrer qu'on n'a pas bien compris la portée du sujet. Il ne s'agit pas de trouver des exemples et/ou des contre-exemples, mais bien de PROUVER l'éventualité d'un comportement faillible. Personnellement, je n'ai absolument pas les compétences requises.
Non, je ne pense pas que l'on puisse lister les causes d'erreurs du cerveau huamain, pour moi c'est plutot vain, on ne sauras jamais si la liste est complète ou non. Par contre on peut s'apercevoir qu'il existe parmis ces erreurs, les erreurs d'oublis très fréquente dans un résonement, et représentant la quasi-totalité des errreurs dans les démarche scientifiques a mon sens (n'expliquant pas le sens que je lui donne ca ne veux pas dire grand chose), et les erreurs physiques ou je ne sais pas comment les appeller qui peuvent être représentée par la fatigue les maladies enfin tout ce qui trouve son equivalent dans les erreurs au niveau température / parasites éléctromagnétiques dans un proc, mais qui sont bien moins nombreuses. M'enfin, ce paragraphe s'éloigne beacoup du sujet je préférerais qu'on laisse tomber ou qu'on continue plus loin ou sur un autre post.
Concernant le système intelligent, auquel tu t'interessais dans ta réponse, je trouve justement que cette notion d'erreur est mal défini. Tu dis que c'est évident, mais moi je ne trrouves pas. L'évidencee n'a jamais été une preuve, et je ne te demande pas de tourner ta phrase, mais d'approfondir ce que tu as dit. Pour moi, dit comme ca, ca reste très empirique pour reprendre les mots d'un autre.
Et dernièrement encore sur un autre sujet, mais très proche du sujet celui là (je suis bien hein je fait un paragraphe pour chaque sujet complètement indépendant :)) ), je parle simplement du codage, et effectivement dees erreurs d'execution. (Je vioens de me relire, et c'est vrai que j'ai oublié de mette un lien logique, pardon....). C'est donc sur quelque chose de complétement différent, quelque chose de reproché au C++ dans les posts précédents.
Pour patapetz : du calme, je ne résumais pas toutes les erruers possibles mais juste celles que je voyais en réfléchissant 2 minutes. J'attendais que chacun en sorte quelques unes. Ce qu'à fait Blustuff dans le premier paragraphe de sa réponse
- oublis
- physiques(fatigue, maladies et j'ajoute surtout le stress)
- température / parasites éléctromagnétiques dans un proc
les deux premiers sont corrigeables pour une machine. Le troisième c'est une histoire de bonne conception. N'oublions pas que les erreurs des premiers ordinateurs c'était beaucoup à cause de morpions qui bouffaient les fils électriques (d'où le bug mais tout le monde la connait cette histoire).
Mais je ne dis toujours pas que c'est les seules causes d'erreurs. Je ne dis pas queles causes d'erreurs sont dénombrables. Mais de ce qu'on a vu pour l'instant il n'y a rien d'insurmontable. Et cela n'enlève aucunement de la complexité au système.
Souligne le mot possibilité. Il y a une possibilité d'erreur mais ce n'est pas certain. C'est une histoire de probabilités à ce niveau là.Citation:
Envoyé par patapetz
Sinon pour l'histoire de reprendre un programme ou objet/structure, etc de quelqu'un d'autre (dernier paragraphe du premier message après mon précédent de Blustuff) personnellement je déterste ça. Mais heureusement pour moi c'est arrivé que dans le cadre d'un projet et une fois pour un stage. Sinon je préfère faire tout moi même. Mais il y a beaucoup de cas où c'est infaisable.
C'est pas exclu ? L'informatique est lea seule science où on invente tout. Les autres sciences on découvre.Citation:
Envoyé par patapetz
Pourquoi forcément copier notre mode de fonctionnement ? Vu qu'on est trop faillible à quoi ça sert ? Si une machine calcule aussi lentement que nous elle est bonne pour la casse. Mais c'est vrai que pour certaines choses on peut s'inspire. Mais la question est : prennons nous les avantages de l'humain ou les inconvénients ? C'est une autre histoire.Citation:
Envoyé par patapetz
Il est evident qu'on peut faire le bon choix sans avoir toutes les informations. En ayant toutes les informations, on peut aussi faire le mauvais choix, mais c'est la ou les machines seront peut-etre moins faillibles que l'etre humain.
Maintenant, quant a savoir ce qu'est un bon ou mauvais choix, tout depend de la question a laquelle il faut repondre ou de l'action a realiser.
Simplement pour servir un cafe fait avec un appareil specifique. Disons qu'on sait qu'il faut 15 minutes apres qu'il soit fait pour qu'il soit a une temperature buvable. Un homme sera parfois presse et le servira avant, au risque que des gens se brulent s'ils ne font pas attention. Une machine decidera plus probablement d'attendre le delai prevu. Il y aura peut-etre toujours un risque que la personne se brule si la temperature exterieure est elevee et que le cafe refroidit moins vite. C'est le genre d'erreur sur laquelle la machine apprendra, et sera rapidement a meme de calculer le temps necessaire en fonction de la temperature exterieure (meme pour des temperatures encore inconnues). Disons que c'est un melange entre l'apprentissage par l'erreur et la deduction. L'homme fait aussi ca, mais peut-etre moins vite et moins efficacement que ne devrait le faire une intelligence artificielle bien concue.
L'autre solution est d'equiper la machine d'un thermometre, pour lui donner la totalite des informations necessaires... Sauf qu'elle ne saura jamais si une certaine personne n'est pas plus sensible qu'une autre a la chaleur. Doit-elle pour autant ne servir que des cafes froids pour etre sure de ne pas faire d'erreur?
C'est un exemple tout con, et il evident qu'en principe l'utilisation d'un thermometre est la meilleure solution. Mais dans la vie reelle avec les decisions a prendre, il existe de nombreux cas ou on ne disposera pas de l'equivalent d'un thermometre permettant de connaitre la "totalite" du probleme. Cela doit-il bloquer la machine? Certains humains se bloquent et refusent d'agir (ce qui peut etre un tord), d'autres agissent, parfois a tord, parfois a raison.
Dans le cas d'un programme actuel, la meconnaissance de la temperature du cafe sera de nature a causer un echec du programme (pas un plantage), une exception... Dans le cas d'une veritable intelligence artificielle, si on veut qu'elle aie plus de valeur, il faudra qu'elle puisse prendre ce genre de decision avec une connaissance partielle. L'intelligence devrait lui permettre le plus souvent de prendre la bonne decision, mais pas toujours.
Bon alors dans ce cas je vais essayer de donner les 3 raisons principales qui me viennent à l'esprit pour démontrer qu'une erreur est NECESSAIREMENT possible dans toute prise de décision :
1) Il peut exister plusieurs solutions de validité équivalente.
2) Comme je le disais, la validité d'une décision ne peut être calculée de façon déterministe. En effet, il faudrait pour cela une connaissance supérieure à celle qu'a nécessité la prise de décision initiale.
3) Comme le sous-entendait Elrond avec son café, la validité d'une solution dépend de l'utilisateur, elle ne sera pas la même pour tous, ni a tous moments.
Je précise que tout cela est loin d'être exaustif, il existe sûrement des démonstrations plus scientifiques, mais encore une fois : je n'ai pas la compétence.
Mais enfin bon, moi tout ce que je disais au départ, c'est que la prise de décision, bonne ou mauvaise, est à bannir dans certains domaines. Tu es quand même bien d'accord qu'une prise de décision implique une forte probabilité de modifier le cours des choses ?? (à moins que la décision prise soit celle de ne rien changer, auquel cas elle va à l'encontre de l'objectif même de la prise de décision). Or, si je dis à mon ordinateur de faire un truc, je ne veux pas qu'il se demande si c'est bien ou pas, pourquoi je veux faire ça, s'il a envie de le faire, si c'est dans son intérêt, dans le mien, dans celui d'un autre, etc... Je veux qu'il le fasse, un point c'est tout. Je parle en particulier de programmation : imagine que, lorsque tu as un bug (pas forcément un plantage mais plus un disfonctionnement), tu soit obliger, en plus de savoir où tu t'es planté, de te demander si ton ordinateur n'a pas modifié un truc parce qu'il n'était pas d'accord, ou parce que c'était plus facile pour lui, ou autre. Bref, je pense qu'il faut distinguer deux domaines d'applications :
- ceux où l'on de souhaite pas que l'ordinateur prenne de décision (je ne cherche pas ici à savoir si elle est bonne ou mauvaise)
- ceux où il est au contraire souhaitable de bénéficier de toutes les possibilités apporter par l'intelligence artificielle
Je ne dis pas que ces domaines ne doivent pas cohabiter, je dis seulement qu'ils doivent continuer d'exister TOUS LES DEUX. Ils peuvent même exister sur la machine, à condition que celle-ci soit capable de savoir quand elle a le droit de réfléchir, et quand elle ne doit pas le faire.
Voilà, je n'ai pas cherché à savoir ici si une possibilité d'erreur était présente, je suis juste parti du principe que la raison d'être d'une prise de décision est de changer le cours des choses. J'espère que vous serez d'accord avec cette notion...
Faudrait que la machine boive la café pour voir si il est bon :lol:
Mais en fait cet exemple n'est pas forcément le meilleur. Je pense que l'informatisation à outrance c'est débile. Quand je pense qu'il y en a qui tapent leur liste des courses sur ord ou excel et l'impriment ensuite... ils oublient que ça va plus vite au papier/crayon.
Le café c'est pareil : tu veux un bon café : tu te démerdes. Mais sinon je vois où tu veux en venir.
Exactement. Ce n'etait que pour prendre un exemple de quelque chose qui ne soit pas puremant du calcul informatique, quelque chose pouvant necessiter une prise de decision.Citation:
Envoyé par Metal Tom
En plus ce serait la meme problematique encore. Chacun aime le cafe a sa facon. Quelle decision doit prendre la machine. Le faire fort, leger, ... Je ne souhaite pas specialement une informatisation a outrance mais si un jour chacun a son "intelligence artificielle" de menage, faire le cafe pourrait etre une de ses taches, au moins pour les jours ou on n'en a pas le temps...
Mais il est fort probable que nous ne verrons pas ce futur et que le C++ pour des programmes classiques sera encore utilise pour longtemps.
Si une seule personne bois le cafe, c'est facile, la machine saura son gout (sauf la premiere fois). Si plusieurs personnes le boivent (pas toujours les memes en meme temps), il va falloir combiner, ce qui demande une prise de decision... Comme c'est un cas simple, il devrait rapidement y avoir moyen de satisfaire a peu pres tout le monde. Mais c'est le principe des erreurs. Apres peut-etre deux ou trois essais avec beaucoup d'insatisfaits, la machine trouvera la meilleure combinaison. Encore une fois, il y a a priori la possibilite d'erreur, de resultat non exact...
Oui, enfin sur cela a part Patapez, on s'éloigne tous du sujet. Donc a priori, si je me souviens bien, on pourrais dire que si des programmes doué de décision voient le jour, le C++ se verra emputé d'une part de son interet.
Pour revenir au langage en lui même, je vais essayer de reformuler ma question. Le programmeur C++, se doit d'être prudent et d'ecrire un code propre, en opposition avec le programmeur dans un autre langage évolué qui n'a pas a se soucier d'un tas de détails. Mais à quel prix ? Est-ce que ces outils, comme les pointeurs, courant en C++, source d'erreurs, n'ont il pas cet aspect très pratique, et proposent d'autres solutions aux problèmes qui doivent être contournés dans des langages n'en ayant pas ?
j'ai retrouvé cee que je cherchais :
je cherche donc plus ou moins a savoir si la disparition de pointeurs n'est pas plutot entravant qu'utile.Citation:
Envoyé par neo.51
Evitons de relancer le débat C++ vs Java, il existe deja un thread à ce sujet ici http://www.developpez.net/forums/viewtopic.php?t=50850 .
Je ne disais en effet pas que C++ était mieux que JAVA, mais que dans certains domaines le C++ est utilisé alors que JAVA ne pourrait pas l'être. Mais l'inverse est aussi possible. Sauf que déjà je connais moins JAVA que C++ et puis le débat est centré sur le C++.
Le fait que la programmation système soit (relativement) facile avec C/C++ ça donne un avantage de longévité à ces langages. Ce qui n'empêche pas à JAVA d'avoir un bel avecir devant lui grâce à sa portabilité. Mais n'incluons pas trop JAVA dans cette histoire. C'est juste un point de repère en fait.
Mais enfin bon, moi tout ce que je disais au départ, c'est que la prise de décision, bonne ou mauvaise, est à bannir dans certains domaines. Tu es quand même bien d'accord qu'une prise de décision implique une forte probabilité de modifier le cours des choses ?? (à moins que la décision prise soit celle de ne rien changer, auquel cas elle va à l'encontre de l'objectif même de la prise de décision). Or, si je dis à mon ordinateur de faire un truc, je ne veux pas qu'il se demande si c'est bien ou pas, pourquoi je veux faire ça, s'il a envie de le faire, si c'est dans son intérêt, dans le mien, dans celui d'un autre, etc...
Oui evidemment prendre une decision ca peut changer le cours des choses jusquici on ets daccord! la ou je commence a letre un peu ( sans vouloir te vexer bien sur) cest sur le 'je veux pas qui demande si cest bien ou mal"
La on a plus vraiment un debat sur lavenir du C++ mais sur l'IA .. avec une grave erreur , en effet qui dit Intelligence Artificielle dit.. Intelligence ( pas besoin detre polytechnicien pour aller jusquici ) > La vraie question est donc dans ce cas : "Qu'est ce que lintelligence" , et la certains semblent tomber dans le panneau qui consiste a crorie que le fait d'etre intelligent cest necessairemnt prendre des decisions intelligente en fonction de ses etats d'ame , de ses envies de ses gouts... c'est a dire amener l'intelligence a un niveau d'abstraction tres proche de ce qu'il est chez l'etre humain alors que l'intelligence c'est simplement le fait de "s'adapter" , donc effectivement pouvoir prendre des decision ( reagir) mais pas necessairement prendre ces decisions en raisonnant de facon aussi complexe ( seulon des sentiments , entendu que les sentiments sont une chose complexe)> Ainsi par exemple , une fourmi evitera de passer la ou elle avait decide si tu mets une goutte d'eau a cet endroit , et pour cause ,l'eau est dangereuse pour elle... sa reaction est intelligente, cependnat elle ne depend pas de son etat d'ame , cest a dire que si elle reagis comme ca , demain elle ne va pas se suicider dans la goutte deau parceque ca lui ferait plaisir ce jour la.
Bref concevoir une veritable intelligence artificelle peut se cocevoir sans necessairement y inclure les notions abstraites et complexes du cerveau humain ( dans un premier temps en tout cas , peut etr epossible dans un avenir lointain).
Cependant, je ne pense pas ( renseignez moi si je me trompe0 que l'on ai actuellemnt les moyens de creer un ordinateur dont les capacite d'IA soient liees a sont hardware plus qu'a son software, j'entends par la qu'a ma connaissance on a pas les circuits electriques necessare [pour creer une IA sans la programmer.. et tant qu'om a pas ca creer une IA aussi complexe soit elle se reume a la programmer... donc je ne voit pas en quoi dans un avenir proche l'IA inquiterais le devenir du C++
on aura beau dire que les concepts de programmation aura changé radicalement est que l'on ne peu plus faire évoluer le C++ donc causera sa mort. Le C++ vivra tant qu'il y aura des gens qui programmeront en C++.
Depuis quelques années le C/C++ est en concurrence avec d'autres languages sur certains secteurs. Je me rappelle que mes profs d'infos disaient qu'il y a env. 20 ans que tel language était révolutionnaire, etc... et au bout de 6 mois, il était mis au rebut, faute d'utilisateurs.
pour info, il y a encore des chercheurs à l'université d'Orsay qui bossent sous FORTRAN 77 voire FORTRAN 55. Même si c'est anecdotique, ça veut dire ce que ça veut dire. Si demain, il y a un language qui peut tuer le C++. Si le programmeurs ne migrent pas ou peu, le C++ vivra encore. Les languages informatiques c'est comme les langues vivantes ou mortes, ce sont les utilisateurs qui les font vivre ou mourir. Il y a une chose qui est sûr c'est que le C++ vivra encore demain après demain...
le C# aura une période d'environ 5 ans où on saura si il va s'imposer ou non.
quand on n'a pas besoin de rapidité, on va chercher dans des languages qui permettent un développement plus rapide (donc coûts moindre).
On ne va pas faire une simulation nucléaire sous JAVA ni un CGI en C++.
Ca c'est la clé : un langage reste is des gens programme dans ce langage. C'est bête comme chou mais c'est ça. Et c'est ça qui donne une bonne espérance de vie au C++.
Mais sinon JAVA s'est quand même bien imposé au milieu de ces langages finalement. Parce que par rapport au C il ne se basait pas sur le C qui avait une grande notoriété.
Excusez-moi je n'ai pas pu tout lire car 6 pages cela fait énaurme .
Je pense que tout le monde est d'accord pour dire que C++ c'est un language très performant et rapide mais ce qui fait ses atouts peut faire ses faiblesses ( les fameux pointeurs , fautes générales de protection , fuites mémoires ...)
Mais vous me direz si je me trompe mais personne ne semble avoir parlé des compilateurs et de l'évolution du matériel ;
Juste un petit exemple : supposons qu'Intel par exemple sorte le Bidulium super processeur avec un coprocesseur arithmétique possédant par exemple des instructions de calcul en virgule flottante accrues.
Le problème est : est-ce que les outils de développement existant sur le marché à l'instant T où sort le Bidulium sur le marché sont-ils adaptés à ce nouveau microprocesseur ?
Peuvent-ils générer du code spécifique pour le Bidulium pour accéler les traitements et calculs ?
Si non alors il faut faire des développements spécifiques en....assembleur , language qu'on puisse mixer avec le C++ et non C# et Java...
Donc cela fait un avantage indéniable pour le C++ ( je sais la question n'est pas débat : Java ou C++ ).
Donc cela supposerait que Java et C# soit optimisé pour du code tournant pour ....Intel 386 :lol:
Parce qu'avec ces languages , je repose la question , est-ce qu'on peut profiter des évolutions technologiques matérielles.
Peut-être qu'avec Java embarqué c'est possible...?
Mais c'est la un des avantages de C++ et c'est une des raisons peut-être pour laquelle il sera encore utilisé
Effectivment, bonne remarque ! Je n'ai jamais vu de compilateur C++ ni aucun compilateur utiliser des instructions MMX ou SSE/SSE2 (le SSE fournit des instructions a virgule flottante évoluées :wink:). Bien sûr on pourrait ecrire des librairies pour qu'on puisse bénificier dee ses instructions en Java, Perl ou je ne sais quoi. Seulement ces libraries il va certainement fallor les coder en C++/asm. Pour ceux qui ne le savent pas le MMX, SSE et SSE2 ont des instructions qui servent énormement, dans l'encodage/décodage, encryptage/décryptage, traitement d'image de son et de vidéo, et pour la 3D (surtout raytracing)
Salut
A vrai dire je suis 1 fervant supporteur du c++ mais il faut avouer que du point de vue poo on ne peut pas dire qu'il soit au top. Des language tq le C# ou java qui ne permetent pas l'hirtage multiple ne font pas le poid mais 1 beau jour un nouveau language remplacera notre bon vieux c++ un langage utilsant le garbage collector, ne travaillant qu'avec les reference ou les attr sont "readonly" uniquement ou des assertions (precondition postcondition et invariant) viendront facilté le travail du developpeur....
Microsoft on raté leur coups mais de peut les amis
a+
Pour info, j'ai été aux tech-ed et il y avait des conférences sur la compilation pour les processeur hyper threading d'intel et les Athlons 64 d'AMD qui n'étaient pas encore sortis.
Le SDK de directX9 s'intègre aussi complètement dans visual Studio 2003.
Donc, du moins en .NET, le framework semble adapté, pour l'instant aux nouveautées hardware, donc cet argument en faveur du c++ ne tient pas :p
Tout ces arguments en favaeur du C++, developpement d'api, de plattformes, etc. ont déja été cité. S'il vous plait essayez de ne pas surencombrer ce post.
Le C/C++ restera encore longtemps. C 1 langage très puissant et non-basé sur des VM. Les OS sont codés en C/C++ et ASM, les VM, runtimes et consorts aussi. C# et compagnie sont "plus simples" d'utilisation (gestion de pointeurs automatique... etc.) et les processeurs de maintenant sont très rapides ce qui leur donne des performances visibles sensiblement égales avec C/C++, alors maintenant yen a plein qui les préfèrent au C/C++. Je dirais que c'est la faute de pas mal de programmeurs C/C++ qui développent a l'arrache,car on a besoin de processeurs puissants pour des programmes "de merde" qui, optimisés, pourraient très bien fonctionner sur des plateformes aux performances "moindres" je dirais.Si l'optimisation était vraiment de ce monde, je ne pense pas que C# et consorts atteindraient les performances de C/C++ car pour ces langages, meme avec du code optimisé a fond, il faut de la puissance à cause des vérifications de runtime,VM...etc. Contrairement à C/C++, qui lui est direct. Peut-être pas autant que l'ASM qui est de loin le plus performant, ca ya pas de doute, mais allez coder un programme long et complexe en ASM. Bonne chance...
De plus comme la dit mat.M, les compilateurs ne sont jamais adaptés au nouveau matos qui sort.ASM est mixable avec c/c++ mais pas avec des "VM-based languages" et autres... On peut donc adapter ses programmes C/C++ au nouveau matos sans probleme.
Conclusion: C/C++, c'est vraiment de la bombe...
Salut,
Pour utiliser Pascal, C, C++, ASM, perl, et Java moi je dis qu'il faut adapter le language au projet que l'on souhaite réaliser !
Pour ce qui est de se reposer sur la puissance des processeurs actuels je pense que c'est une solution de facilitée enployée par les mauvais développeurs...
En ce qui concerne la complexité du code le language employé n'a absoluement rien avoir avec le résultat... J'ai vu des programmes en Java abominables, illisibles et completement tordus... Le C++ propose des facilitée incroyables (séparation .h .cpp, librairies, dll,) pour développer des applications portables évolutives et stables et que n'importe quel programmeur pourra maintenir sans soucis... Le seul critère pour avoir un programme de ce type est la qualité de son développeur !
En se qui concerne la stabilité des programmes, encore une fois celà ne dépend pas du language mais du programmeur... Si le programme à été concu dans les règles de l'art (réflexions préalables, codages, tests) alors aucun soucis. De plus le soit disant garbage collector de Java se prend souvent les pieds dans le tapis... Et j'ai même réussit à faire planter un serveur X sous Linux avec un script Perl !!!
En conclusion :
* C++ -- performance et portabilité
* Java -- rapidité de developpement (petits projets)
* ASM -- optimisation extrème et proche de la machine
Maintenant ce n'est que mon modeste avis de développeur... :D
PS : je n'ai jamais entendu parlé d'une méthode efficace de prog qui mettrais la POO à la poubelle...
Petit rappel, merci d'avoir l'amabilité de ne pas polluer les débats avec des petits commentaires personnels sans interet d'une ou 2 lignes...
Pour soutenir l'intéret des lecteurs, si vous souhaitez intervenir, merci de le faire pour des interventions sérieuse et solidement argumentées...
C'est là que je ne suis pas tout à fait d'accord avec toi, je m'explique :Citation:
Envoyé par TitiFr
Si le/les clients ont besoin d'un developpement spécifique et ont un parc de machinnes relativement récent (disons de 800-900Mhz).
Je suis tout à fait d'accord avec toi pour dire que les langages c/c++ produira surement des applications plus rapides que du .NET, java, etc..
Le débat Java/C++ en parle parfaitement.
Mais ce qui me gène le plus dans le C++ ça reste quand même le temps de développement !!! Qui influe irrémédiablement sur le prix du logiciel final !!!
Donc quand le parc informatique du client permet d'utiliser de nouvelles technologies qui permettent d'accroitre sa productivitée et faire baisser les couts du produit final pourquoi s'en priver ?
De neo51 :
Alors moi je dis pas d'accord ! :lol:Citation:
Mais ce qui me gène le plus dans le C++ ça reste quand même le temps de développement !!! Qui influe irrémédiablement sur le prix du logiciel final !!!
Donc quand le parc informatique du client permet d'utiliser de nouvelles technologies qui permettent d'accroitre sa productivitée et faire baisser les couts du produit final pourquoi s'en priver ?
Pourquoi le temps de développement en C++ serait-il plus long ??
Sûr que faire strcpy c'est un peu laborieux...
Au début oui cela demande effectivement plus de temps que de développer en C# ou Java ou autre.
Mais une fois qu'on a développé des librairies , qu'on a structuré ses projets pas évident que cela soit plus laborieux de développer en C++.
J'utilise VC++ et MFC ( ça y est je sens encore les critiques pleuvoir ) et lorsqu'on maîtrise cet outil on développe aussi rapidement qu'avec VB ou autre.
C'est pareil avec C++ Builder ou autre .
Lorsqu'on a fait ses librairies , du code réutilisable , le développement est plus ou moins rapide.
Question d'organisation 8) .
Et puis Java ou autre c'est bien mais il arrive à un moment où on se retrouve inévitablement bloqué techniquement car C++ permet d'utiliser toutes les ressources de la machine bref d'aller aux limites de la machine.
Et c'est le problème aussi des outils RAD : c'est conçu pour développer rapidement mais qui dit rapidité dit mauvaise qualité probable.
On ne développe pas un logiciel comme on fabrique des étagéres.
Et là je demeure très perplexe au sujet des outils de développement qui permette de développer rapidement.
Qui me dit qu'en Java ou C# on puisse faire tout ce que l'on veut ??
Je ne veux pas lancer un éniéme débat sur VB mais c'était l'outil RAD par excellence permettant une prise en main aisée.
Donc pour faire des applis développées rapidement pas de problèmes ; mais souvent des applis "jetables".
Et avec ce genre d'outil pour faire des applis très pointues on se retrouve terchniquement bloqué
Sans parler de vb6, les librairies dont tu parles, le code réutilisable, c'est fesable en java et .NET, le truc c'est que beaucoup de classes "de base" sont déjà faite. Tu me dis que tu vas aussi vite "une fois qu'on a développé des librairies".
Hors de mon point de vue (qui n'engage que moi) le developpement et l'analyse de ces librairies prend quand même un certain temps. Si tu te bases sur un framework : java, .NET c'est toujours ça de gagné en temps. D'ailleur Borland l'a bien compris en rapprochant wxwindows de C++ builder X tout comme la VCL et C++ builder 6.
Mais la VCL semble avoir un avenir plutot flou, microsoft ne semble pas séduire avec son VC++.NET car faire du C++ managé par le framework.net, autant faire du C#... :lol:
Donc l'avenir du C++ dans les RAD repose un peu sur les épaules de C++ builder X :?
Je sais qu'il existe beaucoup d'autres libs et outils pour le C++, mais en ce moment j'ai plutot l'impression que le c++ est en déclin. Il restera surement trés utilisé en informatique industrielle par exemple, ou dans d'autres types de développement ou les performances sont trés importantes (temps réèl). Mais le C++ devient de moins en moins attirant par rapport à des plateformes comme java/.net qui sont aussi accés sur des technologies web et qui proposent des frameworks trés complets.
la réutilisabilité est le secret de la réussite. pas besoin de POO pour cela.Citation:
Envoyé par mat.M
non. mais un outil facile à utiliser est facile à être mal utilisé. l'exempleCitation:
Envoyé par mat.M
le plus flagrant est le téléphone portable. on fait vraiment n'importe quoi
avec.
Ce qu'oublie de dire la publicité, c'est qu'il faut maîtriser le produitCitation:
Envoyé par mat.M
pour que la rapidité de développement soit au rendez-vous. Cette maîtrise
n'est jamais immédiate et elle sera impossible si on est tout le temps en
train de changer de produit
pour répondre à néo.51. les plateformes Java ou .NET sont forcemment des
solutions d'entreprises, qui doivent en plus être dotées d'une organisation
impeccable
des directions incompétentes croient pouvoir remplacer une organisation
bordélique par un outil miracle. Hélas l'outil sera dans ce cas, non pas
une solution mais un bordel de plus. et plus l'outil est sophistiqué et
plus le bordel sera grand. et au bout du compte, l'échec assuré.
comme disait je ne sait plus qui .....tout est relatif
pour des appli grands publics je crois que java prendera encore du terrain sur c/c++ mais........pour les grosses applications et des appli en temps reel la C/C++ sont imbatables et pour longtemps.
C/C++ sont le langage de programmation systeme (meme si on utilise ASM lors de la programmation des diffs controleurs). cet question et assez reccurentes depuis la venue de .NET de chez Billou. mais il faut savoir une chose je paris mon pain que .NET est faites en Visual C++
bon courage
moi je pense que de toute façon, on va vers des solutions de plus en plus complètes et compactes(et peut être beaucoup moins performantes). Dans un avenir probablement proche, la profession de "développeur" sera reléguée aux oubliettes sauf pour les développements très pointus nécessitant encore de mettre la main à la pâte.
L'éventuel manque de performance induit par ces solutions toutes faites sera bien évidement compensé par le hardware dont les performances ne cessent d'augmenter.
Dernier point: je pense qu'il est ridicule de toujours vouloir tout comparer, en effet, on ne compare pas des carottes et des chaussures, si?