Python est-il le Basic des années 2020 ?
Modérateurs : Papy.G, fneck, Carl
Python est-il le Basic des années 2020 ?
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 ?
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...
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 ?
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...
Notator est le nom d'un programme séquenceur Midi et notation musicale pour Atari ST(e) (puis Mac).
Re: Python est-il le Basic des années 2020 ?
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.
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.
-
- Messages : 7989
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: Python est-il le Basic des années 2020 ?
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
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
- 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 ?
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é.
- « 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.
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'>
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.
Re: Python est-il le Basic des années 2020 ?
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,
- la masse de ceux qui savent comment on inverse la valeur des variables A et B avec une variable intermédiaire C,
- et les perdus pour la cause qui n'ont toujours pas compris ce qu'était une variable.
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,
- la masse de ceux qui savent comment on inverse la valeur des variables A et B avec une variable intermédiaire C,
- 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.
- 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 ?
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).
Re: Python est-il le Basic des années 2020 ?
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 - « 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.
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.
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.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.
Re: Python est-il le Basic des années 2020 ?
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.
- 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 ?
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 :
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
Re: Python est-il le Basic des années 2020 ?
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;
Re: Python est-il le Basic des années 2020 ?
Bien sûr tu vas apprendre le triple XOR à un débutant en informatique.
-
- Messages : 7989
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: Python est-il le Basic des années 2020 ?
Et même une addition et deux soustractions conviennent, cf le Hacker's Delight section 2-20:
Pour le C je le ferais ainsi, sinon ca n'est pas du vrai C (attention les compilos trop modernes qui ont oubliés ce qu'est le C n'aiment pas ca)
Code : Tout sélectionner
x ^= (y ^= (x ^= y));
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
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: Python est-il le Basic des années 2020 ?
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 :
Les pauvres débutants déboussolés !
Code : Tout sélectionner
x ^= (y ^= (x ^= y));
- 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 ?
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.
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?
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?
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.
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Demandez-en plus, ou faites-le vous-même.
-
- Messages : 7989
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: Python est-il le Basic des années 2020 ?
Chez Motorola depuis le 6809 (au moins) jusqu'aux 680x0 on a l'instruction EXG pour échanger deux registres.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?
Code : Tout sélectionner
Perso, ça me passe par-dessus la tête, n'ayant pas l'intention d'apprendre le Python,
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
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos