Sức mạnh biểu cảm được Wikipedia định nghĩa là:
Hãy đọc lại trang đó. Một trong những điều đầu tiên cần lưu ý là nó nói "ngôn ngữ", không phải "ngôn ngữ lập trình" và hầu hết các ví dụ của nó không phải là ngôn ngữ lập trình, ví dụ ví dụ đầu tiên được đưa ra là so sánh giữa OWL2 EL và OWL2 RL, cả hai đều là bản thể luận ngôn ngữ.
Người ta có thể áp dụng khái niệm này cho các ngôn ngữ lập trình, nhưng cũng có các ngôn ngữ phù hợp với mô hình, ngôn ngữ đánh dấu, ngôn ngữ truy vấn, ngôn ngữ biểu định kiểu trực quan, biểu thức chính quy (và tất cả các ngôn ngữ thông thường mà chúng tham chiếu), v.v. Người ta thậm chí có thể đề cập đến sức mạnh biểu cảm của các ngôn ngữ tự nhiên như tiếng Anh, thường được thực hiện rất không chính thức, nhưng nghiêm trọng hơn khi xem xét các vấn đề liên quan đến xử lý ngôn ngữ tự nhiên.
"Ý tưởng" có đề cập đến những thứ (hoạt động, cấu trúc, thuật toán, v.v.?) Chúng ta có thể giao tiếp với máy không? Hay nó đề cập đến các khái niệm "con người" có thể được nắm bắt và giao tiếp với ngôn ngữ cho những người khác?
Nó đề cập đến những gì có thể được thể hiện bằng ngôn ngữ đó, được coi hoàn toàn là một thứ trong chính nó.
Ví dụ: (Tôi sẽ sử dụng javascript trong suốt ví dụ của mình, vì câu hỏi của bạn chỉ ra rằng đó là một trong những ngôn ngữ bạn biết) hãy xem xét câu lệnh javascript:
var x = 3 + 4;
Điều này thể hiện rằng tổng giá trị của 3 và 4 được tính toán và giá trị được liên kết với nhãn x
trong phạm vi không gian tên đã cho.
Nếu chúng ta phá hủy tất cả các máy tính trên thế giới và viết mã đó trên một tờ giấy, thì nó vẫn còn trong javascript, nó vẫn có cùng ý nghĩa; chúng ta sẽ không thể chạy mã như vậy trên bất cứ thứ gì, nhưng định nghĩa trừu tượng của ngôn ngữ vẫn là thứ chúng ta có thể nói đến.
Điều này có vẻ mang tính mô phạm, nhưng thực sự khá quan trọng rằng ngôn ngữ là những thứ có thể được lý giải trong bản tóm tắt mà không cần xem xét máy tính thực. Đối với một điều, mọi người suy luận về các điểm lý thuyết của ngôn ngữ máy tính chưa khả thi trong thực tế là một trong những điều đã đưa chúng ta đến nơi chúng ta có ngày hôm nay; máy tính cần khoa học máy tính, nhưng khoa học máy tính không cần máy tính, chỉ cần ý tưởng tính toán.
Tất nhiên, chúng tôi sử dụng máy tính trong thế giới thực và ngày nay có rất nhiều người sử dụng chúng trong thực tế thay vì một vài chuyên gia thảo luận về lý thuyết. Trang bạn liên kết để nói:
Thuật ngữ sức mạnh biểu cảm có thể được sử dụng với một loạt các ý nghĩa. Nó có thể có nghĩa là thước đo các ý tưởng có thể diễn đạt bằng ngôn ngữ đó:
Ý nghĩa đầu tiên chiếm ưu thế trong các lĩnh vực toán học và logic liên quan đến mô tả chính thức của ngôn ngữ và ý nghĩa của chúng, chẳng hạn như lý thuyết ngôn ngữ chính thức, logic toán học và đại số quá trình.
Trong các cuộc thảo luận không chính thức, thuật ngữ này thường đề cập đến ý nghĩa thứ hai, hoặc cả hai. Đây thường là trường hợp khi thảo luận về ngôn ngữ lập trình. Những nỗ lực đã được thực hiện để chính thức hóa những cách sử dụng không chính thức này của thuật ngữ
Trong hai cách sử dụng thuật ngữ này, tác động thực tế đầu tiên chỉ liên quan đến những gì có thể được truyền tải tới máy tính.
Thứ hai liên quan nhiều hơn đến sự hiểu biết của con người trong cả đọc và viết, mặc dù mức độ mà nó làm như vậy, khác nhau rất nhiều giữa các cách sử dụng, vì chúng không chính thức và như vậy không được xác định chặt chẽ.
Chẳng hạn, nếu chúng ta lấy một ngôn ngữ như JavaScript và áp đặt một hạn chế kỳ lạ đối với các tên biến, chẳng hạn như biến phải là một số có 8 chữ số đứng trước dấu gạch dưới, khớp /^_[0-9]{8}$/
, liệu chúng ta có mất sức mạnh biểu cảm không?
Theo định nghĩa chính thức, chúng tôi đã không mất sức mạnh biểu cảm: Chúng tôi bị giới hạn ở 100.000.000 biến, nhưng nếu chúng tôi thực sự cần chúng tôi có thể khắc phục điều này bằng cách tạo các đối tượng để giữ nhiều biến hơn trong không gian tên mới được tạo. Vì vậy, bất kỳ chương trình nào được viết bằng javascript ngày nay đều có thể được viết lại dưới dạng mới này, vì vậy chúng có tính biểu cảm như nhau.
Theo định nghĩa không chính thức, chúng tôi đã mất một số, nhưng chỉ phụ thuộc vào mức độ không chính thức của chúng tôi, điều này sẽ thay đổi bởi vì một lần nữa bạn không thể nói "quy tắc" về việc sử dụng không chính thức là gì. Chúng tôi có thể nói rằng chúng tôi đã mất một số tiền rất nhỏ, bởi vì các chương trình có hơn 100.000.000 biến trong cùng một không gian tên phải được viết lại ngoài một sự thay thế đơn giản. Một lần sử dụng không chính thức hơn một lần nữa sẽ đề cập đến tác động tinh thần của những tên biến vô duyên như vậy đối với toàn diện con người.
Cũng đáng lưu ý rằng mọi người sẽ xem xét một cách không chính thức những thứ hoàn toàn không phải là một phần của ngôn ngữ. Hãy xem xét những thay đổi trong Javascript từ khi tạo ra nó cho đến ngày hôm nay.
Theo định nghĩa chính thức nhất, đã có khá nhiều thay đổi trong biểu cảm; Rốt cuộc, nó đã hoàn thành Turing.
Theo một định nghĩa không chính thức, nó đã trở nên biểu cảm hơn đáng kể trong một số điều nhất định như thao tác mảng, xử lý ngoại lệ và (có lẽ là hầu hết tất cả) trong việc bao gồm các biểu thức thông thường. Chúng không làm bất cứ điều gì không thể được thực hiện trong javascript trước đây, mặc dù chúng thường có thể làm điều gì đó trong một vài dòng và thời gian thực hiện thứ hai sẽ mất hàng kilobyte mã để viết trong javascript1.0 và một thời gian dài để chạy.
Theo định nghĩa không chính thức hơn một lần nữa, thay đổi từ lần sử dụng đầu tiên của javascript trong trình duyệt (có thể thay đổi giá trị của đầu vào biểu mẫu, document.write
trong khi trang đầu tiên được phân tích cú pháp và di chuyển đến vị trí mới hoặc quay lại hoặc chuyển tiếp trong lịch sử, nhưng khá hay không có gì khác) ngày nay (có thể thay đổi bất cứ thứ gì trên trang, kể cả trên cơ sở dữ liệu từ các cuộc gọi máy chủ) là vô cùng lớn, mặc dù hầu hết không liên quan đến javascript mà là các mô hình đối tượng và API được tạo có sẵn, thay vì ngôn ngữ (ví dụ: vbscript trong IE được hưởng lợi từ những thay đổi đó như nhau).
Theo tôi, việc sử dụng cuối cùng không chính xác đến mức không thực sự chính xác, nhưng đó là vấn đề với các định nghĩa không chính thức.
Theo định nghĩa chính thức, nó thực sự không trở nên biểu cảm hơn chút nào.