Salut !!
C ou C++ ? Tout dépend de ce que tu veux faire.
Je trouve perso que le C++ est beaucoup moins contraignant que le C et permet de programmer orienté objet, ce qui peut s'avérer utile.
Après, tout dépend de ce que tu souhaites faire!
Salut !!
C ou C++ ? Tout dépend de ce que tu veux faire.
Je trouve perso que le C++ est beaucoup moins contraignant que le C et permet de programmer orienté objet, ce qui peut s'avérer utile.
Après, tout dépend de ce que tu souhaites faire!
Ben perso, en C je trouvais ça vraiment contraignant de devoir préciser le type des variables qu'on souhaite afficher par exemple.
Une contrainte qui plante les programmes comme un rien sans aucune chance de détection statique du problème... Ce n'est pas trop ce que l'on attend d'un langage compilé (un interprété je ne dis pas).
D'autres facilités ?
Cf la gestion des chaines de caractères, les if dans tous les sens pour contrôler nos ressources, ...?
Personnellement, j'ai commencé (en cours) par apprendre le C, puis lorsqu'on maitrisait suffisament, les profs nous ont fait passé au C++ (toujours en console).
Lorsqu'on était suffisament à l'aise en console on est passé au C++ en graphique (là aussi progressivement, avec C++ builder et l'assisant pour placer les objets graphiques, puis en codant directement tout ce qu'il faut pour que ça fonctionne bien)
Puis ensuite on est passé a d'autres langages (Java puis C#) dont l'apprentissage a été plus rapide vu que le fonctionnement de la programmation orientée objets été acquise.
N'y connaissant rien du tout en prog avant ça, je trouve que commencer par le C, c'est pas mal, ça permet de prendre tout de suite les bonnes habitudes.
Voila pour mon experience personnelle, si ça peut aider....
Je n'ai jamais dit que le C est un rêve. D'ailleurs je remercie le ciel de string et vector. Mais je demandais ce que Nahla entendais par là. Car ce n'est pas très clair « c'est plus contraignant. »
Maintenant ce dont tu parles en premier lieu n'a aucune raison de s'appeler une contrainte. Ça serait d'ailleurs, vu la manière dont tu le présentes, plutôt une liberté dangereuse non Je ne comprends pas bien le « if » dans tous les sens.
Oui forcément... la POO en C a moins de support mais je ne vois pas la un problème de contrainte a proprement parler.
Bon la gestion mémoire. C'est vrai que c'est plus contraignant, là je vois ce que tu veux dire.
C'était une vraie question vous savez: je voulais savoir ce que tu entendais par « plus contraignant » Pas un piège.
Oui Garulfo tu as raison
J'ai bossé ça fait un peu longtemps sur du C et j'aime bien ce langage. J'avoue avoir été tentée par le C++ (études oblige) mais peu importe, le principal est d'acquérir une technique après tout
en fait je prefere que tu commence par le langage C
j'ai réussi à réaliser un mini-shell sous linux avec
Bon, je vais faire le trole en disant que C = thèse, C++ antithèse et C# = synthèse.
Finalement cela fait une belle dialectique avec un dépassement des conditions préalables.
Tiens, je reviens ici avec un nouveau morceau de troll : Il ne FAUT PAS coder en C !
J'ai un peu regardé une technique de test de programmes ammusante, le fuzzing qui consiste globalement à donner des entrées moisis à un programme et à regarder comment il réagit. J'ai écris un petit "bit flip", qui prend un fichier sein, permute des bits au pifomètre, et le donne en entrée au programme à tester. En moins d'une heure de test (test full automatique, donc ça me prend pas de temps...), j'ai produit un .class qui fait crasher la machine virtuelle GNU sur signal 11, un fichier pdf qui fait pareil avec acrobat reader (le 8.blah, pas le 9, mais je n'ai pas pu le tester pour de vrai). Bon, soyons honnete, la JVM de sun a résisté.
Avec l'outil Mangleme, je produit facilement un .html qui fait crasher firefox3 sous kubuntu (pas sous d'autres distribs, je sais pas bien pourquoi), et amaya, le browser du W3C s'envoie dans les roses à chaque fois.
Bref, le C est un langage completement dépassé, qui est la cause de plus de 90% des failles de sécurités trouvées puisque les buffer-overflow y sont légions.
Donc si le choix c'est C++ ou C, prend le C++ en utilisant les vectors qui vérifient les bornes des tableaux !.
Bon après je vous rassure hein, un petit
continuera un représenter un problème de sécurité, même en C++...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #include <stdio.h> main(int argc, char *argv[]){ if(argc>1) printf(argv[1]); return(0); }
Codez en autre chose, vous couterez moins cher à la société :-)
Oui, sauf qu'un développeur C++ qui a un minimum de connaissances n'utilisera pas printf.
Oui, Java et .Net sont très robustes. C'est très dur d'obtenir des erreurs de segmentation et autres erreurs violentes. Bien sûr, ça ne veut pas dur qu'un programme Java/C# soit sûr : ils lancent facilement des exceptions.
Tu parles de quoi ? Le printf est fortement typé en Caml et vérifié à la compilation.En OCaml, ça planterait aussi ton truc non ?
Nop ! si tu prends
et que tu appelle le programme sur "%n%s%i", il t'affichera "%n%s%i". Il parse les format string statiquement. D'ailleurs si tu tentes de compiler
Code : Sélectionner tout - Visualiser dans une fenêtre à part let _ = Printf.printf Sys.argv.(1)
Tu te prends
Code : Sélectionner tout - Visualiser dans une fenêtre à part let _ = Printf.printf Sys.argv.(1) Sys.argv.(2)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 File "pri.ml", line 1, characters 23-35: This expression has type string but is here used with type ('a -> 'b, out_channel, unit) format = ('a -> 'b, out_channel, unit, unit) format4Ouais fin c'est toujours pareil.... Un bon programmeur C verifiera ses bornes de tableau. C'est juste que l'expérience prouve que sur un gros projet, on fait forcément des erreurs. Et que c'est donc au langage de nous protéger.Envoyé par LLB
Non, c'est différent. Ne pas vérifier des bornes, ça peut arriver facilement. Inclure stdio.h et appeler printf, c'est se tirer une balle volontairement - tout comme appeler Obj.magic en Caml.
Quand on utilise les fonctionnalités du C++, le code est beaucoup plus sûr et vérifié qu'avec les fonctionnalités héritées du C.
A moins de ne faire que des petits projets en mode texte, printf est très rarement utilisé parce que qui dit projet dit gros projet avec GUI oblige.
Avec des classes comme Qt,VCL,MFC même en win32 sous Windows on n'utilise évidemment pas printf
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager