tại sao không kết hợp các tính năng tốt nhất của tất cả các ngôn ngữ lập trình hiện có và phù hợp với nó trong ngôn ngữ lập trình phổ quát?
tại sao không kết hợp các tính năng tốt nhất của tất cả các ngôn ngữ lập trình hiện có và phù hợp với nó trong ngôn ngữ lập trình phổ quát?
Câu trả lời:
Vì lý do tương tự, bạn không sử dụng một con dao quân đội Thụy Sĩ để khắc con gà ...
Con dao của quân đội Thụy Sĩ thường có một lưỡi dao, cũng như các công cụ khác nhau, chẳng hạn như tua vít và có thể mở và nhiều thứ khác. Các tệp đính kèm này được xếp bên trong tay cầm của con dao thông qua cơ chế điểm trục ...
Thiết kế của con dao và tính linh hoạt của nó đã dẫn đến sự công nhận trên toàn thế giới ...
Bởi vì
Những gì bạn có trong lập trình là một miền vấn đề rất lớn. Tên miền này cực kỳ và theo nhiều hướng.
Đây là lý do tại sao các bộ điều khiển chuyến bay nhúng được viết bằng C và các trang web được viết bằng PHP, Java, Rails, .NET và một loạt các bộ điều khiển khác.
Đối với bộ điều khiển chuyến bay nhúng, tôi có khoảng 128k bộ nhớ để làm việc và trên hết là nếu mã của tôi có một ngoại lệ chưa được xử lý thì máy bay gặp sự cố, 200 người chết và tôi bị kiện phải điều chỉnh $ 1B, và phải gửi các kỹ sư cho mọi người sân bay trên thế giới để sửa máy bay bị mất khách hàng của tôi $ 10 triệu / ngày. Tôi phải làm việc với một ngôn ngữ rất chặt chẽ và có một số lượng nhỏ các bộ phận chuyển động có thể bị sai.
Đối với ứng dụng web của tôi, tôi có vài GB bộ nhớ để làm việc, nhưng tốc độ mạng bị hạn chế (ở mức độ thấp hơn hàng ngày, nhưng đây có lẽ là giới hạn lớn nhất của web). Tôi sẽ xem xét một ngôn ngữ mang lại cho tôi rất nhiều tính năng và tạo ra đầu ra có thể được truyền đi nhanh nhất có thể. Tôi không thực sự quan tâm nếu trang web của tôi bị sập, tôi có thể sẽ mất một vài doanh số (100 đô la) và phải vá trường hợp sử dụng bị đánh bom, không có vấn đề gì lớn.
Các trang web đã không được viết bằng C trong hơn 15 năm (có ai thực hiện bất kỳ tập lệnh cgi nào không?) Và theo như tôi biết thì các bộ điều khiển chuyến bay mới bắt đầu xem xét C ++, nhưng ngay cả sau đó theo một cách rất hạn chế.
Nếu bạn không có hộp công cụ, hoặc chỉ có một trong những cái búa nhỏ với các đầu vặn vít trong tay cầm rỗng, thì tôi rất thông cảm với bạn.
Nghiêm túc. Nếu bạn đi đến một cửa hàng tự động, thợ máy của bạn chỉ có một công cụ duy nhất trong công cụ của mình phải không? Anh ấy (hoặc cô ấy) là một chuyên gia, với các công cụ cấp chuyên nghiệp được thiết kế đặc biệt để thực hiện các nhiệm vụ sửa chữa ô tô khác nhau.
Tương tự, các nhà phát triển phần mềm chuyên nghiệp nên sở hữu một bộ công cụ đủ để thực hiện giao dịch của mình. Nếu bạn mở hộp công cụ của mình và chỉ thấy [phần mềm tương đương với] một tuốc nơ vít của Philips, thì bạn không thể coi mình là một chuyên gia.
Bạn có thể vặn bu-lông bằng cờ lê đầu mở, cờ lê đầu hộp, cờ lê ratchet hoặc cờ lê điều chỉnh. Bạn thậm chí có thể xoay một bu lông trong một nhúm với kìm trượt, vụng về, với thiệt hại từ nhẹ đến nghiêm trọng. Nhưng nó là khá khó khăn để biến một bu lông bằng búa tạ.
Một loại câu trả lời khác cho những người khác - tôi thực sự nghĩ rằng có khả năng ngôn ngữ sẽ trở thành một ngôn ngữ "phổ quát", cho phép các tính năng và mô hình của nhiều ngôn ngữ khác, mặc dù có lẽ không phải là ngôn ngữ được thiết kế nghiêm ngặt mà bạn có thể nghĩ đến.
Để sử dụng sự tương tự của brettmjohnson ở trên, ý tưởng rằng mỗi ngôn ngữ lập trình là công cụ bên trong một hộp (hoặc trên một con dao quân đội Thụy Sĩ) là giả định mà mọi người đang đưa ra, nhưng thực sự là một giả định thiếu sót.
Nếu ngôn ngữ lập trình là hộp công cụ thì sao?
Ý tôi là, điều gì sẽ xảy ra nếu bạn có thể thêm và xóa các tính năng khỏi ngôn ngữ theo ý muốn và có hộp công cụ của riêng bạn với các công cụ bạn cần trong đó - ngay cả khi các công cụ dành cho các mục đích khác nhau.
Khái niệm tồn tại một phần rồi. Ví dụ: các ngôn ngữ như Nemerle cho phép bạn thêm cú pháp vào ngôn ngữ và như vậy, bạn có thể có được "tính năng tốt nhất từ ngôn ngữ X" và thêm nó vào Nemerle (hoặc của riêng bạn). Điều này không nhất thiết có nghĩa là viết macro của riêng bạn mọi lúc - mỗi ngôn ngữ (hoặc mô hình) có thể được xác định bên trong một macro trong thư viện chuẩn - sao cho bạn có thể import Haskell; import Prolog;
và bắt đầu viết hai ngôn ngữ như thể nó là một phần của ngôn ngữ của bạn?
Câu hỏi sau đó là - làm thế nào để bạn có được các tính năng của các ngôn ngữ / mô hình khác nhau để làm việc với nhau? Mặc dù tôi không thể trả lời rằng, các khung như .Net và JVM cung cấp một số giải pháp - các ngôn ngữ ít nhất tương thích một phần do cách chúng được biên dịch. Bạn có thể lấy bất kỳ mã nào được viết bằng C # chẳng hạn và sử dụng nó từ F # mà không có khiếu nại.
"Vấn đề" với giải pháp như hiện nay, là việc sử dụng các ngôn ngữ này cùng nhau đòi hỏi bạn phải tạo chúng thành các dự án riêng biệt, không thể tham chiếu lẫn nhau - bạn chỉ có thể tham chiếu 1 chiều. Rào cản ngôn ngữ là mỗi dự án biên dịch tất cả các tệp của nó thành Ngôn ngữ trung gian chung trước khi bất kỳ dự án nào khác có thể truy cập vào nó.
Bước đệm hướng tới việc loại bỏ rào cản đó sẽ là cho phép mã của các ngôn ngữ khác nhau (ví dụ: C # và F #) được biên dịch trong cùng một dự án. Về lý thuyết, bạn có thể biên dịch từng tệp riêng biệt (hoặc theo nhóm - nếu chúng có loại một phần hoặc tham chiếu vòng tròn), sau đó biên dịch các tệp của một ngôn ngữ khác có thể truy cập vào các đối tượng đã biên dịch (CIL). Bạn sẽ cần xác định nghiêm ngặt thứ tự biên dịch để làm việc này - nhưng thứ tự biên dịch đã được yêu cầu trong trường hợp F #.
Dù sao, tôi không nói "chắc chắn có thể có một ngôn ngữ phổ quát". Tôi đề nghị rằng có khả năng tương tác tốt hơn nhiều giữa các ngôn ngữ hiện đang tồn tại. Trong thực tế, nó không có khả năng cải thiện rất sớm, chỉ vì khối lượng công việc khổng lồ là để thực hiện một ngôn ngữ và các thư viện, các công cụ, vv cần thiết để sử dụng nó.
Các tính năng tốt nhất của một số ngôn ngữ xung đột với các tính năng tốt nhất của những ngôn ngữ khác.
Ví dụ: Phản xạ nhận biết kiểu là một tính năng thực sự tốt, nhưng nó sẽ không có giá trị nhiều trong một ngôn ngữ được gõ lỏng lẻo, nhưng đôi khi gõ lỏng lẻo cũng có thể là một lợi ích thực sự.
Ngay cả trong một ngôn ngữ, bạn không thể luôn sử dụng tất cả các tính năng tốt nhất cùng một lúc vì chúng xung đột với nhau.
"Jack của tất cả các ngành nghề - bậc thầy của không." lò xo để tâm.
Một số chương trình yêu cầu tốc độ, số lượng lớn bộ nhớ khác hoặc truy cập nhanh vào đĩa. Một số ngôn ngữ tốt ở một ngôn ngữ, nhưng lại kém về ngôn ngữ khác - Tôi không nghĩ bạn sẽ có một ngôn ngữ tốt cả.
Vì vậy, trong khi bạn có thể viết hầu như bất kỳ chương trình nào bằng bất kỳ ngôn ngữ nào, những gì bạn nhận được không được đảm bảo là chương trình "tốt nhất" bạn có thể viết để giải quyết vấn đề đó.
Có. Không có công cụ nào là tốt nhất cho mọi thứ, nhưng một số công cụ như nhiều ngôn ngữ lập trình phục vụ cho tất cả các mục đích, không phải là tốt nhất cho tất cả.
Bạn có thể chọn công cụ tốt nhất cho công việc nhưng có những ngôn ngữ lập trình có thể được sử dụng cho tất cả các mục đích và bạn có thể chọn chúng. Tôi không khuyên bạn nhưng điều đó là có thể.
Bởi vì một cái gì đó tôi gọi là "nghịch lý khái quát hóa / chuyên môn hóa", có lẽ có một tên khác và thực sự không phải là một nghịch lý
Một ngôn ngữ lập trình càng khái quát thì càng cần nhiều mã để hoàn thành một cái gì đó. Ngôn ngữ càng chuyên biệt, bạn càng ít có thể thực hiện được với nó.
Ngôn ngữ định hình cách mọi người nghĩ. Điều này đúng với ngôn ngữ tự nhiên. Nếu một đứa trẻ chỉ biết một ngôn ngữ với các số "một, hai, nhiều", thì việc dạy toán cho trẻ là ... khó. (Xin lỗi, tôi không có liên kết) Trong tiếng Anh, chúng ta nói về những thời điểm khác nhau như thể chúng là địa điểm - do đó khái niệm du hành thời gian là có thể tưởng tượng. Trong một số ngôn ngữ khác, ý tưởng du hành thời gian sẽ không bao giờ xảy ra với người nói.
Điều này cũng đúng với các ngôn ngữ lập trình.
Do đó, nếu chúng ta có một ngôn ngữ lập trình duy nhất, mọi người sẽ nghĩ về tất cả các nhiệm vụ tính toán giống hệt nhau. Do đó, chúng tôi sẽ không khám phá các lựa chọn thay thế, và cách tốt nhất để làm một cái gì đó sẽ vẫn chưa được khám phá.
Điều gần nhất mà chúng ta có với ngôn ngữ phổ quát là C. C ánh xạ rất sát với các khái niệm phần cứng cơ bản (cách mọi thứ thực sự được thực hiện trong phần cứng) và các chương trình trong mọi ngôn ngữ * có thể chuyển đổi thành C. (Xem cách CFront sử dụng trình biên dịch C cho trình biên dịch nhiệm vụ) Vấn đề với C về cơ bản là các chuyển đổi được đề cập ở trên sẽ không có ý nghĩa từ góc độ lập trình viên C.
"Lambdas" luôn có thể có trong C. Cú pháp bị tắt, bao gồm cả mã trải khắp toàn bộ dự án / tệp, do đó nó không phải là một giải pháp ưa thích. Với phiên bản không chụp / upvalue / etc, hãy xác định hàm ở một nơi khác và truyền con trỏ đến hàm. (xem qsort () ) Để sử dụng lambdas với các giá trị đã bắt, số lượng và độ phức tạp của mã bạn phải viết tăng lên rất nhiều - theo như tôi biết thì chưa có ai thực sự viết mã để sử dụng phương pháp lập trình này trong C. Trái ngược với các ngôn ngữ mà lambdas là một phần của ngôn ngữ, và về cơ bản được sử dụng ở mọi nơi.
Sự khác biệt chính giữa C và C ++ là cách bạn có thể yêu cầu C ++ chăm sóc mọi thứ cho bạn; nhưng sau đó bạn không còn có thể nhìn thấy, chỉ từ một dòng mã, bạn thực sự yêu cầu nó bao nhiêu. Câu trả lời trở thành: nó phụ thuộc (vào tất cả các mã khác này).
Một số ngôn ngữ lập trình là tuyệt vời cho các nhiệm vụ cụ thể, nhưng nơi mà hầu hết các chương trình hiện tại được sử dụng trên toàn thế giới đơn giản sẽ không có ý nghĩa nếu được lập trình bằng ngôn ngữ đó. Đó là, nếu ngôn ngữ có thể được sử dụng để thực hiện chương trình đó để bắt đầu, đó không phải là ngôn ngữ nhất định.
Sự bất khả thi về giá trị kỹ thuật của việc có một ngôn ngữ phổ quát? Đó là tổng số vô nghĩa. Bạn có thểcó một ngôn ngữ phổ quát bao gồm tất cả các cơ sở. Vấn đề chủ yếu mang tính lịch sử: các ngôn ngữ khác nhau được phát minh để làm những việc khác nhau và được sử dụng trong các cộng đồng khác nhau. Nhiều người trong số họ bị mắc kẹt. Thêm vào sở thích đó (vi! Emacs! Chờ đợi, ý tôi là Java! C #, chờ tôi có nghĩa là Microsoft, Nguồn mở, v.v.) và nhúng chung các tai nạn lịch sử ... Hãy nhìn vào các ngôn ngữ tự nhiên ở một vùng đất nhỏ đại chúng như một số nước châu Âu để xem chủ đề này có thể trở nên điên rồ như thế nào. Một số thị trấn có niềm tự hào và niềm vui riêng, một phương ngữ nhỏ mà chỉ họ nói. Các quốc gia và cộng đồng lập trình không khác nhau, cộng đồng lập trình cũng hợp lý hơn. Nếu đúng như vậy, tất cả chúng ta sẽ nói esperanto và lập trình trong Universal đôi khi '...
Thật sai lầm khi nghĩ rằng "kết hợp tất cả các tính năng" sẽ tạo ra một ngôn ngữ tốt hơn.
Bạn có nhiều khả năng kết thúc với một mớ hỗn độn, phức tạp, không thể đọc được.
Thiết kế ngôn ngữ tốt đòi hỏi sự lựa chọn và đánh đổi phải được thực hiện. Có thể cho rằng các ngôn ngữ tốt nhất / cách mạng nhất / thành công nhất là những ngôn ngữ lấy ra thứ gì đó và cung cấp một sự thay thế tốt hơn thay vì thêm những thứ mới vào. Ví dụ
Có một cuộc nói chuyện tuyệt vời trên đỉnh này của chú Bob Martin - Ngôn ngữ lập trình cuối cùng
goto
. Nhưng tôi thích phần còn lại của câu trả lời. Điều chính C làm là cho phép bạn không quan tâm chính xác mọi thứ trong bộ nhớ là gì và đăng ký vào lúc nào và nó ẩn bộ đếm chương trình (về địa chỉ chính xác mà nó đang ngồi, một lần nữa. Bạn có thể di chuyển nó ở mức độ lắp ráp chính xác với một goto).
Bởi vì nếu bạn tạo ra một ngôn ngữ như vậy, nó sẽ là một ngôn ngữ mới khác. Bạn có thể có một lượng lớn người hâm mộ, nhưng tất cả các ngôn ngữ khác sẽ vẫn tồn tại.
C vẫn tồn tại mặc dù nhiều ngôn ngữ mới đã được phát minh kể từ đó.
Bạn có thể nói rằng trăn là một ngôn ngữ phổ quát như vậy, nhưng sau đó cũng có ruby.
Lý do có nhiều ngôn ngữ đơn giản là vì có nhiều lập trình viên và một số trong số họ thích tạo ngôn ngữ mới.
Lý do không có ngôn ngữ phổ quát duy nhất mà mọi người đồng ý là lập trình như một nghề thủ công không bị quy định bởi một số tổ chức đưa ra tất cả quyết định. Mọi người có thể tự do làm những gì họ muốn.
Đó là một điều tốt.
Với tất cả những gì được viết cho đến nay, thật khó để thêm nhiều lý do mới, nhưng tôi sẽ ném vào một vài.
Sự tiến hóa: Nó không chỉ là các hệ thống sinh học được giới thiệu, biến đổi và trải qua một cuộc cạnh tranh sinh tồn nhất đối với các nguồn lực và một cách thích hợp để gọi riêng của chúng. Sự cạnh tranh là tốt và đẩy mọi thứ về phía trước.
Trưởng thành: Chúng tôi đã tạo ra các ngôn ngữ máy tính có lẽ ít hơn một thế kỷ. Chúng tôi chưa thể có câu trả lời vì chúng tôi thậm chí không biết tất cả các câu hỏi.
Nguồn gốc riêng biệt: Không chắc chắn từ thích hợp cho việc này, nhưng trên thế giới, chúng có nhiều hệ thống chữ viết bắt đầu ở nhiều vùng địa lý. Hãy suy nghĩ về Cuneiform đã được quyết định một phần bởi các yêu cầu khắc vào viên đất sét. Hãy nghĩ về tiếng Phạn, bảng chữ cái tiếng Hy Lạp, tiếng Do Thái, tiếng La Mã, tiếng Ả Rập. Chữ tượng hình, phương pháp viết chữ đẹp của Trung Quốc với hơn 6000 biểu tượng được chia sẻ ở nhiều nước Đông Á. Hãy nghĩ về các bảng chữ cái hỗn hợp hiện đại hơn với cơ sở ngữ âm như Cyrillic, Katakana và Hirigana. Tôi không phải là một nhà ngôn ngữ học vì vậy đừng quá gay gắt những điều không chính xác, nhưng khi các nền văn hóa trên toàn thế giới cần một cái gì đó, họ sẽ tạo ra nó và biến nó thành sự cần thiết. Ngôn ngữ máy tính xuất hiện khi có rất nhiều giao tiếp trên toàn thế giới và giống như các hệ thống Imperial và Metric, đến từ những nơi có ý tưởng lãnh đạo mạnh mẽ. Nhưng ngôn ngữ lập trình phục vụ nhiều nền văn hóa khác nhau (một số trong đó là văn hóa doanh nghiệp), vì vậy chúng phản ánh những người tạo ra chúng. Ngôn ngữ máy tính đi kèm với các di sản văn hóa định hình thiết kế và sử dụng của họ. Trong văn hóa nhân hệ điều hành, C và C ++ dường như không bị loại bỏ sớm đối với Java (hoặc ngược lại) vì chúng cho phép tạo mã gốc, khớp nối chặt chẽ / hiệu quả với phần cứng để tạo các lớp trừu tượng hóa phần cứng và có cài đặt dựa trên kích thước khá lớn.
Thiết kế thiết kế: Ngôn ngữ lập trình bắt nguồn từ việc sử dụng các mô hình tổ chức khác nhau. COBOL và Ada đến từ các ủy ban là một phần của DOD có nhiều thứ bậc. Nếu tôi nhớ lại chính xác C, C ++, Java và có lẽ nhiều người khác đến từ một hoặc một số ít nhà thiết kế. Fred Brooks so sánh kết quả của ủy ban với các phương pháp dựa trên tầm nhìn trong bài báo của mình, Thiết kế thiết kế (http://www.youtube.com/watch?v=pC-DlX-PaF4). Nếu hôm nay chúng ta ngồi xuống để chọn một Da Vinci hoặc một ủy ban để xác định ngôn ngữ lập trình phổ quát, liệu chúng ta sẽ biết ai hoặc bằng phương pháp nào nên được kiến trúc?
Có lẽ hơi khác một chút về tất cả điều này:
Một ngôn ngữ là gì? Nói một cách đơn giản, đó là từ vựng, cú pháp và ngữ nghĩa.
Điều đầu tiên bạn làm với ngôn ngữ lập trình là gì?
Bạn định nghĩa mọi thứ - lớp học, biến, phương thức - bạn mở rộng vốn từ vựng và ngữ nghĩa.
Tại sao? Vì vậy, bây giờ bạn có thể nói những điều trong đó bạn không thể nói trước đây.
Dù muốn hay không, bạn đã tạo ra một ngôn ngữ có mục đích đặc biệt mới.
IMHO, điều cần tìm trong một ngôn ngữ có mục đích chung là nếu nó giúp dễ dàng tạo ra các ngôn ngữ có mục đích đặc biệt.
Ngoài tranh luận về dao-quân-quân (có một điểm - rất khó để thiết kế một ngôn ngữ phổ rộng tốt hơn ngôn ngữ dành riêng cho miền - nhưng điều đó không có nghĩa là ngôn ngữ đó sẽ không phải là cả hai có thể và một ý tưởng tốt), có vấn đề với "kết hợp các tính năng tốt nhất":
Nói tóm lại, thiết kế ngôn ngữ khó hơn và phức tạp hơn thế. Mặc dù, bạn có thể muốn xem Scala .
Visual Batch là một nỗ lực tại ngôn ngữ lập trình tùy biến. Liên kết dưới đây cho thấy cách giao diện lập trình này có thể được điều chỉnh cho phù hợp với nhu cầu của Ngôn ngữ lập trình phổ quát.
http://sourceforge.net/apps/phpbb/visualbatch/viewtopic.php?f=4&t=4
Có một ngôn ngữ lập trình phổ quát. Nó được gọi là "ngôn ngữ máy" và mọi thứ trong bất kỳ ngôn ngữ máy tính nào khác cuối cùng được thực thi như ngôn ngữ máy.
Nó trông như thế nào? Một chuỗi 0-9 và AF.
Nhưng đó là một con chó cái để sử dụng. Vì vậy, Alan phát minh ra một ngôn ngữ có thể được dịch sang ngôn ngữ máy và phù hợp hơn với những gì Alan muốn làm. Bill phát minh ra một ngôn ngữ khác cho những gì Bill muốn làm. Trước đó, bạn đã có Cobol và Fortran và Lisp và Java. Tất cả chúng chỉ là những ngôn ngữ đơn giản hóa của ngôn ngữ máy, dễ viết một số loại chương trình nhất định nhưng khó hơn, hoặc không thể, để viết các loại chương trình khác. Một là tốt cho kế toán, một là tốt cho việc kiểm soát tàu con thoi.
Hầu hết các câu trả lời ở đây tập trung vào việc sử dụng công cụ tốt nhất cho từng vấn đề. Tôi không tin rằng đây là một lý do đủ tốt.
Nếu bạn nhìn vào các công ty lớn thì thông thường công ty sẽ có xu hướng sử dụng một (hoặc một số ít) ngôn ngữ và công nghệ, ngay cả khi đối với một dự án cụ thể có ngôn ngữ nào đó tốt hơn.
Điều này được thực hiện bởi vì những lợi ích phát sinh từ việc tiêu chuẩn hóa được cải thiện, hỗ trợ dễ dàng hơn, chia sẻ mã, v.v ... lớn hơn (hầu hết các lần) sau đó là giá trị gia tăng của một ngôn ngữ cụ thể.
Tôi nghĩ rằng tất cả các câu trả lời "bởi vì bạn không khắc tượng bằng bút chì" đều thiếu điểm.
Ai ở đây, TRULY chọn một ngôn ngữ trước mỗi dự án mới?
Sự thật là, chúng ta chỉ cần một vài ngôn ngữ lập trình, và thế giới lập trình sẽ được tốt hơn theo cách đó: mọi người sẽ tập trung vào việc các ngôn ngữ kịch bản tốt hơn thay vì được rải rác trên python / ruby / perl / younameit ví dụ.
C # được lập trình trên / cho các cửa sổ (được rồi, có Mono, có ai ở đây chạy ứng dụng C # dưới ứng dụng Mono mỗi ngày không?) Và điều đó khiến người dùng mua Windows7 / 8 và điều đó kiếm tiền cho Microsoft.
Các công ty khác cũng làm như vậy, sau đó nguồn mở biết rõ hơn, rồi cả thiên tài nữa ... và chúng tôi có rất nhiều ngôn ngữ giống nhau, đó chỉ là bản chất tự tâm của nhân loại.
Chúng ta phải tìm đến kinh tế để trả lời câu hỏi này. Nếu nó tiết kiệm tiền kinh doanh chỉ có một ngôn ngữ, chúng tôi sẽ có nó. Họ sẽ chuẩn hóa nó và yêu cầu mọi người sử dụng nó. Các ngôn ngữ khác sẽ mòn mỏi trong các tòa nhà học thuật bụi bặm và tầng hầm của những người đam mê mắt hoang dã. Điều này đã không xảy ra, vì vậy họ phải không có động cơ lợi nhuận trong ngôn ngữ lập trình phổ quát hoặc bây giờ người ta sẽ phát triển một cách tự nhiên.