Normalmente codifico en c # o Objective-C y recientemente me encargué de aprender el nuevo lenguaje de programación de Apple: Swift.
Lo primero que noté es que no necesita agregar punto y coma para terminar una línea en Swift, pero si lo hace, al menos por lo que he probado, no interfiere con el compilador.
Cuando yo escribo:
int someNumber = 0;
en Objective-C, el punto y coma le dice al programa que la línea ha terminado y que no debe pasar a la línea siguiente.
Con Swift puedo declarar una variable con
var someNumber:Int = 5
y no agrega un punto y coma y el sistema sabe que este es el final de la línea.
¿Qué permite que algunos idiomas hagan esto y otros no? ¿Por qué no mantener un sistema uniforme de agregar el punto y coma al final?
Respuestas:
Robert dio una buena respuesta con respecto a Swift, intentaré agregar un poco más sobre el análisis en general y por qué usar o no punto y coma.
Cuando compila el programa, hay varios pasos antes de que su archivo fuente se convierta en código ejecutable, uno de los cuales es leer y analizar . Durante el análisis, su código se transforma de una secuencia de caracteres en una representación estructurada de acuerdo con la gramática del lenguaje. Para esto es necesario que los elementos que componen su código (variables, constantes, declaraciones, etc.) se identifiquen y separen de alguna manera. Cuando haces una declaración como:
Es solo una secuencia de personajes que de alguna manera necesita ser dirigida al concepto "crear una 'cosa' llamada
someNumber
de tipoint
y asignarla0
" .Esto requiere identificar exactamente dónde comienza y termina la declaración. Imagina si tuvieras esto:
Necesitaría saber que esas son dos declaraciones diferentes. El
;
en C-como idiomas se utiliza para eso, por lo que el analizador lee los caracteres hasta que encuentra uno, y los intentos de comprender lo que acaba de leer como un solo estado. Esto permite, como dijo Robert, tener varias declaraciones en la misma línea, como:Lo que tiene exactamente el mismo efecto que escribirlos en dos líneas.
En otros lenguajes, como Python , se espera que coloque cada declaración en una línea diferente.
Por lo tanto, no hay necesidad de agregar un
;
, ¡porque el lenguaje en sí mismo le impide agregar declaraciones en la misma línea!Sin embargo, otros idiomas, como LISP o Scheme , tienen una forma muy diferente de agrupar enunciados (está bien, en realidad no son enunciados, pero ignoremos eso por ahora). Entonces solo tienes paréntesis para todo:
Una vez más, no es necesario el
;
sólo porque se utilizan los mismos símbolos ()
,(
) para las cosas que están en otros idiomas{
,}
,:
, etc. Alguien que sólo conoce la sintaxis Lisp podría preguntar: ¿Por qué necesita;
al final de sus declaraciones ?Solo para agregar un extraño ejemplo: OCaml no solo tiene un punto y coma al final de las declaraciones ... ¡tiene dos!
¿Por qué? No lo sé. :)
Se diseñan diferentes idiomas con diferentes propósitos y diferentes filosofías. Si todos los idiomas compartieran la misma sintaxis y convenciones, probablemente solo le permitirían hacer las mismas cosas de la misma manera.
fuente
Los saltos de línea se utilizan en lugar de punto y coma para delimitar el final de una declaración.
En la guía de idiomas: Lo básico dice:
¿Por qué? Porque así es como los diseñadores de idiomas querían hacerlo.
La segunda oración anterior sugiere por qué no necesita punto y coma; La mayoría de las declaraciones son de una sola línea. Observe este ejemplo de Bubble Sort; La combinación de sentencias de una sola línea y sin punto y coma crea una sintaxis muy limpia que es similar a VB, pero menos detallada:
Debido a que las declaraciones en Swift generalmente terminan en un salto de línea, se reduce la necesidad de punto y coma para marcar el final de una declaración. Otros idiomas que usan punto y coma no funcionan de esta manera; puede escribir libremente declaraciones de varias líneas, pero la única forma en que el compilador sabe que la declaración ha terminado es cuando coloca el punto y coma al final de la misma.
Cuando las declaraciones no terminan en un salto de línea, debe colocar el salto de línea en un lugar que el compilador Swift pueda reconocer como una continuación de la línea anterior:
fuente