Par où commencer ? [Tout] - Divers - Programmation
Marsh Posté le 18-09-2006 à 18:09:50
De nombreux topics en parlent déjà...
Pour moi le C, puis le C++ est un language à connaitre, tout du moins à apprendre.
Il est actuellement impératif de se focaliser sur la programmation orienté objet, chose que le C++ permet (à son niveau).
une fois ce langage découvert, de nombreux autres sont disponibles, tout aussi varié que les langues... à choisir quand vous aurez des besoins plus marqué.
Marsh Posté le 18-09-2006 à 18:13:35
algorithmie, puis C. Ensuite au choix : C++,JAVA,C#
Commencer par un langage sans avori fait d'algorithmie c'ets se tirer une balle dans les corones
Marsh Posté le 18-09-2006 à 18:17:49
Merci de vos réponses mais l'algorithmie c'est quoi ce truc ? J'ai deja entendu le mot algorithme mais je sais pas a quoi ça correspond, je regarde sur le dico
Marsh Posté le 18-09-2006 à 18:18:10
Joel F a écrit : algorithmie, puis C. Ensuite au choix : C++,JAVA,C# |
Algorithmie je suis d'accord, y'a des méthodes à apprendre. Mais tu le fais au fur et à mesure de la découverte de ton langage. Après le C, je suis pas forcément d'accord Le débutant n'a pas forcément d'intérêt à découvrir les joies des allocations mémoires et autres subtilités du C...M'enfin c'est que mon avis...
Marsh Posté le 18-09-2006 à 18:19:52
Algorithme : nm, Procédé de calcul constitué d'une suite d'opérations.
J'ai peur
Marsh Posté le 18-09-2006 à 18:29:35
4cv a écrit : Algorithme : nm, Procédé de calcul constitué d'une suite d'opérations. |
Un exemple d'algo : le tri à bulle
http://www-ipst.u-strasbg.fr/ipst/ [...] ibulle.htm
Marsh Posté le 18-09-2006 à 18:34:04
Enfait c'est comme un plan alors ?
Car des plans sur papier j'en faisait avant de me lancer dans l'écriture du programme.
Marsh Posté le 18-09-2006 à 18:43:32
Plus ou moins c'est ça. Ca permet d'éviter de se lancer tête baissée dans quelque chose avant de s'appercevoir que la méthode n'est pas bonne.
Après y'a des algo connus qu'il ne sert à rien de réinventer, mais qu'il est extrêment utile de comprendre, ne serait-ce que pour les appliquer ou en créer de nouveaux pour son propre usage.
Marsh Posté le 18-09-2006 à 19:00:45
En gros, l'algo se fait sur deux niveaux :
Un premier où tu décris ce que fait "en général" le programme, et en n'allant pas plus loin que l'isolation des "objets métiers".
Genre, ton programme permet de représenter graphiquement un polynome
=> Tu vas avoir un objet métier de sasie des informations de la forumule
=> Tu vas avoir un objet métier de calcul des valeurs du polynome
=> Et un autre objet métier d'affichage du repère puis des points (peut être coupé en 2 objets pour plus de clareté d'ailleurs)
A ce niveau, tu vas te contenter de décrire ce qu'ils font, sans entrer dans le détail àl'intérieur : tu te concentre sur leurs inter-actions, afin d'isoler quelles fonctionalités ils doivent proposer.
=> Genre "Calculer" doit avoir une méthode "CalculerPoint"
=> "Afficher" doit avoir une méthode "afficher point"
Et l'interaction entre les deux, c'est :
pour chaque point x des abscices |
Une fois ce niveau de détail débroussaillé, tu sais pas où commencer, et surtout, tu peux commencer à écrire l'objet Calculer alors que ton ami peut écrire de son côté l'objet Afficher.
Ensuite, le second niveau, c'est de décrire l'algorythmie de chaque objet métier. Ainsi, tu vas décrire comment "CalculerPoint(int x)" doit se débrouiller pour te rammener une valeur qui correspond à ta formule.
Une fois que tout ça est fait, tu n'as plus qu'à transcrire dans le langage de ton choix. L'algorythmie est par définition indépendante du langage. C'est vrai jusqu'à un certain point (genre l'algo que je te propose ne sera pas forcément très adaptée au C, qui ne gère pas les objets)
Sinon, je ne suis pas un fervant défenseur du C pour apprendre. Ca me semble bien obscure pour débuter. Par contre, si tu commences par un autre langage, tu risques de ne jamais vouloir t'y mettre par la suite (trop "chiant" à programmer).
Marsh Posté le 18-09-2006 à 20:06:18
Spoiler : [HS]Ah, ca me rappelle moi il y a un an. |
Marsh Posté le 18-09-2006 à 20:22:00
Oz/Mozart, si tu n'as pas peur de l'anglais.
Le bouquin officiel est un gros pavé (je pense qu'il existe en français, mais au double du prix anglais) qui parcourt quasiment tous les paradigmes de la programmation.
C'est vraiment pas mal pour avoir un bon aperçu de ce qu'est la programmation, mais faut pas être pressé.
Marsh Posté le 18-09-2006 à 20:26:04
gizmo a écrit : Oz/Mozart, si tu n'as pas peur de l'anglais. |
Perso j'avais lu Débuter en programmation au tout début et il était très bien.
Marsh Posté le 18-09-2006 à 20:42:51
ReplyMarsh Posté le 18-09-2006 à 20:43:16
ReplyMarsh Posté le 18-09-2006 à 20:45:42
ben moi je suis un vieux de la veille, à l'époque Basic était livré de base sur les ordinateurs (pas des PC) et c'était à peu près le seul langage utilisable sur ce type de machines.
J'avais aussi logo
Marsh Posté le 18-09-2006 à 20:51:19
MagicBuzz a écrit : ben moi je suis un vieux de la veille, à l'époque Basic était livré de base sur les ordinateurs (pas des PC) et c'était à peu près le seul langage utilisable sur ce type de machines. |
En fait dans ce livre on commence par la programmation non graphique pour bien comprendre tous les principes.
Marsh Posté le 18-09-2006 à 22:36:53
gooopil a écrit : Le débutant n'a pas forcément d'intérêt à découvrir les joies des allocations mémoires et autres subtilités du C |
bah faudra bien s'y frotter un jour ou l'autre. Bien expliqué ca passe totu seul
Marsh Posté le 18-09-2006 à 23:37:51
Joel F a écrit : bah faudra bien s'y frotter un jour ou l'autre. Bien expliqué ca passe totu seul |
Euh... je ne vois vraiment pas en quoi ce serait un passage obligé. Mis à part si tu cherches à faire de la gestion de matos ou des traitements qui nécessitent une manipulation au bas niveau, tu peux très bien t'en passer toute ta vie de programmeur sans que cela ne soit handicapant.
Marsh Posté le 19-09-2006 à 00:49:27
Joel F a écrit : bah faudra bien s'y frotter un jour ou l'autre. |
Pas d'accord, il n'y a aucune raison de jamais s'y frotter, sauf à vouloir se lancer dans la programmation de drivers, le hacking de kernel ou l'embedded
Et quand bien même, ça peut parfaitement être appris par la suite
Marsh Posté le 19-09-2006 à 08:36:50
gooopil a écrit : Algorithmie je suis d'accord, y'a des méthodes à apprendre. Mais tu le fais au fur et à mesure de la découverte de ton langage. |
+1.
Il est vrai qu'il est bon de savoir structurer ses programmes, cependant, ça peut s'apprendre sur le fil. (et puis je trouve que c'est plus facile d'appliquer un algo, que de faire de l'algo pour le théorie.. )
gooopil a écrit : .. Après le C, je suis pas forcément d'accord Le débutant n'a pas forcément d'intérêt à découvrir les joies des allocations mémoires et autres subtilités du C...M'enfin c'est que mon avis... |
Hum... et bien justement tous les langages devraient EDIT : demander avoir la "rigueur" du C, avec les déclaration et tout et tout... (Avis persos hein)
Mais le fait que ce soit un langage complet est interessant car avec un langage tu peux toucher à tout ce que tu peux découvrir comme subtilité dans la prog.
Persos j'ais commencé par du basic (lynx 64ko de RAM ), puis QWbasic/Qbasic, puis Turbo pascal (sympa pour apprendre, mais trés limité), C/C++ (trés complet, mais certe pas évident de prime abord), etc..
Marsh Posté le 19-09-2006 à 08:44:19
chani_t a écrit : Hum... et bien justement tous les langages devraient avoir la "rigueur" du C, avec les déclaration et tout et tout... |
La rigueur?
Le C?
C'est une blague?
Le C est à la rigueur ce q'une motte de beurre fondu est au blindage anti-tank
Le C demande de la rigueur pour que tout ne parte pas horriblement en couille, mais le langage n'a aucune rigueur
chani_t a écrit : Mais le fait que ce soit un langage complet est interessant car avec un langage tu peux toucher à tout ce que tu peux découvrir comme subtilité dans la prog. |
Complet mon cul oui, le seul langage "complet" qui existe c'est Mozart/Oz, et uniquement parce que les mecs qui l'ont créé sont des malades, déjà que faire quelque chose qui ressemble à de la POO c'est la croix et la bannière en C, mais même pas en rêve il est possible de faire de la programmation fonctionnelle ou logique, ou de l'Aspect-Oriented Programming, ou du DBC proprement
Marsh Posté le 19-09-2006 à 08:48:23
masklinn a écrit : ... |
C'est bien la ou je voulais en venir o:
(HS... d'ailleurs, je ne vois pas pourquoi on utilise pas le beurre comme blindage / HS)
EDIT : Juste pour préciser avant de me retirer de ce débat, qui n'a pas pour but de justifier mon avis
Pour moi le C/C++, est un bon langage, car justement si tu fais n'importe quoi, tu obtiendras n'importe quoi, donc pour apprendre à programmer correctement, c'est bien (à mon sens). De plus tu parle de POO, C++ le gére peut être pas de façon parfaite, mais aborde le sujet plutôt bien....
Encore une fois, on ne parle ici que d'un langage pour commencer, apprendre. Aprés chacun pourra voir dans chaque langage des avantages/inconvénients... (comme si un langage étais parfait ).
Marsh Posté le 19-09-2006 à 08:51:49
J'vois pas en quoi le fait que tout parte en couille si on est pas assez rigoureux est une bonne chose, à ce moment là autant faire du VB ou du PHP, c'est pareil
Marsh Posté le 19-09-2006 à 09:09:59
chani_t a écrit : |
Un langage qui te force à te concentrer sur la taille mémoire d'un vecteur quand tu veux apprendre un algorithme de tri est un mauvais langage, pédagogiquement parlant. Il rajoute du bruit inutil autour du véritable problème algorithmique.
Marsh Posté le 19-09-2006 à 14:20:22
gizmo a écrit : Euh... je ne vois vraiment pas en quoi ce serait un passage obligé. Mis à part si tu cherches à faire de la gestion de matos ou des traitements qui nécessitent une manipulation au bas niveau, tu peux très bien t'en passer toute ta vie de programmeur sans que cela ne soit handicapant. |
++ pour pouvoir s'en passer toute sa vie
pour l'éventuel handicap, je peux pas dire. jamais eu fondamentalement besoin en tout cas
Marsh Posté le 19-09-2006 à 14:27:16
Moi je dis vive l'Ada
C'est vrai d'abors.
Au moins, en Ada :
- Tu mélanges un long avec un int : proutch, sa compile pas car il faut lui expliquer comment faire. Ca évite de faire comme en C, de multiplier un char par un *int.
- Tu fais un traîtement succeptible de planter sans gérer l'exception, ça plante. Ca t'évite de faire un programme qui marche bien pendant 20 ans et crash en flamme sans raison apparente.
- Il fait le tour de la plus part des fonctionnalités de la majorité des langages, et va très souvent plus loin dans chacun de ces points que la majorité des langages (tu fais de l'ADA, tu sais réellement ce que c'est un prototype ou une surcharge d'oppérateur)
- Le langage est tellement verbeux et strict d'un point de vue syntaxe que pour apprendre à coder proprement, aucun ne lui arrive à la cheville (moi les déclarations de fonction dans la déclaration d'un for en C, ça me laissera toujours rêveur)
Marsh Posté le 19-09-2006 à 15:17:44
Ouais enfin à part le fait de planter si tu ne gères pas une exception tu peux avoir tout ça en Haskell et en largement moins verbeux
Marsh Posté le 19-09-2006 à 15:24:39
Le verbeux moi je trouve ça bien.
Ca pousse à la réutilisabilité du code (marre de devoir réécrire 200 lignes pour faire une addition à chaque fois... du coup on se force à faire du modulable )
Marsh Posté le 19-09-2006 à 16:29:39
MagicBuzz a écrit : Ca pousse à la réutilisabilité du code (marre de devoir réécrire 200 lignes pour faire une addition à chaque fois... du coup on se force à faire du modulable ) |
Non, ça pousse juste à avoir mal aux doigts et à devoir passer plus de temps à penser aux trucs qu'on est obligé de taper qu'aux trucs qu'on veut solutionner
Marsh Posté le 19-09-2006 à 16:48:39
au contraire, ça oblige à réfléchir à la solution plutôt qu'à trouver une solution : t'as pas envie de réécrire 4 fois le même code, donc tu te lance dans le code qu'une fois que ton algo est infaillible.
Marsh Posté le 19-09-2006 à 17:33:01
Houla, beaucoup de réponses
Je pense que nous allons nous mettre au langage C mais nous aimerions savoir si vous avez un livre à nous recommander et un compilateur ?
Car il y a le choix et nous ne savons pas quoi prendre.
Merci.
Marsh Posté le 19-09-2006 à 17:43:19
environnement de développement: code::blocks (http://www.codeblocks.org/)
livre: "Le langage C Ansi", Kernighan & richie
Marsh Posté le 19-09-2006 à 18:20:23
Peut importe l'édition ou alors juste cette édition ?
Car j'ai cherché sur internet, je l'ai trouvé en plusieurs éditions differentes mais sous cette édition le livre était en rupture de stock.
Marsh Posté le 20-09-2006 à 12:35:41
4cv a écrit : |
Pour ma part, je te conseille de commencer par:
ca: http://www.pise.info/algo/introduction.htm => Exélant lien pour débuté en algo...
ensuite: http://www.siteduzero.com/tuto-3-8 [...] -en-c.html
et: http://www.ltam.lu/cours-c/
ensuite: http://www.linux-kheops.com/doc/ansi-c/ et le livre de K&R.
ensuite: Le C++ (et la POO), et-puis d'autre langage...
Marsh Posté le 20-09-2006 à 12:41:46
big_dadi_fat a écrit : ensuite: Le C++ (et la POO), et-puis d'autre langage... |
Lol
Citation : "I invented the term Object-Oriented, and I can tell you I did not have C++ in mind." -- Alan Kay |
Marsh Posté le 20-09-2006 à 12:59:35
ReplyMarsh Posté le 20-09-2006 à 13:16:23
4cv a écrit : Peut importe l'édition ou alors juste cette édition ? |
peu importe l'édition; à priori la dernière est la bonne
Marsh Posté le 21-09-2006 à 09:21:46
souk a écrit : http://pragmaticprogrammer.com/ima [...] medium.jpg |
très mauvais bouquin
Je m'auto cite :
http://www.manga-torii.com/files/sgbd.pdf
"Je rappelle toutefois que lanalyse et la conception du modèle des données sont deux choses qui se font avec un crayon et un cahier, assis à lombre dun arbre (qui na pas de fruits si possible afin déviter les migraines)."
Il ne respecte même pas les recommandations les plus simples
Marsh Posté le 18-09-2006 à 18:04:15
Bonjour, je me présente.
Je m'apelle David, actuellement en première scientifique et agé de 15 ans.
J'ai toujours eu l'envie de programmer des trucs depuis que j'ai touché a un ordi mais je n'ai pas vraiment pu
par manque de motivation, j'ai un peu touché a tout mais pas en profondeur et j'ai tout oublié.
L'année derniere un pote (nommé Colas agé lui de 16 ans et qui était dans ma classe l'année dernière et cette année aussi) a amené au lycée la calculette graphique (Casio graph 35) de sa soeur car il avait malencontreusement (orthographe ?) cassé la sienne.
J'y ai un peu touché et je me suis dis en le regardant : "On peux programmer la dessus non ?".
Depuis on s'est mis a toucher a divers fonctions sans tutoriels ni aide mais avec une seule calculatrice.
Cette année j'ai acheté la mienne (Casio graph 100+) et je touche un peu aussi au langage de programmation qu'elle contient, teste divers fonctions, et chaque jour avec mon ami nous nous concertons afin de nous raconter nos découvertes, etc.
Nous ne maîtrisons pas encore le langage qu'offrent les calculatrices que nous possedons mais nous avons pu rapidement constater les limites de ce langages nottement le manque flagrant de variables et un mode graphique très fastidieux (pixel par pixel quasiment).
Nous nous sommes donc dis que d'apprendre ce langage à fond serait une perte de temps car il y a bien d'autres langages qui pourraient faire des merveilles avec le même temps d'apprentissage.
Nous nous sommes donc motivés, nous voulons vraiment nous mettre à apprendre un langage surtout que mon optique professionnelle serait dans la programmation et lui voudrais être ingénieur informatitien.
Peut-être que nous sommes un peu en retard, mais nous voulons rattraper ce retard en apprenant un langage et nous entrainer à la programmation, nous sommes prêts à suivre divers tutoriels et à acheter des bouquins.
Mais ce que nous nous demandons c'est par quel langage commencer étant donné que nous n'avons quasiment aucunes bases.
C'est pour cela que je vous demande à tous un conseil.
Merci de me (nous) répondre.