Так і ні.
У синтаксису є кілька різних аспектів.
- читабельність
- виразність
- проаналізація
Читання вже згадувалося.
Експресивність - цікавий випадок. Я буду використовувати приклад передачі функцій, тому що це свого роду перегин семантичного / синтаксичного болю.
Візьмемо для прикладу C ++. Я можу створити функцію першого порядку після цієї моди:
class funcClass
{
int operator()(int);
}
funcClass fun;
void run_func(funcClass fun)
{
fun();
}
Ця особлива ідіома зазвичай використовується в Елементах програмування Степанова .
З іншого боку, я можу імітувати його в Common Lisp з чим - то на кшталт цього :
(defun myfunc() )
(defun run_func(fun)
(fun))
Або в Perl -
sub myfunc
{
}
sub run_func
{
my $func = shift;
$func->(); #syntax may be a little off.
}
Або в Python -
def myfunc():
pass
def run_func(f):
f()
Усі вони мають - по суті - однаковий смисловий зміст, хоча приклад C ++ містить метадані певного типу. Яка мова виражає ідею найкращого функціонування вищого порядку? Звичайний Лісп ледве робить синтаксичну варіацію. C ++ вимагає створення класу просто для 'виконання' функції. Perl досить відвертий щодо досягнення певного рівня диференціації. Так само і Python.
Який підхід найкраще відповідає проблемній галузі? Який підхід найкраще може висловити думки у вашій голові з найменшою «невідповідністю імпедансу»?
Пасивність - на мій погляд, - велика справа. Зокрема, я маю на увазі здатність IDE розбирати та рубати мову, не допускаючи помилок. Переформатування корисне. Мови, обмежені токеном, як правило, добре розбирають - ruby / c / pascal тощо.
Поміркуйте, однак - для вирішення проблем у реальному світі були створені усілякі основні системи з усіма серйозними мовами. Хоча синтаксис є бар'єром для вираження деяких речей, це бар'єр, який може бути оброблений. Тюрінг еквівалентності і все таке.