Có và không.
Có một vài khía cạnh khác nhau về cú pháp.
- khả năng đọc
- biểu cảm
- phân tích cú pháp
Khả năng đọc đã được đề cập.
Biểu cảm là một trường hợp thú vị. Tôi sẽ sử dụng chức năng truyền qua làm ví dụ, bởi vì đó là một điểm đau của ngữ nghĩa / cú pháp.
Hãy lấy C ++ làm ví dụ. Tôi có thể tạo một chức năng đặt hàng đầu tiên sau thời trang này:
class funcClass
{
int operator()(int);
}
funcClass fun;
void run_func(funcClass fun)
{
fun();
}
Thành ngữ đặc biệt này thường được sử dụng trong Các yếu tố lập trình của Stepanov .
Mặt khác, tôi có thể bắt chước nó trong Common Lisp với một cái gì đó như thế này :
(defun myfunc() )
(defun run_func(fun)
(fun))
Hoặc, trong Perl -
sub myfunc
{
}
sub run_func
{
my $func = shift;
$func->(); #syntax may be a little off.
}
Hoặc, bằng Python -
def myfunc():
pass
def run_func(f):
f()
Tất cả đều có - về cơ bản - cùng một nội dung ngữ nghĩa, mặc dù ví dụ C ++ mang một số siêu dữ liệu loại. Ngôn ngữ nào thể hiện ý tưởng vượt qua chức năng bậc cao là tốt nhất? Lisp thông thường hầu như không tạo ra một biến thể cú pháp. C ++ yêu cầu một lớp được tạo chỉ để 'thực hiện' chức năng. Perl khá đơn giản về việc tạo ra một số mức độ khác biệt. Python cũng vậy.
Cách tiếp cận nào phù hợp nhất với miền vấn đề? Cách tiếp cận nào tốt nhất có thể diễn tả những suy nghĩ trong đầu bạn với "sự không phù hợp trở kháng" ít nhất?
Khả năng phân tích là - trong tâm trí của tôi - một vấn đề lớn. Cụ thể, tôi đề cập đến khả năng phân tích và cắt ngôn ngữ của IDE mà không mắc lỗi. Định dạng lại là hữu ích. Các ngôn ngữ được phân tách bằng mã thông báo có xu hướng phân tích tốt - ruby / c / pascal, v.v.
Hãy xem xét mặc dù - các hệ thống chính của tất cả các loại đã được tạo ra với mọi ngôn ngữ nghiêm túc để giải quyết các vấn đề trong thế giới thực. Mặc dù cú pháp là một rào cản để diễn đạt một số thứ, nhưng nó là một rào cản có thể giải quyết được. Turing tương đương và tất cả những thứ đó.