Si y no.
Hay un par de aspectos diferentes para la sintaxis.
- legibilidad
- expresividad
- parsability
La legibilidad ya ha sido mencionada.
La expresividad es un caso interesante. Voy a utilizar el paso de funciones como ejemplo, porque es una especie de punto de inflexión de 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 particular se usa comúnmente en Elementos de programación de Stepanov .
Por otro lado, puedo imitarlo en Common Lisp con algo como esto :
(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 estos tienen, esencialmente, el mismo contenido semántico, aunque el ejemplo de C ++ lleva algún tipo de metadatos. ¿Qué lenguaje expresa mejor la idea de pasar una función de orden superior? Lisp común apenas hace una variación sintáctica. C ++ requiere que se cree una clase solo para 'llevar' la función. Perl es bastante directo sobre 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 su cabeza con el menor 'desajuste de impedancia'?
La capacidad de análisis 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. Reformatear es útil. Los lenguajes delimitados por tokens tienden a analizar bien: ruby / c / pascal, etc.
Sin embargo, considere: se han creado sistemas principales de todo tipo con cada lenguaje serio para resolver problemas del mundo real. Aunque la sintaxis es una barrera para expresar algunas cosas, es una barrera que puede solucionarse. Equivalencia de Turing y todo eso.