Mais qu'est ce qui t'empêche d'indenter ton pascal?
Absolument rien. Mais le fait que l'indentation définisse la structure de bloc en python rend le code plus concis et facilite la lecture. L'algorithme transparaît. On peut évidemment pinailler sur ce sujet mais c'est un fait. Un code plus concis est plus simple à comprendre.
Où vois tu qu'il est nécessaire d'assimiler la POO?
vs
print "Hello World"
Merci de confirmer ce que je tentais d'expliquer.
C++ est conçu pour apporter la POO à C avec de nombreuses adjonctions (surcharges des operateurs, >>,<<, ...)qui donne du potentiel mais qui complexifie. Certes on peut s'affranchir du coté POO. Mais dans ton exemple, il faut expliquer:
Qu'il faut inclure une librairie ou plutôt son entête car l'implemvient à l'edition de lien, que la fonction main est appleé par défaut.
Expliquer qu'il s'agit d'une fonction ... qui accepte des paramètres
Les paramètres ? N'y faites pas attention. C'est juste quelque chose qui pollue au cas où on passerait des options à la ligne de commande.
std:: ? comment vous dire... la modularité on verra ça plus tard
Avec Python, il te suffit d'exécuter ça via l'interpréteur et le moment venu tu expliqueras l'utilité de stocker son programme et de la ft main.
Dans tous les débats qui font rage ici, on ressent une certaine mauvaise foi pourtant il m'apparaît (c'est certes subjectif):
Qu'un langage interprété est une évidence pour l'apprentissage.
Entre ceux qui débattent de la nécessité ou non d'un IDE et à celui qui martyrise le plus ses élèves avec Maven ou le Makefile, le temps de compilation pour 2 millions de lignes de code ... et ceux qui prônen le JS pour avoir tout sous la main. JE renvoie encore à ce projet sous licence libre : http://pythontutor.com
L'édition de lien, la gestion des dépendance, la modularisation sont loin des préoccupations de base du néophyte.
Qu'un langage dynamique (ou à défaut à inférence de type) est tout autant incontournable:
On a beau évoquer le fait qu'on ne comprendrait pas ce qu'est un type, qu'on prendrait des mauvaises habitudes...
Le typage dynamique n'apporte aucune confusion sur ce qu'est un type. Le typage statique n'est qu'une assurance qu'on ne fasse pas n'importe quoi avec une variable lorsqu'on la réutilise. Faut-il en passer par une phase de compilation juste pour ça alors qu'un interpréteur permet de tester en direct, d'expérimenter à la volée...
Bref, tu apprends ce qu'est un type de donnée (contrairement à l’ambiguïté entretenue pas les langages à typage faible) et le moment venu tu verrouilles ton code avec un outil dédié ou tu t'intéresses enfin au langages à typage statique.
Qu'il se doit de supporter les structures de haut niveau dans sa syntaxe:
if ( std::any_of(foo.begin(), foo.end(), [](int i){return i<0;}) ) vs
ma_liste=range(50)
print ma_liste
Comment dire ... Merci de m'expliquer ce que fait ta ligne:
C'est quoi une lambda au fait ?
Pourquoi un if ?
Et foo ? pas besoin de le déclarer ?
...
Alors oui tu aurais pu utiliser std::Vector à moins que Qlist ne soit préférable ...
Des structures de haut niveau directement dans le langage et bien conçues ca fait la différence ... et ca aide à mieux cerner la notion de type (Un outil pour chaque usage).
Après, ca ne signifie absolument pas qu'il faille mettre au rencart les langages qui apportent d'autres éclairages sur différent paradigmes. Apprendre le C/C++ garde tout son intérêt lorsqu'on souhaite approfondir la programmation système que l'on s'intéresse à l'architecture des ordis. Oui la différence entre le tas et la pile est importante ... si l'on souhaite l'approfondir. J'ai un peu l'impression qu'une arrière-garde de l'informatique ne souhaite pas mettre ses bases à la portée de tous avec sa conception élitistes au point qu'il faille éliminer absolument les moins vaillants plutôt que de la démocratiser. Une conception de certains profs que j'ai pu croiser en fac et qui ne voulaient pas changer un iota de leur cours depuis des années pour en fournir le minimum pour leurs élèves. (Il faillait bien en terminer par un troll)
[^] # Re: Mon avis à moi et rien qu'à moi
Posté par El Titi . En réponse au journal Python comme premier langage de programmation ?. Évalué à 6. Dernière modification le 24 juillet 2014 à 15:47.
Absolument rien. Mais le fait que l'indentation définisse la structure de bloc en python rend le code plus concis et facilite la lecture. L'algorithme transparaît. On peut évidemment pinailler sur ce sujet mais c'est un fait. Un code plus concis est plus simple à comprendre.
vs
print "Hello World"
Merci de confirmer ce que je tentais d'expliquer.
C++ est conçu pour apporter la POO à C avec de nombreuses adjonctions (surcharges des operateurs, >>,<<, ...)qui donne du potentiel mais qui complexifie. Certes on peut s'affranchir du coté POO. Mais dans ton exemple, il faut expliquer:
Qu'il faut inclure une librairie ou plutôt son entête car l'implemvient à l'edition de lien, que la fonction main est appleé par défaut.
Expliquer qu'il s'agit d'une fonction ... qui accepte des paramètres
Les paramètres ? N'y faites pas attention. C'est juste quelque chose qui pollue au cas où on passerait des options à la ligne de commande.
std:: ? comment vous dire... la modularité on verra ça plus tard
Avec Python, il te suffit d'exécuter ça via l'interpréteur et le moment venu tu expliqueras l'utilité de stocker son programme et de la ft main.
Dans tous les débats qui font rage ici, on ressent une certaine mauvaise foi pourtant il m'apparaît (c'est certes subjectif):
Qu'un langage interprété est une évidence pour l'apprentissage.
Entre ceux qui débattent de la nécessité ou non d'un IDE et à celui qui martyrise le plus ses élèves avec Maven ou le Makefile, le temps de compilation pour 2 millions de lignes de code ... et ceux qui prônen le JS pour avoir tout sous la main. JE renvoie encore à ce projet sous licence libre : http://pythontutor.com
L'édition de lien, la gestion des dépendance, la modularisation sont loin des préoccupations de base du néophyte.
Qu'un langage dynamique (ou à défaut à inférence de type) est tout autant incontournable:
On a beau évoquer le fait qu'on ne comprendrait pas ce qu'est un type, qu'on prendrait des mauvaises habitudes...
Le typage dynamique n'apporte aucune confusion sur ce qu'est un type. Le typage statique n'est qu'une assurance qu'on ne fasse pas n'importe quoi avec une variable lorsqu'on la réutilise. Faut-il en passer par une phase de compilation juste pour ça alors qu'un interpréteur permet de tester en direct, d'expérimenter à la volée...
Bref, tu apprends ce qu'est un type de donnée (contrairement à l’ambiguïté entretenue pas les langages à typage faible) et le moment venu tu verrouilles ton code avec un outil dédié ou tu t'intéresses enfin au langages à typage statique.
Qu'il se doit de supporter les structures de haut niveau dans sa syntaxe:
vsif ( std::any_of(foo.begin(), foo.end(), [](int i){return i<0;}) )
ma_liste=range(50)
print ma_liste
Comment dire ... Merci de m'expliquer ce que fait ta ligne:
C'est quoi une lambda au fait ?
Pourquoi un if ?
Et foo ? pas besoin de le déclarer ?
...
Alors oui tu aurais pu utiliser std::Vector à moins que Qlist ne soit préférable ...
Des structures de haut niveau directement dans le langage et bien conçues ca fait la différence ... et ca aide à mieux cerner la notion de type (Un outil pour chaque usage).
Après, ca ne signifie absolument pas qu'il faille mettre au rencart les langages qui apportent d'autres éclairages sur différent paradigmes. Apprendre le C/C++ garde tout son intérêt lorsqu'on souhaite approfondir la programmation système que l'on s'intéresse à l'architecture des ordis. Oui la différence entre le tas et la pile est importante ... si l'on souhaite l'approfondir. J'ai un peu l'impression qu'une arrière-garde de l'informatique ne souhaite pas mettre ses bases à la portée de tous avec sa conception élitistes au point qu'il faille éliminer absolument les moins vaillants plutôt que de la démocratiser. Une conception de certains profs que j'ai pu croiser en fac et qui ne voulaient pas changer un iota de leur cours depuis des années pour en fournir le minimum pour leurs élèves. (Il faillait bien en terminer par un troll)