Ngôn ngữ bất khả tri là gì và tại sao nó được gọi như vậy?


55

Khi nào một ngôn ngữ bất khả tri? Tại sao nó được gọi là như vậy?


7
Tôi nghĩ rằng nó thực sự nên được gọi là đa thần ngôn ngữ vì niềm tin là có nhiều hơn một con đường để hoàn thành công việc.
chrisaycock

1
@muntoo, mã giả là một ngôn ngữ.
SK-logic

1
@ SK-logic OK, sau đó; Làm thế nào về: Những gì bạn viết trong mã giả là bất khả tri ngôn ngữ ?
Mateen Ulhaq

1
@chrisaycock Ý bạn là đa thê ?
dukeofgaming

1
Nó nên thực sự là ngôn ngữ đại kết. Không giống như bạn không chắc ngôn ngữ máy tính có tồn tại hay không!
Rob K

Câu trả lời:


58

Ngôn ngữ bất khả tri đề cập đến các khía cạnh của lập trình độc lập với bất kỳ ngôn ngữ lập trình cụ thể nào. Ít nhất, đó là cách tôi đã nghe nó được sử dụng trong ba mươi năm qua.

Từ "bất khả tri" có nguồn gốc từ tiếng Hy Lạp cổ có nghĩa là "không biết". Vì vậy, một cái gì đó là "bất khả tri ngôn ngữ" không cần biết về ngôn ngữ máy tính; nó có nghĩa giống như ngôn ngữ độc lập . Những thứ sẽ là bất khả tri ngôn ngữ bao gồm các thuật toán, hoặc Agile hoặc một thư viện thời gian chạy với các ràng buộc với nhiều ngôn ngữ.

Một số tính năng của Mac OS X không phảingôn ngữ bất khả tri , bởi vì chúng thực sự được thiết kế để sử dụng từ Objective C, chỉ có thể được sử dụng với độ khó từ C hoặc C ++ và thậm chí không có ràng buộc cho nhiều ngôn ngữ.

Cũng có thể có một ẩn ý để sử dụng "bất khả tri ngôn ngữ" hơn là các thuật ngữ khác.

Trong tiếng Anh thông tục, một người nói rằng họ "bất khả tri" có nghĩa là họ không theo tôn giáo hay vô thần: họ "không biết" về Chúa. Đây thường là mã bằng lời cho "Tôi không muốn nói về tôn giáo, vì vậy đừng cố gắng chuyển đổi tôi."

Vì vậy, đôi khi khi mọi người nói về việc "bất khả tri ngôn ngữ", họ đang cố gắng tránh xa những tranh luận về ngôn ngữ máy tính nào tốt hơn.


5
BTW, bất khả tri xuất phát từ "a" (không) + "gnosis" (kiến thức). Những từ khác giống như "vô thần" và "không điển hình".
Bob Murphy

2
Đúng, tôi luôn lấy nó làm tài liệu tham khảo cho thực tế các cuộc chiến ngôn ngữ về cơ bản là các cuộc chiến tôn giáo: các kỹ thuật / lời khuyên / khái niệm bất khả tri ngôn ngữ tránh chiến tranh thánh.
Carson63000

Off-Topic: gninto / bất khả tri đề cập đến kiến ​​thức. Người vô thần / người hữu thần đề cập đến việc tin tưởng hoặc khẳng định sự tồn tại. Vì vậy, về mặt kỹ thuật, bạn có thể có một tín đồ tôn giáo bất khả tri hoặc một người vô thần theo thuyết bất khả tri. Nhưng lời giải thích rất rõ ràng. Bạn cũng có thể nói về một hệ thống bất khả tri cơ sở dữ liệu
Borjab

@Borjab Tôi là tín đồ của thuyết bất khả tri ở Vim. Nhưng tôi sử dụng Emacs vì lý do thực tế.
Brandin

Ngôn ngữ bất khả tri đề cập đến các khía cạnh của lập trình độc lập với bất kỳ ngôn ngữ lập trình cụ thể nào. Khi bạn nói bất kỳ điều đó có nghĩa là một hoặc nó có nghĩa là tất cả ? Cardinality là rất quan trọng. Ví dụ: nếu một câu lệnh áp dụng cho các ngôn ngữ OOP và không bị hạn chế đối với một ngôn ngữ OOP cụ thể, nhưng không áp dụng cho các ngôn ngữ Chức năng, thì ngôn ngữ câu lệnh có phải là bất khả tri không?
jaco0646

7

Khi một giải pháp được gọi là "bất khả tri ngôn ngữ", bạn thực sự đang nói rằng giải pháp của bạn "không biết về" ngôn ngữ, nghĩa là phổ quát hoặc độc lập với các đặc điểm ngôn ngữ (mô hình, thành ngữ ngôn ngữ, v.v.).

Ví dụ: các mẫu thiết kế không liên quan đến ngôn ngữ, bởi vì cách chúng được mô tả việc triển khai cụ thể không quan trọng miễn là nó bám vào toàn bộ hoặc một tập hợp con của mẫu (ví dụ: một số mẫu thiết kế có thể được triển khai mà không có OOP) .

UML là bất khả tri ngôn ngữ, BPMN là bất khả tri ngôn ngữ, ERM là bất khả tri ngôn ngữ. Một thuật toán trong mã giả là ngôn ngữ bất khả tri ...

Bất cứ điều gì có nghĩa là được lập trình nhưng không được mô tả bằng một ngôn ngữ cụ thể có thể được gọi là bất khả tri ngôn ngữ.


2
Bất khả tri có nghĩa là "không biết về", không "không tin vào". Sự khác biệt tinh tế nhưng quan trọng!
JacquesB

BPMN chắc chắn không phải là ngôn ngữ bất khả tri, bởi vì nó mô hình hóa các quy trình. Có những ngôn ngữ lập trình mà bạn chỉ xác định điều kiện tiên quyết và kết quả mong muốn và quá trình mở ra hoàn toàn, ví dụ như Prolog. Ngay cả Haskell và BPMN cũng không đi đôi với nhau, vì chiến lược đánh giá lười biếng của Haskell khiến mọi thứ không xảy ra theo một số thứ tự được xác định rõ ràng.
back2dos

6

Các mô hình hoặc tính năng không được áp dụng cho chỉ một ngôn ngữ.


2

Tôi chưa từng nghe thuật ngữ này trước đây, tuy nhiên, tôi cho rằng nó có nghĩa là các khía cạnh học lập trình độc lập với bất kỳ ngôn ngữ lập trình cụ thể nào.


1
Tại sao lại gọi như vậy?
Louis Rhys

1
Đó là cách mà tôi đã nghe nó được sử dụng trong ba mươi năm qua.
Bob Murphy

1
Tôi đang xóa phản hồi này để gửi nó như một câu trả lời.
Bob Murphy

@bob: đồng ý. nhưng câu trả lời ở đâu?
Louis Rhys

@Louis Rhys: Xin lỗi, tôi mất vài phút để viết chính xác. Nó lên.
Bob Murphy
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.