Normalmente codigo em c # ou em Objective-C e recentemente aprendi a aprender a nova linguagem de programação da Apple - Swift.
A primeira coisa que notei é que você não precisa adicionar ponto e vírgula para terminar uma linha no Swift, mas se o fizer, pelo menos pelo que eu testei, isso não interfere no compilador.
Quando escrevo:
int someNumber = 0;
no Objetivo-C, o ponto-e-vírgula informa ao programa que a linha acabou e não deve passar para a próxima linha.
Com Swift, posso declarar uma variável com
var someNumber:Int = 5
e não adicione ponto e vírgula e o sistema sabe que esse é o fim da linha.
O que permite que algumas línguas façam isso e outras não? Por que não manter um sistema uniforme de adição de ponto e vírgula até o fim?
Respostas:
Robert deu uma boa resposta sobre Swift, tentarei adicionar um pouco mais sobre a análise em geral e por que usar ou não ponto e vírgula.
Quando você compila o programa, há várias etapas antes que seu arquivo de origem seja transformado em código executável, sendo um dos primeiros a leitura e análise . Durante a análise, seu código é transformado de uma sequência de caracteres em uma representação estruturada de acordo com a gramática do idioma. Para isso, é necessário que os elementos que compõem seu código (variáveis, constantes, declarações etc.) sejam identificados e separados de alguma forma. Quando você faz uma declaração como:
É apenas uma sequência de caracteres que de alguma forma precisa ser transformada no conceito "criar uma 'coisa' chamada
someNumber
de tipoint
e atribuir0
a ela" .Isso requer identificar onde exatamente a instrução começa e termina. Imagine se você tivesse isso:
Você precisaria saber que essas são duas declarações diferentes. As
;
linguagens do tipo C são usadas para isso, então o analisador lê os caracteres até encontrar um e tenta entender o que foi lido como uma única declaração. Isso permite, como Robert disse, ter várias declarações na mesma linha, como:Que tem exatamente o mesmo efeito que escrevê-las em duas linhas.
Em outros idiomas, como Python , você deve colocar cada instrução em uma linha diferente.
Portanto, não há necessidade de adicionar a
;
, porque a própria linguagem impede que você adicione instruções na mesma linha!No entanto, outros idiomas, como LISP ou Scheme , têm uma maneira muito diferente de agrupar declarações (ok, elas não são realmente declarações, mas vamos ignorá-lo por enquanto). Então você tem apenas parênteses para tudo:
Mais uma vez, você não precisa a
;
apenas porque você usar os mesmos símbolos ()
,(
) para as coisas que em outras línguas são{
,}
,:
, etc. Alguém que só sabe sintaxe Lisp pode perguntar-lhe: Por que você precisa;
no final de suas declarações ?Apenas para adicionar um exemplo mais estranho: o OCaml não só possui um ponto-e-vírgula no final das instruções ... ele tem dois!
Por quê? Eu não sei. :)
Diferentes idiomas são projetados com diferentes propósitos e diferentes filosofias. Se todos os idiomas compartilharem a mesma sintaxe e convenções, provavelmente permitirão que você faça as mesmas coisas da mesma maneira.
fonte
Quebras de linha são usadas em vez de ponto e vírgula para delimitar o final de uma instrução.
No Guia de idiomas: Noções básicas, ele diz:
Por quê? Porque era assim que os designers de linguagem queriam fazê-lo.
A segunda frase acima sugere por que você não precisa de ponto e vírgula; a maioria das declarações é de linha única. Observe este exemplo de classificação de bolhas; a combinação de instruções de linha única e sem ponto e vírgula cria uma sintaxe muito limpa, semelhante ao VB, mas menos detalhada:
Como as instruções no Swift geralmente terminam com uma quebra de linha, a necessidade de ponto e vírgula para marcar o final de uma instrução é reduzida. Outros idiomas que usam ponto-e-vírgula não funcionam dessa maneira; você pode escrever livremente instruções com várias linhas, mas a única maneira de o compilador saber que a instrução terminou é quando você coloca seu ponto e vírgula no final dela.
Quando as instruções não terminam com uma quebra de linha, você deve colocá-la em um local que o compilador Swift possa reconhecer como uma continuação da linha anterior:
fonte