OK! Je vai te préparer un gros pack archive Algo et un peu ada!
Je t’envoie tout ca d’ici peu.(Au plus tard dans quelques jours, au mieu ce soir.)
Si si.
L’ADA peut être remplacé par Eiffel dans ta liste ou tout autre langage très typé. L’ADA tiens de son père (le pascal) son coté algorithmique (en fait c’est l’inverse beaucoup de prof définissent leur algorithmique sur le pascal notamment les déclarations et les affectations).
En second je mettrais le C/C++ avec un prof qui explique bien les différences entre les deux langages. Je ne crois pas qu’il faut se focaliser sur le typage du langage, mais aussi sur les notions qu’il permet d’aborder. Avec le couple C et C++, tu vois les notions d’allocation de mémoire, ce qu’est la pile par rapport au tas, ce qu’est un pointeur, faire attention au transtypage (ou conversion) implicite, mais aussi au polymorphysme, à l’héritage (multiple ou non), aux functors, classes virtuelles, généricité, classes d’implémentations, à la surcharge d’opérateurs,… et tu peut aller (si on approfondi vraiment) sur les notions de métaprogrammation.
C’est des notions très génériques après quoi il manque l’introspection (qu’on peut aborder avec le python par exemple) et l’execution au travers d’une machine virtuelle (java, pascal, mais il y en a d’autre) pour savoir manipuler l’énorme majorité des notions que l’on peut trouver dans un langage de programmation.
Après avoir vu au travers de 3 langages la programmation objet et structurée, il peut être interessant d’apprendre la programmation fonctionnel au travers de Caml/lisp/schem ou alors d’aller voir des choses un peu plus spécialisé comme des langages CGI (perl, php, python, ruby ou java), bas niveau (assembleur), etc…
[quote=“MisterFreez”]Je bosse juste en face d’ENSIMAG Un collègue qui y fait ses études m’expliquait que certains étudiants comprenaient rien à la compilation après un semestre.
Je ne crois pas en un parcourt type qui soit parfait. Ça dépend de celui qui suit la formation.[/quote]Quand on ne s’interesse pas à l’assembleur et à quelques notions de base du langage machine ainsi que la structure interne d’un microprocesseur (pas forcément celui dun pentium mais celui micro-contrôleur : PIC…) c’est clair q’on ne peut rien comprendre à l’utilité de la génération d’un code exécutable.
La génération Java et .NET ne comprendra jamais la différence entre une machine virtuelle et l’utilisation d’un langage interprété (perl, php, …).
moi je ne pourrais te conseillais qu’un seul chose [size=150]prologin[/size] surtout si tu est mineur j’ai eu la chance d’y particper 2 fois et c’est vraiment super sympa
[quote=“dmon”]Quand on ne s’interesse pas à l’assembleur et à quelques notions de base du langage machine ainsi que la structure interne d’un microprocesseur (pas forcément celui dun pentium mais celui micro-contrôleur : PIC…) c’est clair q’on ne peut rien comprendre à l’utilité de la génération d’un code exécutable.
La génération Java et .NET ne comprendra jamais la différence entre une machine virtuelle et l’utilisation d’un langage interprété (perl, php, …).[/quote]
???
Je ne parle pas de connaître le format elf. Mais bien de savoir utiliser gcc pour générer un exécutable à partir d’un code source.
Alors oui les IDE type netbeans ou eclipse c’est ce qui se fait de mieux en tout allons cliquer sur le bouton compiler pour que ça se fasse tout seul.
Je pense que ne pas voir de différence entre un langage compilé et un langage interprété c’est grave. Et pas pour un problème de performance. J’ai du mal à considérer quelqu’un comme un programmeur quand il ne comprends pourquoi on utilise du C et pas python pour faire des noyaux. Je te ferais aussi remarqué que dans la compilation il y a aussi l’édition de liens qui est une notion importante du java et qui est une notion à comprendre en perl/python/ruby et très probablement en .Net/Mono.
J’en ai rien à faire du bas niveau, je dis juste que pour savoir programmer c’est bien de savoir créer un exécutable dans le langage que tu as étudié pendant 6 mois.
Si j’ai l’aire d’un bourin en disant ça, ben tant pis, je suis vieux jeu
Je ne parlais pas de connaître le format ELF.
C’est juste un petit problème dû à la formation en informatique. On édite dans un super IDE, on exécute en appuyant sur une combinaison de touche (en sachant que cette dernière compile et exécute) et on passe à l’exercice suivant. Malheureusement c’est inévitable.
En formation l’apprenant n’a pas la notion de fournir un programme exécutable à un client final qui ne connaît rien à la programmation. Il doit founir l’algorithme, le code source commenté et montré que ça fonction ([CTRL] + F9).
[quote=“MisterFreez”]Je pense que ne pas voir de différence entre un langage compilé et un langage interprété c’est grave. [/quote] Je suis d’accord avec toi. Mais un développeur professionnel était étonné de constater qu’un programme compilé avec Visual C++ était beaucoup plus performant qu’un programme écrit en .NET. En me sortant que .NET c’est de la merde (ça je veux bien puisque pour l’instant il n’est pas vraiment multi plateforme à mon goût) alors que c’est juste deux contextes d’exécution différents.
[quote=“dmon”]Je ne parlais pas de connaître le format ELF.
C’est juste un petit problème dû à la formation en informatique. On édite dans un super IDE, on exécute en appuyant sur une combinaison de touche (en sachant que cette dernière compile et exécute) et on passe à l’exercice suivant. Malheureusement c’est inévitable.
En formation l’apprenant n’a pas la notion de fournir un programme exécutable à un client final qui ne connaît rien à la programmation. Il doit founir l’algorithme, le code source commenté et montré que ça fonction ([CTRL] + F9).[/quote]
J’ai eu la chance d’apprendre à programmer à l’IUT avec vim, donc ton makefile tu te l’écris et ta commande de compilation faut la trouver (je suis d’accord elle est simple “:make”).
Cette année en fac le prof de java voulais qu’on commence sans IDE (ou avec des trucs à la geany) pour découvrir ce qui est sous jacent aux commandes toutes bête d’eclipse.
Sinon ce qui est bien c’est certains projets à faire où les prof disent vous faites ça puis après vous avez carte blanche pour l’améliorer et ajouter des fonctions comme vous voulais.
mono n’est pas si mauvais à ce qu’on m’a dis. L’idée d’une plateforme qui contient une machine virtuel et une bibliothèque standard importante pour de multiples langage n’est pas si mauvaise. Mais je préfère la technique de la jvm qui consiste à écrire des compilateurs pour chaque langage vers du bytecode que de réinventer chaque langage.
Justement c’est cette notion de bytecode que les gens oublient. Ils ne font pas la différence entre un programme exécutable directement par un processeur et les autres : interprétés et bytecode.
Tu as compris et tu ne peux pas comprendre les raccourcis que prennent les autres.
Remarque hors sujet : les langages interprétés ne le sont presque plus. Ils sont quasiment tous compilé “just in time” soit vers un executable classique soit vers une machine virtuelle (je pense à perl par exemple avec la machine Parot).
Je sais que c’est le cas pour PHP et perl, pour ruby ça va ou ça viens de sortir, pour python je sais pas.
[quote=“MisterFreez”]Remarque hors sujet : les langages interprétés ne le sont presque plus. Ils sont quasiment tous compilé “just in time” soit vers un executable classique soit vers une machine virtuelle (je pense à perl par exemple avec la machine Parot).[/quote]Ils sont recompilés à chaque exécution ?
Si oui, il vaut mieux un bytecode (compilé un fois et fonctionne partout).
[quote=“dmon”][quote=“MisterFreez”]Remarque hors sujet : les langages interprétés ne le sont presque plus. Ils sont quasiment tous compilé “just in time” soit vers un executable classique soit vers une machine virtuelle (je pense à perl par exemple avec la machine Parot).[/quote]Ils sont recompilés à chaque exécution ?
Si oui, il vaut mieux un bytecode (compilé un fois et fonctionne partout).[/quote]
L’idée c’est d’améliorer la vitesse sans avoir a gérer une compilation classique.
Fin’ c’est une évolution de langage existant donc bon.
Par contre tu peut trouver un compilateur pour ces langages.
Je suis d’accord avec toi misterfreez quand tu dit que le couple C/C++ est très bien pour se former d’abord sur l’alloc, pile, tas puis migrer vers l’objet avec le “++” ^^
Néenmoins, je trouve le Java plus aboutit comme langage objet que le C++ ou du moin plus “travaillé”.(fonctionnement entièrement dynamique etc…) Peutètre plus lourd je pense par contre? Tout dépend l’utilité!
Là où le C++ veut une compatibilité forte avec le C, le java est un langage qui part de rien.
Le java est un langage plus sécurisé, il intègre tout en standard, il est là pour faire des logiciels classique mais aussi des applets/sevrlet etc… Il a tait pensé pour facilité la vie du programmeur aussi. Tout cela quitte a limité les fonctionnalités.
Au contraire le C++ est là pour aller le plus loin possible dans les possibilités que l’on peu donner au langage rare sont les notions que l’on ne peut pas aborder avec du C++. Ca donne un langage extrêmement performant (au même niveau ou plus que du C), avec beaucoup de joyeuseté, mais qui peut être compliqué à debuguer et à lire (les manipulation “bas niveau” de la mémoire peuvent donner des trucs assez rigolo (je sais que c’est pas du bas niveau disons de plus bas niveau qu’en java)).
[quote=“MisterFreez”]
Je ne parle pas de connaître le format elf. Mais bien de savoir utiliser gcc pour générer un exécutable à partir d’un code source.
Alors oui les IDE type netbeans ou eclipse c’est ce qui se fait de mieux en tout allons cliquer sur le bouton compiler pour que ça se fasse tout seul.
Si j’ai l’aire d’un bourin en disant ça, ben tant pis, je suis vieux jeu [/quote]
Personne ne devrait commencer avec un environnement intégré.
Tiens tiens, je pensait a ça… J’ai décidé comme cheminement (j’apprends la prog tout seul avec des livres et un PéCé) de commencer avec un langage de très haut niveau, le Python donc, puis de me mettre au C/C++ (je suis fanatique de la programmtion objet depuis… une semaine?) une fois que j’ai maitrisé une bonne partie des concepts générau de la programmtion. Y a il un problème a partir en haut niveau puis a descendre plus tard?
Je vous explique mon cheminement, et aussi mon aversion du bas niveau (j’irai jamais plus bas que le C…). J’ai commencé en C++ il y a un mois. Mais la syntaxe est (enfin, je trouvais ça) complexe et je me retrouvais a débugger en permanence.
J’ai donc abandonné ça.
Plus récemment, je suis tombé sur l’article “comment devenir un hacker” et le gars conseillait Python pour débuter. Je me suis informé: haut niveau, multi-paradigmes. Supercool.
J’ai eu le plasir de réeussir u premier coup les 5 premiers exercises du livre. J’ai donc décidé d’apprendre le Python pour faire conaissance avec les principes généraux de la programmation puis aller chercher une bonne base de C, parce que c’est un lagage immensément populaire.
Je répète la question, je sens que je me suis perdu (raconte sa vie) en cours de route.
Y’a t il un problème a commencer en haut niveau puis a redescendre a un niveau moyen?
[quote=“Stay’n Alive”]Je vous explique mon cheminement, et aussi mon aversion du bas niveau (j’irai jamais plus bas que le C…). J’ai commencé en C++ il y a un mois. Mais la syntaxe est (enfin, je trouvais ça) complexe et je me retrouvais a débugger en permanence.
J’ai donc abandonné ça.[/quote]
Plus bas que le C tu auras du mal, surtout sur PC. Sur PIC par contre ça peut servir.
Pour en revenir à la syntaxe du C++, franchement c’est pas ce qu’il y a de pire, mais c’est une question d’habitude. Moi c’est avec les langages haut niveau que j’ai eu du mal et que j’ai passé mon temps au début à voir ce que faisait mon code, tandis qu’en C/++ je compile et je lance une fois de temps en temps, j’ai pas lancé de session de débuggage depuis la fin de mes études, sur pc. Sur contrôleur, de temps en temps, faut bien aller chercher la cause d’un vieux trap à deux balles.
Tu nous le dira parce que je ne sais pas si beaucoup de gens ici ont débuté avec des langages comme java ou python.
“Quand j’étais petit mon grand père me disait souvent que le C était le langage ultime”(origine de la citation?)
Pour en revenir au sujet du post
Tu peux regarder la http://www.siteduzero.com/tutoriel-2-217-algorithmique.html, surtout le premier tuto un peu plus général et plutot bien fait (Algo pr l’apprenti programmeur).
Sur le meme site tu peux aller voir les tutos C/C++/Java, je n’ai lu que les 2 premiers mais faute de temps je n’ai pas vraiment mis en pratique, et n’ayant pas d’expérience je peux pas vraiment dire ce que ca vaut mais en tout cas j’avais aimé