Sự tách biệt ngôn ngữ của con người đến từ sự tiến hóa (darwinian?) Trong các cộng đồng bị cô lập. Sự tách biệt các ngôn ngữ lập trình xuất phát từ các biến thể về nhu cầu kỹ thuật, hệ tư tưởng kỹ thuật, từ những thay đổi về hiểu biết kỹ thuật và lý thuyết, từ những thay đổi trong khả năng kỹ thuật của chúng tôi để thực hiện. Đó là một quá trình có ý thức hơn, tôi nghĩ.
Ngôn ngữ máy tính có thể giống ngôn ngữ tự nhiên hơn không? Có lẽ là phần nào, lên đến một điểm. Tôi đoán rằng một phần lớn sự phức tạp của ngôn ngữ tự nhiên là kết quả của một loạt các hiện tượng tiến hóa đồng thời không có lý do để tạo ra một kết quả nhất quán tại bất kỳ thời điểm nào, mặc dù có khả năng những mâu thuẫn cũ có thể được loại bỏ dần dần trong khi hiện tượng mới xuất hiện . Tôi không phải là chuyên gia về ngôn ngữ học. Nhưng chúng ta có muốn sự phức tạp đó trong các ngôn ngữ lập trình.
Vấn đề mơ hồ là một vấn đề quan trọng, nhưng không được nêu ra bởi hầu hết mọi người. Ngôn ngữ là một phương tiện giao tiếp, và nó phải được phân tích trong ngữ cảnh của giao tiếp đó (người-người, người-máy, cả hai, giữa các địa điểm hoặc giữa các thời điểm, ... để nói một cách đơn giản). Vấn đề không phải là liệu bạn có thể đưa ra những tuyên bố rõ ràng bằng ngôn ngữ hay không, mà là bạn có thể luôn đảm bảo rằng giao tiếp sẽ không rõ ràng trong ngữ cảnh dự định của nó hay không. Có một ngôn ngữ lập trình nổi tiếng và được sử dụng rộng rãi, cho phép viết các chương trình mơ hồ (tốt, nó đã làm, nhưng tôi đã không xem xét các phiên bản mới nhất trong một thời gian). Trong trường hợp này, trình biên dịch đủ thông minh để phát hiện sự mơ hồ và yêu cầu làm rõ, có thể được kết hợp trong chương trình loại bỏ sự mơ hồ. Lưu ý rằng phát hiện sự mơ hồ không có nghĩa là chỉ một trong những lựa chọn có thể có ý nghĩa, tất cả đều có ý nghĩa. Vấn đề là liệu một trong những thực thể giao tiếp có thể phát hiện sự mơ hồ để người gửi có thể làm rõ nó hay không. Con người rất tệ trong việc này, nhưng máy tính có thể khá tốt.
Các hình thức và ngôn ngữ lập trình có thể có cú pháp phong phú và linh hoạt hơn. Tôi tin rằng lý do chính họ không phải là chủ nghĩa bảo thủ đơn giản. Các công cụ cú pháp được sử dụng vẫn rất thường là các công cụ được thiết kế từ ba mươi năm trước trở lên, để đáp ứng các hạn chế của máy tính thời đó. Hiệu quả phân tích cú pháp không còn là vấn đề quan trọng trong việc biên dịch và các kỹ thuật mạnh hơn tồn tại một cách dễ dàng.
Thật thú vị, cơ sở được sử dụng rộng rãi nhất cho cú pháp ngôn ngữ lập trình đến từ nghiên cứu ngôn ngữ tự nhiên: ngữ pháp không ngữ cảnh. Phần lớn các nghiên cứu kỹ thuật đã chuyển sang khoa học máy tính lý thuyết / kỹ thuật vào những năm sáu mươi, để phần nào được khám phá lại vào đầu những năm tám mươi bởi những người có ngôn ngữ tự nhiên (tôi đang đơn giản hóa). Kể từ đó, nhiều tiến bộ đã được thực hiện cho cú pháp trong các ngôn ngữ tự nhiên, trong khi khoa học máy tính dường như chủ yếu bị mắc kẹt với các công cụ cú pháp cũ. Con lắc ngôn ngữ tự nhiên hiện đang quay trở lại với các kỹ thuật thống kê, nhưng các phương pháp đại số cho cú pháp không bị lãng quên. Nhiều khả năng, các phương pháp tốt sẽ đến từ sự kết hợp của các kỹ thuật đại số và thống kê.
Cảm giác của tôi là khu vực quan trọng là ngữ nghĩa và sự chuyển đổi giữa cú pháp và ngữ nghĩa. Điều này vẫn rất khó để chính thức hóa ngôn ngữ tự nhiên, trong khi chúng ta có nhiều kỹ thuật chính xác trong trường hợp ngôn ngữ lập trình và hệ thống chính thức. Vì trò chơi không được chơi cho các ngôn ngữ tự nhiên, thật khó để nói tác động của nó đến các ngôn ngữ lập trình trong tương lai.
Một điểm khác là nhiều nhà thiết kế ngôn ngữ lập trình đang cố gắng chứng minh một cái gì đó hoặc thực thi một ý thức hệ kỹ thuật. Do đó, họ nhận được rất nhiều quy định trong thiết kế của họ để ngăn người dùng rời khỏi mô hình dự định của họ. Thật không may, điều này cực kỳ phản tác dụng cho sự sáng tạo. Ngôn ngữ sáng tạo nhất từng được thiết kế là một trong những ngôn ngữ đầu tiên: Lisp (1958). Sự tự do và linh hoạt mà nó cho phép là nguồn sáng tạo đáng kể. Giá là nó đòi hỏi kỷ luật tự giác và hiểu biết. Nhưng Lisp thực sự là một ngôn ngữ kim loại, một ngôn ngữ để tạo ra các ngôn ngữ.
Bây giờ, để có một góc nhìn khác, các chương trình thực sự là bằng chứng về đặc điểm kỹ thuật của chúng được xem như một tuyên bố toán học (tốt, tôi đang đơn giản hóa một lần nữa). Một số người (tôi không nhớ các tài liệu tham khảo, xin lỗi) đã chơi với các nhà tiên tri định lý để đưa ra các bằng chứng trông giống như chúng được viết bởi một nhà toán học bằng ngôn ngữ tự nhiên. Vì vậy, tôi đoán ý tưởng có các chương trình trông giống như chúng được viết bằng ngôn ngữ tự nhiên có thể không hoàn toàn vô lý.
Tuy nhiên, bạn có thể nhận thấy rằng, ngay cả khi được viết một cách không chính thức bởi một nhà toán học, diễn ngôn toán học trông khá khác so với nói chuyện thông thường hoặc từ một cuốn sách lịch sử. Điều này là do một sự khác biệt đáng kể trong vũ trụ diễn ngôn có liên quan, các lĩnh vực ngữ nghĩa đang được nói đến. Do đó, trong khi bạn có thể hình dung các ngôn ngữ lập trình trông giống ngôn ngữ tự nhiên hơn, có một giới hạn tự nhiên là lĩnh vực diễn ngôn và các thuộc tính mong muốn của riêng nó. Nhiều khả năng nó sẽ vẫn cơ bản là hời hợt, nghĩa là, chủ yếu là cú pháp. Nhà toán học có thể nói về các hệ thống chính thức và về chính trị. Hy vọng rằng hai bài diễn thuyết sẽ không giống nhau. Máy tính không thể (chưa?) Nói về chính trị, hoặc hiểu nó. Ngày họ làm điều đó sẽ không còn là lập trình.
Nhìn lại lịch sử, các ngôn ngữ cấp cao, ngay từ lần đầu tiên (FORTRAN) cố gắng tiến gần hơn đến một hình thức tự nhiên hơn để diễn đạt các nhiệm vụ tính toán, nhưng các nhiệm vụ này được hiểu là toán học hoặc logic (Fortran 1957, Algol 1958, Lisp 1958 ), hoặc định hướng kinh doanh nhiều hơn (Cobol 1959). Trong vòng 10 năm, mọi người đã lo lắng về các ngôn ngữ sẽ gần gũi hơn, thích nghi tốt hơn với vấn đề hiện tại và đã có nghiên cứu quan trọng về cái gọi là extensible
languages
, bao gồm cả cú pháp và ngữ nghĩa. Một con đường chính để thể hiện vấn đề một cách tự nhiên hơn là sự xuất hiện của object
orientation
(đôi khi dưới những tên khác). Mặc dù việc phân công làm cha mẹ luôn khó khăn, nhưng có lẽ nó xuất hiện từ công việc về trí tuệ nhân tạo, chủ yếu là ở Lisp và từ ngôn ngữSimula
67
(Gia đình Algol) vốn được dự định thể hiện các vấn đề trong thế giới thực tự nhiên hơn sẽ được mô phỏng trên máy tính. Tất cả dường như lịch sử nhất quán.