Présentation de Bython : Python avec des accolades sans les espaces blancs
Bython est un préprocesseur Python qui traduit les accolades en indentation
Le 2024-03-11 19:30:55, par Jade Emy, Communiqués de presse
Voici la présentation de Bython, le langage Python avec des accolades. Bython est un préprocesseur Python qui traduit les crochets en indentation. La raison ? Parce que Python est génial, mais les espaces blancs sont horribles.
Caractéristiques principales
Exemple de code
Installation de Bython
Vous pouvez installer Bython directement depuis PyPI en utilisant pip (avec ou sans sudo -H, selon votre installation de Python) :
Si, pour une raison ou une autre, vous souhaitez l'installer à partir du dépôt git, vous pouvez utiliser git clone et faire une installation locale à la place :
La version git est parfois un peu en avance sur la version PyPI, mais pas de manière significative.
Pour désinstaller, lancez simplement
ce qui annulera tous les changements.
Introduction rapide
Bython fonctionne en traduisant d'abord les fichiers Bython (terminaison de fichier suggérée : .by) en fichiers Python, puis en utilisant Python pour les exécuter. Vous avez donc besoin d'une installation fonctionnelle de Python pour que Bython fonctionne.
Pour exécuter un programme Bython, il suffit de taper
pour exécuter source.by avec arg1, arg2, ... comme arguments de ligne de commande. Si vous voulez plus de détails sur la façon d'exécuter les fichiers Bython (drapeaux, etc.), tapez
pour afficher la page d'aide intégrée. Vous pouvez également consulter la page de manuel en tapant
Bython comprend également un traducteur de Python vers Bython. Il est accessible via la commande py2by :
Cela créera un fichier Bython appelé test.by. Une explication complète de py2by est disponible en tapant
ou en consultant la page de manuel :
Structure du dépôt
Pour l'instant, Bython est écrit en Python. Le dépôt git est structuré en 4 répertoires :
Source : Bython
Et vous ?
Quel est votre avis sur ce projet ?
Pensez-vous que Bython soit crédible ou pertinent ?
Voir aussi :
Python 3.13 ajoute un compilateur JIT qui pourrait améliorer les performances du langage d'environ 9 %, mais l'annonce suscite des réactions mitigées
Popularité des langages sur GitHub : Python, Go et JavaScript en progression, tandis que Java et C++ sont en légère baisse mais restent dans le Top 5, d'après GitHut 2.0
Caractéristiques principales
- "Oubliez" l'indentation. Vous devriez toujours écrire un beau code, mais si vous vous trompez avec les tabulations/espaces, ou si vous copiez un morceau de code dans un autre qui utilise un style d'indentation différent, il ne sera pas cassé.
- Utilise Python pour l'interprétation, ce qui signifie que tous vos modules existants, comme NumPy et Matplotlib, fonctionnent toujours.
Exemple de code
Code : |
1 2 3 4 5 6 7 8 9 | def print_message(num_of_times) { for i in range(num_of_times) { print("Bython is awesome!"); } } if __name__ == "__main__" { print_message(10); } |
Installation de Bython
Vous pouvez installer Bython directement depuis PyPI en utilisant pip (avec ou sans sudo -H, selon votre installation de Python) :
Code : |
$ sudo -H pip3 install bython
Code : |
1 2 3 | $ git clone https://github.com/mathialo/bython.git $ cd bython $ sudo -H pip3 install . |
Pour désinstaller, lancez simplement
Code : |
$ sudo pip3 uninstall bython
Introduction rapide
Bython fonctionne en traduisant d'abord les fichiers Bython (terminaison de fichier suggérée : .by) en fichiers Python, puis en utilisant Python pour les exécuter. Vous avez donc besoin d'une installation fonctionnelle de Python pour que Bython fonctionne.
Pour exécuter un programme Bython, il suffit de taper
Code : |
$ bython source.by arg1 arg2 ...
Code : |
$ bython -h
Code : |
$ man bython
Code : |
$ py2by test.py
Code : |
$ py2by -h
Code : |
$ man py2by
Structure du dépôt
Pour l'instant, Bython est écrit en Python. Le dépôt git est structuré en 4 répertoires :
- bython contient un paquetage Python contenant l'analyseur et d'autres utilitaires utilisés par le script principal
- etc contient les pages de manuel et d'autres fichiers auxiliaires
- scripts contient les scripts Python exécutables, c'est-à-dire ceux qui sont exécutés à partir de l'interpréteur de commandes
- testcases contient quelques exemples de fichiers *.by et *.py destinés à tester l'implémentation.
Source : Bython
Et vous ?
Voir aussi :
-
MingolitoMembre extrêmement actifEt non ça n'est pas un trolldi
Mais ça aurait pule 12/03/2024 à 3:50 -
Sve@rExpert éminent séniorCa veut dire qu'avec bython on pourra revenir aux codes immondes qu'on avait déjà en C dans le style...
Code python : 1
2
3
4
5
6
7
8
9def print_message(num_of_times) { for i in range(num_of_times) { print("Bython is awesome!"); } } if __name__ == "__main__" { print_message(10); }
Le but des tabulations de Python était justement de ne pas pouvoir écrire comme ci-dessus, de forcer à avoir un code dans lequel les blocs apparaissent bien distinctement. Oui effectivement parfois quand je récupère un code que j'insère dans le mien j'obtiens une exception qui parle de mélange espaces/tabulations mais franchement c'est pas la mort à reformater.
Et là bython arrive comme si c'était le truc qu'on attendait tous et pète tous les fondements de Python. Bon, pas grave, faire et défaire c'est toujours travailler...le 12/03/2024 à 8:05 -
popoExpert confirméJ'espère que ça ne transforme pas les accolades d'un dictionnaire
Blagues à part, pour moi l'indentation est la force principale de python.
Cela me parait une mauvaise idée de vouloir l'enlever (ou la remplacer).le 12/03/2024 à 10:33 -
prisme60Membre régulierLe problème de l'indentation concerne surtout les fonctions Python qui font plus de 100 lignes. On n'arrive plus à s'y retrouver. Faut dire aussi qu'une fonction trop longue manifeste généralement un mauvais codage.le 12/03/2024 à 9:52
-
MPython AlaplanchaMembre expérimentéQuel est votre avis sur ce projet ?
Pour moi c'est.
Si besoin, un Ide peut éventuellement re indenter un code...le 12/03/2024 à 6:09 -
VinsSExpert éminentNotez que les coredevs de Python y avaient pensé.
Code : 1
2
3
4
5
6
7vincent@djoliba:~$ python3 Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> from __future__ import braces File "<stdin>", line 1 SyntaxError: not a chance >>>
le 12/03/2024 à 16:58 -
esperantoMembre émériteLe vrai problème pour moi c'est que justement, l'indentation peut dépendre de l'éditeur. Or, je peux être amené d'un client à l'autre à ne pas utiliser le même éditeur (ne serait-ce que parce que chaque client m'impose d'utiliser sa machine où il installe un éditeur bridé) tout en voulant ré-utiliser du code que j'ai mis en open source. Du coup comment ça se passe si un IDE utilise des tabulations et l'autre des espaces?
Bien sûr tu peux installer un reformatteur en amont du git et c'est bien comme ça que je procède quand je vais partager mon code sur Github. Mais si j'utilise un reformatteur automatique, c'est bien pour ne pas m'astreindre à respecter le format au moment où je suis en train d'écrire mon code. Sauf qu'en Python le format fait partie de la syntaxe.
Du coup j'aime bien l'idée. Mais tant qu'à faire, je ne suis pas super fan des langages accumulant les accolades, je préfère la syntaxe if ... end if qu'on trouve en Ada par exemple. ça permet d'être certain qu'on a bien fermé ce qu'on voulait et pas l'instruction du dessus. Et puis si Python est un langage pédagogique, ça permet de conserver cet aspect.
Peut-être des volontaires pour créer Aython du coup?le 14/03/2024 à 8:37 -
papajokerExpert confirméJustement non ! une "tabulation" pour python peut-être uniquement 2 espaces .. 6 espaces ou bien une tabulation et en plus il est possible de mélanger le tout dans le même fichier
Donc, pour moi, python est juste un truc bâtard (pour débutants) et de plus, pourquoi imposer un caractère (":"de début de block si les tabulations sont si bonnes ?
Et puisque je ne vais jamais coder sans tabulation, en fait le seul changement pour moi avec python est l'absence de fin de block (caractère ou mot clé). Donc mon seul changement est : un code plus compact et donc un peu plus difficile à lirele 14/03/2024 à 18:03 -
Sve@rExpert éminent séniorPoint de repère permettant à l'interpréteur de se repérer plus facilement (donc plus rapidement) et éventuellement d'écrire les blocs de façon plus lisible
Code python : 1
2
3
4
5def fct(param1, param2, param3): ...blablabla... for (x, y) in ((1, 2), (3, 4), (5, 6), (7, 8), (9, 10)): # Et tant pis si j'ai besoin d'inhiber (3, 4) pour une raison ou une autre... ...(traitement x et y)...
Code python : 1
2
3
4
5
6
7
8
9
10
11
12
13
14def fct( param1, # Ce paramètre sert à truc param2, # Ce paramètre sert à chose param3, # Ce paramètre sert à machin ): ...blablabla... for (x, y) in ( (1, 2), # (3, 4), # Je l'enlève pour un test... (5, 6), (7, 8), (9, 10), ): ...(traitement x et y)... # Hé oui, quand le traitement tient sur une ligne on n'est pas obligé de le mettre en dessous (merci les ":")...
Sans les ":" tu es coinçé. Et peut-être qu'on peut écrire un interpréteur qui s'en sortira quand-même sans eux mais il sera dix fois plus lourd donc traitera le code 100 fois plus lentement (loi des carrés)...
Il n'y a rien de magique ni de parfait. Par exemple prisme60 a soulevé un point intéressant concernant les sous-blocs multiples qui, de fait, rend difficile de se repérer
Code python : 1
2
3
4
5
6
7
8
9
10def toto(): if ...: while ...: truc truc truc for ...: chose chose autre machin...
Rossum a tenté une idée, mais cette idée ne peut marcher que si les dev y mettent aussi un peu du leur...
Code python : 1
2
3
4
5
6
7
8
9
10
11
12
13
14def toto(): if ...: while ...: truc truc truc for ...: chose chose # for # while # if autre machin... # Ne voulais-je pas le mettre dans le if ? Pourquoi est-il alors sous le commentaire fermant ??? # toto()
le 14/03/2024 à 21:51 -
TotoParisMembre expérimentéLes IDE Python peuvent très bien faire une indentation propre, on le fait bien en Java...le 12/03/2024 à 23:47