Apprendre à programmer

Quoi qu’il en soit, je trouve l’idée du C pour le débutant est une tres bonne ecole. On doit se soucier de tout, avec un language qui n’impose que peu de restrictions. Mais il est intéressant de commencer en language objet, et la, Java et C# sont plus que recommandés. Mais le probleme de Java est sa machine virtuelle, c’est pas forcement facile a digérer comme concept. ( d’ailleurs, un truc pour les débutants en java, BlueJ. GIYF)

C# je le trouve assez approprié. GloP l’a dit, visual studio express est tres agreable a utiliser (mais je continue d’adorer ma license msdn student pour VS .NET Pro :P, meme si j’utilise pas la moitié des fonctions. A quand un cours, GloP? ^^)

Moi perso, je te conseille de démarrer en C. C’est académique, j’ai pas trouvé ca tres compliqué, surtout avec le bouquin que je t’ai proposé. Mais si tu veux te lancer directement dans l’objet, C# ou Java.

[quote=“ZGoblin, post:40, topic: 29057”]Savoir gérer la mémoire c’est cool pour les quelques personnes qui travaillent dans des applications bas niveau, mais faut être réalistes, aujourd’hui, 80% des développeurs font du haut-niveau. Si il existe déjà des bibliothèques pour gérer les collections, faire des fenêtres, accéder au réseau, … c’est pas pour les chiens. Et si des mecs on inventait le garbage collector, c’est aussi parce que gérer la mémoire par soi-même engendre beaucoup plus de problèmes que ca n’en résoud !
Bref, le C c’est vachement bien pour travailler sur le noyeau linux, pour le reste : Java/VB/C#/Python sont beaucoup plus appropriés.[/quote]

Mais la question c’est savoir programmer je crois, et dans la programmation je trouve ca important d’etre confronté à la gestion de memoire, ca t’apprend pas a programmer si c’est ton interperteur qui fait tout tout seul. Le garbage colector c’est super mais c’est bien de savoir pourquoi il est là et quand il passe. Et je crois que c’est en C que tu peux vraimanent comprendre ces mecanismes.

PS: je trouve ca plus simple de faire du reseau en C qu’en JAVA …

:stuck_out_tongue: Y’a rien de plus simple de faire du réseau en java, tandis que gérer des flux et des threads en C… :stuck_out_tongue:

Je suis vraiment pas d’accord, ca prend moins de lignes de faire du reseau et des threads en C qu’en JAVA…
Avec vos exceptions alacon…
</troll (un peu)>

Bon bin les pros du C, qui trouve ca uber bien, ils pourraient pas de donner un petit coup de pouce.

[quote=« avavrin, post:44, topic: 29057 »]Je suis vraiment pas d’accord, ca prend moins de lignes de faire du reseau et des threads en C qu’en JAVA…
Avec vos exceptions alacon…
</troll (un peu)>[/quote]

J’allucine de voir un troll pareil, tu es contre le garbage collector, tu es contre les exceptions, contre les classes objets aussi je suppose ; moi à ta place je programmerai en assembleur, parce que bon le C c’est encore trop facile y’a des variables, ca ne permet pas de comprendre le concept de programmation avec la pile et le tas, à vrai dire, rien ne vaut un bon mov %eax, %ebx. :stuck_out_tongue: Sisi, pour comprendre la programmation, revenons 20 ans en arrière et ne prenons pas en compte toutes les avancées que l’ont à pu faire.

Il fallait bien que ça derive, comme à chaque fois… Mêmes les zoneurs expérimentés se font avoir…

Désolé de faire dériver, mais avec un thread pareille, c’est obligé, on devrait les bloquer dès le départ, parce que c’est un sujet abordé des dixaines de fois.

Bah c’est l’éternel débat sans fin. D’un côté il faut vivre avec son temps et utiliser les outils évolués que des décennies de progrès ont engendré (C#, Java, etc.), mais d’un autre on ne peut réaliser pleinement les avantages qu’ils offrent que si on a été confronté aux contraintes des prédecesseurs (enfin ça c’est mon opinion). L’idéal serait de toucher un peu à tout, pour avoir une bonne vue d’ensemble, et d’ensuite se fixer sur le language qui correspond le mieux à ses souhaits pour l’étudier plus en détails.

Alors moi je n’ai pas vraiment de langage à recommander. Prends ce qui passe, joue un peu avec, et essaie autre chose si ça ne te plaît pas. Mais quitte à choisir, je trouve que le Pascal c’est pas mal, c’est simple et élégant. Par contre c’est plutôt mort comme langage à l’heure actuelle, c’est clair.

Moi je laisse le choix a tout le monde, si qqun veut s’amuser a faire du sugar cubes, ca le concerne. C’est juste que n’importe quel programmeur sur terre (bon, 95%) comprendront un code écrit en C. Par contre, si qqun m’ecrit du python ou du ruby, il y a de fortes chance que je n’y comprenne rien. Et y’a enormement de langages qui se sont inspirés du C pour leur syntaxe.
De plus, le C a un bon compromis entre les choses qu’il ne gère pas tout seul, et celles qu’il gère.
A partir de la, c’est un bon langage pour commencer.
Apres, on peut effectivement commencer avec autre chose, mais c’est moins classique.

Et effectivement, ca trolle teeeelllement facilement sur un thread de geeks :stuck_out_tongue: :stuck_out_tongue:

Entre les sujets vieux de plusieurs années (et je suppose que les langages de programmation c’est comme le reste de l’informatique, ca bouge vite non ?) et ceux qui justement se sont transformés en thread de 3-4 pages ou tout les messages ne sont que des répartis entre connaisseurs, le problème c’est qu’on en sait pas plus au début qu’a la fin :stuck_out_tongue:
Pour l’instant celui-là était resté assez soft, mais bon…
En tout cas merci à ceux qui ont conseillé, je retiens C, Pascal et VB. :stuck_out_tongue:
Maintenant, je vais aller à la recherche des livres et des tutos kivontbien (©)

Paradoxalement, je n’ai pas l’impression que les langages bougent tant que ça. Le C a 35 ans, le C++ environ 20, Java a dix ans ; C# en a 5 et ressemblerait beaucoup à Java ; ça ne me donne pas l’impression d’aller aussi vite que les performances des processeurs ou des cartes 3D.

En tous cas, le C ça peut être bien pour débuter tant qu’on ne s’amuse pas avec les pointeurs et la gestion de la mémoire. On peut évidemment le faire pour voir comment ça marche, mais au final, ça ne sert plus à grand monde et c’est pas un mal que les langages modernes le fassent à la place du programmeur.

Bah, comme pour tout, l’évolution des langages a tendance à devenir de moins en moins brutale avec le temps. Au début de l’informatique, les langages ont progressé très vite, là on est arrivé au point où on a trouvé des approches qui fonctionnent bien, et on continue à bâtir sur des acquis plutôt qu’à révolutionner le bousin. C’est pour ça que C# s’inspire de java qui s’inspire du c++ qui s’inspire du c, etc. Chaque génération de langage dure plus longtemps que la précédente, ça me semble normal. Dans ce contexte, les cartes 3D sont relativement récentes, ce qui explique les évolutions relativement violentes.

Ouaip, mais en C t’es forcément confronté aux pointeurs dès ton premier printf ou scanf. C’est pas un mal à apprendre, le principe de l’adressage mémoire c’est quand même assez fondamental, mais ça peut rebuter. Et c’est aussi clair que l’idée de base c’est d’apprendre comment ça marche pour se rendre compte à quel point les langages évolués sont plus agréables, on a connu plus motivant.

Je sais plus qui a dis

Et je suis pas d’accord. (Et moi je conseillerais le combo java-eclipse pour commencer (ou C#+VS, ça change rien))

Je vois pas l’interet, pour apprendre a programmer, de ce tapper des heures à trafiquer dans tes PATH, tes versions de compilos, etc… Comme la dis un sage sur la page avant « programmer c’est un état d’esprit ».

Pour moi, moins tu perds de temps à chercher tes fautes d’orthographe, plus tu passe de temps à vraiment apprendre. Donc un ide qui te souligne ta ligne en rouge avec un jolie message si t’as mis monTab.lengh au lieu de monTab.length, c’est quand même uber plus pratique qu’un vieux truc en ligne de commande qui t’indique un numero de ligne après 20 seconde de compilation. (sans parler de l’avantage de l’InteliSense qui te fournis les descrpitions des fonctions etc).

Commencer par du C en se prenant les pieds dans les pointeurs d’adresses de pointeurs pour passer un tableau en paramètre, ça forme la jeunesse certe, mais est-ce vraiment utile (et fun) pour commencer?

Moi perso jusqu’a il y a un mois, ca faisait 6 ans que j’avais pas fait un seul malloc. Et je m’en porte pas plus mal, je vois pas en quoi c’est necessaire de faire un malloc pour savoir programmer comme un homme. A la limite j’ai utilise plus souvent ce que j’ai appri en ecole avec un langage fonctionel comme Caml que ce que j’ai appri a faire du C.

Et puis meme, quand j’ai pas eut le choix et que je fais du C++ depuis le mois dernier, ben c’est pas parceque j’ai pas manipule du pointeur a longueur de journee en C que je sais pas comment ca marche. Quand on fait vraiment du C#, du java, du python ou meme du VB, et qu’on a un niveau relativement avance, on sait ce qui se passe en memoire, on sait ou sont les pointeurs, meme si on a pas a les manipuler. L’avantage c’est qu’on les a pas dans la tete avant de vouloir les avoir. On se prend pas la tete avec au debut, ca veut pas dire qu’on devra jamais les comprendre et il est clair qu’on aura pas un niveau avance dans un de ces langage sans qu’ils deviennent une seconde nature. Pour moi ca peut attendre, et quand on debute vraiment et qu’on apprend pour le fun, c’est pas comme pour devenir un pro, on commence par des trucs funs qui amenent des resultats. Pas un machin qui dit hello world, qui te demande de rentrer un entier pour faire une addition et qui crashe si tu tapes la mauvaise touche…

Hé, j’étais en WE :stuck_out_tongue:

:stuck_out_tongue: Un grand classique pour les trolleurs.

Total vrai! Comme déjà expliqué, si un copin t’aide à assimiler les bases de la base de la programmation, il sera toujours temps après de choisir un langage quand tu auras buté sur des contraintes quelconques. Pour ma part, j’ai beaucoup programmé sur TI-82 (basic) puis AMOS (basic encore) avant de m’enrôler en info (où il y a moins de filles qu’à l’armée :stuck_out_tongue: ). Tout ca pour troller les forums…

J’ai vu l’effet de scheme ou de C(++ basique) appris comme premiers langages: c’est plutot pas mal dans les deux cas, mais c’est surtout grâce aux enseignants derrière et à la motivation qui suit (python est en vogue aussi, mais j’ai pas trop suivi). Un basic quelconque avec des copins pour aider, ca peut pas faire de mal en classe de 2nde…

L’origine du troll des integristes du C provient de la guerre de chapelle où les étudiants en informatique industrielle et/ou système et Réseaux ne considèrent pas comme de vrais informaticiens les informaticiens de gestion.

En fait tout dépends de ses besoins et de ses objectifs. Quels sont les vôtres Snake74 et Kel_Thalas ? C’est pour le fun ou pour les études ? C’est plus pour l’aspect fonctionnel et algo, auquel cas les pointeurs on s’en moque c’est plus pour avoir une bonne base théorique; ou alors c’est plus pour un interêt technique voire industriel ?

Personnellement, pour les deux (fun & études) : j’aimerais travailler dans l’informatique, donc je me renseigne sur les aspects des métiers qu’on y trouve. Comme (analyste ?)programmeur est un métier qui revient souvent, je me dis que ce serait bien que j’y touche un peu pour voir ce que c’est (avant de faire des études, d’ou absence de prof par exemple).
Et le côté fun aussi, pour m’amuser et par curiosité, pour découvrir ce que je pense être une partie intégrante de l’info.

Ben embetes toi pas avec des langage de (trop) bas niveau ->java/c#, un bon ide (eclipse, ou Visual Studio) et en avant.

Si tu choisis java+eclipse, je te conseillerais le « Google Web Toolkit » (GWT) en plugin pour eclipse, ça te permettra de te faire rapidement des petites interfaces en html au lieu de t’embeter avec les layouts (que je conspue :P)
Et comme ça, quand tu auras ton prog qui marche, tu pourras faire le cake avec ton beau site web 2.0 et rameuter plein de gonzesse depuis les skyblogs (ou pas) :stuck_out_tongue:

Comme j’ai proposé le javascript, je vais essayer d’approfondir :stuck_out_tongue: :
D’un coté tu as des trucs très basic qui vont te permettre de faire des trucs assez rigollot : Le javascipt est un exemple.

Si tu n’as aucun niveau en programmation, je pense que c’est un bon début et je vais tenter d’expliquer pourquoi .
Tu ouvres notepad (ou un éditeur texte) et tu commence à manipuler des objets, leurs méthodes… Tu fais de la gestion de fichier, tu automatises des processus.
En environnement windows, tu peux pousser les choses très loin et l’avantage du javascript par rapport à un autre ‘langage’ (Un basic ou un pascal de base) c’est que ça ne sera pas perdu.
L’avantage de commencer par ce genre de chose : C’est que tu vois tout ce que tu fais et tout ce que tu fais ce voit.
N’importe quel cours de programmation commence par ça : Un éditeur de texte.
Commencer directement avec un EDI c’est mal (Par exemple : Il faut lancer une première compilation en mode commande plutôt que de la lancer via l’EDI…Pour comprendre ce qui est fait).

Tu peux y passer 1 heures ou 20 heures, ça dépend de toi…
Au bout d’un petit temps, tu vas vouloir aller plus loin et la, ça va dépendre de ce que tu veux faire !

Tu peux passer à des niveaux d’abstractions tel, que tu vas pouvoir développer avec très peu de lignes de code( il y a des EDI très fort pour ça). Ou alors tu vas être du genre à vouloir maîtriser ton code à 100% (Allouer la mémoire ….)
J’ai mon opinions et des contraintes professionnelles que je garde pour moi…

Pour résumer ce que je pense : Dans un premier temps comprendre ce qu’est une boucle, un test, une variable, un type, une fonction, une classe, une méthode…La lisibilité d’une variable…Un accesseur…Faire des l’algorithme pour se rendre compte que le langage n’est qu’un moyen de résoudre un problème que tu peux écrire sur une page blanche . Comprendre ce qu’est un langage interprété, une compilation.

Maintenant, si tu sais déjà tout ça, passe à l’étape supérieur…

Je développe avec un produit que je n’ai pas cité et j’ai changé 4 fois d’environnements de développement…Je fais très peu de javascript mais j’ai commencé avec le pascal.
Le langage n’est important qu’en relation avec ce que tu souhaites faire (A priori, je ne vois pas l’intérêt de faire un programme de gestion en C et de faire un driver en cobol :stuck_out_tongue: )