|
Publicité ' | ||||||||||||||||||||||||
|
|
#61 |
|
Membre émérite
![]() Inscription : juin 2006 Messages : 1 117 ![]() |
Oui si l'envie vous prenait d'être développeur sur le kernel linux, il faut être très bon avec le langage C.
|
|
|
00
|
|
|
#62 |
|
Membre Expert
![]() Pierre Ingénieur développement logiciels Inscription : juin 2007 Messages : 1 183 ![]() |
Perso, j'ai appris le C en premier, pour la seule raison que j'ai eu un livre dessus avant le C++.
C'est ainsi que j'ai appris successivement: html et javascript, basic (pour calculatrice TI), "algoritmique", C, "assembleur" (beurk), php et mysql, actionscript (pour flash), c++, java, et quelques bricoles. A mon avis, si le langage à apprendre dépend de ton besoin. Est-ce manipuler des données compliquées, mais liées entre elles? POO avec C++, java ou d'autres. Au contraire, il s'agit de développer des "raisonnements"? langage du type C, basic ou javascript. Enfin, si apprendre un peu l'HTML ne te gène pas, alors commence par le JavaScript, qui apporte un plaisir de programmation (pas d'environnement de développement ou autres débuggeurs ou compileurs...). |
|
00
|
|
|
#63 |
|
Membre émérite
![]() ![]() Rija RandrianoInscription : janvier 2007 Messages : 1 057 ![]() |
Bonjour à tous !
Pédagogiquement, je penses qu'on doit commencer par C et apprendre tous ses rudiments même si on dit souvent qu'on peut débuter directement par C++. Une fois, le C appris, il faut apprendre le C++ car le C reste plus ou moins obsolète, seul les bibliothèques comme GTK et SDL le font vivre ainsi que l'EDI TurboC qui est très facile de prise en main. Un autre conseil, je vous conseille de commencer par les EDI comme Visual C++ et Code::Blocks pour programmer en C++ avant d'entamer les RAD comme C++ Builder ! Bonne continuation à tous dans C++ ! (évidemment en C aussi) __________________________________________________________________ Si vous maîtrisez les bases du C++, attaquez l'utilisation de bibliothèques de classes comme Qt: http://randriano.developpez.com/article/trolltech |
|
|
00
|
|
|
#64 | |
![]() ![]() Étudiant Inscription : février 2006 Messages : 1 076 ![]() |
Citation:
Mais qu'est ce que vous avez tous à penser que le C est obsolète / va disparaitre ? Il reste l'un des langages de programmation les plus utilisés et il a vraiment de beaux jours devant lui : tous les OS les plus utilisés sont codés avec : les Windows et les Unixoides (donc UNIX, Linux, BSD et MacOS) ! Ne serais-ce que pour les applications mathématiques, il reste le langage roi avec le Fortran...
__________________
"En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock) Application : ainsi qu'à regarder la avant de poser une question.La rubrique Perl recrute, contactez-moi. |
|
|
|
00
|
|
|
#65 |
|
Membre émérite
![]() Inscription : juin 2006 Messages : 1 117 ![]() |
Je crois qu'il faut distinguer les facilités de chacun de ces langages. Le C++ est pratique pour concevoir des architectures logicielles de façon simple et efficace, le C est plus performant pour des applications spécifiques, car plus bas niveau. Le C est répandu, comme c'est le langage de programmation des OS, il est réellement portable, qui plus est utilisé sur beaucoup de systèmes embarqués, langage de programmation des kernels. Il est également très intéressant à étudier, car il permet de faire le lien direct avec la machine, contrairement au C++ qui rajoute déjà pas mal d'abstractions supplémentaires.
En définitive, le C pour moi est rapide, mais lourd à programmer. Pour résumer, la problématique finale est toujours la même : facilité d'utilisation, spécificité VS performances. À mon avis le C est _le_ langage universel, le compromis parfait entre expressivité algorithmique et langage bas niveau. Du fait de la relative simplicité de son fonctionnement, les compilateurs sont performants et donc permettent d'accroître la portabilité du code. Voilà mon avis sur le C. Pour le C++ , j'ai commencé à l'étudier, mais il est vrai qu'il rajoute beaucoup d'abstractions, dont l'intérêt et l'utilité ne sont pas forcément évidents si on n'a pas déjà rencontré les problématiques habituelles du C. Je crois donc que randriano a raison à propos de l'intérêt pédagogique du C est incommensurable, notamment par le vaste champ d'application de ce langage. Cependant l'intérêt pédagogique du C++, avec l'implémentation orientée objet qu'il comporte, est indéniable. De toutes les manières se limiter à un seul langage de programmation pour un développeur n'est certainement pas une bonne façon de l'aborder. Néanmoins, il faut faire les choses pas à pas, et pour cela, je crois, on a tout intérêt à commencer par travailler un peu avec le C. |
|
|
00
|
|
|
#66 |
|
Invité(e)
![]() Messages : n/a ![]() |
Si vraiment tu es face à un choix totalement binaire C/C++, je conseillerais le C++. En effet, le C n'est pas un langage de programmation, c'est un assembleur multiprocesseur. S'il s'est largement imposé à la communauté informatique mondiale, ce n'est évidement pas par une suppériorité quelconque sur les autres langages, mais uniquement parce qu'il est d'une exceptionnelle trivialité, et qu'il est donc très facile d'écrire un compilo pour chaque nouvelle architecture. Vu que tout est à la charge du programmeur du logiciel, celui qui écrit le compilo n'a pas particulièrement à réfléchir, et écrire un compilo C sans trop d'optimisation se fait très rapidement. C'est quand même un langage qui date des années 70. Disons que depuis, la théorie des langages de programmation a fait quelque petit progrès.
Beaucoup de gens me répondront "au moins avec le C, tu sais ce que tu fais, tu es proche de la machine, tu gères toi même ta mémoire, etc." Et 95% d'entre eux ne sauront en fait pas dutout ce qu'ils font, ne sauront absolument pas gérer leur mémoire, et produiront donc des programmes sans aucune sureté à l'execution, bourrés de memleak, et finalement pas plus rapide qu'un programme Java, mais qu'ils auront mis 5 fois plus de temps à développer, et 20 fois plus à débugger. L'immense majorité des applications informatiques n'ont absolument pas besoin de ce prétendu gain en performance apporté par le C, surtout que ce gain n'est effectif qu'avec de très bon programmeurs, ce qui est en fait franchement rare. Bref, pour le coeur d'un système d'exploitation, ok, le C, c'est bien (c'est même raisonnablement indispensable). Pour un client mail, franchement, c'est débile. Donc oui, je conseillerais le C++ qui a quand même l'avantage d'avoir bénéficié de quelques années d'expérience de plus ! Et qui autorise même à programmer proprement (bref, sans pointeur, juste avec des références), et même à faire de l'objet ;-) Après, pour rester dans la même catégorie de langage, si tu as plus de choix, je préfère quand même Java. Encore un peu plus de progrès par rapport à l'époque où le C++ a été conçu, une meilleure "intégration globale" je trouve. Et qu'on ne vienne pas me chercher les poux avec les histoires stupides de performance ! Grmbl... Et pour quitter le domaine des langages impératifs, moi z'aime bien les langages fonctionnels :-D Ou formulé autrement, je suis un afficionados d'OCaml. Voilà voilà :-) |
00
|
|
|
#67 |
|
Membre habitué
![]() Inscription : juillet 2007 Messages : 201 ![]() |
Moi je pense que connaitre le C est plus important que le C++, car si tu ve toucher a ton OS (Linux), tu devras connaitre le C.
|
|
|
00
|
|
|
#68 | |||
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 9 572 ![]() |
Citation:
Et c'est quoi ? Citation:
Alors là je meurs de rire.... Si il était d'une exceptionnelle trivialité, vous tous vous l'utiliseriez dès votre enfance, et à l'école, et à la fac... C'est justement parce qu'il ne l'est pas que vous utilisez des trucs qui font tout pour vous , qui vous empêche de faire des erreurs, qui gère la mémoire à votre place, etc etc... C'est justement parce que vous ne voulez pas vous fatiguer que vous utilisez des trucs plus simples... Citation:
Et tu es sacrément meilleur que le mec qui a fabriqué ton téléphone portable, c'est bien évident...
__________________
"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
|
|
|
#69 | |||||
![]() ![]() Étudiant Inscription : février 2006 Messages : 1 076 ![]() |
Alors, tout d'abord, un énorme +1 sur tout ce qu'a dit souviron.
Citation:
J'en viens à me demander si tu sais vraiment ce que c'est que l'assembleur au final. Citation:
C'est quoi cette légende urbaine ? Allez, petite révision des notions de base. En C++ comme en C : Code C++ :
Ensuite; en quoi les pointeurs sont sales ? Je comprend pas cette hantise de ne jamais vouloir avoir à faire avec la mémoire. Citation:
Attention hein, Java reste pour moi un très bon langage (avec notamment une bibliothèque de classe impressionnante) mais il n'a rien inventé.
__________________
"En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock) Application : ainsi qu'à regarder la avant de poser une question.La rubrique Perl recrute, contactez-moi. |
|||||
|
|
00
|
|
|
#70 | ||
![]() ![]() ![]() Nicolas ValléeIngénieur d'études Inscription : décembre 2005 Messages : 9 963 ![]() |
Citation:
techniquement aucun : + POO... simula l'avait dans les années 70 + garbage collector... Lisp Citation:
![]() + introspection... SmallTalk faisait déjà plus de ce côté là + héritage simple vs héritage multiple... SmallTalk l'avait + interfaces multiples + héritage simple... peut-être, mais n'est-ce pas un moyen détourné de faire de l'héritage multiple enfin, j'oublie peut-être quelques "grandes innovations" de Java |
||
|
|
00
|
|
|
#71 | ||||||
|
Membre Expert
![]() Inscription : mars 2002 Messages : 962 ![]() |
Citation:
Citation:
Je pense que tout le monde est d'accord, c'est juste une question de mots. Citation:
Citation:
Dans beaucoup de cas, C++ permet d'éviter l'utilisation de pointeurs, ce qui est une très bonne chose. Citation:
Citation:
|
||||||
|
|
00
|
|
|
#72 | ||||||||
|
Invité(e)
![]() Messages : n/a ![]() |
LLB a déjà répondu à quasiment toutes les questions, et d'une façon correspondant parfaitement à mon point de vu, et je l'en remercie :-) J'ajouterai une ou deux choses
Citation:
En C, le programmeur peut faire ce qu'il veut ! Il fait mumuse avec sa mémoire, cast des types les un dans les autres, s'éclate avec des pointeurs de pointeurs... Effectivement, quand on écrit un système d'exploitation, c'est indispensable. Pour mon navigateur web (vous savez FireMachin là, le navigateur qui doit contenir une boucle while(true){malloc 50; sleep 50} vu la quantité de memleak), pour mon lecteur de news (Knoeud, qui sigfaultait trois fois par jour sans raison apparente. Mais il va mieux), ou encore mon modeleur UML (Paraplo... Lui, il crash tous les 12 cliques), c'est completement absurde. Ce que je demande à ces logiciels, ce n'est pas de réagire dans le pouillemme de seconde qui suit une de mes actions. C'est d'y réagir *bien*, et de ne pas crasher sans raison. Mais non, les gens sont habitués à ça... Quand on compare deux logiciels, ont se demande lequel va vachement plus vite que l'autre. Moi j'aimerai qu'on me dise lequel ne plante jamais et ne mem-leak pas. Bref, lequel est écrit dans un langage de haut niveau. Citation:
Citation:
Citation:
Citation:
Plus sérieusement, comme l'a là aussi souligné LLB, je parle du langage, pas de son utilisation. Et c'est justement la grande simplicité du langage, le fait qu'il soit très bas niveau, si proche de l'assembleur, qui fait qu'il est complexe a utiliser, très peu pédagogique pour débuter en programmation (le débutant en C prend très rapidement d'extremement mauvaise habitude. Et puisqu'il est obligé de gérer sa mémoire tout seul, et autre joyeuseté, il perd un temps fou vis à vis de ce qu'il veut réellement faire). De même que le langage d'un machine du turin est d'une extreme simplicité ;-) (aller à gauche, aller à droite, rester en place, écrire un caractère, changer d'état, le tout pour chaque symbole lu et chaque état de la machine... On fait difficilement plus simple), et est pourtant notoirement inutilisable. Et ce n'est pas "parce que je ne veux pas me fatiguer" que j'utiliser OCaml. C'est parce qu'il me permet de faire beaucoup plus vite, beaucoup mieux, beaucoup plus proprement, avec beaucoup moins de débugage beaucoup plus de chose. (Oui, je sais, les deux sont turing complet, donc aucun ne permet de faire plus de chose que l'autre. Mais je me comprends !) Et si plus de gens utilisaient des langages de haut niveau, je perdrais encore moins de temps à récupérer les crashs à droite à gauche. Citation:
|
||||||||
00
|
|
|
#73 | ||
|
Expert Confirmé Sénior
![]() Développeur informatique Inscription : novembre 2006 Messages : 4 445 ![]() |
Citation:
La seule différence c'est que cela entraine éventuellement moins d'instabilité au niveau de l'OS que une boite du genre "Ce programme va être arrêté..","Unhandled Exception.." ou "Core Dumped" Citation:
Seulement si tu ne fais pas une bonne gestion des exceptions en Java ou en .NET cela n'empêchera pas les boites de messages d'exceptions comme j'en parle dans ma remarque précédente donc c'est un crash tout de même..donc c'est un faux problême Que ce soit en VB6 , en Java ou en C++ tu auras toujours des plantages.. |
||
|
|
00
|
|
|
#74 | ||
|
Membre Expert
![]() Inscription : mars 2002 Messages : 962 ![]() |
Citation:
90% des erreurs à l'exécution que tu as en C, tu ne les aurais pas eues en Caml. Et une exception, c'est très différent d'une erreur de segmentation. Une exception arrive parce que dans le code, on lui a demandé de le faire. C'est donc quelque chose de plus ou moins prévu (ça dépend des cas). De plus, une exception, ça se rattrape. Citation:
Pour revenir un peu plus sur le sujet, le C++ apporte plus d'abstraction et plus de sûreté par rapport au C. Le C++ se rapproche un peu plus des langages de haut-niveau, les ajouts de C++ rendent son système de typage plus fort. Le nombre d'erreurs à l'exécution sont donc moins nombreuses. |
||
|
|
00
|
|
|
#75 | ||
![]() ![]() Inscription : juin 2006 Messages : 6 935 ![]() |
Citation:
Je me demandais. Y avait il un autre langage avant qui permettait la gestion de programme multithread aussi simplement (je parle notamment du mot clef synchronized) ? Citation:
Bon, cela dit, il est possible de rattraper le signal SIGSEGV en C
__________________
Je ne répondrai à aucune question technique en privé |
||
|
|
00
|
|
|
#76 |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 9 572 ![]() |
j'arrêterais là le débat car ça ne sert pas à grand chose, mais je n'ai jamais vu planter un système unixoide, alors que W$ ça n'arrête pas. En ce qui concerne les applis, c'est du pareil au même, et pour le Web n'en parlons pas (là je ne te suis pas Millie
Et j'arrêterais là enfin parce que la gestion de la mémoire, c'est pas "sale", c'est comme la gestion de sa poubelle dans laquelle on met ses pages froissées... Si vous ne vous sentez pas capable de bien gérer ça, je m'étonne, c'est tout... Et enfin je m'étonne que les arguments soient que "c'est plus sûr".. Que les pointeurs c'est délicat.. Bref il vous faut quoi ? un truc en platique incassable ?? qu'on peut balancer partout sans réfléchir ? J'ai fait 8 ou 10 grosses applications critiques (vies humaines en jeu) en C, et elles sont opérationnelles, pour certaines depuis plus de 12 ans... Programmer c''est sérieux... Mais pas insurmontable...
__________________
"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
|
|
|
#77 | |
![]() ![]() Inscription : juin 2006 Messages : 6 935 ![]() |
Citation:
Moi même, en C++ du moins, il m'arrive rarement d'avoir des problèmes avec les pointeurs ou des problèmes d'erreur de segmentation. Ok, j'écris en général pas trop trop mal (j'espère ). Mais il peut arriver que l'on retouche de grosse application difficilement testable avec des tests unitaires. Ce serait vraiment con que toute l'application (du genre une application serveur) fasse une erreur de segmentation si il y a une succession de combinaison qui fasse ça. Je dis juste que si une fonctionnalité bug, l'erreur peut facilement être localisé dans cette fonctionnalité et les personnes l'utilisant peuvent toujours utiliser les autres fonctionnalités. Car si le serveur plante, ça peut vite faire perdre beaucoup d'argent (impossibilité de travailler pour les personnes se servant de l'application...)
__________________
Je ne répondrai à aucune question technique en privé |
|
|
|
00
|
|
|
#78 | |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 9 572 ![]() |
Citation:
Et je réitère : ça m'énerve profondément que chez les "jeunes" (désolé, c'est pas du "racisme anti-jeune", c'est juste d'après l'age des posteurs Je ne vois pas en quoi le système de typage ou quoi que ce soit ait à voir avec la qualité ou la sûreté d'un code, à part la qualité et le sérieux du programmeur.... Cette attitude est pour moi tout à fait représentative de la "société de consommation"... Vaut mieux acheter une armoire IKEA toute faite qui se casse au bout de 3 ans ou une bonne vieille armoire faite par un menuisier qui est toujours debout 150 ans et 45 déménagements plus tard ???
__________________
"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
|
|
|
#79 | |
![]() ![]() ![]() Nicolas ValléeIngénieur d'études Inscription : décembre 2005 Messages : 9 963 ![]() |
Citation:
D'habitude, je suis plutôt d'accord avec toi, mais là permets-moi de te contredire... ou du moins de nuancer ce propos Un système de typage fort et "vraiment contraignant" est un moyen de détecter des bugs dès la compilation... pour s'en convaincre, on peut observer que ce mécanisme est utilisé dans des outils de preuve formels genre Coq Mais il faut aussi garder à l'esprit que tous ces gardes-fous ne réussissent pas encore (et y arriveront-ils un jour ? je ne parlerais pas de l'indécidabilité ici...) à prévenir tous les bugs, surtout des idioties comme les divisions par zéro, les dépassements de bornes dans un tableau, etc. Donc je dirais : + oui le compilateur C++ peut découvrir plus de bugs à la compilation + mais il ne faut pas oublier que des mécanismes "sales" (d'un point de vue purement théorie des langages, car d'un point de vue pratique, ça évite les fonctions de conversion à tout va...) comme le cast, des tests sur autre choses que des booléens mal utilisés, et l'absence de tests dans des parties critiques (division par zéro, etc) sont souvent l'origine de bien plus de bugs encore... |
|
|
|
00
|
|
|
#80 | |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 9 572 ![]() |
Citation:
Ya qu'à voir bêtement avec le français.. T'a beau avoir des correcteurs orthographiques, le nombre (y compris ici-même) de fautes d'orthographes ou de grammaire est insupportable... Je ré-itère que une bonne programmation passe par un bon programmeur... Regarde avec les voitures : on met des GPS, des freins ABS, des aides à la conduite, des détections anti-collisions, etc etc... ça empêche les accidents ? non ça empire (voir la catastrophe du car polonais : on fait confiance aux outils en oubliant que le but est de conduire.. Et que ça repose sur l'humain et sa capacité de décision, de pensée, de voir, d'imaginer, de réagir...)... En bref, toutes les aides du monde pour faire un code plus sûr ne produiront pas un code plus sûr... Si c'est utilisé par quelqu'un qui s'y fie et ne fait pas attention à ce qu'il fait....
__________________
"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
|
Copyright © 2000-2013 - www.developpez.com