Câu trả lời của tôi thực sự chỉ là một công phu của Gilles ', mà tôi đã không đọc trước khi tôi viết. Có lẽ nó vẫn hữu ích.
Hãy để tôi bắt đầu nỗ lực trả lời câu hỏi của bạn với sự khác biệt giữa hai chiều của ngôn ngữ lập trình hoạt động hoàn toàn khác với lý thuyết ngôn ngữ lập trình nói chung và quá trình tính toán nói riêng.
Sau này thường diễn ra trong công nghiệp với mục đích cung cấp các ngôn ngữ lập trình như một sản phẩm. Các nhóm phát triển Java tại Oracle và C # tại Microsoft là những ví dụ. Ngược lại, nghiên cứu thuần túy không gắn liền với sản phẩm. Mục đích của nó là để hiểu các ngôn ngữ lập trình như là các đối tượng quan tâm nội tại và khám phá các cấu trúc toán học bên dưới tất cả các ngôn ngữ lập trình.
Do các mục tiêu khác nhau, các khía cạnh khác nhau của lý thuyết ngôn ngữ lập trình có liên quan trong nghiên cứu thuần túy và R & D tập trung vào sản phẩm Hình ảnh dưới đây có thể cho thấy điều gì quan trọng ở đâu.
Người ta có thể hỏi tại thời điểm này tại sao hai chiều dường như rất khác nhau và tuy nhiên chúng có liên quan như thế nào.
Cái nhìn sâu sắc quan trọng là nghiên cứu và phát triển ngôn ngữ lập trình có nhiều khía cạnh: kỹ thuật, xã hội và kinh tế. Hầu như theo định nghĩa, ngành công nghiệp quan tâm đến sự hoàn trả kinh tế của các ngôn ngữ lập trình. Microsoft et al không phát triển ngôn ngữ từ lòng tốt của họ nhưng vì họ tin rằng ngôn ngữ lập trình mang lại cho họ lợi thế kinh tế. Và họ đã điều tra sâu sắc tại sao một số ngôn ngữ lập trình thành công, và những ngôn ngữ khác, dường như tương tự hoặc với các tính năng nâng cao hơn, thì không. Và họ thấy rằng không có một lý do duy nhất. Ngôn ngữ lập trình và môi trường của chúng rất phức tạp và đó là lý do để chấp nhận hoặc bỏ qua bất kỳ ngôn ngữ cụ thể nào. Nhưng yếu tố lớn nhất cho sự thành công của ngôn ngữ lập trình là sự gắn bó ưu tiên của các lập trình viên với các ngôn ngữ đã được sử dụng rộng rãi: càng nhiều người sử dụng ngôn ngữ, càng có nhiều thư viện, công cụ, tài liệu giảng dạy và lập trình viên càng hiệu quả có thể sử dụng ngôn ngữ đó Đây cũng được gọi là hiệu ứng mạng. Một lý do khác là các ngôn ngữ chuyển đổi chi phí cao cho các cá nhân và tổ chức: thông thạo ngôn ngữ, đặc biệt là đối với một lập trình viên không có kinh nghiệm và khi khoảng cách ngữ nghĩa với các ngôn ngữ quen thuộc là lớn, là một nỗ lực nghiêm túc, tốn thời gian. Với những sự thật này, người ta có thể hỏi tại sao các ngôn ngữ mới có được lực kéo ở tất cả? Tại sao các công ty phát triển ngôn ngữ mới cả? Tại sao chúng ta không ở lại với Java hoặc Cobol? Tôi nghĩ rằng có một số lý do chính để whey một ngôn ngữ thành công,
Một miền mới của lập trình mở ra mà không có đương nhiệm để thay thế. Ví dụ chính là web với sự gia tăng đồng thời của Javascript.
Ngôn ngữ dính. Điều này có nghĩa là giá cao của việc thay đổi ngôn ngữ. Nhưng đôi khi các lập trình viên chuyển sang các lĩnh vực khác nhau, mang theo ngôn ngữ lập trình với họ và thành công với ngôn ngữ cũ trong lĩnh vực mới.
Một ngôn ngữ được thúc đẩy bởi một công ty lớn với hỏa lực tài chính nghiêm trọng. Sự ủng hộ này làm giảm rủi ro chấp nhận, bởi vì những người chấp nhận sớm có thể chắc chắn chắc chắn rằng ngôn ngữ sẽ vẫn được hỗ trợ trong một vài năm. Một ví dụ điển hình của việc này là C #.
Một ngôn ngữ có thể đi kèm với các công cụ hấp dẫn và hệ sinh thái. Ở đây cũng có C # và đó là hệ sinh thái .Net và Visual Studio có thể được đề cập làm ví dụ.
Ngôn ngữ cũ nhận các tính năng mới. Java xuất hiện trong tâm trí, trong mỗi lần lặp lại, tiếp thu thêm nhiều ý tưởng hay từ truyền thống lập trình chức năng.
Cuối cùng, một ngôn ngữ mới có thể có những lợi thế kỹ thuật nội tại, ví dụ như biểu cảm hơn, có cú pháp đẹp hơn, hệ thống gõ có nhiều lỗi hơn, v.v.
Với nền tảng này, không có gì đáng ngạc nhiên khi có một chút bất đồng giữa nghiên cứu ngôn ngữ lập trình thuần túy và phát triển ngôn ngữ lập trình thương mại. Mặc dù cả hai đều nhằm mục đích làm cho việc xây dựng và phát triển phần mềm hiệu quả hơn, đặc biệt là đối với phần mềm quy mô lớn, công việc ngôn ngữ lập trình công nghiệp phải được quan tâm nhiều hơn trong việc tạo điều kiện cho việc áp dụng nhanh chóng để đạt được khối lượng quan trọng và đạt được hiệu quả mạng. Điều này dẫn đến một nghiên cứu tập trung vào những điều mà các lập trình viên làm việc quan tâm. Và đó có xu hướng là những thứ như thư viện sẵn có, tốc độ trình biên dịch, chất lượng mã được biên dịch, tính di động, v.v. Tính toán quy trình khi chúng ta thực hành nó ngày nay ít được sử dụng cho các lập trình viên làm việc trong các dự án chính thống (mặc dù tôi tin rằng điều đó sẽ thay đổi trong tương lai).
λπβ-Giảm giá cho lập trình chức năng, phân giải / thống nhất cho lập trình logic, chuyển tên cho tính toán đồng thời). Để hiểu nếu một ngôn ngữ như Scala có thể có suy luận kiểu đầy đủ khả thi, chúng ta không cần phải lo lắng về JVM. Thật vậy, suy nghĩ về JVM sẽ làm mất đi sự hiểu biết tốt hơn về suy luận kiểu. Đó là lý do tại sao sự trừu tượng của tính toán thành các phép tính cốt lõi nhỏ là quan trọng và mạnh mẽ.
Vì vậy, bạn có thể nghĩ về nghiên cứu ngôn ngữ lập trình như một hộp cát khổng lồ nơi mọi người chơi với đồ chơi và nếu họ tìm thấy thứ gì đó thú vị khi chơi với một món đồ chơi cụ thể và đã điều tra kỹ về món đồ chơi đó, thì món đồ chơi thú vị đó bắt đầu tiến tới sự chấp nhận công nghiệp chính thống . Tôi nói diễu hành dài vì các tính năng ngôn ngữ được phát minh đầu tiên bởi nhà nghiên cứu ngôn ngữ lập trình có xu hướng mất nhiều thập kỷ trước khi được chấp nhận rộng rãi. Ví dụ, bộ sưu tập rác được hình thành vào những năm 1950 và trở nên phổ biến rộng rãi với Java vào những năm 1990. Mô hình phù hợp với cá mập trở lại năm 1970 và chỉ được sử dụng rộng rãi kể từ Scala.
Quá trình tính toán là một đồ chơi đặc biệt thú vị. Nhưng nó quá mới để được điều tra kỹ lưỡng. Điều đó sẽ mất một thập kỷ nghiên cứu thuần túy. Những gì hiện đang diễn ra trong nghiên cứu lý thuyết quá trình là lấy câu chuyện thành công lớn nhất về nghiên cứu ngôn ngữ lập trình, lý thuyết về các loại (tuần tự) và phát triển lý thuyết về các loại để truyền thông điệp đồng thời. Hệ thống gõ có độ biểu cảm vừa phải để lập trình tuần tự, theo Hindley-Milner, giờ đây đã được hiểu rõ, có mặt khắp nơi và được các lập trình viên làm việc chấp nhận. Chúng tôi muốn có các loại biểu cảm vừa phải để lập trình đồng thời. Nghiên cứu về điều này bắt đầu từ những năm 1980 bởi những người tiên phong như Milner, Sangiorgi, Turner, Kobayashi, Honda và những người khác, thường dựa trên, rõ ràng hoặc ngầm định, về ý tưởng tuyến tính xuất phát từ logic tuyến tính. Vài năm gần đây đã chứng kiến sự gia tăng lớn trong hoạt động và tôi hy vọng quỹ đạo đi lên này sẽ tiếp tục trong tương lai gần. Tôi cũng hy vọng công việc này sẽ bắt đầu rò rỉ vào R & D tập trung vào sản phẩm, vì những lý do thực tế mà các nhà nghiên cứu trẻ đã được đào tạo về tính toán quy trình sẽ đi và làm việc trong các phòng thí nghiệm R & D công nghiệp, nhưng cũng vì sự phát triển của CPU và kiến trúc máy tính từ các hình thức tính toán liên tiếp.
Tóm lại, tôi sẽ không lo lắng rằng bạn không thấy lý thuyết ngôn ngữ lập trình tiên tiến như tính toán quy trình hữu ích trong công việc xây dựng ngôn ngữ của riêng bạn. Điều đó đơn giản là vì lý thuyết tiên tiến không giải quyết được mối quan tâm của các ngôn ngữ lập trình hiện tại. Đó là về ngôn ngữ trong tương lai. Sẽ mất một lúc để 'thế giới thực' bắt kịp. Kiến thức bạn sử dụng để xây dựng ngôn ngữ cho ngày hôm nay là lý thuyết ngôn ngữ lập trình của quá khứ. Tôi khuyến khích bạn tìm hiểu thêm về tính toán quy trình vì đây là một trong những lĩnh vực xuất sắc nhất của tất cả các ngành khoa học máy tính lý thuyết.