Tại sao không có nhiều ngôn ngữ lập trình ngôn ngữ tự nhiên?


9

Có ngôn ngữ lập trình nào có sẵn và có thể mở rộng bằng nhiều ngôn ngữ tự nhiên không?

Chẳng hạn, phiên bản tiếng Anh có do..whilevòng lặp, phiên bản tiếng Tây Ban Nha có hacer..mientasvòng lặp, phiên bản tiếng Pháp có phiên bản faire..pendanttiếng Hà Lan và phiên bản tiếng Hà Lan có phiên bản tiếng Hà Lan doe..terwijl.

"Ngôn ngữ lập trình" duy nhất tôi có thể nghĩ về loại triển khai này là Microsoft VBA.

Câu hỏi thưởng: Tại sao có quá ít ngôn ngữ lập trình có nhiều ngôn ngữ?


12
Tiếng Anh là tiếng Lingua Franca của hầu hết các ngôn ngữ lập trình, tốt hơn hoặc kém hơn.
Robert Harvey

13
That's a reason why the languages are in English, not why there are no other languages, for example no "Java Indonesian" or "C++ Swahili"- Bởi vì chương trình Java Indonesia của bạn sẽ chỉ được các lập trình viên Indonesia duy trì.
Robert Harvey

5
@DavidArno chủ đề này đã bị đánh đến chết trong Người ở các quốc gia không nói tiếng Anh có mã bằng tiếng Anh không? và nhiều câu hỏi liên quan đến nó
gnat

8
@MartijnBurger dịch các từ khóa là "vấn đề nhỏ", so với việc dịch thư viện tiêu chuẩn , đó là "nhiệm vụ to lớn". Và đó cũng là điều sẽ gây ra vấn đề về khả năng tương tác. Java không phụ thuộc vào chính tả của các từ khóa được biên dịch; nhưng nó phụ thuộc vào chính tả của tên gói, lớp và tên phương thức.
Dan Getz

3
@DanGetz vẫn còn vấn đề trong Java (và có thể là các ngôn ngữ khác) mà từ khóa được bảo lưu. Tôi không thể định nghĩa một trường như String for;trong Java vì đó sẽ là một biểu tượng được xuất trong lớp. Và điều đó sẽ khiến tôi không thể đặt tên cho một lĩnh vực doebởi vì đó là phiên bản tiếng Hà Lan và public class Deer { String buck; String doe; }không có doetrường này có thể truy cập được. Tất cả các từ khóacác từ dành riêng trong Java. Những điều tồi tệ sẽ xảy ra với các lĩnh vực xung đột với các từ khóa trong các lang khác.

Câu trả lời:


21

Tên hàm trong công thức Excel được bản địa hóa, trong đó bạn có thể sử dụng từ ngữ tiếng Anh hoặc tương đương cục bộ.

Điều này đã dẫn đến vô số sự xuất hiện của bảng tính khi bạn di chuyển qua các vùng và ngôn ngữ người dùng. Nó cũng làm cho việc tìm kiếm thông tin về chức năng trở nên khó khăn, vì tài liệu địa phương được bản địa hóa và không đề cập đến tên tiếng Anh của sự vật, và ngược lại, hỏi về SO với tên địa phương của bạn về cơ bản là vô nghĩa đối với hầu hết người đọc.

Từ khóa nên được xem là những biệt danh mờ đục, điều này chỉ xảy ra để phù hợp với ý nghĩa của các từ tiếng Anh được sử dụng để đánh vần chúng. Có rất nhiều lập trình viên không nói tiếng Anh ngoài kia không biết một nửa từ khóa của họ có nghĩa gì.


5
Thật đáng ngạc nhiên khi câu trả lời này là nơi duy nhất xuất hiện từ "Excel", được coi là thất bại sử thi của các công thức dịch. Cả hai đối số đều hợp lệ và rất mạnh: phá vỡ bảng tính và các phiên bản được bản địa hóa phân chia các cộng đồng. Điều này không bao gồm nỗ lực của nhà cung cấp để tự dịch tài liệu và chương trình (trình biên dịch).

1
Tại sao quá khó để dịch từ khóa trong một kịch bản? Chắc chắn họ sẽ tương đối dễ phân tích vì họ đã được đối xử đặc biệt.
SuperBiasedMan 17/2/2016

Ngoài ra, Excel không thực sự là một hệ thống lập trình ngôn ngữ tự nhiên , vì nó không dịch các cấu trúc câu tiếng Anh thành các chương trình thực thi.
Anderson Green

16

Trong thế kỷ trước, đáng chú ý là trong những năm 1960-1970, chúng là một số ngôn ngữ lập trình không phải tiếng Anh. Ở Pháp, chúng tôi đã có PAF & LSE với các từ khóa trông giống tiếng Pháp. WW2 Đức đã có Plankalküll bởi K.Zuze. Tại Liên Xô, A.Ershov đã thiết kế một số ngôn ngữ (ví dụ Rapira ) với các từ khóa tiếng Nga. IIRC PAF (được thiết kế và thực hiện bởi người cha quá cố của tôi khi tôi còn là một đứa bé - đầu những năm 1960) cũng có thể được bán với các từ khóa trông giống tiếng Anh (hoặc tiếng Nga hoặc tiếng Đức). Và một số ngôn ngữ, ví dụ APL , không có bất kỳ từ khóa nào cả. Các ngôn ngữ khác ( PL / I ) không được bảo lưutừ khóa. Và bạn có thể xác định lại các từ khóa bằng các kỹ thuật tiền xử lý (ví dụ: ngày nay, trong C, #define si if& #define sinon elsecho sinh viên Pháp ....; các thủ thuật dựa trên vĩ mô tương tự có thể có trong PL / I hoặc thậm chí Lisp thông thường).

Nhưng CNTTđược phát triển chủ yếu ở một quốc gia nói tiếng Anh (Hoa Kỳ). Vì vậy, ngôn ngữ lập trình và việc triển khai chúng có đặc điểm kỹ thuật và tài liệu tiếng Anh và từ khóa tiếng Anh. Do đó, mọi nhà phát triển cần có khả năng đọc tiếng Anh kỹ thuật và không có giá trị gia tăng nào để "bản địa hóa" ngôn ngữ lập trình (và thậm chí, làm như vậy khiến việc sử dụng phần mềm khác trở nên khó khăn hơn, như đã trả lời ở nơi khác). Sự thống trị về kinh tế và kỹ thuật hiện nay của các quốc gia nói tiếng Anh đòi hỏi tất cả các kỹ sư phải đọc tiếng Anh ngày nay (tôi chắc chắn rằng ngay cả các kỹ sư phần mềm của Bắc Triều Tiên, Trung Quốc hoặc Iran cũng có thể đọc tài liệu bằng tiếng Anh và đọc mã bằng từ khóa và định danh tiếng Anh) . Vì vậy, không có đủ giá trị gia tăng để "bản địa hóa" một ngôn ngữ lập trình (ngoại trừ có lẽ để dạy lập trình tiểu học cho học sinh trung học).

Ngoài ra, tiếng Anh có nhiều từ khóa ngắn (so sánh sinonbằng tiếng Pháp với elsetiếng Anh hoặc mettretiếng Pháp với puttiếng Anh), vì vậy có một lợi thế nhỏ trong việc sử dụng từ khóa bằng tiếng Anh ....

Có lẽ trong một thế kỷ, Trung Quốc có thể trở thành quốc gia CNTT thống trị và một số ngôn ngữ lập trình có nguồn gốc từ Trung Quốc có thể phát triển mạnh mẽ. Chúng tôi không biết điều gì sẽ xảy ra sau đó ....

Tái bút Sự thống trị của tiếng Anh không dành riêng cho CNTT. Ngay cả khi Vương quốc Anh rời khỏi Liên minh châu Âu - kịch bản Brexit- , ngôn ngữ EC chính thức thực tế sẽ vẫn là tiếng Anh (mà sau đó sẽ không phải là ngôn ngữ của bất kỳ quốc gia thành viên EU nào) và các dự án CNTT của H2020 được viết bằng tiếng Anh.


Đừng quên Plankalküll !
Erik Eidt

Cảm ơn. Đừng nhầm lẫn với tính toán kế hoạch
Basile Starynkevitch

Tôi không biết, nhưng tôi đã nâng cấp nó, vì vậy bây giờ nó (chỉ là than ôi). Tôi thấy đó là một câu trả lời tốt.
Mawg nói rằng phục hồi Monica

5
Tiếng Anh là một trong hai ngôn ngữ chính thức của Cộng hòa Ireland, là thành viên của EU.
Matthew Flynn

9

Có những lý do rất tốt mà ngôn ngữ lập trình chuyên nghiệp không được dịch.

1) Nỗ lực: Sẽ là một nhiệm vụ to lớn để dịch một ngôn ngữ hiện đại. Lấy Java - sẽ là một nhiệm vụ nhỏ để dịch 50 từ khóa, nhưng bạn cũng cần dịch thư viện chuẩn đầy đủ bao gồm hàng ngàn lớp và phương thức và tài liệu liên quan.

2) Tính tương thích: Ngay cả khi thư viện tiêu chuẩn và ngôn ngữ cơ sở được dịch, bạn vẫn không thể sử dụng các thư viện và mã của bên thứ ba chưa được dịch. Thư viện và mã của bên thứ ba là một phần chính của những gì làm cho một ngôn ngữ hấp dẫn và hữu ích. Với các phiên bản dịch, mỗi ngôn ngữ sẽ phải bắt đầu hệ sinh thái cho mỗi bản dịch từ đầu. Mọi người sẽ tồi tệ hơn.

3) Lập trình viên dù sao cũng cần biết tiếng Anh. Rất nhiều tiêu chuẩn như HTTP, CSS, HTML dù sao cũng sử dụng ngôn ngữ tiếng Anh cho các định danh. Chúng không thể được dịch vì các từ được nướng thành tiêu chuẩn.

Vì dù sao lập trình viên cũng cần biết tiếng Anh, nên sẽ chỉ có những hạn chế và không có lợi ích để tạo các phiên bản dịch của ngôn ngữ lập trình.

Điều đó nói rằng, đối với các ngôn ngữ dành cho các lập trình viên thông thường trái ngược với các lập trình viên chuyên nghiệp, việc tạo các phiên bản dịch có thể có ý nghĩa. Đây là trường hợp của VBA và tôi tin rằng AppleScript cũng tồn tại trong các phiên bản dịch.


5

Tôi không biết bất kỳ ngôn ngữ nào khác ngoại trừ một số phiên bản BASIC bí truyền thực sự cũ, có xu hướng mang đến nhiều ưu đãi kỳ lạ, vì vậy tôi sẽ dính vào câu hỏi phần thưởng: tại sao có quá ít ngôn ngữ lập trình được dịch:

Tôi tin rằng nó chỉ đơn giản là một sự phức tạp được thêm vào mà trình biên dịch và người triển khai thư viện không thấy cần thiết lắm. Dưới đây là một số lý do đóng góp theo ý kiến ​​của tôi.

  • Bạn sẽ giới hạn đối tượng mã của mình nếu bạn không sử dụng ngôn ngữ "phổ quát". Chắc chắn, không phải ai cũng biết tiếng Anh, nhưng điều này cũng đúng với mọi ngôn ngữ.
  • Từ khóa một từ không nhất thiết là từ đơn trong tất cả các ngôn ngữ làm phức tạp việc phân tích cú pháp. Tôi chưa bao giờ kiểm tra nhưng tôi có thể tưởng tượng có một số lượng lớn các vỏ đặc biệt để đối phó với loại nhiều từ duy nhất của c ++ "dài dài".
  • Nếu bạn bắt đầu dịch từ khóa, bạn cũng sẽ xem xét các địa điểm và cách các số được định dạng? Ví dụ, dấu phẩy so với dấu phân cách thập phân. Hoặc yêu cầu danh từ tiếng Đức được viết hoa?
  • Phần lớn các văn bản trong một chương trình nhất định là các biến, phương thức và tên lớp, không đề cập đến các bình luận. Mặc dù chắc chắn có các thư viện được viết bằng các ngôn ngữ khác, việc phải duy trì các bản dịch mã nguồn của tất cả các thư viện để phục vụ tất cả người dùng sẽ là một gánh nặng lớn đối với hầu hết các nhà phát triển, chưa kể đến sự phức tạp thêm trong các cuộc thảo luận xung quanh mã đó.
  • Trình biên dịch sẽ phải hiểu tất cả các ngôn ngữ được thực hiện. Có lẽ thậm chí nhiều ngôn ngữ trong cùng một tập tin. Một chiến công nhỏ cho máy tính chắc chắn, nhưng vẫn có việc làm thêm. Có lẽ cuối cùng bạn sẽ phải đối phó với cùng một từ khóa có nghĩa là những thứ khác nhau trong các ngôn ngữ khác nhau, hoặc các thuật ngữ đơn giản là quá mơ hồ để đọc tốt.
  • (ok, có ý kiến) Chắc chắn hầu hết những người đã phải đối phó với các tài liệu MS Office được lập trình và định dạng bằng các ngôn ngữ khác nhau sẽ loại bỏ ý tưởng này vì không đáng để gặp rắc rối.

Cá nhân tôi thích nó nếu chúng tôi có thể làm việc với mã theo cách có cấu trúc hơn, trong một trình soạn thảo thực sự hiểu mã như nó là gì, các câu lệnh, hướng dẫn, v.v. sẽ cho phép chúng tôi làm nhiều điều thú vị , thậm chí có thể hỗ trợ dịch tự động. Đối với bất cứ ai tự hỏi tôi đang nói về cái gì, hãy xem hình ảnh của Smalltalk và tái cấu trúc trình duyệt, và tưởng tượng những gì nó có thể trở thành nếu nó có thêm lực kéo.


3

Nếu bạn có một ngôn ngữ được xác định theo nghĩa "thẻ biểu tượng" ở một cấp độ và "người chỉ định thẻ bề mặt" ở cấp độ khác, với ánh xạ được xác định rõ giữa chúng, điều đó chắc chắn sẽ có thể.

Hãy tưởng tượng một ngôn ngữ, nơi bạn có của bạn if, while... do, switchvà tất cả các từ khóa khác được xác định (bằng cách nào đó) trong tiêu chuẩn, bạn có thể gửi các thư viện hệ thống trong "định dạng tokenized", với mã địa phương bằng văn bản dưới hình thức phi tokenized. Sau đó, trình biên dịch thực tế hoạt động trên lớp mã thông báo và có thể mọi thứ đều tốt.

Tuy nhiên, đây không phải là toàn bộ câu chuyện. Bạn vẫn sẽ gặp phải tình huống trong đó bạn có các thư viện nhận được từ một nơi không phải là "thư viện chuẩn", được đặt xen kẽ bởi các tên hàm. Và những ngôn ngữ đó sẽ không có ánh xạ chính tắc giữa các ngôn ngữ và sẽ yêu cầu dịch sang ngôn ngữ địa phương để có thể sử dụng được hoặc bạn kết thúc với sự nhầm lẫn của các ngôn ngữ trong mã nguồn của mình.


2

Tất cả các câu trả lời được đưa ra là câu trả lời tuyệt vời, nhưng dù sao tôi cũng sẽ đưa ra hai xu của mình.

Khi bắt đầu tính toán , sự thống trị về kỹ thuật, văn hóa và kinh tế của Hoa Kỳ và Vương quốc Anh đã khiến nó chỉ hợp lý những gì các ngôn ngữ thành công nhất được tạo ra bằng các từ tiếng Anh.

Sau này, khi phần mềm trở thành một ngành công nghiệp , nó cũng trở thành một nỗ lực toàn cầu. Không có gì bí mật rằng có ít lập trình viên hơn mức cần thiết, vì vậy các công ty phần mềm và các công ty đặc biệt trong ngành như IBM, đã bắt đầu thuê các lập trình viên từ khắp nơi trên thế giới: Nga, Pakistan, Ấn Độ, Pháp, Đức, Israel, v.v. chủ yếu là để lập trình bằng các ngôn ngữ đã thành công trên toàn cầu vốn đã có tiếng Anh và cũng tạo ra các ngôn ngữ mới, và đối với nguồn lập trình viên khác biệt đó, ngôn ngữ chung hiện có là tốt hơn bất kỳ ngôn ngữ nào khác.

Gần đây nhất, phong trào phần mềm miễn phí và nguồn mở đã khiến việc tạo ra phần mềm trở thành một nỗ lực thậm chí còn mang tính toàn cầu hơn trước. Một số dự án phần mềm mở, bao gồm một số nền tảng lập trình, ngôn ngữ và khung là các dự án lớn liên quan đến hàng trăm cộng tác viên.

Ngôn ngữ nào một người từ Israel sẽ sử dụng để cộng tác với một người từ Sri Lanka? Hầu hết có lẽ họ không nói hoặc thậm chí đọc tiếng mẹ đẻ của nhau. Vì vậy, tiếng Anh đến để giải cứu.

Dù muốn hay không, tiếng Anh là ngôn ngữ của những nỗ lực toàn cầu . Và không phải vì nước Mỹ đang đẩy nó mà vì thế giới đang kéo nó.

Diễn giải Jay Walker :

Ngôn ngữ mẹ đẻ của bạn là ngôn ngữ bạn sử dụng nhiều nhất hàng ngày và sẽ luôn là trung tâm của trái tim và bộ não của bạn, nhưng với tiếng Anh, bạn là một phần của cuộc trò chuyện rộng hơn.

Xem video, "Tiếng Anh Mania" .

Dòng dưới cùng:

Các ngôn ngữ lập trình sử dụng các ngôn ngữ khác nhau sẽ tiếp tục tồn tại và sẽ tiếp tục được phát minh (như Scratch dựa trên đồ họa), nhưng ít nhất trong tương lai gần, te hey sẽ tương đối ít.


-2

Tiếng Anh cũng là một ngôn ngữ "không có dấu", bạn cũng không có ký tự lạ nào cần mã hóa khác với ASCII. Tôi là người Ý và đôi khi tôi gặp phải lỗi mã hóa nếu tôi sử dụng bố cục bàn phím tiếng Ý hoặc các ký tự có dấu như àèéìòù. Ngoài ra, "other" được dịch trong "altrimenti", "in" là "dentro" ... điều đó sẽ gây nản lòng.


9
Đây là lý do tuần hoàn - ASCII trở thành bộ ký tự chuẩn vì tiếng Anh là ngôn ngữ chung của điện toán.
JacquesB
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.