Sí y no.
La sintaxis tiene un par de aspectos diferentes.
- legibilidad
- expresividad
- posibilidad de análisis
La legibilidad ya se ha mencionado.
La expresividad es un caso interesante. Voy a usar el paso de funciones como ejemplo, porque es una especie de punto de inflexión del dolor semántico / sintáctico.
Tomemos C ++ por ejemplo. Puedo crear una función de primer orden de esta manera:
class funcClass
{
int operator()(int);
}
funcClass fun;
void run_func(funcClass fun)
{
fun();
}
Este idioma en particular se usa comúnmente en los Elementos de programación de Stepanov.
Por otro lado, puedo imitarlo en Common Lisp con algo como this :
(defun myfunc() )
(defun run_func(fun)
(fun))
O, en Perl -
sub myfunc
{
}
sub run_func
{
my $func = shift;
$func->(); #syntax may be a little off.
}
O, en Python -
def myfunc():
pass
def run_func(f):
f()
Todos ellos tienen, esencialmente, el mismo contenido semántico, aunque el ejemplo de C ++ incluye algunos metadatos de tipo. ¿Qué lenguaje expresa la idea de pasar mejor una función de orden superior? Common Lisp apenas hace una variación sintáctica. C ++ requiere que se cree una clase solo para "llevar" la función. Perl es bastante sencillo al hacer algún nivel de diferenciación. Así es Python.
¿Qué enfoque se adapta mejor al dominio del problema? ¿Qué enfoque puede expresar mejor los pensamientos en tu cabeza con la menor "falta de coincidencia de impedancia"?
La parsabilidad es, en mi opinión, un gran problema. En particular, me refiero a la capacidad del IDE para analizar y cortar el idioma sin cometer errores. El cambio de formato es útil. Los lenguajes delimitados por token tienden a analizarse bien - ruby / c / pascal, etc.
Considere, sin embargo, que se han creado importantes sistemas de todo tipo con cada lenguaje serio para resolver problemas del mundo real. Si bien la sintaxis es una barrera para expresar algunas cosas, es una barrera de trabajo. Equivalencia de Turing y todo eso.