Semicolon (Blogtober2019)

por Fran Iglesias

Mi compañera y manager en Holaluz Mavi Jiménez va a hacer un dibujo cada día del mes sobre una palabra propuesta en twitter. Y aquí vamos a intentar escribir un post por cada una de ellas.

Semicolon

Una buena cantidad de lenguajes de programación utilizan el punto y coma, o semicolon, como delimitador del final de una sentencia o instrucción. En otros lenguajes, se asume que cada sentencia va en una línea. En ese caso, suele hacer falta un carácter indicador cuando una sentencia tiene que escribirse en varias líneas por algún motivo.

Diría que algunos lenguajes que no usan el semicolon tienen cierta tendencia a mirar por encima del hombro con una sonrisita de autosuficiencia a lenguajes que lo usan, como si estos fuesen un poco paletos, mientras que ellos son muy sofisticados.

La verdad es que los lenguajes sin semicolon al final tienen algunos problemillas cuando les toca construir líneas largas y se ven obligados a introducir algún artificio para señalar que una sentencia continúa en la línea siguiente, ya sea el backslash \ o el ampersand &, entre otros.

Este es uno de esos problemas curiosos que suceden en informática. Cosas que como humanos nos parecen simples, como saber cuándo se ha terminado una frase, representan un pequeño desafío para un programador. Este desafío se puede resolver de muchas maneras: inventando una convención arbitraria, detectando un patrón o mediante un algoritmo complejo. Resolver el dilema de cuál de las opciones es más conveniente es una cuestión de analizar los costes, los posibles beneficios, las limitaciones, los casos extremos, ponerlos ante ti y decidirte por una de ellas.

Algunas de esas decisiones, tomadas por otros programadores hace muchos años, siguen presentes en los lenguajes que usamos en la actualidad como una especie de arcaicismo que sigue resolviendo el problema original, incluso aunque no fuera estrictamente necesario mantenerlo.

Y eso es algo que aporta un encanto espacial.

Temas

good-practices

refactoring

php

testing

tdd

design-patterns

python

blogtober19

design-principles

tb-list

misc

bdd

legacy

golang

dungeon

ruby

tools

hexagonal

tips

software-design

ddd

books

bbdd

soft-skills

pulpoCon

oop

javascript

api

typescript

sql

ethics

agile

swift

java