Sì e no.
Ci sono un paio di aspetti diversi nella sintassi.
- leggibilità
- espressività
- parsability
La leggibilità è già stata menzionata.
L'espressività è un caso interessante. Userò il passaggio di funzione come esempio, perché è una sorta di punto di flesso di dolore semantico / sintattico.
Prendiamo il C ++ per esempio. Posso creare una funzione di primo ordine in questo modo:
class funcClass
{
int operator()(int);
}
funcClass fun;
void run_func(funcClass fun)
{
fun();
}
Questo particolare idioma è comunemente usato negli Elementi di programmazione di Stepanov.
D'altra parte, posso simularlo in Common Lisp con qualcosa come questo :
(defun myfunc() )
(defun run_func(fun)
(fun))
Oppure, in Perl -
sub myfunc
{
}
sub run_func
{
my $func = shift;
$func->(); #syntax may be a little off.
}
Oppure, in Python -
def myfunc():
pass
def run_func(f):
f()
Tutti hanno - essenzialmente - lo stesso contenuto semantico, sebbene l'esempio C ++ porti alcuni metadati di tipo. Quale lingua esprime l'idea di passare meglio una funzione di ordine superiore? Common Lisp rende a malapena una variazione sintattica. C ++ richiede che venga creata una classe solo per "trasportare" la funzione. Perl è piuttosto semplice nel fare qualche livello di differenziazione. Quindi è Python.
Quale approccio si adatta meglio al dominio del problema? Quale approccio può esprimere meglio i pensieri nella tua testa con il minimo 'disadattamento di impedenza'?
L'analisi è, a mio avviso, un grosso problema. In particolare, mi riferisco alla capacità dell'IDE di analizzare e tagliare la lingua senza fare errori. La riformattazione è utile. Le lingue delimitate da token tendono ad analizzare bene: ruby / c / pascal, ecc.
Considera comunque - i principali sistemi di tutti i tipi sono stati creati con ogni linguaggio serio per risolvere i problemi del mondo reale. Sebbene la sintassi sia una barriera per esprimere alcune cose, è una barriera che può aggirare il problema. Equivalenza di Turing e tutto il resto.