Normalement, je code en c # ou en Objective-C et j'ai récemment décidé d'apprendre le nouveau langage de programmation d'Apple - Swift.
La première chose que j'ai remarquée est que vous n'avez pas besoin d'ajouter de points-virgules pour terminer une ligne dans Swift mais si vous le faites - du moins d'après ce que j'ai testé - cela n'interfère pas avec le compilateur.
Quand j'écris:
int someNumber = 0;
dans Objective-C, le point-virgule indique au programme que la ligne est terminée et ne passe pas à la ligne suivante.
Avec Swift, je peux déclarer une variable avec
var someNumber:Int = 5
et ne pas ajouter de point-virgule et le système sait que c'est la fin de la ligne.
Qu'est-ce qui permet à certaines langues de faire cela et à d'autres de ne pas le faire? Pourquoi ne pas garder un système uniforme pour ajouter le point-virgule à la fin?
Réponses:
Robert a donné une bonne réponse concernant Swift, je vais essayer d'ajouter un peu plus sur l'analyse en général et pourquoi utiliser ou non des points-virgules.
Lorsque vous compilez le programme, il y a plusieurs étapes avant que votre fichier source ne soit transformé en code exécutable, l'une des premières étant la lecture et l' analyse . Pendant l'analyse, votre code est transformé d'une séquence de caractères en une représentation structurée selon la grammaire de la langue. Pour cela, il est nécessaire que les éléments qui composent votre code (variables, constantes, déclarations, etc.) soient en quelque sorte identifiés et séparés. Lorsque vous faites une déclaration comme:
C'est juste une séquence de caractères qui doit en quelque sorte être tournée vers le concept "créer une" chose "appelée
someNumber
de typeint
et lui assigner0
" .Cela nécessite d'identifier exactement où commence et se termine l'instruction. Imaginez si vous aviez ceci:
Il faudrait savoir que ce sont deux déclarations différentes. Le
;
langage en C est utilisé pour cela, donc l'analyseur lit les caractères jusqu'à ce qu'il en trouve un, et tente de comprendre ce qui vient d'être lu comme une seule instruction. Cela permet, comme l'a dit Robert, d'avoir plusieurs déclarations sur la même ligne, comme:Ce qui a exactement le même effet que de les écrire sur deux lignes.
Dans d'autres langages, comme Python , vous devez placer chaque instruction sur une ligne différente.
Il n'est donc pas nécessaire d'ajouter un
;
, car le langage lui-même vous empêche d'ajouter des instructions sur la même ligne!Pourtant, d'autres langages, comme LISP ou Scheme , ont une façon très différente de regrouper les instructions (ok, ce ne sont pas vraiment des instructions, mais ignorons cela pour l'instant). Vous n'avez donc que des parenthèses pour tout:
Encore une fois, vous n'avez pas besoin
;
juste parce que vous utilisez les mêmes symboles ()
,(
) pour des choses qui dans d' autres langues sont{
,}
,:
, etc. Quelqu'un qui ne connaît que la syntaxe Lisp peut vous demander: Pourquoi avez - vous besoin;
à la fin de vos déclarations ?Juste pour ajouter un exemple plus étrange: OCaml a non seulement un point-virgule à la fin des instructions ... il en a deux!
Pourquoi? Je ne sais pas. :)
Différentes langues sont conçues avec des objectifs différents et des philosophies différentes. Si toutes les langues partageaient la même syntaxe et les mêmes conventions, elles ne vous permettraient probablement que de faire les mêmes choses de la même manière.
la source
Les sauts de ligne sont utilisés à la place des points-virgules pour délimiter la fin d'une instruction.
Dans le guide linguistique: les bases, il dit:
Pourquoi? Parce que c'est ainsi que les concepteurs de langage voulaient le faire.
La deuxième phrase ci-dessus indique pourquoi vous n'avez pas besoin de points-virgules; la plupart des instructions sont sur une seule ligne. Observez cet exemple de tri de bulles; la combinaison d'instructions sur une seule ligne et pas de point-virgule permet une syntaxe très propre qui ressemble à VB, mais moins verbeuse:
Étant donné que les instructions dans Swift se terminent généralement par un saut de ligne, le besoin de points-virgules pour marquer la fin d'une instruction est réduit. Les autres langues utilisant des points-virgules ne fonctionnent pas de cette façon; vous pouvez écrire librement des instructions sur plusieurs lignes, mais le seul moyen pour le compilateur de savoir que l'instruction est terminée est lorsque vous placez votre point-virgule à la fin de celui-ci.
Lorsque les instructions ne se terminent pas sur un saut de ligne, vous devez placer le saut de ligne à un endroit que le compilateur Swift peut reconnaître comme une continuation de la ligne précédente:
la source