Menú de navegaciónMenú
Categorías
Logo campusMVP.es

La mejor forma de Aprender Programación online y en español www.campusmvp.es

El punto y coma en programación: ¿necesario o un dolor de cabeza?

El punto y coma es un carácter omnipresente en muchos lenguajes de programación, pero ¿conoces su verdadero origen y la razón de su uso? Este artículo te cuenta la historia detrás de su elección y cómo este pequeño símbolo ha sido fundamental para la estructura y el procesamiento del código a lo largo del tiempo. Entiende por qué, incluso con la aparición de nuevas filosofías de diseño de lenguajes, el punto y coma sigue siendo útil en la programación actual.

Imagen ornamental

Un simple punto y coma (;) que falta, ha detenido más programas que cualquier complejidad del código. Este humilde carácter es la clave para la comunicación entre tu código y la máquina. Sirve como el marcador esencial que le indica a la computadora dónde termina una instrucción o sentencia y empieza la siguiente. Sin él, tu código se convierte en un galimatías incomprensible para el compilador o intérprete, los encargados de traducir tus órdenes a un lenguaje que la computadora pueda entender.

En las siguientes secciones, desvelaremos la importancia del punto y coma: desde su origen histórico hasta las razones prácticas por las que sigue siendo indispensable en muchos de los lenguajes actuales, y también por qué algunos lenguajes lo tienen y otro no.

¡Arrancamos!

El origen del punto y coma en programación

Antes de que el punto y coma (;) se convirtiera en un elemento básico de la programación, los lenguajes tenían una forma diferente de saber dónde terminaba una instrucción.

En los primeros tiempos, lenguajes primitivos como FORTRAN o aquellos que trabajaban con tarjetas perforadas necesitaban que cada instrucción estuviera en su propia línea. El final de la línea o de la tarjeta indicaba que una instrucción había terminado.

Sin embargo, a medida que la programación evolucionaba y las instrucciones se volvían más complejas, surgió una necesidad técnica. Los programadores querían tener la flexibilidad de escribir varias instrucciones en una sola línea o, por el contrario, que una sola instrucción pudiera extenderse a lo largo de varias líneas para mejorar la legibilidad.

Fue entonces cuando ALGOL 58, considerado uno de los primeros lenguajes de programación de alto nivel, introdujo el concepto del separador de sentencias usando el punto y coma para este propósito.

ALGOL no eligió el punto y coma al azar. Hubo varias razones prácticas y lógicas para esta decisión:

  • Necesidad técnica: como se mencionó, el punto y coma se hizo indispensable para separar de forma clara e inequívoca las instrucciones, permitiendo que el código no dependiera exclusivamente de los saltos de línea. Esto significaba que una sola línea de código podía contener múltiples órdenes, o una orden muy larga podía dividirse cómodamente.
  • Disponibilidad de puntuación: se necesitaba un carácter que no se confundiera con otros elementos ya existentes en la sintaxis de programación. El punto (.), por ejemplo, ya se usaba mucho como punto decimal en números. Los dos puntos (:) se solían utilizar para hacer asignaciones (como en :=) o para definir etiquetas. El punto y coma, en cambio, era un símbolo visualmente distinto y poco utilizado en programación.
  • Analogía con el lenguaje natural: el uso del punto y coma se inspiró en su función en el inglés, donde sirve para separar cláusulas o declaraciones dentro de una oración (en español lo usamos, pero mucho menos). Su uso buscaba hacer el código más legible y con una lógica más cercana a la del lenguaje humano.
  • Facilidad para los compiladores primitivos: para los primeros compiladores (programas que traducen el código de alto nivel al lenguaje de la máquina), que en aquel entonces se creaban a mano y en ensamblador, el tener un marcador claro como el punto y coma simplificaba enormemente el proceso de parsing o análisis del código, ayudándoles a identificar dónde terminaba una instrucción y comenzaba la siguiente.

En resumen, ALGOL eligió el punto y coma por ser una solución técnicamente necesaria, lingüísticamente natural y prácticamente conveniente entre las opciones disponibles de la época.

Esta elección resultó ser tan exitosa y práctica que muchos lenguajes de programación posteriores (como C, C++, Java, JavaScript, C# e incluso antiguallas como Pascal o Ada) adoptaron esta convención influidos por ALGOL.

Y así hasta nuestros días...

💡 ¿Sabías que JavaScript permite que NO uses el ; al escribir código? Simplemente deja de ponerlo y listo. No es habitual verlo así, pero está soportado y muchas personas optan por ahorrarse el escribirlo. Lo mismo pasa con otros lenguajes, como Go o Swift.

Ventajas de utilizar el punto y coma para programar

  • Claridad y simplicidad para el análisis (parsing): el punto y coma actúa como un marcador inequívoco para el final de una instrucción. Esto es muy útil para los compiladores e intérpretes, ya que les permite identificar fácilmente los límites de cada sentencia sin depender únicamente de espacios o saltos de línea. Al eliminar la ambigüedad, reduce la confusión tanto para la máquina como para el programador.
  • Flexibilidad en el formato del código: el punto y coma permite a los programadores colocar varias sentencias en una sola línea o lo contrario: dividir una sentencia larga en varias líneas sin confundir al procesador.
  • Recuperación de errores: durante la compilación, el punto y coma facilita que el compilador recupere y reanude el análisis del código después de encontrar un error sintáctico.

Por ejemplo, este fragmento es típico en lenguajes como C#, Java y similares, orientados a objetos, donde haces varias llamadas encadenadas a métodos de objetos y además tienes también algo de Linq (en el caso de C#):

var result = orders.Where(o => o.Customer.Country == "Spain" && o.Items.Any(i => i.Quantity > 5)).Select(o => new { o.Id, Total = o.Items.Sum(i => i.Quantity * i.UnitPrice) }).OrderByDescending(x => x.Total).Take(10).ToList();

Esta línea es ilegible. Sin embargo, al poder separarla en varias líneas libremente y estando el ; al final, podemos escribirlo de una manera mucho más clara y además añadirle algunos comentarios para poder entenderlo mejor en el futuro:

var result = orders
    // Filtrar pedidos de clientes en España con al menos un ítem cantidad > 5
    .Where(o => o.Customer.Country == "Spain" 
                && o.Items.Any(i => i.Quantity > 5))
    // Proyectar solo el Id y el total calculado de cada pedido
    .Select(o => new
    {
        Id = o.Id,
        Total = o.Items.Sum(i => i.Quantity * i.UnitPrice)
    })
    // Ordenar de mayor a menor por Total
    .OrderByDescending(x => x.Total)
    // Obtener solo los 10 primeros resultados
    .Take(10)
    // Convertir a lista concreta
    .ToList();

Un solo punto y coma, muchas líneas. Super útil.

En lenguajes sin punto y coma para delimitar sentencias, hacer algo así se vuelve más complicado. De hecho, debido a esta necesidad, muchos de ellos han tenido que meter algún subterfugio para conseguir lo contrario: poder cambiar de línea sin que el compilador se queje. Esto, al final, es añadir la misma complejidad para el compilador, y encima suele ser más limitado y antinatural.

Por ejemplo, en Visual Basic, que no usa ;, puedes meter una sentencia en varias líneas usando un guion bajo (_) al final de cada una:

Dim sb As New System.Text.StringBuilder()

sb.AppendLine("SELECT Id, Name, Address, Phone, Email") _
  .AppendLine("FROM Customers") _
  .AppendLine("WHERE Country = 'Spain'") _
  .AppendLine("  AND Active = 1") _
  .Append("ORDER BY Name DESC")

Dim sql As String = sb.ToString()

Este caso es un ejemplo tonto con una serie de llamadas a un StringBuilder para construir una cadena más larga, pero como ves se deben dividir explícitamente con el guion bajo.

Si hablamos de Python, las opciones son envolver las instrucciones en paréntesis o usar el símbolo \ (backslash), que está no recomendado por las mejores prácticas del Python.

Inconvenientes y alternativas (Ventajas de NO usar punto y coma para programar)

La principal desventaja del punto y coma es que puede ser un punto común de errores (olvidar uno, por ejemplo), aunque hoy en día los entornos integrados de desarrollo (IDEs) o los propios editores (como Visual Studio Code) ya te avisan de inmediato, sin tener que compilar:

En esta figura me he olvidado de poner el ; al final de una línea en C# y el propio editor me avisa con un subrayado ondulado rojo

No usar punto y coma para programar puede mejorar la legibilidad del código, según algunos, al forzar un formato consistente y es considerado por muchos más amigable para el desarrollador. Sin embargo, la contrapartida es que es obligatorio usar una indentación correcta. Un fallo indentando el código puede producir un error de sintaxis e impedir que el programa funcione.

Este es un ejemplo en Python:

# Cada sentencia está en su propia línea; el salto de línea es el delimitador
nombre = "Desarrollador"
print("Hola, " + nombre)

# La indentación define bloques de código y es crucial
if True:
    print("Esta línea está indentada correctamente.")
# else:
print("Un error de indentación aquí rompe el programa.")

El código fallaría.

Por cierto, Python permite también poner múltiples sentencias en una línea usando ; (Por ejemplo: a = 1; b = 2; print(a + b)), pero raramente lo verás y además se desaconseja en la propia guía de estilo enlazada antes.

Conclusiones: el punto y coma ¿amigo o enemigo?

A pesar de sus beneficios, la utilidad del punto y coma ha sido objeto de debate, dando lugar a alternativas en lenguajes más modernos (y sobre todo lenguajes de script). Algunos muy conocidos como Python o Ruby optaron por el salto de línea y la indentación como delimitadores de sentencias y bloques de código, respectivamente. Este enfoque de espacios en blanco significativos busca mejorar la legibilidad y reducir errores comunes, aunque impone una adherencia estricta al formato.

A pesar de ello, la simplicidad de parsing que ofrece el punto y coma (por no hablar de su herencia histórica, muy arraigada) garantizan su prevalencia en una enorme cantidad de lenguajes de programación.

Así que, a pesar de los disidentes, el punto y coma es un elemento fundamental en muchos lenguajes por la claridad y flexibilidad que ofrece al proceso de análisis y formateo del código.

Yo tengo claro de qué bando estoy ¿y tú? ¿Estás a favor o en contra del punto y coma? ¿Por qué? Cuéntamelo en los comentarios.

José Manuel Alarcón Fundador de campusMVP.es, es ingeniero industrial y especialista en consultoría de empresa. Ha escrito diversos libros, habiendo publicado hasta la fecha cientos de artículos sobre informática e ingeniería en publicaciones especializadas. Microsoft lo ha reconocido como MVP (Most Valuable Professional) en desarrollo web desde el año 2004 hasta la actualidad. Puedes seguirlo en LinkedIn. Ver todos los posts de José Manuel Alarcón
Archivado en: DevFacts

Boletín campusMVP.es

Solo cosas útiles. Una vez al mes.

🚀 Únete a miles de desarrolladores

DATE DE ALTA

x No me interesa | x Ya soy suscriptor

La mejor formación online para desarrolladores como tú

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.