Sans conteste, le langage à apprendre est celui qui permet de tuer les IS (Intelligences Simulées). Le livescript qu'on appelle maintenant le javascript à tort.
il faudra connaitre le live script pour detruire les IS (intelligences simulées)![]()
C
C++
Python
Ruby
Java
C#
PHP
Matlab
HTML/CSS
OCaml
Sans conteste, le langage à apprendre est celui qui permet de tuer les IS (Intelligences Simulées). Le livescript qu'on appelle maintenant le javascript à tort.
il faudra connaitre le live script pour detruire les IS (intelligences simulées)![]()
Je suis un ancêtre qui a appris à programmer en Basic (sur une machine de 8K de ram !), turbo-basic et s'est réveillé avec le pascal de Borland et finalement Delphi.
Depuis lors, je me suis plus intéressé au Web avec javascript et Php.
J'ai été vraiment motivé par le pascal qui permet de faire beaucoup de chose y compris dans la gestion de la mémoire et des pointeurs.
Le projet Lazarus m'a réconcilié avec Delphi depuis que je suis sous Linux.
Bref, pendant des années, on ne jurait que par les vertus pédagogique du Pascal et je m'étonne un peu de ce revirement et des pertes en compétances pédagogiques que cela entraine.
J'ai l'impression que la mode est au quick'n'dirty pour pondre des scripts et voir ce qu'il font. Avant cela, on a eu une mode du fonctionnel en France avec OCaml & cie.
De plus, je pense que Pascal a souffert du manque de maintenance et de moyens (APIs, bibliothèques) pour s'intégrer rapidement avec tel ou tel outil ou techno.
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
Démarrer par de l'algorithmie ce n'est pas pondre un algo "poussé", mais comprendre les mécaniques communes à tout les langages : les types de données, les traitements sur les données, les boucles, etc..
C'est la base fondamentale pour pouvoir comprendre ce qu'est la programmation. Par contre je suis d'accord avec toi sur le fait que la conception ou l'architecture logicielle n'a aucun lieu d'être dans les premiers pas en programmation. Les notions de classes, d'héritages, etc.. ne peuvent être réellement comprises que par la pratique.
Ensuite pour le langage, tant qu'il est un minimum structuré il conviendra à l'apprentissage.
Cette mode "quick'n'dirty" n'a rien de neuve pour moi. Les débuts de l'informatique dans les écoles étaient truffées de bidouilles en basic sous DOS dont l'utilité était tres relative.
Je pense que cela n'a pas eu que des côtés négatifs en ce que cela a pu déclencher un intérêt pour la programmation et le désir d'en savoir un peu plus.
On était très fiers de nos petits programmes de quelques dizaines de lignes qui permettaient de résoudre une équation du deuxième degré ou de jouer à OXO.
Pour ce qui est du manque d'outils, je suis assez d'accord .
Les types génériques sont vus durant l'algorithmie et la programmation en générale.
Les notions liées au compilateur sont, selon moi, à aborder dans un second temps d'apprentissage d'un langage. Dans un premier temps, on se familiariserait avec la structure propre au langage, ses particularités, etc.. Et dans un second temps un vue plus approfondie pour découvrir comment fonctionne ce langage "en vrais".
Je sais pas si le C est un bon langage pour débuter, car sa risque de dégoutter la personne de la programmation.
Moi par exemple j'ai commencer par le python, sa ma fait aimer la programmation. Je sais que si j'avais commencer par le C, je ne serais jamais devenue informaticien, quand on commence dans un domaine, il veut mieux commencer par quelque chose de simple.
C'est comme pour conduire, il veut mieux commencer par une petite voiture, qu'un camion de 6tonnes avec 2 remorques.
Va expliquer a un néophyte ce qu'es un pointeur, et on verra ce qu'il pense de l'informatique.
Par contre je déplore la loi du gouvernement, qui veut faire apprendre le html a des enfants, je ne considère pas le html comme un langage, pour moi c'est du gaspillage de temps, de connaissance et d'argent. Si le langage C pour débuter et discutable, le html je suis ferme la dessus, sa ne sert a rien si l'on veut apprendre a programmer.
Un contre-avis:moi j'ai commencé par du Pascal pour basculer en C et ensuite C++ et plus tard Java (pour les langages importants pas comme le SML, LISP, Prolog ...)
Et au contraire, commencer par du C, cela t'apprend l’algorithmie (et un peu la relation de performances/ code): listes simplement et doublement chaînées, arbre en tout genre, les tris, la récursion (les tours de Hanoi, le jeu de la vie), ...
Et ensuite, je suis passé à des choses encore mieux de la compression (table de Huffman), de la 2D/ 3D (bruit de perlin, algorithme de De Casteljau), ...
Parce que toi avec ton Python tu fais quoi: c'est plus apprendre par cœur la bibliothèque native et c'est fini ( :troll: )
Alors c'est vrai que le C est assez rigoureux: les pointeurs (aussi bien la destruction que le passage de paramètres avec des doubles pointeurs), les débordements de tableaux, ...
Et que cela dépend du bonhomme aussi![]()
Affirmation davantage applicable à Java...
Sinon les "moi je", c'est pas vraiment un argument valable. Si tu avais commencé par Python ou un autre langage, qui sait, tu aurais peut-être eu le même parcours.
Difficile de généraliser son histoire personnelle.
J'ai commencé avec C++ et j'avoue que j'aurais préféré commencer à l'époque avec Pascal par exemple
EDIT : Non en réalité j'ai commencé avec GW-Basic en fait, mais bon, je ne l'ai jamais considéré réellement comme un langage de programmation digne de ce nom... Mais il a eu ses vertus pédagogiques aussi.
Tu fait beaucoup plus de chose en python qu'en C, python est un langage touche a tous, tu peut tous faire (logiciel, jeu, calcule scientifique, web...).Parce que toi avec ton Python tu fais quoi : c'est plus apprendre par cœur la bibliothèque native et c'est fini ( :troll: )
Python a une pléthore de bibliothèque (coder en C...pour des raisons de perf) qui t'évite de ré-inventer la roue un n-ieme fois.
Avec python tu apprend les bases de l'algo (boucle, condition, structure, fonction...), sans te soucier de la gestion de la mémoire et autre qu'un néophyte ne comprendrais de toute façon pas.
Python permet un développement simple et rapide, idéal donc pour encourager un débutant a poursuivre ces efforts, la ou il le souhaite (jeu 2D-3D, web, calcule scientifique...)
Pour le java, sa impose a la personne de comprendre ce qu'es la programmation Objet, pas forcement simple pour un débutant, qui ne sait probablement pas ce qu'est une simple fonction.
Sa dépend de la personne, quand j'ai débuter, il y'a 10ans, je ne connaissais pas grand chose de l'informatique, je savais pas ce qu'étais la notion un objet, une fonction, des boucles... si la personnes a un niveau un peu plus évoluer, il connais la notion d'allocation de mémoire, de fonction, de boucle...etc, alors oui je l’inciterais plutôt a aller voir du coté du C.
As-tu des exemples ? Une chose possible en python et impossible en C ?
Pourquoi ne comprendrait-il pas ?Avec python tu apprend les bases de l'algo (boucle, condition, structure, fonction...), sans te soucier de la gestion de la mémoire et autre qu'un néophyte ne comprendrais de toute façon pas.
De plus, on a pas nécessairement besoin de se soucier de la gestion de la mémoire quand on débute, on a pas nécessairement besoin d'allocation dynamique.
Certes, cependant, il faudra bien un jour qu'il sache ce qu'il fait et que tout cela n'est pas magique.Python permet un développement simple et rapide, idéal donc pour encourager un débutant a poursuivre ces efforts, la ou il le souhaite (jeu 2D-3D, web, calcule scientifique...)
Cela dépend aussi de l'objectif que se donne l'apprenant.
S'il veut juste faire un petit jeu et rien de plus, pourquoi pas. S'il veut apprendre à programmer, autant commencer par le C ou le C++ où il pourra voir plusieurs notions différentes absente en Python.
Apprendre à programmer, ce n'est pas tant apprendre un langage que de comprendre comment tout cela marche et d'être capable de s'adapter à tout autre langage.
Il y a plus de 200 langages, certains sont plus adaptés que d'autres dans certains contextes, on ne pourra pas tout faire en Python et on ne peut pas décemment apprendre ces 200 langages. Mais si on comprend que rien n'est magique et comment tout cela fonctionne, on peut s'adapter plus facilement à un nouveau langage.
Après cela dépend du contexte (amateur ? étudiant ?), de l'âge (5 ans ? 20 ans ? 80 ans ?), … comme cela a déjà été dit dans les pages précédentes.
C'est un langage de description.je ne considère pas le html comme un langage
Cela permet déjà de se familiariser avec le XML, de voir un peu de CSS ou du JavaScript, de ne pas avoir besoin de compilateur ou d'interpréteur, juste d'un navigateur auquel sont déjà familier les enfants.le html je suis ferme la dessus, sa ne sert a rien si l'on veut apprendre a programmer.
D'avoir un résultat graphique encourageant très tôt, … de faire son propre petit site qu'on montrera à ses grand-parents.
À ce niveau, c'est plus une initiation qu'un apprentissage je pense.
Ouais. Vas écrire des applis haute performance en Python... ou un système d'exploitation... ou du logiciel embarqué dans un avion...
Si le C t'a dégouté, c'est ton problème, tu n'es pas informaticien.
Python c'est un langage de programmation conçu pour ceux qui n'aiment pas programmer.
Dans ce cas fait ton OS, vas s'y je te regarde....Ouais. Vas écrire des applis haute performance en Python... ou un système d'exploitation... ou du logiciel embarqué dans un avion...
Tu crois que y'a que les performances qui compte dans un logiciel ?, pourquoi beaucoup de personne codent en java dans cas ?
Alors tu te trompe royalement, python fonctionne très bien dans l'embarquée, exemple, je ne compte même pas le nombre de soft qu'il y'a sur le raspberry en python.
Qu'es ce qui est fait en C concrètement ?, le noyaux des OS, et a part cela ?, les jeux sont en C++, ou en tous cas les moteurs, civilization4 est codé en python.
Fais moi ton serveur web en C si tu est si malin, en python tu peut faire du web.
Les lourds calculs scientifiques sont fait en python, c'est du vécu ayant travaillée pour le cnrs, j'ai du tous coder en python, niveau perf sa fonctionnait très bien.
Enfin, non je ne suis pas dégoutté du C, si tu lisait correctement mes posts, j'ai dit que si j'avais commencée par le C je ne serait jamais devenu informaticien, je sais aujourd'hui codé en C, car avant d'apprendre le C j'avais des connaissance pointu en C++, voila mon parcours, python, java, C++, et aujourd’hui je fais des programmes en assembleur pour être exécuter sur des simulateurs., pour apprendre le fonctionnement d'un ordinateur, l'assembleur et le meilleur langage pour débuter, je sais pas si tu en as déjà fais, mais si j'avais débuter avec l'assembleur je n'aurais plus jamais toucher a un ordinateur.
Python c'est un langage conçue pour les personnes qui n'ont pas envie de se casser la têtes, qu'ils veulent programmer un logiciel tous simplement, sans prise de tête.
C'est accessoirement ce que l'on se tue à dire : le C en premier langage dégoute beaucoup de monde. Il est de fait parfait pour filtrer et ne garder que les motivés. Du coup selon le public (genre un ado qui veut découvrir la programmation), c'est une catastrophe.
Et j'ai encore revu passer l'argument fumé sur la rigueur. Il n'est pas rigoureux, il est exigeant. Et pour ceux qui voudraient ressortir qu'il enseigne la rigueur, re-re-re-cf mes contre-arguments précédents => il exige la rigueur, mais son enseignement ne permet pas de l'acquérir -- sa pratique acharnée va finir par l'inculquer toutefois (liens en ordre inverse)
-> http://www.developpez.net/forums/d14...n/#post8046558
-> http://www.developpez.net/forums/d14...n/#post8045041
-> http://www.developpez.net/forums/d14...n/#post8041589 <-- c'est là qu'est que sont les arguments principaux
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
@sazearte : tu loupes totalement l'argument de CodeurPlusPlus.
On parlait de ta phrase : "Tu fait beaucoup plus de chose en python qu'en C".
Sauf qu'il existe des domaines où on ne peut pas se contenter d'un langage interprété.
Tes "bibliothèques pythons écrites en C pour plus de performances" sont écrites en quoi à ton avis ? En Python ou en C ?
Ton interpréteur Python, il est écrit en quoi ? En Python ?
Il y a des logiciels où les performances sont plus qu'importants, ou sont destinés à des supports très contraints.
Ce n'est pas parce que tu codes sur un raspberry que tu fais de l'embarqué. On compile pour un support donné et on ne fait pas du tout dans le portable. Ce sont parfois des facteurs x1000 qu'on essaye d'atteindre juste en déroulant des boucles, en indiquant des directives préprocesseurs spécifiques, etc. Je ne pense pas qu'on puisse non-plus gérer la mémoire et les caches à la main en Python par exemple. Et parfois, on ne va pas créer le logiciel pour une machine donnée, mais carrément construire la machine pour le logiciel.
Les scientifiques ne sont pas souvent informaticiens, et ils sont capable de faire un algorithme et de le faire tourner une semaine sur un super-calculateur sans résultats quand une réécriture de l'algorithme avec une complexité plus faible permet de le faire tourner en quelques minutes sur un i7.
Oui, on peut compiler du Python pour gagner un peu en performance, mais ce ne sera pas toujours suffisant.
Regarde aussi le classement des langages utilisés dans l'embarqué, tu trouveras en tête le C, le C++ et l'assembleur, ce n'est pas pour rien.
De plus, pour faire du Python, il faudrait déjà que ce soit rendu possible par les SDK des fondeurs. À moins bien sûr d'adapter le code source d'un interpréteur Python, mais bon, il faut aussi que le support ai assez de mémoire pour stocker le script Python.
Sans recoder son OS, on peut créer de nouveaux modules en C. On ne va surtout pas le faire en Python.
Donc oui, il y a des choses possibles en C, non-envisageable en Python.
Après, bien sûr, si tu utilises des bibliothèques Python écrit en C qui font l'essentiel du travail, c'est normal d'avoir de bonnes performances, mais ces bibliothèques, il a bien fallu les écrire.
Cela me gêne de ne pas pouvoir éditer mon post
Je voulais rajouter qu'un raspberrypi, c'est presque un ordinateur. Cela n'a rien à voir par rapport au processeur à 10c qu'on peut trouver partout, dans ta souris, ton lave-linge, etc.
Et je ne pense pas que sur ce genre de processeur, on s'amuse à faire tourner un interpréteur Python.
Partager