Moins de séparateurs < ; > dans les lignes de code

toyo2020 Messages postés 58 Date d'inscription jeudi 15 octobre 2020 Statut Membre Dernière intervention 5 avril 2024 - 24 mars 2024 à 11:37
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 6 avril 2024 à 14:20

Bonjour en VisualBasic j'utilise très rarement le séparateur < ; > afin d'écrire deux instruction sur la même ligne et on n'a pas besoin de < ; > en fin de ligne. En VisualBasic < fin de ligne = nouvelle instruction >

Je constate que en Golang le séparateur < ; > est présent en fin de chaque ligne, ça devient plus lourd visuellement mais es-ce que cela sert a quelque chose ?

En Golang on écrit parfois une même instruction sur plusieurs lignes et dans ce cas la règle < fin de ligne = nouvelle instruction > devient une contrainte !

Qu'en est-il dans d'autres langages comme JAVA ou Python ? Merci d'avance de vos réponses.


Linux / Firefox 118.0

A voir également:

6 réponses

blux Messages postés 26010 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
24 mars 2024 à 19:59

Salut,

ça devient plus lourd visuellement mais es-ce que cela sert a quelque chose ?
Ca facilite le boulot du parser de code qui sait quand une ligne est terminée.

Par contre, je viens de regarder la page wikipedia de ce langage, je ne vois pas de ; dans les exemples fournis.


1
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
24 mars 2024 à 13:47

En VB, pour mettre 2 instructions sur une ligne d'est ":", un retour à la ligne signifie fin d'instruction sauf si " _" qui indique un multiligne.

En Python il n'est pas possible de mettre plusieurs instructions sur une ligne, les blocs de code se font avec l'indentation (attention, espace != tabulation) pour le multiligne, c'est avec " \" ou chaine en triple quote """.(retour à la ligne).."""

Pour les langages les plus commun, ils se basent sur un syntaxe de type C (C, C++, C#, Java, JS, PHP, ...) :
Fin d'instruction avec ";" même si une seule instruction, si absent, cela signifie multiligne.
Et bloc de code avec les accolages { }

Par contre pour Golang, en regardant des exemples en ligne, je ne vois pas les ";", pour une instruction multiligne il suffit de terminer par un opérateur.


0
yg_be Messages postés 22728 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476
24 mars 2024 à 15:03

D'autres façons de faire du multi lignes en python:

a=(1,
       2)
print(a)
a=(
    "a"
    "b"
    "c")
print(a)

0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié le 26 mars 2024 à 11:19

Bonjour

Java 

Toute instruction doit se terminer par un point virgule (au même titre qu'en C ou qu'en C++).

  • Vu que le compilateur raisonne sur les point virgules pour séparer les instructions, les points virgules sont impératifs. Il n'y a donc aucune contrainte sur les retours à la ligne dans la mesure ou ceux-ci ne sont pas pris en compte par le compilateur pour séparer les instructions. Tu peux donc écrire une ou plusieurs instructions par ligne.
  • Comme Java/C/C++ reposent sur des accolades pour délimiter des blocs, il n'y a pas de contrainte d'indentation comme en python. 

Python

Les concepteurs de python ont jugé que l'indentation était une bonne chose, que les accolades étaient lourdes, et qu'écrire plusieurs instructions sur une ligne était un besoin assez rare. Pour toutes ces raisons, les accolades ont disparues, mais l'indentation est stricte sans quoi le langage deviendrait ambigu.

En python, l'indentation est primordiale pour savoir à quel bloc se raccroche une instruction. Par exemple, ces deux exemples ne produisent pas le même résultat :

if False:
    print("a")
print("b")
# Seul b est affiché
if False:
    print("a")
    print("b")
# Ni a ni b ne sont affichés

En Python il n'est pas possible de mettre plusieurs instructions sur une ligne, les blocs de code se font avec l'indentation

Même si c'est peu commun, il reste possible d'écrire plusieurs instructions sur une même ligne en les séparant par un ";", comme le montre cet exemple :

print("a"); print("b"); print("c")
print("d")

Enfin, comme indiqué par yg_be, on peut répartir sur plusieurs lignes du code python, du moment que ledit code est compris entre des parenthèses (dans une expression, dans un appel de fonction ou dans un générateur), des crochets (dans une list comprehension), ou des paires d'accolades (dans un dict comprehension ou un set comprehension), comme le montre cet exemple :

my_list = [
    i ** 2
    for i in range(10)
]

my_set = {
    i ** 2
    for i in range(10)
}

my_dict = {
    i: i ** 2
    for i in range(10)
}

if (
    len(my_list) == 10 and
    len(my_set) == 10 and
    len(my_dict) == 10
):
    print("10 éléments partout")

Bonne chance

0
toyo2020 Messages postés 58 Date d'inscription jeudi 15 octobre 2020 Statut Membre Dernière intervention 5 avril 2024
24 mars 2024 à 19:25

Pour les langages les plus commun, ils se basent sur un syntaxe de type C (C, C++, C#, Java, JS, PHP, ...) :
Fin d'instruction avec ";" même si une seule instruction, si absent, cela signifie multiligne.

Visuellement NHenry je trouve lourd le < ; > à la fin de chaque ligne

En C# et JAVA a t-on vraiment besoin visuellement d'écrire une instruction sur deux lignes ?

Bien sur l'éditeur devrait ne pas limiter le nombre de caractère en largeur (par ligne)  afin de ne pas être pénalisé si on souhaite écrire une instruction longue.

-1
yg_be Messages postés 22728 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476
24 mars 2024 à 20:00

Si tu veux vraiment que ton avis soit écouté, je pense que le mieux, c'est que tu crées ton propre langage de programmation.

1
toyo2020 Messages postés 58 Date d'inscription jeudi 15 octobre 2020 Statut Membre Dernière intervention 5 avril 2024
2 avril 2024 à 07:51

... crées ton propre langage dans lequel y'aura pas d'accolade, pas de end ni de then, pas de ;. Son et Couleurs y seront des types primitifs et enfin il pourra interagir avec des GSBDD SQL sans sql, avec en SQL avec les GSBDD NoSQL...

Si je créerais un langage Whismeril il y aurait des accolades et des IF THEN ... mais le < ; > serait moins présent car inutile en fin de ligne.

Les types primitifs comme < couleur > & < nombre complexe > & < fraction N/D > & < phonème > ... seraient très nombreux même si ce n'est pas le cas théoriquement pour chacun d'entre eux.

L'indentation serait libre et l'accès aux base de donnée serait plus direct sans que SQL soit remis en cause, je n'ai rien a redire de SQL qui me va très bien.

-1
yg_be Messages postés 22728 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476
2 avril 2024 à 14:37

Si tu souhaitais suivre la syntaxe de la langue française, tu ne devrais jamais utiliser le conditionnel après "si".

2
blux Messages postés 26010 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289 > yg_be Messages postés 22728 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024
2 avril 2024 à 16:06

:-)))

0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749 > blux Messages postés 26010 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024
3 avril 2024 à 16:33

@toyo2020 StatutMembre Je pense que la question que tout le monde se pose, c'est où veux-tu en venir ?

  • Personne ici n'a de pouvoir de décision sur la syntaxe des langages de programmation communément utilisés.
  • Techniquement il n'est pas si simple de définir son propre langage. Nous avons également montré que des langages tels que le C/C++ ne permettent pas de faire tout ce qu'on pourrait imaginer au niveau du pré-compilateur.
  • Donc peut importe ce que chacun de nous trouve "bien" ou "pas bien", à moins de concevoir un nouveau langage, quel est le but de cette discussion ?
2
yg_be Messages postés 22728 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476 > mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024
3 avril 2024 à 20:29

@toyo2020 StatutMembre Nous ne comprenons pas non si tu poses une question, ou si tu essaies de communiquer tes opinions.

L'un et l'autre sont légitimes, mais le mélange est malvenu.  Si tu peux, essaie donc d'être le plus clair possible dès le départ.

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
toyo2020 Messages postés 58 Date d'inscription jeudi 15 octobre 2020 Statut Membre Dernière intervention 5 avril 2024
5 avril 2024 à 12:39

Nous ne comprenons pas non si tu poses une question, ou si tu essaies de communiquer tes opinions.

Je poses que des questions sur des sujets @yg_be où j'ai interrogations. Quand j'ai une opinion sans hésitation sur un sujet pas alors je n'en parle pas.

-1
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
6 avril 2024 à 14:20

Est-ce que nous avons répondu à tes questions ? Et sinon quelles sont tes interrogations ?

0
toyo2020 Messages postés 58 Date d'inscription jeudi 15 octobre 2020 Statut Membre Dernière intervention 5 avril 2024
1 avril 2024 à 20:35

En python, l'indentation est primordiale pour savoir à quel bloc se raccroche une instruction

Je le savais déjà, un de mes amis adore python. Pour moi c'est une catastrophe car on perd en liberté coté indentation. Qu'en penses les lecteurs de cette conversation ?

Toute instruction doit se terminer par un point virgule (en JAVA C++)

Je suis d'accord de garder < ; > entre deux instructions sur la même ligne mamiemando mais on pourrais se passer de celle en fin de ligne pour alléger visuellement le tout et cela sans être pénalisé pour écrire le code que l'on souhaite !

Si tu veux vraiment que ton avis soit écouté, je pense que le mieux, c'est que tu crées ton propre langage de programmation

Avant cela yg_be il faut bien se renseigner sur ce qui pertinent ou pas comme dans cette conversation.

-3
yg_be Messages postés 22728 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476
1 avril 2024 à 20:55

Comme lecteur de cette conversation, je pense que, si tu as réellement des suggestions innovantes, tu pourras les mettre en valeur au mieux en proposant ton propre langage d programmation.

Sinon, chaque langage a des structures en place pour le faire évoluer.  Cela se passe à des années lumières de ce forum.   Ce forum a plutôt comme objectif de se soutenir entre participants, pas de changer la réalité autour de nous.

2
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931 > yg_be Messages postés 22728 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024
1 avril 2024 à 22:14

Avant cela yg_be il faut bien se renseigner sur ce qui pertinent ou pas comme dans cette conversation.

Tout dépend du point de vue, personnellement, je n'ai pas trouvé ta question initiale pertinente, raison pour laquelle, jusque-là, je me suis abstenu.

Un peu comme d'autres avant d'ailleurs, genre les bases de données, c'est mieux en java qu'en sql... (ou l'inverse, je ne sais plus).

Ou encore pourquoi son ou couleur ne sont pas des types primitifs en C++, à part bien sûr qu'ils n'ont pas de valeurs primitives (ben si t'as la réponse pourquoi poser la question...)

Tu n'a jamais voulu faire en sorte que les feux rouges soit violets (c'est du même acabit)?

Il y a d'excellentes raisons à la présence de ce ; en fin d'instruction. Certaines sont historiques, mais ça a perduré parce que d'autres sont encore d'actualité, par exemple le fait que le compilateur se base sur ces 2 points pour fonctionner (comme mentionnée par @mamiemando StatutModérateur). Et pour ces langages, c'est comme ça, un point c'est tout. Soit, tu fais avec, soit... y'a Python, ha mais t'aimes pas non plus, faut être rigoureux avec l'indentation. Tu vois, moi, je n'aime pas python parce qu'il n'y a pas les accolades et les ; et aussi parce que c'est du typage dynamique... Par contre, la rigueur avec l'indentation, ça me va bien.

Y'a VB, ha ouais mais c'est trop verbeux, faut mettre des then et des end truc à tout bout de champ.

Du coup, la suggestion de @yg_be StatutContributeur d'écrire ton propre langage est probablement la meilleure de la discussion et tu l'envoies sur les roses.

Faudrait peut-être te remettre un peu en question, soit tu demandes comment faire autrement et y'a pas 36 solutions.

Soit tu penses avoir la vérité, dans ce cas démontre-le, crées ton propre langage dans lequel y'aura pas d'accolade, pas de end ni de then, pas de ;. Son et Couleurs y seront des types primitifs et enfin il pourra interagir avec des GSBDD SQL sans sql, avec en SQL avec les GSBDD NoSQL.

Magique.

3
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
2 avril 2024 à 12:55

Je le savais déjà, un de mes amis adore python. Pour moi c'est une catastrophe car on perd en liberté coté indentation. Qu'en penses les lecteurs de cette conversation ?

  • Dans l'absolu, je pense qu'il vaut mieux être assez strict sur l'indentation, quel que soit le langage, car cela augmente la grande lisibilité.
  • Je ne pense que donner trop de liberté sur la manière doit d'indenter soit primordial (ni une bonne chose quand on voit ce que certain.e.s développeu{r,se}s en herbe peuvent écrire !).
  • Si une syntaxe ne te convient pas, il faut peut être considérer un autre langage équivalent.

Je suis d'accord de garder < ; > entre deux instructions sur la même ligne mamiemando mais on pourrait se passer de celle en fin de ligne pour alléger visuellement le tout et cela sans être pénalisé pour écrire le code que l'on souhaite !

  • C'est ce qui est fait en python (et en VB aussi je crois). Mais ton avis (pas plus que le nôtre d'ailleurs) n'a d'importance : la plupart des langages ont leur propres concepteurs, qui ont fait leur propres choix, et pour lesquels il n'est pas si aisé de revenir en arrière car beaucoup de code a déjà été développé.
  • Je pense que par ailleurs, pour avoir un avis pertinent sur ce genre de question, il vaut mieux avoir des connaissances en compilation, notamment pour vérifier qu'un changement n'engendre pas d'ambiguïtés.
  • Écrire un langage est compliqué. Pour des cas simples, on pourrait en C s'en sortir avec des #define :
#include <stdio.h>
#define si if
#define sinon else
#define entier int
#define retourner return
#define afficher printf

entier main() {
    entier x = 7;
    si (x % 2 == 0) {
        afficher("pair\n");
    } sinon {
        afficher("impair\n");
    }
    retourner 0;
}
  • Malheureusement, ça me paraît bien plus compliqué. Pour certains changement, des expressions régulières pourraient peut-être suffire, or ça ne semble pas exister dans le précompilateur. Du coup, peut-être que tu peux faire un pré-langage, le préparer avec lex et yacc, mais je ne connais pas assez pour t'en dire plus. Quoi qu'il en soit ça me paraît être bien plus d'effort que juste s'habituer à une syntaxe (qui plus est, largement adoptée !).

Bonne chance

1