Python est-il le Basic des années 2020 ?

C'est le lieu des discussions diverses et variées, mais toujours en rapport avec le thème général du forum et dans l'esprit de celui-ci. Contient des rubriques électroniques.

Modérateurs : Papy.G, fneck, Carl

Notator
Messages : 1301
Inscription : 09 août 2015 20:13

Python est-il le Basic des années 2020 ?

Message par Notator »

Dans les années 80, le Basic était très répandu (résident sur la plupart des micro-ordinateurs) et était le langage d'initiation par excellence.
Depuis, le Basic a été largement décrié, et il est considéré à présent comme un langage ringard...

Aujourd'hui, le Python est très répandu, et il est estimé comme étant le langage d'initiation par excellence. :)

Or je constate que ce n'est pas le seul point commun avec le Basic, car ce sont tous les deux des langages interprétés...

Serait-ce bonnet blanc/blanc bonnet ? :P

J'ajoute que si je connais assez bien le Basic, je connais mal le Python ; mais le peu que j'en ai vu m'a semblé familier, et cela m'intrigue... :wink:
Notator est le nom d'un programme séquenceur Midi et notation musicale pour Atari ST(e) (puis Mac).
Avatar de l’utilisateur
hlide
Messages : 3507
Inscription : 29 nov. 2017 10:23

Re: Python est-il le Basic des années 2020 ?

Message par hlide »

Il y a de sacré différences quand même. Déjà le Python n'aurait pas été possible sur des µordinateurs des années 80.

L'indentation dans le Python est primordiale contrairement au C ou au BASIC.

Le BASIC transforme ligne par ligne pour remplacer certains mots par des jetons puisqu'en mémoire on garde un hybride token+texte structuré par ligne. Il faut lancer RUN pour exécuter le programme. De ce fait, c'est un langage assez restrictif dans sa forme.

Le Python est un langage qui manipule des objets : un nombre, un string, une classe, un dictionnaire est un objet. Il me semble qu'il n'interprète pas les lignes de texte mais les compile en objets qui ne sont pas du code natif certes. Le fait qu'il manipule des objets fait qu'il semble lent comparé au C et le met au même niveau d'un "interpréteur". De plus, bon nombre de sa librairie sont des codes compilés depuis du C ou autre langage impératif pour accélérer les traitements. On peut écrire en très peu de ligne des choses que je ne vois pas comment faire en BASIC 80's. Je pense que ce que l'on appelle interpréteur sous Python, c'est la partie interactive qui permet de saisir du texte. Le CLI en quelque sorte.

C'est un langage qui parle aux mathématiciens et au physiciens qui ne sont pas informaticiens et reste assez souple et leur semble assez naturel.
__sam__
Messages : 7989
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Python est-il le Basic des années 2020 ?

Message par __sam__ »

Python n'a pas de type pour les variables alors que le basic si (on peut pas mettre une chaine dans un entier en basic). Python est fonctionnel là où le basic ne l'est pas (lambda-fonctions, fonctions en tant que valeur de 1ere classe). Python a des décorateurs, des itérateurs, des générateurs, des dictionnaires, des objets, bref des tas de concepts modernes inconnus du basic. Plus globalement python est bien plus riche/puissant que le basic. Presque trop riche pour un débutant.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
Mokona
Messages : 1043
Inscription : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: Python est-il le Basic des années 2020 ?

Message par Mokona »

Sans pinailler sur les détails, il me semble que la question était au global : le Python n'aurait-il pas une fonction similaire dans la découverte de la programmation à celle qu'avait le BASIC dans les années 80 ?

Et je réponds sans aucune hésitation que oui.

Mais ce n'est pas le seul. Certains disent que cette fonction est remplie de meilleure manière par le Javascript (et encore une fois, on parle de « fonction de découverte » pas de détail de langage) en arguant que Javascript a ceci d'intéressant que ça fonctionne partout où il y a un navigateur et éditeur de texte, et donc partout sur une machine sans rien installer de plus. Et je suis d'accord avec ça aussi (même si l'idée que le premier rapport à un langage de programmation puisse être à travers Javascript me donne des frissons... mais bon).


Ensuite :

- « car ce sont tous les deux des langages interprétés... », non. Pas tout à fait. SI on se limite au BASIC des années Basic Microsoft tels que présents sur les 8 bits en ROM, oui. Ça reste une sous-partie, donc... allez, ok. Python, c'est un peu plus compliqué. C'est un langage compilé dans un langage intermédiaire qui est ensuite exécuté dans une machine virtuelle. Mais ce uniquement si on parle de son implémentation la plus répandues (CPython).

- « Le BASIC transforme ligne [...] par des jetons », c'est le fonctionnement du Microsoft Basic et des quelques autres de l'époque, mais ce n'est pas intrinsèquement lié au BASIC. En fait, avant la version de Microsoft, le BASIC ne fonctionnait pas comme ça, puisqu'il était compilé à la volée.

- « ...interpréteur sous Python, c'est la partie interactive qui permet de saisir du texte », cette partie s'appelle le REPL (Read Eval Print Loop), qui est le terme générique pour les langages interactifs (le terme remonte au LISP dans les années 60).

- « Python n'a pas de type pour les variables », Python est dynamiquement typé, mais est bien typé.

Code : Tout sélectionner

>>> a = 1
>>> type(a)
<class 'int'>
- « Python est fonctionnel », Python est multi-paradigme. Il a tout ce qu'il faut pour écrire un programme avec un paradigme fonctionnel, impératif ou orienté objet.

Le fait que Python soit bien plus étoffé qu'un BASIC des années 80 ne l'empêche pas d'être un langage accessible aux débutants (je l'enseigne à des débutants avec, je l'espère, une certaine réussite). Ses parties avancées ne se mettent pas sur le chemin des concepts de base que verront les débutants.
Zebulon
Messages : 2806
Inscription : 02 nov. 2020 14:03

Re: Python est-il le Basic des années 2020 ?

Message par Zebulon »

Ton sujet fait écho à ce fil récemment créé sur le forum vert.

C'est sûr que le "Basic" ne fait plus recette pourtant il n'a pas que des inconvénients. Comme je le disais sur l'autre fil, il y a des fondamentaux de la construction d'un programme qui sont assez invariables selon les langages: des entrées/sorties, des affectations, des boucles, des conditions, des sous-programmes/procédures/fonctions, etc.

Mais finalement le monde se divise en deux catégories : ceux qui savent comment on inverse la valeur des variables A et B et ceux qui ne savent/trouvent/comprennent pas. Et je suis convaincu que c'est d'abord un exercice mental indépendant de la mode des langages.

Des langages de programmation j'en ai vu passer, "eux passent moi je reste" comme disent certains, et j'en verrai encore passer. Python tombera en désuétude et un autre langage émergera.

Ce qui est amusant c'est de revoir la tortue (j'ai pas dit Logo) pointer le bout de son nez dans Python sur les Numworks par exemple et dans les FX-92 collège... rigolo en 2023 non ?

EDIT suite aux diverses contributions ci-dessous je révise mon jugement.

Finalement le monde se divise en trois catégories :
- les happy-few qui connaissent des techniques incroyables pour inverser la valeur de deux variables A et B, 8)
- la masse de ceux qui savent comment on inverse la valeur des variables A et B avec une variable intermédiaire C, :P
- et les perdus pour la cause qui n'ont toujours pas compris ce qu'était une variable. :?
Dernière modification par Zebulon le 13 avr. 2023 09:20, modifié 3 fois.
Avatar de l’utilisateur
Mokona
Messages : 1043
Inscription : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: Python est-il le Basic des années 2020 ?

Message par Mokona »

Pour le coup, inverser le contenu de deux variables en Python ne demande pas de variable intermédiaire (mais on peut le faire avec une variable intermédiaire si on veut, rien ne l'en empêche).
Avatar de l’utilisateur
hlide
Messages : 3507
Inscription : 29 nov. 2017 10:23

Re: Python est-il le Basic des années 2020 ?

Message par hlide »

Mokona a écrit : 12 avr. 2023 19:19 - « Le BASIC transforme ligne [...] par des jetons », c'est le fonctionnement du Microsoft Basic et des quelques autres de l'époque, mais ce n'est pas intrinsèquement lié au BASIC. En fait, avant la version de Microsoft, le BASIC ne fonctionnait pas comme ça, puisqu'il était compilé à la volée.
Attention, je pensais que l'on parlait des BASIC des années 80 sur des microordinateurs 8-bit avec une limitation forte en DRAM vu qu'ils contiennent le BASIC en ROM. C'est quand même sur ceux-là que la plupart des débutants de cette époque ont fait leurs armes.
Mokona a écrit : 12 avr. 2023 19:19 - « ...interpréteur sous Python, c'est la partie interactive qui permet de saisir du texte », cette partie s'appelle le REPL (Read Eval Print Loop), qui est le terme générique pour les langages interactifs (le terme remonte au LISP dans les années 60).
Effectivement. Dans les deux cas, ça reste de l'interprétation à la base car on ne compile pas en code natif. Là encore, je fais allusion au Python traditionnel, pas aux versions qui peuvent compiler en natif.
Mokona a écrit : 12 avr. 2023 19:19 Le fait que Python soit bien plus étoffé qu'un BASIC des années 80 ne l'empêche pas d'être un langage accessible aux débutants (je l'enseigne à des débutants avec, je l'espère, une certaine réussite). Ses parties avancées ne se mettent pas sur le chemin des concepts de base que verront les débutants.
Tout-à-fait. C'est toujours un plaisir de découvrir comment arriver à faire quelque chose de plus élégant avec ce langage tout en étant considérablement accessible sur des concepts de base.
Zebulon
Messages : 2806
Inscription : 02 nov. 2020 14:03

Re: Python est-il le Basic des années 2020 ?

Message par Zebulon »

Mokona a écrit : 12 avr. 2023 20:29 Pour le coup, inverser le contenu de deux variables en Python ne demande pas de variable intermédiaire (mais on peut le faire avec une variable intermédiaire si on veut, rien ne l'en empêche).
Oui mais pour le coup ce n'est pas très didactique car pour inverser le contenu de deux octets dans une RAM il faut un conteneur intermédiaire. Je suis sans doute un peu old school mais je pense que si on n'a pas un minimum de bagage sous-jacent on passe à côté de quelque chose. Le développement "clicodrome" quoi... next next next ok.
Avatar de l’utilisateur
Mokona
Messages : 1043
Inscription : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: Python est-il le Basic des années 2020 ?

Message par Mokona »

Pour l'inversion de contenu de variable, tout dépend du niveau d'abstraction auquel on veut se placer (c'est bien en exercice de reflexion cependant, je suis d'accord).


Pour le CPython (l'implémentation classique) et son type d'exécution, voici une session reproductible dans le REPL :

Code : Tout sélectionner

>>> def f(x):  # Définition d'une fonction
...     return x*2
... 
>>> f(4)  # Vérification que cette fonction... fonctionne
8
>>> f.__code__  # Inspection d'un membre contenant le code compilé.
<code object f at 0x7f930c21dc60, file "<stdin>", line 1>
>>> f.__code__.co_code  # Et plus exactement, du bytecode
b'|\x00d\x01\x14\x00S\x00'
>>> import dis  # Importation du désassembleur de code intermédiaire
>>> dis.dis(f)  # Désassemblage du code intermédiaire
  1           0 LOAD_FAST                0 (x)
              2 LOAD_CONST               1 (2)
              4 BINARY_MULTIPLY
              6 RETURN_VALUE
Avatar de l’utilisateur
hlide
Messages : 3507
Inscription : 29 nov. 2017 10:23

Re: Python est-il le Basic des années 2020 ?

Message par hlide »

Zebulon a écrit : 12 avr. 2023 22:26 car pour inverser le contenu de deux octets dans une RAM il faut un conteneur intermédiaire.
tu en es sûr ? car c'est vieux comme le monde (en C ici) :

Code : Tout sélectionner

x ^= y; y ^= x; x ^= y;
Point de variable intermédiaire… un triple XOR entre les deux variables suffisent à inverser.
Zebulon
Messages : 2806
Inscription : 02 nov. 2020 14:03

Re: Python est-il le Basic des années 2020 ?

Message par Zebulon »

Bien sûr tu vas apprendre le triple XOR à un débutant en informatique. :roll:
__sam__
Messages : 7989
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Python est-il le Basic des années 2020 ?

Message par __sam__ »

Et même une addition et deux soustractions conviennent, cf le Hacker's Delight section 2-20:
Capture.PNG
Capture.PNG (88.19 Kio) Consulté 4006 fois
Pour le C je le ferais ainsi, sinon ca n'est pas du vrai C ;)

Code : Tout sélectionner

x ^= (y ^= (x ^= y));
(attention les compilos trop modernes qui ont oubliés ce qu'est le C n'aiment pas ca)
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
hlide
Messages : 3507
Inscription : 29 nov. 2017 10:23

Re: Python est-il le Basic des années 2020 ?

Message par hlide »

Et pour le coup, en faisant ainsi, tu inverses la priorité d'ordre exécution (de la droite vers la gauche au lieu de la gauche vers la droite) avec :

Code : Tout sélectionner

x ^= (y ^= (x ^= y));
Les pauvres débutants déboussolés ! :lol:
Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3054
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: Python est-il le Basic des années 2020 ?

Message par Papy.G »

C'est un bel exercice, mais l'énoncé me donne l'impression qu'il est question de changer deux variables en une seule opération, c'est peut-être un biais cognitif. :oops:

De plus, il faut voir le code réellement exécuté par le processeur: Ne nécessite-t'il réellement pas de stockage dans une valeur intermédiaire?
hlide a écrit : 12 avr. 2023 23:17Les pauvres débutants déboussolés ! :lol:
Perso, ça me passe par-dessus la tête, n'ayant pas l'intention d'apprendre le Python, cela dit, ce sont des astuces intéressantes à savoir, même si en code 8051, ça risque de prendre trois fois le temps (peut-être pas tant avec les triple XOr), autant disposer d'un espace intermédiaire de stockage. :mrgreen:
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
__sam__
Messages : 7989
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Python est-il le Basic des années 2020 ?

Message par __sam__ »

De plus, il faut voir le code réellement exécuté par le processeur: Ne nécessite-t'il réellement pas de stockage dans une valeur intermédiaire?
Chez Motorola depuis le 6809 (au moins) jusqu'aux 680x0 on a l'instruction EXG pour échanger deux registres.

Code : Tout sélectionner

Perso, ça me passe par-dessus la tête, n'ayant pas l'intention d'apprendre le Python, 
C'était du C. L'ordre d'execution est donné par les parenthèses.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Répondre