[PROGRAMMATION] Quelques conseils pour un débutant (moi)

Répondre
Partager Rechercher
Bonjour !

Voilà, je souhaiterai apprendre le langage C++ seulement je ne sais pas sous quel programme... programmer.
Je commence à apprendre le langage pascal seulement j'aimerai passer à un peu de pratique
Quelqu'un saurait-il m'aiguiller ?

D'avance merci
sous quel systeme d'exploitation es tu ?

bon on va supposer que t'es sous windaube

moi j'aime bien les editeurs et compilateurs séparés :

pour editer ton code, un editeur de text... je te conseil XEmacs... mais est un peu difficile à maitrise, donc conTEXT serait à mon avis mieu pour débuter !

pour compiler ton code C++, je te conseillerai de telecharge Cygwin et de l'installer avec le compilateur GCC
ensuite pour compiler, dans cygwin tu fait gcc monfichier.cpp -o monfichier.exe

voilà...

autrement si t'es un grand flemard, y a Microsoft Visual Studio ( MS Visual C++ ) qui est pas si mal ( mais si tu veut tout comprendre.... laisse tomber tout de suite ) pour débuter, mais tu devra depenser des brouzoufs pour avoir une licence legale
Un compilateur (le compiler seulement) qui doit être gratuit http://www.borland.com/cbuilder/cppcomp/index.html

Pour l'édition, bah tu prends ton moteur de recherche préféré et tu cherches un éditeur qui met des jolies couleurs pour les mots clés.

Tu peux aussi tenter d'adapter Eclipse (eclipse.org) via des plugins pour le passer de Java à C++.
C'est pas un peu dur pour un débutant de passer du Pascal au C++, de la programmation procédurale à la programmation objet?

Personnellement je te conseillerais de passer au C et donc de faire encore du procédural pendant quelques temps. De plus le C et le C++ se ressemblent énormément (du moins syntaxiquement) il sera donc plus facile de passer de l'un à l'autre.

Une fois que tu maitrises le C et la programmation procédurale tu peux passer à la programmation orientée objet. Mais la je te conseille Java pour débuter : pas de gestion des objets de la part du programmeur (le garbage collector s'occupe de leur destruction), pas de gestion de la mémoire (tout ça est fait par l'API Java), en plus je trouve que globalement Java est plus facile à apprendre que C++.

Une fois que tu t'es bien dégourdi avec Java la tu peux passer à C++ à l'aise.

Enfin cet avis n'engage que moi et est basé sur ma propre expérience.
euh ...

passer de pascal à C++ c'est un rien chaud quand même :/

Passage par C obligatoire à mon humble avis ...
(Ou alors Java, mais même problème pour les concepts objets qui ne sont évidents que quand tu les connais )


[edit : grilled !]


--------------
Nepher
Personnellement, je te conseille de commencer par le C, qui te permettra d'acquérir de bonnes (ou très mauvaises) habitudes de programmation, et qui surtout te permettra de comprendre comment marche la machine (bien utile pour le debugging)
Citation :
Provient du message de Bio
Une fois que tu maitrises le C et la programmation procédurale tu peux passer à la programmation orientée objet. Mais la je te conseille Java pour débuter : pas de gestion des objets de la part du programmeur (le garbage collector s'occupe de leur destruction), pas de gestion de la mémoire (tout ça est fait par l'API Java), en plus je trouve que globalement Java est plus facile à apprendre que C++.

Une fois que tu t'es bien dégourdi avec Java la tu peux passer à C++ à l'aise.

Enfin cet avis n'engage que moi et est basé sur ma propre expérience.
Il a dit programmation, pas faire de la bidouille à trois balles pour afficher l'heure système...

Passe par le C d'abord, parce que bon, le Pascal, c'est un peu (trop) démodé, et inutilisé...
J'espère que tu as de bonne base en systémique et que tu sais faire un makefile, parce que sinon, si tu sais pas, ça risque d'être emmerdant pour compiler si tu utilise pas des logiciels tout en un (VS C++ par exemple)...

En bref, pas trop de conseil: ah si, achète pas trop de bouquin, la plupart sont écrits par des gars qui ont jamais programmé sérieusement quelque chose de solide (en gros, t'aura la syntaxe, mais pas comment ça fonctionne... )
Et euh, faut beaucoup de pratique aussi (mais ça tu t'en doutes déjà )...
moi chui passé du HTML au C++.. ça a ete un peu dur, mais franchement jmen suis remis

il y a peu d'interet de passer du pascal au C, à par si c'est pour faire de la programmation intensive ( systeme, controle memoire, drivers.... ) car autrement, c'est la meme chose !

autrement je te conseille vivement le Java ( java.sun.com ), qui est bien plus simple que le C++... car il faut pas gerer la destruction des objets entre autre
Effectivement, le C se rapprochera plus dans son approche a du pascal.

Tu ferais mieu de commencer par cela histoire de comprendre les problemes de pointeurs qui sont le gros morceau du C.

Quand tu maitriseras parfaitement les pointeurs (ya du taf mec) et donc tout le reste du C tu pourras te lancer avec plaisir dans l'orienté objet !

Et la ! Bonheur ! et crampes a l'estomac !
Deja tu dis "le Pascal" mais peut etre parlais tu de l'Object-Pascal ?
Dans ce cas, tu connais deja la POO, et la la limite, tu peux passer au C++ direct.

Sinon, pour le C, si les compilos qu'on ta conseille au dessus ne te conviennent pas, tu peux essayer Mingw (le seul qui marche nickel chez moi).
Ou mode feignant, je te conseilles plus C++ Builder que VC++, mais c'est une question de gout, ca depend ce que tu veux faire..

D'un autre coté, tu pourrais peut etre passer au Delphi si tu connais le Pascal ! Sachant que le Delphi, c'est le meilleur language du monde !!

Petite remarque au passage :
Y'a une tres bonne gestion des pointeurs en Pascal hein, y'a pas besoin de faire du C pour apprendre a s'en servir...
Citation :
Provient du message de Kathandro
Il a dit programmation, pas faire de la bidouille à trois balles pour afficher l'heure système...
C'est pas bien de confondre Java et Javascript
Citation :
Provient du message de Mindark

D'un autre coté, tu pourrais peut etre passer au Delphi si tu connais le Pascal ! Sachant que le Delphi, c'est le meilleur language du monde !!
Dephi ...
berk berk berk berk


Le mec il demandait juste un truc pour apprendre à coder et on ressort la bonne vieille guerre des langages
[rien à voir avec le quote, ça concerne l'ensemble des réponses ]


Moi je dis Scheme ou Lisp y a que ça de vrai !!
Plus besoin de t'emm***er à faire de l'objet ... tu fais des fonctions mathématiques !
Bon ok tu peux rien faire avec .... mais c'est vachement plus beau.



--------------
Nepher
Pour le C++, je te conseille Dev C++ téléchargeable ici
C'est gratuit, et pas mal, sauf qu'il n'y a pas d'aide...

Sinon, Borland met aussi un compilateur "de base" à ta disposition sur leur site...


Si tu utilise Linux, tu as déjà le GCC à ta disposition
Citation :
Provient du message de Eowin
autrement je te conseille vivement le Java ( java.sun.com ), qui est bien plus simple que le C++... car il faut pas gerer la destruction des objets entre autre
Juste une remarque, ceci est faux ! Il faut absolument gérer la destruction des objets en Java. La façon de le faire est différente. Ok il n'y a plus aucun destructeur et c'est malheureusement pour cette raison que beaucoup s'imaginent pouvoir se passer de gérer la durée de vie de leurs objets...
Citation :
Provient du message de Erewyr
Juste une remarque, ceci est faux ! Il faut absolument gérer la destruction des objets en Java. La façon de le faire est différente. Ok il n'y a plus aucun destructeur et c'est malheureusement pour cette raison que beaucoup s'imaginent pouvoir se passer de gérer la durée de vie de leurs objets...
je suis desole, mais à partir du moment ou y a pas de destructeur et t'as pas à faire delete ou free sur ton objet et ce, sans qu'il y ai fuite de memoire, on peut considerer que la destruction des objets n'est pas à ta charge.... mais c sur que lorsque tu programme, il faut savoir si tas toujours un objet sur ta reference ou pas ... =)

autrement, je te conseil le langage Brainfuck :
http://www.muppetlabs.com/~breadbox/bf/ ( bon courage =) )
Je ne pense pas qu'une personne qui n'est pas parfaitement initié à ce que peut être un objet puisse passer aisément au java, de plus ça créerais des lacunes de connaissances en ce qui concerne les pointer (NullPointerException ), le GC, le principe d'une liste chainée codé à la main, les design pattern de base, en bref tout ça est en général expliquer dans les bouquin de C++ Tout ça est prémaché en java, mais implique tout de même qu'on sache le faire.

Tout est question d'étape, le C++ est un des languages le plus compliqué, inutile pour une personne qui code exclusivement en pasçal de s'y jeter pour le moment.

Pour répondre de mon coté à la question :

Les meilleurs référence et outil d'apprentissage sont généralement, et malheureusement en anglais, oubli les livres qui te promette d'apprendre un language en 10 jours, en général ça implique que tu ai de solides bases. Je pourrais te recommander "Le language C" de Kernighan, c'est bonne base en mon sens, un peu légère diront certain, mais il a l'avantage d'etre en français ; développement sous UNIX seulement.

Si tu tiens a t'attaquer au C++ directement, tu peux essayer "C++ The Core Language" aux édition O'Reilly, et pour un apprentissage complet quand tu seras à l'aise avec tout ca, tu as l'excellent "Pour mieux développer avec C++" de Aurelien Geron (en français en plus) qui t'initie au design pattern, STL, smart pointers etc..
Citation :
Provient du message de Eowin
je suis desole, mais à partir du moment ou y a pas de destructeur et t'as pas à faire delete ou free sur ton objet et ce, sans qu'il y ai fuite de memoire, on peut considerer que la destruction des objets n'est pas à ta charge.... mais c sur que lorsque tu programme, il faut savoir si tas toujours un objet sur ta reference ou pas ... =)
En C++, une méthode violente consiste à libérer la mémoire soi-même par un free. En Java tu n'as pas cette option, cependant çà ne veut pas dire que la machine virtuelle fait tout pour toi.
Si tu programmes sans tant soucier, tu introduis des fuites de mémoire comme tu dis. ("memory leaks"). Le garbage collector de la JVM a un comportement qui lui est propre et il convient d'en tenir compte pour une programmation propre.

Sur des petits programmes que çà soit en C++ ou en Java, tu peux ignorer cette gestion de la mémoire. Dès que tu commences à faire des choses plus sérieuses, cette gestion doit ou devrait devenir un souci majeur.
Citation :
Provient du message de Erewyr
Le garbage collector de la JVM a un comportement qui lui est propre et il convient d'en tenir compte pour une programmation propre.

Tiens c'est marrant c'est exactement ce que moi j'appelle du bricolage et pas de la programmation propre
Non car si on te change le garbage collector tu jettes ton programme ?

M'enfin je ne dois pas bien voir ce que tu dis devoir prendre en compte c'est sûrement pour ça.


Pour revenir dans le sujet, le passage procédurale -> objet est pas facile mais le langage le plus facile pour ça c'est java je pense.
Pas forcément le mieux à long terme car tu vas manquer des notions mais bon ...



------------
Nepher
Citation :
Provient du message de Erewyr
En C++, une méthode violente consiste à libérer la mémoire soi-même par un free.
Oulà non, sûrement pas...
Le free va toujours avec le malloc et ils sont spécifique au C (ce ne sont pas d'ailleurs des mots clefs du langage, ce sont des fonctions)...
Pour le C++ il vaut mieux utiliser le new et delete, c'est beaucoup plus efficace et ils sont propres au langage C++...

On a pas demandé une guerre Java-C++ autrement, non, mais bon, il veut faire du C++...

L'intérêt en premier lieu serait de voir le C en premier, puis d'apprendre le principe de la programmation objet (ça permet d'utiliser pas mal de choses efficacement (héritage, polymorphisme, encapsulation...)), pour ensuite passer au C++. Si la syntaxe est très proche, la façon de programmer est totalement différente, et il y a beaucoup de chose que le C++ restreint (notamment pour des problèmes de sécurité des données)...

Maintenant, je pense que Haze/Orcanie t'as donné des bons livres à étudier.
Citation :
Provient du message de Nepher
Pour revenir dans le sujet, le passage procédurale -> objet est pas facile mais le langage le plus facile pour ça c'est java je pense.
Pas forcément le mieux à long terme car tu vas manquer des notions mais bon ...
Selon moi aucun langage ne permet l'apprentissage et la compréhension de la méthodologie objet.

Savoir coder en Java, en C++, en Smalltalk et j'en passe c'est bien beau mais ce n'est pas ça qui nous fait comprendre ce que sont l'encapsulation, l'héritage, le polymorphisme.

Savoir qu'écrire un bout de truc genre

Code:
public class MyClass
{
  private String _maString = "hello world";

  public MyClass()
  {
  }

  public String getMaString()
  {
     return _maString;
  }

  public static void main(String[] args)
  {
     MyClass maClasse = new MyClass();
     System.out.println(maClasse.getMaString());
  }
}
Ca revient à instancier un objet de type MaClasse c'est pas si pertinent que ça pour quelqu'un qui n'a jamis vu la prog objet.


Citation :
Provient du message de Erewyr
En C++, une méthode violente consiste à libérer la mémoire soi-même par un free. En Java tu n'as pas cette option, cependant çà ne veut pas dire que la machine virtuelle fait tout pour toi.
Si tu programmes sans tant soucier, tu introduis des fuites de mémoire comme tu dis. ("memory leaks"). Le garbage collector de la JVM a un comportement qui lui est propre et il convient d'en tenir compte pour une programmation propre.
La va vraiment falloir que tu m'expliques ce que tu veux dire par des exemples voir même un bout de code parce que se soustraire au fonctionnement du Garbage Collector CA c'est du bricolage comme le dit Nepher.

Et pour une programmation propre t'as toujours des jolis outils genre OptimizeIt
Avant de te mettre à apprendre 1 langage, passe déjà par le principal, savoir faire un Algorithme.
Cela peut paraître con, mais savoir 'structurer' sa pensée sur 1 bout de papier est très important. (C'est une chose que l'on apprend quand on fait de l'info à la Fac).

Exemple, tu demande 2 chiffres, puis après tu fais la somme, la multiplication, puis la division de ces 2 nouveau nombres.

Ensuite quand tu as 1 algo bien, nickel. Tu peux t'amuser à le faire dans le langage que tu veux tant que celui ci reste simple (Perl, Pascal, C si tu te sens pres, ou PhP si tu veux commencer par le plus simple; perso le pascal ou C semble correct).

Pour le C par exemple, tu le fait d'abord en simple (avec des variables) puis après avec les pointeurs.

Amuse toi a faire plein d'algo, et a les transcrire pour bien apprendre et savoir retranscrire....

Ensuite , si tu as 1 pote à la fac, essaye de te faire apprendre le principe de la programmation object, quel est la différence entre le C et le C++... sinon achète un bouquin, car le plus important est de savoir le pourquoi avant de savoir le comment.

Une fois que tu as compris le principe, passe à la pratique, bouquine un livre sur le C++; puis algo ---> C++.

Mais sache une chose, tout ne viens pas par magie, tu feras beaucoup d'erreur et il faut apprendre le pourquoi, car c'est facile d'aligner des lignes de C ou C++, mais quand on fait des erreurs, ils faut en connaître la cause pour se perfectionner.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés