IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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 , par Jade Emy

31PARTAGES

9  0 
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

  • "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 : Sélectionner tout
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 : Sélectionner tout
$ sudo -H pip3 install bython
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 :

Code : Sélectionner tout
1
2
3
$ git clone https://github.com/mathialo/bython.git
$ cd bython
$ sudo -H pip3 install .
La version git est parfois un peu en avance sur la version PyPI, mais pas de manière significative.

Pour désinstaller, lancez simplement

Code : Sélectionner tout
$ sudo pip3 uninstall bython
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

Code : Sélectionner tout
$ bython source.by arg1 arg2 ...
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

Code : Sélectionner tout
$ bython -h
pour afficher la page d'aide intégrée. Vous pouvez également consulter la page de manuel en tapant

Code : Sélectionner tout
$ man bython
Bython comprend également un traducteur de Python vers Bython. Il est accessible via la commande py2by :

Code : Sélectionner tout
$ py2by test.py
Cela créera un fichier Bython appelé test.by. Une explication complète de py2by est disponible en tapant

Code : Sélectionner tout
$ py2by -h
ou en consultant la page de manuel :

Code : Sélectionner tout
$ 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 ?

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

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Mingolito
Membre extrêmement actif https://www.developpez.com
Le 12/03/2024 à 3:50
Et non ça n'est pas un trolldi

Mais ça aurait pu

8  0 
Avatar de Sve@r
Expert éminent sénior https://www.developpez.com
Le 12/03/2024 à 8:05
Ca veut dire qu'avec bython on pourra revenir aux codes immondes qu'on avait déjà en C dans le style...
Code python : Sélectionner tout
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);
}
... et qu'on y reviendra fatalement.

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...
8  0 
Avatar de popo
Expert confirmé https://www.developpez.com
Le 12/03/2024 à 10:33
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).
7  0 
Avatar de prisme60
Membre régulier https://www.developpez.com
Le 12/03/2024 à 9:52
Le 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.
5  0 
Avatar de MPython Alaplancha
Membre expérimenté https://www.developpez.com
Le 12/03/2024 à 6:09
Quel est votre avis sur ce projet ?
Pour moi c'est .
Si besoin, un Ide peut éventuellement re indenter un code...
2  0 
Avatar de VinsS
Expert éminent https://www.developpez.com
Le 12/03/2024 à 16:58
Notez que les coredevs de Python y avaient pensé.
Code : Sélectionner tout
1
2
3
4
5
6
7
vincent@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
>>>
2  0 
Avatar de esperanto
Membre émérite https://www.developpez.com
Le 14/03/2024 à 8:37
Citation Envoyé par TotoParis Voir le message
Les IDE Python peuvent très bien faire une indentation propre, on le fait bien en Java...
Le 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?
2  1 
Avatar de papajoker
Expert confirmé https://www.developpez.com
Le 14/03/2024 à 18:03
Citation Envoyé par esperanto Voir le message
Sauf qu'en Python le format fait partie de la syntaxe
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 à lire
1  0 
Avatar de Sve@r
Expert éminent sénior https://www.developpez.com
Le 14/03/2024 à 21:51
Citation Envoyé par papajoker Voir le message
et de plus, pourquoi imposer un caractère (":") de début de block si les tabulations sont si bonnes ?
Point 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 : Sélectionner tout
1
2
3
4
5
def 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 : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def 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)...

Citation Envoyé par papajoker Voir le message
un peu* : comme si les tabulations étaient la recette magique pour avoir un code clair
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 : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
def toto():
	if ...:
		while ...:
			truc
			truc
			truc
			for ...:
				chose
				chose
	autre machin...
Effectivement pour peu que le while et for grossissent un peu, "autre machin" devient difficile à positionner (oups, je voulais le mettre dans le if !!!).
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 : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def 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()
1  0 
Avatar de TotoParis
Membre expérimenté https://www.developpez.com
Le 12/03/2024 à 23:47
Les IDE Python peuvent très bien faire une indentation propre, on le fait bien en Java...
0  0