voila pour quoi NON pour le C maintenant !!
meme chose pour le PASCALtout de commencer dans un environnement C++ mais en ne faisant que du procédural ?je crois que tu aime le C/C++ jusqu'a ... il y a une très grande différence entre un algorithme "copier coller du serveau humain" et un code compréhensible par la machine "différence au niveau de langage de description " le plus proche pour habituer un petit élève c le Pascal non pas le CComme ça dès que le niveau sera atteint plus besoin de changer, on pourra faire du C++ ca permettrait de clôturer la discussion, non ?
Rq: moi aussi j'ai le C "plus que ma mère
Salut
Les langages C et C++ sont des langages utilise beaucoup pour la programmation système mais quelle langage en choisi . C++
par ce que ce dernier contient C ,mais il est oriente objet
Si tu le fais, ça implique que, par transitivité, C++ = Objective-C. Ce n'est absolument pas le cas.
A noter qu'Il existe l'objective-c++ (mélange du code objective-c et C++)qui est cependant assez limité.Cela permet d'avoir des membres définis en C++ dans les classes objective-C et réciproquement et c'est à peu prêt tout ce qui est possible pour l'instant de faire. Cela est sorti en 2002 pour ne pas effrayer les déceloppeur et ainsi Apple ne faisait pas fuir ceux rebutés à l'idée de tout réecrire.
Si le choix entre C et C++ dépend de l'application à développer, il serait intéressant de donner quelques exemples.
En quoi vous développeriez un logiciel de messagerie instantané (MSN), un driver, un navigateur web, un logiciel comme Everest (connaitre les caractéristiques du PC), un jeu, un Tableur...
Sinon pour quelqu'un qui a fait un peu de programmation objet en Java et C# et qui souhaiterai se rapprocher de la programmation système dans un but simplement d'apprentissage? C pour faire autre chose que de l'OO? Est-ce que C et C++ sont de même niveau (on dit souvent que le C est juste au dessus de l'assembleur et le C++?
Est-il conseillé de commencer par le C pour faire du C++?
Merci
Mon choix dépendra plus des cibles que de l'application. (En gros, C++ si je peux, C si je dois).
Quel sens donnes-tu à programmation système ?Sinon pour quelqu'un qui a fait un peu de programmation objet en Java et C# et qui souhaiterai se rapprocher de la programmation système dans un but simplement d'apprentissage?
Un langage n'est pas à un niveau donné, il couvre un intervalle de niveaux. C++ est certainement des langages que je connais celui qui couvre l'intervalle de niveaux le plus large avec Ada. En gros du niveau du C au niveau maximal couvert par les langages non spécialisés. (Seuls ceux qui confondent les langages de haut niveau avec langage dynamique et disposant d'un GC ne vont pas être d'accord).C pour faire autre chose que de l'OO? Est-ce que C et C++ sont de même niveau
Et où est-ce qu'on met des langages comme BLISS ou BCPL? Faut pas avoir fait d'assembleur pour ne pas voir la couche d'abstraction que donne le C.(on dit souvent que le C est juste au dessus de l'assembleur)
Non. Si ton objectif est de faire du C, apprend le C, si c'est de faire du C++, apprend le C++. Si c'est de faire les deux, commence par le C++.Est-il conseillé de commencer par le C pour faire du C++?
(A ce niveau de discussion, C est un sous-ensemble de C++; ce n'est pas vrai dans le détail et du C idiomatique ne compilera généralement pas en C+).
Pourquoi C++ en premier choix?Mon choix dépendra plus des cibles que de l'application. (En gros, C++ si je peux, C si je dois).
Je vais peut-être me tromper mais je pense à la création d'un driver, création d'un OS (j'ai pas dit que je voulais en créer un )...Quel sens donnes-tu à programmation système ?
Donc il n'y a pas de programme qu'on peut faire en C et pas en C++ (en supposant que la cible de l'application supporte le C et le C++)?En gros du niveau du C au niveau maximal couvert par les langages non spécialisés.
La c'est mon ignorance qui a parlé, je ne connais pas ces langages. Ce que je voulais savoir c'est si le C++ est aussi "bas" (ou "haut" faites votre choix) niveau que le C?Et où est-ce qu'on met des langages comme BLISS ou BCPL? Faut pas avoir fait d'assembleur pour ne pas voir la couche d'abstraction que donne le C.
C'est la que je coince, mon objectif est d'en apprendre un des deux comme ils sont assez complexe, je vais surement mettre un bon moment avant de commencer à faire des trucs sympa, je préfère me limiter à un et l'apprendre bien mais lequel?Non. Si ton objectif est de faire du C, apprend le C, si c'est de faire du C++, apprend le C++. Si c'est de faire les deux, commence par le C++.
C : Pour apprendre autre chose que de l'objet et commencer à gratter les composants du PC tout en restant abordable, l'assembleur (on devrait pas dire langage d'assemblage?) c'est vraiment pas pour maintenant.
C++ : A l'air d'être beaucoup plus apprécié et utilisé pour créer des applications et donc peut-être un peu plus intéressant à long terme à connaitre. Mais peut-on la aussi s'approcher des composants comme en C?
Parce qu'il me fournit des abstractions supplementaires d'une part et qu'il me permet de creer mes propres abstractions plus facilement que le C.
Le choix t'est quasiment impose par l'OS. Il y a quelques exceptions, il y a un peu plus de cas ou tu peux t'amuser a ruser pour utiliser un langage non prevu, mais au total je doute que le jeu vaille la chandelle.Je vais peut-être me tromper mais je pense à la création d'un driver,
Le C++ a des facilites d'abstraction utiles dans les OS (emuler un dispatch de fonctions virtuelles dans un OS est chose courante p.e.). Il y a d'autres choses moins utiles, mais on n'est pas oblige de les utiliser. Il y a une chose a laquelle il faut faire attention. Un OS qui reussit a une forte contrainte de compatibilite binaire, il faut la prevoir des le debut et pour l'interface utilisateur, et pour l'interface vers des modules du genre driver. C'est pas ingerable mais ca risque de ralentir fortement, si pas figer, le suivit de l'evolution du langage.création d'un OS (j'ai pas dit que je voulais en créer un )...
Non. Faire un langage qui ne permet pas tout ce qui est possible avec les autres langages est difficile. Ce qui est plus interessant c'est la difficulte pour atteindre ce resultat. Et il n'y a rien de possible en C qui ne soit possible en C++ avec le meme niveau de difficulte. Comme je l'ai deja ecrit, pour cette discussion le C++ est un surensemble du C.Donc il n'y a pas de programme qu'on peut faire en C et pas en C++ (en supposant que la cible de l'application supporte le C et le C++)?
Je vais me repeter (http://www.developpez.net/forums/d97...p/#post5493252)La c'est mon ignorance qui a parlé, je ne connais pas ces langages. Ce que je voulais savoir c'est si le C++ est aussi "bas" (ou "haut" faites votre choix) niveau que le C?
Un probleme est qu'il manque une definition. Et si tout le monde est relativement d'accord pour ce qu'est un langage de base niveau (en gros un langage fournissant une vue peu abstraite du hardware), pour un langage de haut niveau il y a au moins deux definitions en presence:
- langage fournissant une vue tres abstraite du hardware.
- langage permettant de fournir des vues proches du domaine d'utilisation (alias tres abstraite).
C est clairement un langage de bas niveau et pas un langage de haut niveau, quelque soit le type de definition que tu prends.
C++ est, avec ces definitions, un langage de bas niveau, il est un langage de plus haut niveau que le C pour la premiere des deux definitions, mais il y a des langages qui font mieux que lui de ce point de vue, il est un des meilleurs langages que je connais pour la deuxieme -- en partie parce que le fait qu'il est un langage de bas niveau permet d'avoir peu de penalite lorsque l'on cree de nouvelles abstractions. Il y a un cout, c'est un langage complexe et les fonctionnalites de bas niveau pointent parfois le bout de leur nez a des moments ou on preferait pas (parfois de maniere intrinseque, parfois parce qu'elles ont ete moins bien isolees, volontairement ou non, que possible lors de la creation d'une abstraction)
Oui. Mais je ne vois pas pourquoi l'assembleur serait exclus si ton objectif est de mieux comprendre ce niveau (un assembleur me semble indispensable dans un cursus raisonnablement long).C'est la que je coince, mon objectif est d'en apprendre un des deux comme ils sont assez complexe, je vais surement mettre un bon moment avant de commencer à faire des trucs sympa, je préfère me limiter à un et l'apprendre bien mais lequel?
C : Pour apprendre autre chose que de l'objet et commencer à gratter les composants du PC tout en restant abordable, l'assembleur (on devrait pas dire langage d'assemblage?) c'est vraiment pas pour maintenant.
C++ : A l'air d'être beaucoup plus apprécié et utilisé pour créer des applications et donc peut-être un peu plus intéressant à long terme à connaitre. Mais peut-on la aussi s'approcher des composants comme en C?
Je l'exclut pour le moment car plutôt complexe, le C est quand même plus accessible tout en étant plus orienté système que le Java.Oui. Mais je ne vois pas pourquoi l'assembleur serait exclus si ton objectif est de mieux comprendre ce niveau (un assembleur me semble indispensable dans un cursus raisonnablement long).
Je pense que je vais m'orienté vers le C++ qui seras plus propice au développement d'application tout en étant proche du système, mais je vais continuer à réfléchir, je vais comparer les tuto je verrai lequel me donne le plus envie de lire .
En tout cas merci pour toutes ces précisions.
Si tu veux apprendre la vraie programmation (à mon avis) c'est l'assembleur, car là tu vois directement les appels aux registres, les opérations effectuées, la pile, etc...c'est la programmation hardware en gros, basée sur le matériel et le processeur. J'ia commencé par ça juste après le basic, donc je peux dire que ce langage a été le plus formateur qui soit au niveau de la programmation (rigueur, algo etc...), pourtant j'étais parti du GWbasic (utilisé en 1980's) qui est un langage haut niveau mais sans obligation de rigueur comme dans l'assembleur ou le pascal.
Ceci pour dire que c'est très formateur au niveau de la programmation, par contre si tu veux aller au vite dans les applications, il te faut un visual, style Delphi, Lazarius, qui permettent de faire dans tous les domaines, mais si tu veux faire de vrais grands jeux par exemple ou un OS je suis plus pour le C++ à apprendre directement sans passer par le C.
Si j'ai bien compris (j'ai volontairement écarté Delphi et Lazarius):
- Assembleur pour apprentissage + trés bas niveau
- C++ pour trés grosse application graphique
Donc le C n'a pas d'intêret?
J'ai l'impression que tout les tutoriels C++ demandent de connaître le C, notamment ce de developpez.com, faut-il les éviter?
Question2: Oui. Cela fait un moment que l'on dit qu'il faut éviter le chemin C -> C++ -- ou plus exactement un apprentissage du C++ qui suppose des bases en C.
Jusqu'à présent il n'y avait pas ou très peu de bon ouvrage d'apprentissage avec visibilité qui soit en français.
Maintenant nous avons depuis mi-septembre le dernier Stroustrup disponible en VF. Il n'y a pas eu de news à ce sujet, je me trompe ?
Est-il vraiment nécessaire de relancer le débat ? SVP relisez ce qui a déjà été écrit au lieu d'appeler à redire les mêmes choses.
Si, le C a son intérêt certain, à la base il était justement fait pour faciliter la portabilité d'UNIX en minimisant la masse de code assembleur. Il reste donc proche de l'assembleur, tout en étant de haut niveau.
Mis à part dans quelques cas particuliers ou à titre pédagogique, il n'est pas vraiment utile de programmer en assembleur.
En ce qui me concerne, j'ai d'abord appris le C, le C++ est venu après. Il parait que c'est pas la meilleure méthode, qu'on pense pas assez objet quand on a trop fait de procédural. C'est possible, mais je pense pas que j'aurais réussi à apprendre le C++ (tout seul) si j'avais pas un certain bagage derrière.
Et puis bon quand on implémente ses propres conteneurs et objets en C (string, listes, vecteurs, etc...) et qu'on passe au C++, on comprend vite comment marchent les conteneurs de la STL. Tandis que je suis certain que la plupart des programmeurs C++ ne cherchent même pas à savoir.
L'abstraction qui leur est fournit ne leur permet pas de se rendre compte de ce qui se passe réélement en mémoire. Tandis qu'en C t'as pas trop le choix ^^
Donc je pense que connaitre au moins un peu de C est utile, y compris pour les programmeurs C++.
moi je n'étais content ni du C, ni du C++, donc je suis passé au Safe-C
voir ici -> http://www.developpez.net/forums/d10...angage-safe-c/
Si tu sais faire du C alors globalement tu sais faire du C++. Je conseillerais plutôt de faire du C directement même si c'est plus compliqué à appréhender.
La grande différence entre les 2 langages : C est un langage dit procédural et C++ est un langage orienté objet.
Personnellement j'aime bien les 2 langages .
Tu déformes mes propos. J'ai pas dit que la connaissance du C entraîne la connaissance de la POO.
Personnellement, je ne connaissais pas l'objet avant de faire du C++ et c'est comme ça que ça s'apprend généralement donc bon ...
Tu peux très bien faire du C++ et ne rien connaitre de la POO.
Je ne déforme rien. C'est toi qui écrit :
Alors, du C++ sans POO, ce n'est pas "savoir faire du C++", c'est utiliser le C++ plus ou moins comme du C.tu sais faire du C alors globalement tu sais faire du C++.
Oui, mais tu ne prétend pas savoir faire du C++, puisque tu es incapable d'utiliser certaines fonctionnalitésPersonnellement, je ne connaissais pas l'objet avant de faire du C++ et c'est comme ça que ça s'apprend généralement donc bon ...essentiellesprincipales du langage.
C'est un peu comme utiliser du SQL sans savoir faire une jointure.
On peut utiliser le C++ sans connaitre la POO, mais on ne prétend pas connaitre le C++ dans ce cas.Tu peux très bien faire du C++ et ne rien connaitre de la POO.
Si tu préfères on peut "utiliser" le C++ pour faire des programmes qui ressemblerait plutôt à du C.
Mais le C++ reste un bon langage pour apprendre car assez simple à prendre en main.
J'insiste tu déformes mes propos.
J'ai dit tu sais faire globalement. Tu connais la syntaxe C donc c'est facile de se mettre au C++. C'était comme cela que je l'entendais.
Tu pouvais dire à mes professeurs de ne pas faire comme ca ... Ils avaient bien leur raison (langage plus simple ...)Oui, mais tu ne prétend pas savoir faire du C++, puisque tu es incapable d'utiliser certaines fonctionnalités essentielles principales du langage.
Dans ce cas oui puisque tu connais la syntaxe, toujours la déformation des propos.On peut utiliser le C++ sans connaitre la POO, mais on ne prétend pas connaitre le C++ dans ce cas.
Pas la peine de m'attaquer merci
Justement non, c'est un langage d'une extrème complexité qui combine l'approche orientée machine du C plus l'approche OO avec des notions assez complexes à manipuler comme les Templates.
Visiblement, on ne donne pas le même sens au mot "globalement"J'ai dit tu sais faire globalement. Tu connais la syntaxe C donc c'est facile de se mettre au C++. C'était comme cela que je l'entendais.
Peut etre, encore que cela reste largement à démontrer.Tu pouvais dire à mes professeurs de ne pas faire comme ca ... Ils avaient bien leur raison (langage plus simple ...)
Tu attaches visiblement une importance démesurée à la connaissance de la syntaxe. N'importe quel dev avec un tant soit peu d'expérience apprend la syntaxe a priori de n'importe quel langage en quelques jours (si c'est pas le cas, je lui conseille de changer de métier). Mais cela ne lui donne pas la connaissance du langage.Dans ce cas oui puisque tu connais la syntaxe, toujours la déformation des propos.
Cette discussion partant pour tourner en rond, j'arrête là.
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