Ce forum est maintenant fermé, seule cette archive statique reste consultable.
  FORUM Rue-Montgallet.com
  Programmation
  C - C++

  Qu'est-ce qui serait le mieux?

Bas de page
Auteur Sujet :

Qu'est-ce qui serait le mieux?

n°18901
Naze
Profil : Jeune recrue
Posté le 22-08-2007 à 17:34:54  
 

Voici ma situation: Dans un mois ou deux, je vais m'acheter un livre sur comment programmer en c++ (demandez pas pourquoi c'est dans un mois ou deux). Mais, j'ai deja en ma disposition un livre sur comment programmer en pascal. Devrais-je le lire ou attendre d'avoir mon livre sur le c++? Est-ce que ca va etre plus difficile d'apprendre le c++ ou est-ce un avantage (on m'a dit que la connaissance d'un langage facilitait l'apprentissage d'un autre)

mood
Pub
Posté le 22-08-2007 à 17:34:54  
 

n°18911
cmoila
Profil : Membre
Posté le 25-08-2007 à 17:48:00  
 

Je te déconseille d'apprendre le Pascal juste avant le C/C++. Car tu risques de tout confondre au niveau de la syntaxe qui est très différente et meme plutot lourdingue inutilement en Pascal. De plus, je trouve qu'il est préférable de commencer directement en C++ et de ne pas passer par l'étape historique C, car la façon de "penser le programme" est fondamentalement différente dans un langage objet.
 
Tu as plein de cours sur internet pour débuter en C++ :
 
http://cpp.developpez.com/
 

n°18913
peyo22
kill da sms :o
Profil : Dinosaure
Posté le 27-08-2007 à 02:06:34  
 

pour le fait de ne pas faire de C avant le C++, je suis pas tout a fait d'accord... apprends le C en premier, ou du moins touches-y un peu, histoire de comprendre le reel interet de la POO ;)


---------------
"Se tromper est humain ; Vraiment foutre la merde necessite le mot de passe de root."
Installer et configurer son IPCop
n°18923
cmoila
Profil : Membre
Posté le 28-08-2007 à 20:06:39  
 

Le C et le C++ sont des langages différents de générations différentes. Finalement le nom C++ est trompeur car il sous entend que le C++ serait une sorte d'extension au C, ce qui n'est pas le cas. Il serait préférable de l'appeler D, ou mieux E, pour bien marquer le trou conceptuel entre les 2.
Il est vrai que pour des questions de compatibilité ascendante, le C et ses bibliothèques sont compilables dans le C++, mais c'est pour aider la maintenance et la réutilisation de prog déjà écrit en C, pas pour programmer du nouveau code.  
Le premier conseil que donne Stroustrup à un programmeur C qui veut apprendre le C++, c'est de tout oublier. Alors c'est pas pour qu'un débutant commence par apprendre ce qu'il ne doit surtout pas faire !
 
Bien sur, il y a une ressemblance syntaxique entre C et C++, mais aussi avec java. Mais ces notions sont abordés de la meme façon dans un cours de C pour débutant, et dans un cours de C++.
Par contre, plein de choses sont différentes, et pas seulement dans la forme mais aussi dans la façon d'aborder le programme, et cela indépendamment de la notion de programmation objet. Les entrée/sortie, la gestion de la mémoire, des erreurs (exceptions en C++)  et aussi toute la bibliothéque de conteneurs. Par exemple : Comment comparer la gestion des chaines de caractères en C, avec celle en C++ ? Ou alors les tableaux de longueur variable. Ce que l'on apprend à faire en C, n'est pas valable en C++ (c'est seulement compilable) et cela dès les premières lignes d'un débutant.
 
D'ailleurs, imaginons que cette question soit posée pour un autre langage, par exemple le visual basic. Qui va conseiller que pour apprendre le visual basic actuel, il faille d'abord commencer par faire du basic des années 60 ? Ou meme simplement du visual basic de la génération précédente ?

n°19115
creatix
Profil : Jeune recrue
Posté le 05-12-2007 à 12:24:31  
 

C’est bissard car l'on apprend le C avant le C++ nous à supinfo :/ donc c'est pas une bonne idée si j'ai bien comprit? ... en tout cas le C je trouve sa pas trop compliqué (pour l'instant je n'est fait que 8 H de C donc bon :s )

n°19117
kurt11
Profil : Habitué
Posté le 05-12-2007 à 22:55:03  
 

creatix a écrit :

C’est bissard car l'on apprend le C avant le C++ nous à supinfo :/ donc c'est pas une bonne idée si j'ai bien comprit? ... en tout cas le C je trouve sa pas trop compliqué (pour l'instant je n'est fait que 8 H de C donc bon :s )


Personnellement à l'iut c'était C++ et maintenant C.


---------------
[:zzzinv] Membre de la team Mozilla Firefox et Opera
n°19119
cmoila
Profil : Membre
Posté le 05-12-2007 à 23:18:13  
 

Ben je vais me répeter, mais je trouve que l'IUT de kurt à raison.  
le C et le C++ sont 2 langages différents de génération différentes. La compléxité des notions avancée du C++ est réelle. Mais ce que peux faire le C++ avec ces concepts n'était pas possible en C. L'apprentissage du C et surtout de sa bibliothéque standart ne sert pas en C++. Elle nuit, car il y a bien plus efficace dans la STL du C++. Et c'est vraiment différent.
 
Quitte a ne connaitre qu'un seul de ces langages, vaut bien mieux prendre le plus récent et donc le plus abouti, le C++.
Et s'il faut connaitre les 2, alors, il est surement plus simple de commencer par le C++.
Bien évidemment quand je dis ca, ca ne veut pas dire que le 1er truc a apprendre en C++, c'est la programmation des template.  

n°19702
FGaut
Profil : Jeune recrue
Posté le 09-01-2010 à 19:18:43  
 

Perso, je recommenderai chaudement le C.
Plus clair, plus concis, efficace... Il permet d'aborder en profondeur la programmation, et d'y apprendre rigueur et responsabilité avec moins de contraintes conceptuelles. Et surtout, d'appréhender plus complétement le fonctionnement d'un PC, la POO étant une "aide" au programmeur qui n'a rien a voir avec la façon dont un PC traite l'information.
 
Pour info (peu de gens le savent), la majorité des langages modernes (Perl, Python, Java,...) sont implémentés ("programmés" ) en C... ce qui ne signifie pas que ce soit mal! C'est juste un fait.  
 
Le C est utilisé a l'heure actuel par environ 50% des projets GNU, et par des pans entiers d'industries.
S'il est toujours là après plus de 30 ans, il y a une raison!
C'est un langage actuel, adapté a de nombreux usages, qui necessite, c'est vrai, une bonne formation.
Par exemple si les OS sont écrits en C, il y a une raison. (oui, en C++ aussi, rassurez vous!)
 
C'est sans doute bien de connaitre les deux, pour ma part j'ai compris de cette façon (c'est pas un troll, c'est mon avis, et je ne suis pas le seul...) l'arnaque que représente la POO: un beau concept, dénué de fondement pratique.
 
Par contre je ne suis pas d'accord avec cmoila, on peut faire en C tout ce que fais C++, c'est conçu différement mais au final, ce qui peut être conçu en C++, peut être fait en C.
 
 
Voilà,
bon codage a tous!
 
PS: Une référence géniale sur le C: "Programmation avancée en C"  -Sébastien Varette, Nicolas Bernard (HERMES)
      Leur bibliographie est un must.


Message édité par FGaut le 09-01-2010 à 19:22:17
n°19704
cmoila
Profil : Membre
Posté le 12-01-2010 à 13:46:38  
 

Quand on écrit des prog comme ça :
 
# int win(int accessMode)                                      
# {int whoWin=0, i=1, drawGame=0;                              
# static int yourScore=0, computerScore=0;                    
#                                                            
# tab[1]+tab[4]+tab[7]==3*'X'?whoWin=1:tab[1]+tab[4]+tab[7]==3*'O'?whoWin=2:
# tab[2]+tab[5]+tab[8]==3*'X'?whoWin=1:tab[2]+tab[5]+tab[8]==3*'O'?whoWin=2:
# tab[3]+tab[6]+tab[9]==3*'X'?whoWin=1:tab[3]+tab[6]+tab[9]==3*'O'?whoWin=2:
# tab[1]+tab[2]+tab[3]==3*'X'?whoWin=1:tab[1]+tab[2]+tab[3]==3*'O'?whoWin=2:
# tab[4]+tab[5]+tab[6]==3*'X'?whoWin=1:tab[4]+tab[5]+tab[6]==3*'O'?whoWin=2:
# tab[7]+tab[8]+tab[9]==3*'X'?whoWin=1:tab[7]+tab[8]+tab[9]==3*'O'?whoWin=2:
# tab[1]+tab[5]+tab[9]==3*'X'?whoWin=1:tab[1]+tab[5]+tab[9]==3*'O'?whoWin=2:
# tab[3]+tab[5]+tab[7]==3*'X'?whoWin=1:tab[3]+tab[5]+tab[7]==3*'O'?whoWin=2:
# printf("" );
 
 
on évite les phrases comme ça "l'arnaque que représente la POO: un beau concept, dénué de fondement pratique. "
 
 
Le gros problème du C++ c'est que beaucoup de gens ne sont pas capable de faire l'effort d'apprentissage.
Par ailleurs cite moi un seul langage recent et non anecdotique  (crée après 1990) qui ne soit pas objet.


Message édité par cmoila le 12-01-2010 à 13:47:16
n°19705
FGaut
Profil : Jeune recrue
Posté le 12-01-2010 à 15:11:00  
 

Haha! Me serais-je tiré une balle dans le pied?
Bien, cette intervention est bonne pour l'autre post, qui concerne le code du TicTacToe (pauvre code... est-il si méchant?).
Outre le fait que cette construction est utile pour le programme; je ne suis pas sans savoir qu'on peut faire plus court, par exemple avec des opérateurs logiques qui ne interrompraient la lecture quand une condition est fausse... bref.
 
"Le problème du C++ c'est l'apprentissage..."
 
Alors là, c'est tout a fait VRAI!!! Je suis 100% d'accord avec ça, C++ est loin d'être évident, la doc est énorme et il vaut mieux être compétant pour le manier. Je veux dire par là que, par exemple si on prend un autre langage objet comme Java, il y a beaucoup plus de limite conceptuelles, ce qui le rend plus "facile" a manier (en fait on est tellement encadrer qu'on peut du coup pas trop faire de betises...).
C++ est un outil bien plus efficace que Java, et pour faire un parallèle, les concepteurs de Java reprochent a C++ son manque de "sécurité".
 
En réalité, s'il est vrai qu'un programmeur peu expérimenté peut créer potentiellement plus de failles de sécurité en C++ qu'en Java, il n'apprendra jamais à les gérer s'il n'utilise qu'un environnement soi-disant "sécurisé".  
Un programmeur expérimenté préférera toujours un outils qui lui laisse la liberté de conception de son application, donc par exemple C++ plutot que Java. En outre, l'aspect multi-paradigme de C++, bien que n'étant pas sans danger, peut être un vrai +! Bref, si C++ est là encore après 30 ans (1980 je crois? environ...), il y a des raisons...
 
C'est tout a fait vrai que depuis 1990 on ne voit que des langages objets, ou fonctionnels.
A mon avis, il y a deux raisons.  
1/ La POO a bénéficiée d'un marketing de première qualitée, avec C++ et ensuite Java (pour ne citer qu'eux), parceque le paradigme objet répond a des besoins:  
         *On construit des niveaux d'abstractions plus haut, plus facilement.
         *Du coup, on peut coder plus vite.
         *Les PC digèrent mal l'abstraction, ca fait vendre des nouvelles machines plus puissantes.
 
2/ En procédural, c'est considéré comme de la mauvaise programmation d'appeler des fonctions qui pèsent trop lourd, peut-être a cause de l'approche traditionnellement "proche du métal" de ces langages (prog système, ect...). Donc les programmeurs n'auraient pas compris l'intérêt un langage C2 (je viens de l'inventer) qui serai plus haut niveau. J'ignore si c'est totalement vrai, mais on semble considérer que au dessus de l'Assembleur, il y a le C, et apparemment c'est assez compliqué de faire "mieux" en procédural (ADA par exemple est proche, il possède une syntaxe plus lourde pour éviter les bêtises courantes, mais il reste beaucoup moins utilisé. Bon après je connais pas tous les langages non plus.)
 
 
On entend souvent dire que C n'est pas sur. C'est faux. Autant dire qu'une brique n'est pas sur, parceque vous pouvez très bien vous la faire tomber sur le pied, et qu'on ne devrai plus faire les maisons avec. Or une maison assemblée en brique peut très bien s'écrouler sur vous si elle est mal construite, ou vous protéger de l'orage et abriter votre famille (Okay j'arrete avec les images...).
La joie du C (et du C++ aussi tant qu'on y est), c'est la responsabilité. Vous pouvez tout faire, et vous apprendrez beaucoup.
L'avantage que je vois du C sur le C++, c'est la simplicité. Peu de mots. Des fonctions basiques.
L'avantage que je vois du C++ sur le C, c'est qu'on peut y faire de l'objet.
Simplement, a mon avis, faire tout de suite de l'objet masque beaucoup trop le fonctionnement du PC. On y a beaucoup moins la notion de la façon dont l'information est traitée. On a plus de chance de développer de "mauvaises" habitudes (des pratiques pas trop efficaces quoi...).
N'oublions pas que la POO n'existe qu'au niveau de la conception du programme. Le PC reste procédural, il ne traite pas d'objets.
Ca n'empêche pas qu'on peut faire de bons programmes en POO hein! Simplement, il ne faut mélanger les choses, et ne pas opposer procédural et objet.  
(Par exemple, moi, si ces %£~@#{] de concepteurs de Java avaient mieux fait leur coup, j'aimerai utiliser des UI en Java sur des programmes en C. Parceque, franchement, faire les interfaces en C, c'est chiant. Mais voilà, interfacer les langages, c'est encore plus chiant  :sweat:  )
 
Comme je suis taquin, voilà un lien pour faire de l'objet en C:  :D  
http://happyleptic.org/~rixed/pooc.html
 
Et pour être profitable a tous (si vous avez lu jusque là, vous méritez bien un petit quelque chose, non?): Le Guide  C Superflu
http://docs.google.com/viewer?a=v& [...] gLdZP2vJkA
 
Et enfin, un projet en C:
http://trustleap.com/  
 
Comme je ne programme pas en C++, je n'ai pas de ressource a proposer...

n°19711
cmoila
Profil : Membre
Posté le 13-01-2010 à 21:56:18  
 

Citation :

Bien, cette intervention est bonne pour l'autre post, qui concerne le code du TicTacToe (pauvre code... est-il si méchant?).
Outre le fait que cette construction est utile pour le programme; je ne suis pas sans savoir qu'on peut faire plus court,


 
Ce code n'est pas méchant, il est totalement inadapté car illisible. Un code illisible est un code MORT, car il est ni deboguable, ni  (si par un heureux hasard, il marche) modifiable. Dans 1 an, voire 6 mois, TU seras incapable de dire pourquoi cette instruction à cette forme et ce qu'elle fait.
 
Le C est un langage dépassé depuis plus de 20 ans. Il subsiste tout simplement parce que pendant 20 ans il a été, et de très loin, le meilleur langage à tout faire, et que par conséquent sa base installée est énorme. Malheureusement pour lui, tout a changé dans l'informatique entre le début des années 1970 et 2010 !
On a pas seulement changé de siècle, et même de millénaire, on a changé de paradigme.
 
En clair, il ne s'agit pas d'un problème de langage, mais d'un problème de sémantique. Les programmes construits de nos jours n'ont rien avoir avec les bricolages d'il y a 50 ans. A commencer par l'interface utilisateur ! Et à finir par l'abstraction des données manipulées. Avant de simples nombres ou codes caractère, maintenant des concepts complets sont les paramètres de fonctions symboliques.
 
Un simple exemple :  Meme si on n'aime pas Micro$oft , il est abusif de comparer DOS 1, ou meme 6.2 avec Windows 7 ! mais où est la différence ? Ce sont des OS qui manipulent des fichiers de bits, et lancent des progs , c'est tout ?
 
Contrairement a une idée trop simpliste de l'informatique, il n'est pas possible de faire n'importe quel programme avec n'importe quel langage. C'est même le contraire. C'est le langage qui permet l'évolution logiciel. Le fait que Fortran, C, ADA, C++ compilent vers une même cible CPU ne veut pas dire qu'il est humainement possible de faire la même chose avec ces langages, et en X86.
 
Le paradigme objet a été, et est toujours, une révolution en informatique. Ce qui change, ce n'est pas les bibliothèques de routines, mais la façon de "penser" le programme.  
La technologie objet permet d'aborder un problème informatique avec les mêmes techniques d'analyse que l'intuition humaine. C'est toute sa force. Si un jour tu apprends à programmer en objet, tu ne pourras ensuite plus jamais faire autrement. Il te faudra alors avec ton C , "simuler" des comportements que le langage ne connait pas. Ce n'est pas mauvais en soit, c'est simplement suicidaire !
 
La technologie objet à apporté à l'informatique  ce que les ensembles ont apporté aux mathématiques. C'est fondamental. C'est la base même de la pensée rationnelle.
   
Tu aimes la lecture ? Lis ca : http://www.amazon.fr/Conception-pr [...] 2212122705
 
et ensuite tu liras le Stroustrup, et tu commenceras alors à percevoir ce que signifie le mot "génie".

  FORUM Rue-Montgallet.com
  Programmation
  C - C++

  Qu'est-ce qui serait le mieux?

© 2000-2024 Forum.rue-montgallet.com - Tous droits réservés