Debe haber alguna forma de saber dónde termina la condición y comienza la rama. Hay muchas maneras diferentes de hacerlo.
En algunos idiomas, no hay condicionales en absoluto , por ejemplo. en Smalltalk, Self, Newspeak, Io, Ioke, Seph y Fancy. La ramificación condicional se implementa simplemente como un método normal como cualquier otro método. El método se implementa en objetos booleanos y se llama en un booleano. De esa manera, la condición es simplemente el receptor del método, y las dos ramas son dos argumentos, por ejemplo. en Smalltalk:
aBooleanExpression ifTrue: [23] ifFalse: [42].
En el caso, usted está más familiarizado con Java, esto es equivalente a lo siguiente:
aBooleanExpression.ifThenElse(() -> 23, () -> 42);
En la familia de lenguajes Lisp, la situación es similar: los condicionales son solo funciones normales (en realidad, macros) y el primer argumento es la condición, el segundo y tercer argumento son las ramas, por lo que son solo argumentos de función normal, y no hay nada especial necesario para delimitarlos:
(if aBooleanExpression 23 42)
Algunos idiomas usan palabras clave como delimitadores, por ejemplo, Algol, Ada, BASIC, Pascal, Modula-2, Oberon, Oberon-2, Oberon activo, Pascal del componente, Zonnon, Modula-3:
IF aBooleanExpression THEN RETURN 23 ELSE RETURN 42;
En Ruby, puedes usar una palabra clave o un separador de expresión (punto y coma o nueva línea):
if a_boolean_expression then 23 else 42 end
if a_boolean_expression; 23 else 42 end
# non-idiomatic, the minimum amount of whitespace required syntactically
if a_boolean_expression
23 else 42 end
# idiomatic, although only the first newline is required syntactically
if a_boolean_expression
23
else
42
end
Go requiere que las ramas sean bloques y no permite expresiones o declaraciones, lo que hace que las llaves sean obligatorias. Por lo tanto, los paréntesis no son necesarios, aunque puede agregarlos si lo desea; Perl6 y Rust son similares en este sentido:
if aBooleanExpression { return 23 } else { return 42 }
Algunos idiomas usan otros caracteres no alfanuméricos para delimitar la condición, por ejemplo, Python:
if aBooleanExpression: return 23
else: return 42
La conclusión es: necesita alguna forma de saber dónde termina la condición y comienza la rama. Hay muchas maneras de hacerlo, los paréntesis son solo una de ellas.