Điều gì đặc biệt làm sức mạnh biểu cảm đề cập đến?


34

Sức mạnh biểu cảm được Wikipedia định nghĩa là:

.. bề rộng của các ý tưởng có thể được trình bày và truyền đạt bằng ngôn ngữ đó.

"Ý 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?

Làm thế nào là sức mạnh biểu cảm được đánh giá và đo lường?

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 một dấu gạch dưới, khớp/^_[0-9]{8}$/ , liệu chúng ta có bị mất sức mạnh biểu cảm không?

Hay điều đó chỉ vô lý và gây phiền nhiễu?


Làm rõ:

Là sức mạnh biểu cảm được đo bằng các ý tưởng chung vốn có của ngôn ngữ:

  • số nguyên và chuỗi
  • vòng lặp
  • điều kiện

Hoặc số lượng ý tưởng cụ thể , độc đáo mà ngôn ngữ có thể đại diện:

  • các số nguyên 1, 2 ... 2 ^ 32
  • chuỗi chứa "con cáo nói gì?" và "wha pah pah pah pah pah pow"
  • cho mỗi con ếch trong bộ sưu tập ếch của tôi
  • nếu ếchmàu xanh lá cây hoặc một cái gì đó sau đó làm điều gì đó

3
Cần lưu ý rằng việc giới hạn một chương trình tối đa 100 triệu biến trong một phạm vi nhất định sẽ đặt ra một số giới hạn về tính biểu cảm. Nó có thể làm cho nó không thể thực hiện Firefox, ví dụ. ;-)
R ..

1
Lưu ý rằng trong khi bạn đã gắn thẻ "ngôn ngữ lập trình" này, ngôn ngữ lập trình không phải là loại ngôn ngữ máy tính duy nhất có sức mạnh biểu cảm có thể được thảo luận. Thật vậy, trang bạn liên kết đến có Ngôn ngữ Bản thể luận Web làm ví dụ đầu tiên.
Jon Hanna

Câu trả lời:


39

Bài viết mang tính bước ngoặt về tính biểu cảm là Về sức mạnh biểu cảm của ngôn ngữ lập trình của Matthias Felleisen (1991) . Nó chứa một định nghĩa chặt chẽ về mặt toán học về tính biểu cảm của ngôn ngữ.

Theo trực giác, nếu mọi chương trình có thể được viết bằng ngôn ngữ A cũng có thể được viết bằng ngôn ngữ B chỉ bằng các biến đổi cục bộ, nhưng có một số chương trình được viết bằng ngôn ngữ B không thể viết bằng ngôn ngữ A mà không thay đổi cấu trúc toàn cầu của chúng hoàn toàn biến đổi địa phương), sau đó ngôn ngữ B là biểu cảm hơn ngôn ngữ Một .

Một đặc điểm thú vị của định nghĩa này là nó thừa nhận khả năng có các cặp ngôn ngữ có các chương trình trong X không thể diễn tả bằng Y và các chương trình trong Y không thể diễn tả bằng X , và do đó các ngôn ngữ là khác biệt, nhưng không phải là ngôn ngữ ngôn ngữ là biểu cảm hơn so với ngôn ngữ khác. Điều này phù hợp với kinh nghiệm thực tế của chúng ta về việc có một số ngôn ngữ tốt ở một số thứ và một số ngôn ngữ tốt ở những thứ khác, và nói chung không "tốt" hơn ngôn ngữ khác.


Vì vậy, (chưa nhìn vào bài báo) tính biểu cảm là về những gì bạn có thể bày tỏ với máy trái ngược với độc giả của nguồn? Đó là thước đo những gì bạn có thể hướng dẫn phần cứng làm gì? Không phải là thước đo của bao nhiêu ý tưởng "con người" bạn có thể bảo tồn hoặc giao tiếp trong mã? ... Có lẽ tôi cần hỏi một câu hỏi khác; nhưng, nếu đó là trường hợp, nó khác với "chức năng" mà chúng ta cũng nói đến như thế nào?
Svidgen

Có lẽ ví dụ của tôi trong OP là xấu. Xem xét ngôn ngữ A và B, cả hai đều có mảng; nhưng, ngôn ngữ A cũng có cấu trúc. Trong cả hai ngôn ngữ, tôi có thể biểu diễn một loạt các Pointbằng cách sử dụng một mảng các mảng 2D. Nhưng, A có lợi thế là cho phép tôi thể hiện một Pointkhái niệm dễ đọc hơn với con người. Là A biểu cảm hơn?
svidgen

@svidgen Vì tất cả các ngôn ngữ hoàn chỉnh Turing đều tương đương về mặt tính toán, nên tập hợp các chương trình có thể viết được về mặt lý thuyết là giống nhau cho tất cả các ngôn ngữ. Theo định nghĩa trên, ngôn ngữ B có tính biểu cảm cao hơn A nếu một chương trình viết bằng B phải được tổ chức lại để phù hợp với A. (Không chỉ thay đổi dòng cú pháp theo dòng, mà còn giới thiệu các lớp mới, vòng lặp, v.v. Hãy suy nghĩ về việc viết lại Python chương trình trong Java 7 mà sử dụng lambdas, map, filter, hạng nhất loại / phương pháp / chức năng, có thể một số eval, chứ chưa nói magic metaclass hoặc các loại động tạo ra, vv
marczellm

@marczellm vậy, "ý tưởng" mà biểu cảm đề cập đến là ngôn ngữ tự xây dựng? Ví dụ, một điều kiện là một ý tưởng? Một vòng lặp là một ý tưởng? Một chuỗi? Con số? V.v ...
Svidgen

1
@ Jörg Bạn có thể đưa ra một ví dụ trong câu trả lời của bạn? Đó là một định nghĩa dễ thương, nhưng nó thực sự không làm được gì nhiều để trả lời câu hỏi.
svidgen

10

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 xtrong 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ữ đó:

  • bất kể dễ dàng (biểu cảm lý thuyết)

  • chính xác và sẵn sàng (biểu cảm thực tế)

Ý 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.writetrong 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.


2
"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" Tôi thích điều đó
chbaker0

Về hạn chế đặt tên biến, khả năng tham khảo các ý tưởng bên ngoài (tên ngôn ngữ bản địa cho sự vật) không liên quan đến khả năng đại diện cho ý tưởng của ngôn ngữ? ... Có lẽ nhiều hơn đến gốc rễ của câu hỏi: Có phải các ý tưởng chúng ta đang nói về việc chỉ thể hiện các cấu trúc ngôn ngữ chung ? Ví dụ, cộng, trừ, phủ định, mảng, lớp, v.v.? Trái ngược với những ý tưởng cụ thể chúng ta có thể diễn đạt bằng ngôn ngữ? Ví dụ, mảng được gọi là fishieskiểuFish .
svidgen

Bạn có thể xem chỉnh sửa của tôi để làm rõ hơn. ... Nó giống như âm thanh mà bạn đang nói cả hai (tham khảo bản chỉnh sửa của tôi); nhưng danh sách đầu tiên là "chính thức" và danh sách thứ hai là "không chính thức". Nếu đó là trường hợp, có một tiêu chuẩn cho cách nó được sử dụng không đủ tiêu chuẩn trong cuộc trò chuyện? Hay ... bạn chỉ có xu hướng yêu cầu làm rõ?
svidgen

4

Tôi không nghĩ rằng các quy tắc đặt tên biến thực sự nắm bắt được ý nghĩa của "tính biểu cảm". Tôi nghĩ rằng "tính biểu cảm" đề cập đến những điều cơ bản hơn. Ví dụ, xem xét C # với Linq so với C # trước Linq. Sau khi thêm Linq, có thể viết các truy vấn giống như SQL trực tiếp trong C #. Điều này thanh lịch hơn nhiều so với các lựa chọn thay thế trước đó, ví dụ như đưa SQL vào chuỗi ký tự và sau đó chuyển nó đến máy chủ hoặc lặp lại qua một bộ sưu tập bằng cách sử dụng "for".

Một ví dụ điển hình khác có thể là các ngôn ngữ có sự kế thừa dựa trên nguyên mẫu. Trong các ngôn ngữ đó, có thể chỉ cần thêm các phương thức mới vào một thể hiện hoặc thậm chí một lớp (theo bất kỳ tên nào mà "lớp" có thể đi theo một ngôn ngữ nhất định ...) trong thời gian chạy. Bạn thực sự không thể làm điều đó trong C ++ hoặc C #. Họ thiếu mức độ biểu cảm này so với các ngôn ngữ dựa trên nguyên mẫu. (C # có khái niệm về các phương thức mở rộng và chắc chắn chúng có thể được nói là thêm tính biểu cảm.)


0

Như được tham khảo bởi bài viết Wikipedia, sức mạnh biểu cảm đề cập đến tập hợp các chương trình có thể được diễn đạt bằng ngôn ngữ. Mọi thứ bạn nghĩ là "ngôn ngữ lập trình" (JavaScript, LISP, C #, Perl, v.v.) về cơ bản là Turing hoàn chỉnh, có nghĩa là chúng có thể diễn đạt bất cứ điều gì được cho là "có thể tính toán được".

Tuy nhiên, cần phải khá rõ ràng rằng các biểu thức thông thường không biểu cảm như ngôn ngữ lập trình thông thường. Hơn nữa, các ký tự đại diện có phần ít biểu cảm hơn các biểu thức thông thường.

Một phiên bản SQL với các biểu thức bảng chung có nhiều biểu cảm hơn phiên bản mà không có vì CTE cho phép bạn biểu diễn các truy vấn đệ quy mà nếu không thì không thể diễn đạt bằng SQL.


0

Có một cách đơn giản và đơn giản hơn để hiểu sức mạnh biểu cảm, nhưng trước tiên chúng ta cần thiết lập những gì chúng ta muốn nói bằng ngôn ngữ. Có hai ngành học nghiên cứu ngôn ngữ: ngôn ngữ học và automata. Cả hai sẽ đồng ý về ngôn ngữ là tập hợp các từ (chuỗi hữu hạn) được xây dựng từ một số bảng chữ cái hữu hạn bằng cách sử dụng nối. Thông thường, các ngôn ngữ thú vị (thú vị, ý tôi là những ngôn ngữ mà chúng ta có thể diễn giải theo cách hữu ích) cũng có một bộ quy tắc chi phối những từ nào trong ngôn ngữ và ngôn ngữ nào không. Lưu ý rằng tính biểu cảm chỉ có thể tồn tại khi có giải thích.

Theo cách hiểu, ý tôi là sự tồn tại của một hàm đưa ra một từ trong ngôn ngữ sẽ chọn một đối tượng từ một số đối tượng (điều này rõ ràng gây tranh cãi cho các ngôn ngữ tự nhiên).

Đừng để bị đánh lừa bởi việc sử dụng "từ" mặc dù. Chương trình Java là một từ trong ngôn ngữ Java (mặc dù nó có thể trải rộng trên nhiều tệp chứa nhiều chuỗi ký tự được phân tách bằng dấu cách).

Sẽ là phản tác dụng khi sử dụng các ngôn ngữ phức tạp như ngôn ngữ lập trình hiện đại để đối phó với khái niệm tương đối đơn giản này, đây là lý do tại sao tôi muốn sử dụng các công thức toán học thay thế.

  • Hãy xác định ngôn ngữ A là tất cả các công thức liên quan đến phép cộng số nguyên.

  • Hãy xác định ngôn ngữ B là ngôn ngữ của tất cả các công thức liên quan đến phép nhân số nguyên.

Trong cả hai trường hợp, chúng tôi không cho phép sử dụng phần tử nhận dạng. Do đó, ngôn ngữ A chứa các từ "1 + 1", "1 + 2", "1 + 3", "2 + 3", v.v. Ngôn ngữ B chứa các từ "2 * 2", "2 * 3", "2 * 4", "3 * 4", v.v. Chúng tôi cũng gán các cách hiểu thông thường cho "*" và "+" (phép cộng số nguyên và phép nhân số nguyên) cho các ký hiệu tương ứng. Vì vậy, cách giải thích của "1 + 1" là 2 và cách giải thích của "2 * 2" là 4.

Bây giờ hãy quan sát rằng ngôn ngữ A có tính biểu cảm cao hơn ngôn ngữ B, vì trong các số nguyên, đúng là phép nhân có thể được sử dụng như phép cộng lặp lại, nhưng không có cách nào để biểu thị phép cộng như phép nhân nói chung.


Tóm lại: ngôn ngữ A có thể nói là biểu cảm hơn ngôn ngữ B khi các chức năng diễn giải của chúng chia sẻ cùng một miền, nhưng hình ảnh của chức năng giải thích của B là một tập hợp con đúng của hình ảnh của chức năng diễn giải của A.


-1

TLDR: Nếu một tính năng bị thiếu nhưng có thể được thể hiện theo những cách khác thì đó không phải là thiếu tính biểu cảm. Nếu bạn có thể hình dung ra một thuật toán trong đầu hoặc thậm chí thực hiện nó bằng một ngôn ngữ nhưng ngôn ngữ khác bằng cách nào đó được cấu trúc theo cách khiến nó không thể thực hiện thuật toán thì đó là một vấn đề về biểu cảm *.

Các hạn chế đặt tên biến không làm giảm tính biểu cảm (trừ khi có quá ít tên mà người ta không thể diễn tả tất cả các thuật toán nữa và người ta không thể giả mạo các biến với một cái gì đó như mảng + chỉ mục).

Một ví dụ đơn giản về việc thiếu sức mạnh biểu cảm là thế này: Bạn phải do_homeworkbring_down_trash. Điều này dễ dàng được viết bằng mã:

do_homework();
bring_down_trash();

Giải pháp này có vẻ khá đơn giản nhưng thực sự do_homeworkbring_down_trashkhông có thứ tự, người ta cũng có thể viết:

bring_down_trash();
do_homework();

Điều này cũng không chính xác vì nó không thể hiện rằng chúng tôi không có ý định thực thi một mệnh lệnh. Chúng tôi cũng không muốn sử dụng chủ đề. Chúng tôi muốn nói một cái gì đó như thế này:

compiler_or_interpreter_pick_one(
    {
        do_homework();
        bring_down_trash();
    },
    {
        bring_down_trash();
        do_homework();
    }
);

Theo như tôi biết thì điều này rất khó để không thể diễn đạt bằng bất kỳ ngôn ngữ lập trình nào.

Một ví dụ khiến tôi không thể kết thúc là Java không thể có một mảng các đối tượng. Bạn có thể tạo một mảng các con trỏ tới các đối tượng nhưng điều đó không có cùng bố cục bộ nhớ (hiệu quả nói).

Lấy một ví dụ từ một câu trả lời khác : C ++ không hỗ trợ thêm các phương thức vào một lớp hoặc một thể hiện . Điều này là đúng, tuy nhiên, nó không giới hạn tính biểu cảm của C ++.

struct Extensible{
    std::vector<std::function<void(Extensible *)>> instanceExtensions;
    static std::vector<std::function<void(Extensible *)>> classExtensions;
};

Đây là một lớp mà bạn có thể thêm, xóa và gọi một số hàm thành viên tùy ý cho các thể hiện và lớp. Về mặt kỹ thuật, C ++ có lẽ biểu hiện nhiều hơn về mặt này so với các ngôn ngữ lập trình thực sự hỗ trợ tính năng này bởi vì trong C ++, bạn có thể chọn cách lưu trữ các hàm (vector vs mảng vs Forward_list).

* Một số ngôn ngữ thiếu tính biểu cảm như một tính năng. Thông thường họ làm cho nó không thể viết các vòng lặp vô hạn. Điều này có thể làm cho vấn đề tạm dừng có thể giải quyết được và cho phép chứng minh tự động cho tính chính xác.


2
Tôi khá chắc chắn rằng điều này không đúng - ít nhất đó không phải là điều tôi hiểu. Viết nhị phân thô vào đĩa là biểu cảm theo định nghĩa này, đó là điều vô lý.
Telastyn

1
@Telastyn Tại sao điều đó là vô lý? Tất nhiên chỉ viết nhị phân thô vào đĩa là không biểu cảm, nhưng một ngôn ngữ có thể làm điều đó có ý nghĩa hơn là không thể, tất cả những thứ khác đều bằng nhau.
nwp

Ý tôi là "ngôn ngữ" của bạn khi sử dụng giao diện phần cứng để ghi bit thô vào máy tính là một ví dụ về ngôn ngữ biểu cảm nhất, vì theo định nghĩa, nó có thể làm bất cứ điều gì máy tính có thể làm. Nó có thể thể hiện bất kỳ tính năng thiếu theo những cách khác. Tôi thấy thật phi lý khi theo định nghĩa của bạn, đó là một ngôn ngữ biểu cảm.
Telastyn

@Telastyn Tại sao đó sẽ là ngôn ngữ biểu cảm nhất? Nó không thể diễn tả dữ liệu đọc hoặc tính toán bất cứ điều gì hoặc hiển thị đồ họa hoặc chủ đề. Một ngôn ngữ chỉ có thể ghi bit vào bộ nhớ và đĩa có rất ít biểu cảm đến mức tôi nghi ngờ rằng nó có công dụng gì cả.
nwp

1
"Thông thường, họ không thể viết các vòng lặp vô hạn. Điều này có thể làm cho vấn đề tạm dừng có thể giải quyết được" - nếu bạn không thể có một vòng lặp vô hạn, theo định nghĩa, chương trình của bạn phải tạm dừng.
Patrick Collins
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.