|
Publicité ' | ||||||||||||||||||||||||
|
|
#81 | |||||
|
Expert Confirmé Sénior
![]() ![]() Inscription : janvier 2007 Messages : 9 651 ![]() |
Juste 2 petits commentaires en relisant les 2 dernières pages :
Citation:
Code :
(et en plus c'est logique dans le raisonnement mathématique !!!) Citation:
Ces programmes ne sont pas en C.... Citation:
Et je répète... A part depuis quelques années (avec XP) mais la plupart des logiciels Win étaient basés sur Delphi, VB, et autres joyeusetés "de haut niveau", qui les faisiaent crasher régulièrement (ainsi que la machine...)... Ce n'est pas le langage qui fait qu'un logiciel ne plante pas, c'est le programmeur....
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
|||||
|
|
00
|
|
|
#82 | ||
|
Invité(e)
![]() Messages : n/a ![]() |
Citation:
Citation:
Mais c'est justement totalement l'inverse ! Quand je fais un programme en C, j'ai bien plus l'impression de monter mon truc à la main, avec le risque de mettre des clous aux mauvais endroit. Alors que quand je le fais en OCaml, je fais confiance à des menuisiers de renoms pour toutes les parties critiques de l'application |
||
00
|
|
|
#83 | |
![]() ![]() ![]() Nicolas ValléeIngénieur d'études Inscription : décembre 2005 Messages : 9 978 ![]() |
Citation:
peut-être est-ce simplement parce que tu ne connais pas les menuisiers de renom qui vont du C... ou que tu dénigres leur travail |
|
|
|
00
|
|
|
#84 | |
|
Invité(e)
![]() Messages : n/a ![]() |
Citation:
A vous lire, j'ai quand même l'impression que la dernière fois que vous avez tenté de faire autre chose que du C, c'était il y a 20 ans, vous êtes tombé sur Basic, et vous avez (à fort juste titre...) abandonné. Le monde des langages de programmation a très légèrement évolué depuis, et peut être que "nous les jeunes" (comme vous vous plaisez à nous appeler) avons justement l'avantage de la curriosité de la jeunesse, qui nous a permis de découvrir ces autres langages, de les tester, et d'en comprendre les avantages. Je suis un bien piètre programmeur, je l'avoue volontier. Néamoins, je n'ai jamais une seule erreur de ségmentation, ou un seul plantage silencieux dans mes programmes. Pourquoi ? Parce que c'est tout simplement impossible dans le langage que j'utilise (sauf à se servir de l'infame module Obj ou Marshall, je vous l'accorde). Et dans 90% des cas, lorsque le code compile (c'est à dire que l'inférence de type réussi), le code est bon et ne nécessite aucun débugage. De plus, les codes sources sont plus court qu'en C, à mes yeux beaucoup plus élégant et logique, et si on compare à temps passé à programmer, les performances du produit fini sont souvent meilleurs que ceux fait en C par d'autres programmeurs d'un niveau équivalent au mien. Parce que ce que vous oubliez peut être, en tant qu'expert informatique, c'est que tout le monde ne l'est pas. Après, je suis béat d'admiration devant le noyau linux, qui est évidement en C (sauf les parties en ASM). Je ne dis pas qu'il n'est pas possible de faire un programme sûr en C (prenant l'avion régulièrement, je préfère le croire !! Mais je suis aussi bien content de savoir que le code de l'A380 a été statiquement vérifié. Par un programme écrit en OCaml d'ailleurs ;-)), je dis juste que les gardes fous apportés par certain langages sont un réel plus que beaucoup de gens devraient découvrir et utiliser à bon escient. Il y aura bientôt un nouveau "défi" sur le forum "langages fonctionnels". Venez y faire un tour pour voir de quoi il retourne et ce qu'apportent ces langages. Ca peut valoir le détour ? |
|
00
|
|
|
#85 | |
|
Invité(e)
![]() Messages : n/a ![]() |
Citation:
Et l'expérience prouve qu'en moyenne, les programmes en OCaml sont d'une qualité incomparablement suppérieure à ceux en C. Comment ça c'est parce que les seuls personnes qui utilisent OCaml sont des chercheurs, alors que n'importe qui fait du C ??? Mince, ma mauvaise foi est mise à jour :-p |
|
00
|
|
|
#86 | |||||||
![]() ![]() ![]() Nicolas ValléeIngénieur d'études Inscription : décembre 2005 Messages : 9 978 ![]() |
Citation:
Citation:
Citation:
Citation:
Citation:
Astrée ? effectivement... mais il faut aussi se dire qu'il ne trouve pas toutes les erreurs sinon, y a aussi Lustre pour les systèmes synchrones, mais là encore, il faut avoir conscience qu'il y a des choses qu'on peut vouloir, et qu'on n'arrive pas à écrire en lustre Citation:
pourquoi bientôt il existe déjà... et on va lancer le second défi. en plus, tu es au courant, je crois bien avoir vu une proposition de ta part pour le premier défi Citation:
effectivement certains chercheurs ont un excellent niveau en programmation pratique (même si beaucoup se contentent de la théorie, et de l'algorithmie )bon au passage, ce thread parle de C vs C++, donc ce serait intéressant d'éviter à l'avenir les digressions de ce style... qui seraient en revanche très appréciées dans un sujet approprié |
|||||||
|
|
00
|
|
|
#87 | ||
![]() ![]() ![]() Nicolas ValléeIngénieur d'études Inscription : décembre 2005 Messages : 9 978 ![]() |
Citation:
ce ne sera bientôt plus un secret, car le papier devrait être publié, mais il existe désormais des applications industrielles utilisant conjointement un système "à la Coq" conjointement à d'autres techniques d'analyse statiques, et qui obtiennent des résultats assez bons... (indice : ce n'est pas un langage fonctionnel qui utilise cela suivre les sorties en R&D durant les deux prochaines années devrait donc contredire ce que tu viens d'avancer (mais pour le savoir déjà, il faut connaître un peu ce milieu Citation:
+1000... il est clair qu'un expert C fera un programme 1000 fois meilleur à tout point de vue si on le compare avec un novice qui tenterait la même chose dans son langage de prédilection. Mais signalons aussi que, si on a le bagage théorique minimum, on deviendra plus facilement expert d'un langage "haut niveau" qu'expert C |
||
|
|
00
|
|
|
#88 | |||||||
|
Membre Expert
![]() Inscription : mars 2002 Messages : 962 ![]() |
Citation:
Citation:
Quel intérêt y a-t-il à jouer avec les pointeurs quand des mécanismes moins dangereux et tout aussi efficaces existent ? M'est avis, il vaut mieux limiter le code potentiellement dangereux là où il est indispensable. Prudence est mère de sûreté. Citation:
Citation:
Tu as raison, c'est la même chose pour la programmation. Si j'étais un développeur parfait, j'utiliserais peut-être régulièrement le C. Mais ce n'est pas le cas... Citation:
En C, c'est pareil. Certaines erreurs peuvent passer inaperçues. Par exemple, un buffer overflow. Citation:
un programme écrit en C ne plante pas forcément ; un programme écrit dans un autre langage peut parfois planter. Tout comme : on peut écrire un texte sans faute, sans correcteur automatique ; on peut trouver des fautes dans un texte, malgré une correction automatique. Toutefois, on ne peut s'empêcher de penser que les proportions s'en trouvent inévitablement modifiées, à compétences égales. Citation:
Je suppose que, précisément pour ces raisons, tu utilises l'option -w (oui, minuscule) de gcc quand tu écris du C. N'est-ce pas ? Il te serait probablement insupportable que le compilateur puisse t'aider, puisque ça t'empêcherait inévitablement de réfléchir par toi-même. Maintenant quelques questions, puisque tu sembles défendre le C. Pourquoi n'utilises-tu pas l'assembleur plutôt que le C ? Puisque le débat tourne surtout sur l'aspect bas-niveau contre (plus ou moins) haut-niveau, on pourrait réutiliser tes arguments, pour défendre l'assembleur. Non ? Ne crois-tu pas que la réduction du nombre de ligne de code, l'augmentation de l'expressivité des langages, de la clarté du code... augmente la productivité tout en simplifiant énormément la maintenance et le débuggage ? C++ n'est pas un langage que j'apprécie énormément (bien que son système de templates soit extrêmement intéressant), mais je le conseillerai toujours par rapport à du C. Il y a un niveau d'abstraction supplémentaire, un système de typage légèrement plus fort (quand on utilise les ajouts de C++). Tout comme Alex_3.14, je t'invite à participer aux défis qui ont lieu dans le forum fonctionnel. Ces défis sont ouverts à tous les langages et tu n'as même pas besoin de comprendre la notion de programmation fonctionnelle pour participer. Tu pourras te rendre compte directement de la différence entre le C et les langages de plus haut-niveau. Une clarté incomparable, du code 10 (ça dépend des cas, mais la valeur 10 n'est généralement pas exagérée) fois plus court... |
|||||||
|
|
00
|
|
|
#89 | ||||||||||||||||||
|
Expert Confirmé Sénior
![]() ![]() Inscription : janvier 2007 Messages : 9 651 ![]() |
En bref, je pense que la question du départ est biaisée... Comme tout débat de ce type, il y a des pour et des contres, il y a des différences suivant l'usage, le domaine, l'expérience, etc etc... Ce que je conteste est l'affirmation péremptoire d'une supériorité , surtout quand ce qu'on dit "supérieur" se trouve être dans le courant de pensée "actuel"...
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
||||||||||||||||||
|
|
00
|
|
|
#90 | |||||||
|
Membre Expert
![]() Inscription : mars 2002 Messages : 962 ![]() |
Citation:
Citation:
Citation:
Citation:
Citation:
Dans le premier cas, dis-moi quelle est la fonctionnalité du C que le C++ ne possède pas, et qui améliorerait la lisibilité du code ? Dans le deuxième cas, n'y a-t-il vraiment aucune fonctionnalité du C++ qui pourrait parfois améliorer cette lisibilité ? Au hasard, dans cette liste : l'objet, les namespaces, les références, les templates (programmation générique et méta-programmation), la surcharge (ok, le C++ en a un peu abusé), STL, Boost et les structures de données (string, list, vector, map...)... N'y a-t-il vraiment rien de bien dans cette liste (s'il y a des fonctionnalités que tu n'aimes pas, rien ne t'oblige à les utiliser) ? Citation:
Pour un bon programmeur, je conseille toujours le C++, car il pourra mieux se concentrer sur les tâches métier. Citation:
|
|||||||
|
|
00
|
|
|
#91 | |||||
![]() ![]() ![]() Nicolas ValléeIngénieur d'études Inscription : décembre 2005 Messages : 9 978 ![]() |
Citation:
Je pense qu'en C, avec un peu de discipline de codage, on peut obtenir la même chose, et de façon lisible... par exemple :
Code c :
Code c :
je concède que c'est plus lourd à concevoir... mais une fois les modules créés (ils sont réutilisables dans d'autres projets |
|||||
|
|
00
|
|
|
#92 | |
|
Membre Expert
![]() Inscription : mars 2002 Messages : 962 ![]() |
Déjà, les templates, c'est plus que des macros. Et avoir un système objet complet sera difficile à avoir en C.
Citation:
Mais surtout, quel est l'avantage à "recoder" le C++ ? Je pense surtout qu'avec un peu de discipline de codage (notamment, ne pas utiliser les fonctionnalités de C++ juste parce qu'elles existent), C++ est un bien meilleur choix. |
|
|
|
00
|
|
|
#93 | |
![]() ![]() ![]() Nicolas ValléeIngénieur d'études Inscription : décembre 2005 Messages : 9 978 ![]() |
Citation:
je dis juste qu'une fois les modules et macros adéquates créées, il est presque aussi simple d'utiliser la version C par ailleurs, en ce qui concerne le recodage d'une fonctionnalité dans un langage de plus bas niveau, saches que cette discipline est très utile dans de nombreux exemples (et aussi d'un point de vue pédagogique). par exemple, il y a d'excellents transparents fait par Xavier Leroy pour son cours du MPRI à ce sujet... on y voit le codage de fonctionnalités de haut niveau (telles que le CPS) dans un "langage" n'en disposant, cela peut être par exemple très intéressant pour traduire un langage complexe sur une machine virtuelle "bas niveau", mais très performante |
|
|
|
00
|
|
|
#94 |
|
Membre Expert
![]() Inscription : mars 2002 Messages : 962 ![]() |
Oui, je suis d'accord. Ce genre de code peut être intéressant.
Mais j'ai bien précisé « quand on a le choix ». Je sais très bien qu'on est parfois obligé (pour des raisons de portabilité, de performances, etc.) d'utiliser un langage bas-niveau. |
|
|
00
|
|
|
#95 | ||
|
Expert Confirmé Sénior
![]() ![]() Inscription : janvier 2007 Messages : 9 651 ![]() |
Bon disons qu'on commence enfin à parler un peu du fond
Citation:
. Par essence je suis flemmard... Et donc je cherche (comme l'éclair Et je trouve (mais c'est vraisemblement dû à mon expérience) qu'apprendre un nouveau truc pour pouvoir me servir de quelque chose qui à priori était défini est un peu.. lourdingue... Je suis pour la simplicité.... de codage, d'algorithme, de concepts... Je l'ai dit dans le forum algo, bien qu'ayant fait 23 ans de programmation scientifique, je n'ai jamais dépassé les dérivées secondes et les équations du second degré dans mes progs... Et ça marche... Or doncques je trouve qu'on ajoute ce que tu appelles "des abstractions", qui en fait sont des concepts (pas intuitifs) qui (à part l'objet) sont à apprendre en plus, et qui me semblent inutiles... En C je dirais qu'il n'y a que 2 notions délicates à apprendre : void et les pointeurs. Et en ce qui concerne les codes, je vois passer (ici-même) des codes C++ illisibles, et je peux te montrer du code C parfaitement lisible... même faisant des choses compliquées... Et de plus la superposition de C++ avec des interfaces graphiques "par événements" rend les choses encore plus complexes (voir certains débats sur le forum conception par exemple), pour des "débutants" ou pas si débutants que ça, en faisant se mélanger des notions, et justement des concepts non intuitifs.... Donc pour moi la simplicité est dans le C, la complexité dans le C++. Et c'est pareil pour le code... Je reviens à ma maxime favorite : "ce qui se conçoit bien s'énonce clairement"... Et plus je code, plus je veux de la simplicité... Citation:
Un débutant qui est perdu dans l'ensemble des tâches à faire, il est plus simple pour lui d'utiliser un langage (voire un IDE ou un RAD) lui simplifiant la tâche, quitte à ne pas disposer de subtilités qui de toutes façons sont inexploitables pour lui, et ne peuvent que générer chez lui confusion et bug... afin de pouvoir se concentrer sur ce qu'il a à coder, c'est à dire les tâches métier... Au contraire, chez un bon programmeur, à priori il a l'expérience de savoir ce qu'il fait, et d'autre part a souvent besoin de choses subtiles (car étant bon, il optimise et connait des astuces)... Et pour lui l'analyse des tâches métier est beaucoup plus simple, ainsi que la "conception préliminaire", quasi en automatique....
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
||
|
|
00
|
|
|
#96 | |||||||||||
|
Membre Expert
![]() Inscription : mars 2002 Messages : 962 ![]() |
Citation:
Citation:
Mais il y a une différence de taille. J'adore apprendre : de nouveaux concepts, de nouveaux langages, de nouveaux paradigmes... C'est en ayant une meilleure connaissance des possibilités que je peux choisir la solution la plus simple. Dans le défi du forum fonctionnel, on trouve par exemple cette fonction : Code Haskell :
Citation:
Citation:
Citation:
En C++, c'est un peu mieux : les notions de listes et de couples sont dans la STL. Citation:
Citation:
Citation:
Citation:
Demande à un développeur C++ s'il souhaite faire du C. Il est probable qu'il refuse, puisqu'il aura surtout l'impression de perdre des choses. Le contraire me semble faux : à passer du C au C++, on ne perd (quasiment) rien. Oui, le C++ est plus compliqué que le C. Mais quand on le maitrise, on gagne vraiment quelque chose. |
|||||||||||
|
|
00
|
|
|
#97 | ||||||
|
Invité(e)
![]() Messages : n/a ![]() |
Citation:
Citation:
Citation:
Citation:
Citation:
|
||||||
00
|
|
|
#98 | |
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : novembre 2005 Messages : 4 970 ![]() |
Citation:
__________________
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça. |
|
|
|
00
|
|
|
#99 | |
|
Membre habitué
![]() Inscription : mars 2007 Messages : 165 ![]() |
Citation:
Maintenant C ou C++? c'est une question de philosophie. Mais si le C++ est là aujourd'hui, c'est parce qu'il était nécessaire de mettre à jour le C pour différentes raisons... Jean-Marc.Bourguet, beaucoup de personne conseil de débuter par le C (à tord), nottament dans certain livre. Dailleur en cours d'informatique, on m'a fait débuter par le C pour apprendre le C++. Juste un exemple bien célébre qui conseille de débute par le C pour finir par le C++: les cours C/C++ du site du zéro. |
|
|
|
00
|
|
|
#100 | ||||||
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : novembre 2005 Messages : 4 970 ![]() |
Citation:
Citation:
Citation:
Citation:
Citation:
Citation:
__________________
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça. |
||||||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com