Đã có nghiên cứu về ngôn ngữ học lập trình?


18

Ngôn ngữ lập trình là ngôn ngữ chính thức , nhưng không giống như nhiều ngôn ngữ chính thức, chúng cũng có ý nghĩa vốn có nhất định được xác định bởi ngữ nghĩa hoạt động của chúng , hoặc, trong trường hợp ngôn ngữ đánh dấu, ngữ nghĩa trình bày . Và ngôn ngữ lập trình, mặc dù thực sự chính thức, rất giống với ngôn ngữ tự nhiên, về mặt giao tiếp mà chúng cho phép.

Trong khi sự phát triển của các ngôn ngữ lập trình là nhân tạo, các quá trình tiến hóa, vay mượn, xen kẽ và đột biến ngôn ngữ tự nhiên đều có các đối tác nhân tạo khá rõ ràng. Vì vậy, tôi tự hỏi: đã bao giờ có bất kỳ nghiên cứu chuyên sâu, quy mô lớn nào về sự phát triển và hành vi của các ngôn ngữ lập trình từ quan điểm của một nhà ngôn ngữ học  ?


6
Perl được tạo ra bởi một nhà ngôn ngữ học, và nó lộn xộn hơn chính ngôn ngữ tiếng Anh.
Công việc

1
@Job: Và nó đã tồn tại hơn 23 năm, được cài đặt mặc định trên vô số nền tảng giống Unix và vẫn được sử dụng thường xuyên cho mọi thứ từ tự động hóa (vì nó sạch hơn kịch bản shell) cho phát triển Web (theo cách đó sạch hơn PHP) với mục đích ban đầu là xử lý văn bản với các biểu thức chính quy (mà nó đã thiết lập tiêu chuẩn công nghiệp thực tế). Chắc chắn nó lộn xộn, nhưng theo cách phù hợp với mọi người, và đó là nơi mà trong sự phát triển của Perl, nền tảng ngôn ngữ học của Larry là một lợi ích.
Jon Purdy

@Job hiệu ứng được gọi là "Tệ hơn là tốt hơn" vi.wikipedia.org/wiki/Worse_is_better .
Apalala

@Aplala: Điều đó không liên quan. Nếu bất cứ điều gì, Perl là một ví dụ, bởi vì nó giàu tính năng phức tạp phổ biến.
Jon Purdy

Câu trả lời:


6

Hãy nhớ rằng các ngữ pháp chính thức, không có chương trình hiện đại không thể là sản phẩm của nghiên cứu của nhà ngôn ngữ học Noam Chomsky .

Một tai nạn xe hơi khiến tôi không hoàn thành luận văn tốt nghiệp về chủ đề bạn hỏi, vì vậy không có tài liệu tham khảo nào tôi có thể cung cấp cho bạn, chỉ có ý kiến.

Ngôn ngữ nói phát triển ở bất kỳ tốc độ nào tùy thuộc vào bối cảnh và chúng làm như vậy theo những cách không thể đoán trước như bối cảnh của con người không thể đoán trước. Kết quả của WW2 có tác dụng rất lớn đối với ngôn ngữ Nhật Bản. Người Anh, Úc, Nam Phi và Bắc Mỹ không nói cùng một ngôn ngữ. Việc sử dụng các từ chối động từ trong số những nơi từng là thuộc địa của Tây Ban Nha đã trở nên khá khác biệt sau hai trăm năm độc lập (các cựu thuộc địa nghĩ rằng Tây Ban Nha của Tây Ban Nha là cổ xưa ).

Chỉ có lực hiệu quả đối với ngữ âm làm cho các từ khác nhau được sử dụng với các tần số khác nhau trên các vùng khác nhau được phát âm khác nhau: các từ rất phổ biến được đọc lướt, hoặc sai chính tả, và các từ ít phổ biến hơn được nói chính xác nhất có thể.

Ngôn ngữ tự nhiên, với các biến thể, sắc thái và sự tiến hóa của chúng không phù hợp với tính quyết định mà chúng ta yêu cầu của máy tính. (Trời ạ


Trong nghiên cứu của chúng tôi (tôi đã có một gia sư), chúng tôi đã xem xét tiếng Hy Lạp và tiếng Latin bởi vì chúng có các ngữ pháp được xác định rõ ràng, bao quát tốt mọi vai trò mà một từ có thể có trong một câu bởi sự từ chối của chúng. Nó không đủ tốt, và hồ sơ về cách mọi người thực sự nói những ngôn ngữ đó nói rằng nó rất khác so với những gì ngữ pháp của họ chỉ ra, như nó xảy ra với các ngôn ngữ hiện đại.
Apalala

4
Về tiếng Hy Lạp và Latinh cổ đại - một phần của vấn đề ở đây là các văn bản còn tồn tại có xu hướng chính thức về bản chất - các bài tiểu luận, hợp đồng, phán quyết pháp lý, v.v. Nếu bạn nghĩ về những thông điệp chúng tôi gửi hàng ngày - "Chào Honey, xin hãy nhận sữa trên đường về nhà "và" Jim - hãy nhớ báo cáo của Casey trong 9 giờ "- hầu hết những tin nhắn thoáng qua ở Rome cổ đại này sẽ bị mất mãi mãi.
HorusKol

2
Điều đó không hoàn toàn đúng. Mẹ tôi thỉnh thoảng nói về các lớp học tiếng Latin ở trường trung học của mình, và đề cập đến một đoạn họ dịch, một bản ghi nhớ từ một nhà thông thái La Mã cho người lái xe ngựa của mình. Ý chính là "Xin vui lòng, trong giờ cao điểm, ĐỪNG bị bắt đằng sau cỗ xe ngựa. Tôi không biết anh ta cho ngựa ăn gì, nhưng mùi hôi thối là TERRIBLE."
John R. Strohm

4

Tôi đọc lại câu hỏi và tôi nghĩ câu trả lời ban đầu của tôi không giải quyết được. Đây là một thử khác.

Không, chưa có nghiên cứu nghiêm túc nào về ngôn ngữ học lập trình mà tôi biết. Đã có dòng dõi ngôn ngữ truy tìm cho hai nhánh chính và một nhánh con:

  • Thủ tục. Von Neuman . Dijkstra . Fortran, Pascal, C.
    • Hướng đối tượng. Simula. Smalltalk.
  • Chức năng. McArthy . LISP.

Đối với những người trong chúng ta có nhiều thập kỷ trong lĩnh vực này, rõ ràng là các ngôn ngữ lập trình đã xen kẽ, và do đó người ta tìm thấy hầu hết các khía cạnh của bất kỳ mô hình thuần túy nào trong hầu hết các ngôn ngữ lập trình hiện đại, giờ đây được gọi là ngôn ngữ lập trình đa hướng : C #, Python, Java, .. .. Thậm chí trước đó thuần túy ngôn ngữ chức năng như OCaml và Haskell bao gồm đầy đủ thủ tục (thông qua monads ) và OO tính năng để cho bạn làm gì cả.

Điều tôi đã xảy ra, tôi nghĩ, rõ ràng là rất tốn kém (khi không ngớ ngẩn) khi phải chuyển đổi ngôn ngữ lập trình chỉ để có thể áp dụng một mô hình đúng cho một bài toán con nhất định.

Vẫn còn một ngoại lệ đối với xu hướng trong lĩnh vực các hệ thống không đồng bộ và không đồng bộ cao. Có các ngôn ngữ ưa thích có chức năng nghiêm ngặt, như Erlang , có lẽ bởi vì dễ dàng hơn để suy nghĩ về các hệ thống phức tạp như vậy về mặt chức năng.

Phần không nghịch lý của sự tiến hóa đã được dựa trên cú pháp. Các ngôn ngữ khuyến khích hoặc thậm chí cho phép các chương trình mật mã đã ngày càng ít được sử dụng ( APL , AWK , và thậm chí Perl và LISP). Các cú pháp thống trị ngày nay là những ngôn ngữ dễ đọc hơn (trái ngược với các ngôn ngữ dễ viết) như C (C ++, C #, Java, Objective-C, Scala, Go, IML, CSS, JavaScript và cả Python), Pascal (Fortran 90+ x), Smalltalk (Ruby), ML / Miranda (OCaml, Haskell, Erlang) và SGML (HTML, XML).

Sơ đồ này không hoàn toàn chính xác, và nó không cập nhật, nhưng nó cho một ý tưởng tốt về bao nhiêu ngôn ngữ lập trình đã hội tụ kể từ kỷ nguyên ngôn ngữ trên mỗi trang web của những năm 1970.

tiến hóa ngôn ngữ lập trình


1
Điều này giống như những gì tôi đang tìm kiếm. Tôi đoán tôi cũng đang tìm kiếm mối tương quan trực tiếp với hình thái và âm vị học, trên hết mối liên hệ rõ ràng với cú pháp xuất phát từ việc làm việc với các ngữ pháp chính thức.
Jon Purdy

@Jon Vâng, xu hướng rõ ràng khác là tiếng Anh đã và là ngôn ngữ tự nhiên thống trị trong tất cả các ngôn ngữ lập trình, cả về mặt cú pháp và ngữ pháp. Ngôn ngữ lập trình là từ trái sang phải, động từ trước. Tiếng Nhật chẳng hạn, rất khác, nhưng tôi biết không có nỗ lực nào để phát triển ngôn ngữ lập trình kiểu Nhật. vi.wikipedia.org/wiki/Japanese_lingu#Sentence_structure
Apalala

@Aplala: Thứ tự SOV là phổ biến trong các ngôn ngữ hướng ngăn xếp, toán tử infix được tính là SVO và các hàm (Lisp là ví dụ bệnh lý) là VSO. Tiếng Anh chắc chắn có ảnh hưởng mạnh mẽ, nhưng tôi nghĩ có những yếu tố khác trong công việc ... Tôi có thể phải tự thực hiện nghiên cứu này. : P
Jon Purdy

@Jon Vâng, tôi đã quên Forth và Postcript, cả hai đều dựa trên stack và SOV. Xin vui lòng cho tôi biết nếu bạn bắt đầu nghiên cứu. Tôi chuyên về lý thuyết ngôn ngữ tại trường đại học, và ngôn ngữ lập trình vẫn là sở thích của tôi. Tôi có những hồi ức trực tiếp về nhiều người trong số họ (Simula, Prolog, LISP).
Apalala

@Jon Bạn có thể thấy thú vị rằng nhiều lập trình viên nói tiếng Tây Ban Nha sẽ thích sử dụng mã định danh bằng tiếng Tây Ban Nha mặc dù họ không phù hợp với ngôn ngữ lập trình, thư viện, khung, tiêu chuẩn và công cụ họ sử dụng. Các chương trình của họ kết thúc bằng "Spanglish". Tôi đã thấy thích với các lập trình viên với ngôn ngữ bản địa bằng các ngôn ngữ khác có di sản La Mã / Latin, như người Đông Âu. Tôi không biết những gì các lập trình viên Viễn Đông (Trung Quốc, Nhật Bản, Hàn Quốc), Nga hay Ả Rập muốn làm.
Apalala

1

Tôi thích câu trả lời của @ Apalala, dường như cho thấy sự hội tụ với một vài ngôn ngữ có mục đích chung chính. Điều đó chỉ có ý nghĩa, vì một ý tưởng tốt trong một sớm muộn gì cũng có thể được những người khác chọn.

Điều tôi muốn nói thêm là bất cứ khi nào một người đang sử dụng một ngôn ngữ, họ nhất thiết phải mở rộng nó, bằng cách thêm các thuật ngữ, chuyển đổi nó thành một ngôn ngữ được định hướng hơn cho miền trong tay. Đôi khi điều này khá đơn giản, đôi khi không. Đây là một ví dụ không đơn giản như vậy.

Một tài sản tôi đánh giá cao trong một ngôn ngữ có mục đích chung là mức độ mà nó hỗ trợ trong định nghĩa của các ngôn ngữ dành riêng cho tên miền mới.

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.