Tak i nie.
Składnia obejmuje kilka różnych aspektów.
- czytelność
- ekspresja
- przetwarzalność
Czytelność została już wspomniana.
Ekspresyjność to ciekawy przypadek. Jako przykład wykorzystam przekazywanie funkcji, ponieważ jest to punkt przegięcia bólu semantycznego / składniowego.
Weźmy na przykład C ++. Po tej modzie mogę utworzyć funkcję pierwszego rzędu:
class funcClass
{
int operator()(int);
}
funcClass fun;
void run_func(funcClass fun)
{
fun();
}
Ten szczególny idiom jest powszechnie używany w elementach programowania Stepanova .
Z drugiej strony, mogę naśladować go w Common Lisp coś jak to :
(defun myfunc() )
(defun run_func(fun)
(fun))
Lub w Perlu -
sub myfunc
{
}
sub run_func
{
my $func = shift;
$func->(); #syntax may be a little off.
}
Lub w Pythonie -
def myfunc():
pass
def run_func(f):
f()
Wszystkie mają - zasadniczo - tę samą treść semantyczną, chociaż przykład w C ++ niesie metadane typu. Który język najlepiej wyraża przekazanie funkcji wyższego rzędu? Common Lisp ledwo tworzy odmianę składniową. C ++ wymaga utworzenia klasy tylko do „przenoszenia” funkcji. Perl jest dość prosty w kwestii różnicowania. Podobnie jak Python.
Które podejście najlepiej pasuje do dziedziny problemowej? Które podejście najlepiej wyraża myśli w twojej głowie z najmniejszym „niedopasowaniem impedancji”?
Parsowalność jest - moim zdaniem - dużą sprawą. W szczególności odnoszę się do zdolności IDE do parsowania i rąbania języka bez popełniania błędów. Ponowne formatowanie jest przydatne. Języki rozdzielane znakami zwykle parsują się dobrze - ruby / c / pascal itp.
Zastanów się jednak - w każdym poważnym języku stworzono główne systemy wszelkiego rodzaju, aby rozwiązać rzeczywiste problemy. Chociaż składnia jest barierą do wyrażania niektórych rzeczy, jest barierą umożliwiającą obejście problemu. Równoważność Turinga i tak dalej.