Thế hệ ngôn ngữ lập trình thứ 4 & 5 là gì? Có nhiều trong số họ? [đóng cửa]


36

Vì nó thường được phân loại ở cấp trường / đại học, các ngôn ngữ lập trình phổ biến (C #, Java, C ++) là tất cả các ngôn ngữ thế hệ thứ 3 (với mức độ trừu tượng cao hơn từ các bộ phận vật lý của máy). Ngoài ra, ngôn ngữ lắp ráp được phân loại là ngôn ngữ thứ 2 và máy là ngôn ngữ thế hệ 1.

Ban đầu tôi đã nghĩ SQL nên được coi là ngôn ngữ thế hệ thứ 4 vì nó trừu tượng hơn và khác xa với các chi tiết lặp và mô tả nhiều hơn.

Ngay bây giờ tôi phát hiện ra có ngôn ngữ thế hệ thứ 4 và thế hệ thứ 5, nhưng cơ sở cho bất kỳ ngôn ngữ lập trình hoặc công nghệ nào được phân loại là ngôn ngữ thế hệ thứ 4 hoặc thứ 5?

Ngoài ra, có ngôn ngữ thế hệ thứ 6 hoặc thứ 7 không?



12
Ồ, nếu chỉ có mọi người có thể đồng ý về những gì tạo ra ngôn ngữ Gen thứ n mà ... Không có tiêu chí nào người ta có thể thực sự trói buộc (ngoại trừ việc nói rằng các ngôn ngữ gen cao hơn được loại bỏ khỏi kim loại trần hơn cấp độ thấp hơn - ở mức độ nào không đồng ý).
Oded

5
"Thế hệ" nào là C? Bạn có thể đưa ra một số ví dụ về ngôn ngữ thế hệ thứ 4 & 5 & cho chúng tôi biết điều gì tạo nên mỗi thế hệ? Tức là tiêu chí nào xác định một ngôn ngữ là thế hệ 'n'?
Mawg

3
Tbh tôi không nghĩ khái niệm ngôn ngữ thế hệ X thực sự phù hợp.
Pieter B

5
Tôi đang tạo ra một ngôn ngữ thế hệ thứ 14, và nó sẽ trở thành phù thủy thuần túy, bởi vì đó là con trai thứ bảy của một đứa con trai thứ bảy ....
David Conrad

Câu trả lời:


36

Tổng quan về các thế hệ đơn giản: một ngôn ngữ là thế hệ thứ n khi đó là các khối xây dựng

  1. bit
  2. hướng dẫn
  3. Hoạt động trừu tượng
  4. Đối tượng miền
  5. Mục tiêu chương trình

Do đó, ngay cả các ngôn ngữ mới như Google Go hay Apple Swift vẫn vững chắc thế hệ thứ 3. Regex là một ngôn ngữ phù hợp với văn bản, làm cho nó trở thành ngôn ngữ thế hệ thứ 4 sớm. Theo định nghĩa này, thế hệ thứ 4 liên kết chặt chẽ với DSL. Tuy nhiên, lưu ý rằng ngôn ngữ như C ++ có thể có các loại thực thế giới như LengthWeightngoài floatdouble, mà làm cho chúng lai 3 / thế hệ thứ 4.

Các ngôn ngữ thế hệ thứ 5 không thực sự tồn tại, vì chúng thường đòi hỏi một mức độ AI không bao giờ thành hiện thực. Thực tế là chúng ta vẫn cần lập trình viên là chính xác bởi vì những người không lập trình có thể nói với một máy tính có đủ độ chính xác chính xác những gì họ muốn.


1
NB về đoạn cuối: Blog của J.Pitrat có những thứ thú vị liên quan đến AI & lập trình viên
Basile Starynkevitch

5
Các DONALD problemtrên rằng blog của vấn đề nổi bật thế nào đến nay chúng tôi vẫn xa sudo make me a sandwich, và đáng lo ngại, chúng tôi đã thực hiện trong vòng 50 năm trở lại đây bao nhiêu tiến bộ.
MSalters

1
@AndrewHoffmann Có gì sai với điều đó? Nếu bạn đang xây dựng một cây cầu, tốt hơn là bạn nên có loại vật liệu phù hợp với cấu trúc của mình và tốt hơn là đinh tán có kích thước phù hợp (và có bao nhiêu kích thước?).
didierc

1
@AndrewHoffman: AI chủ yếu là một chủ đề CS trong giới học thuật, không phải là một chủ đề kỹ thuật phần mềm. Có thể lập luận rằng kỹ thuật thực sự sẽ là một lợi ích. Có lẽ có một lý do chính đáng để chiếc xe tự lái đầu tiên dường như là của Google.
MSalters

6
@AndrewHoffman - nói cho chính mình. Tôi là một kỹ sư phần mềm và tôi sử dụng các thực hành kỹ thuật tiêu chuẩn khá mỗi ngày. Ngoài ra, tôi là một kỹ sư được chứng nhận. Tôi nghĩ rằng toàn bộ nhận xét của bạn là vô nghĩa dựa trên kinh nghiệm cá nhân của bạn chứ không phải dựa trên thực tế.
Kỹ sư Dollery

88

Ngôn ngữ thế hệ thứ n trực tiếp là một từ thông dụng. Nó là một thuật ngữ tiếp thị. Không có định nghĩa được chấp nhận phổ biến về những gì định nghĩa chính xác thế hệ thứ 19, cho n> 2. Một số người phân loại các ngôn ngữ script script như Perl hoặc Python là 4GL vì chúng ở cấp độ cao hơn nhiều so với C, trong khi những người khác nghĩ rằng định nghĩa đặc điểm của 4GL là chúng đặc trưng cho miền, ví dụ SQL. Một số nitwits thậm chí còn nghĩ rằng Java (một ngôn ngữ giữa thập niên 90 đầy định hướng đối tượng và thu thập và phản ánh rác) thuộc cùng loại Thể loại 3GL tựa như Fortran (từ thập niên 50) và C (từ thập niên 70).

Một cách phân loại rất khó hiểu, chẳng hạn như ngôn ngữ thế hệ thứ 4, không sử dụng được. Bạn có thể thấy nó trong sách giáo khoa cũ hoặc nghe nó từ những người bắt đầu lập trình từ những năm 80, nhưng một thẻ như là 4G 4GL là vô giá trị mà không có lời giải thích đi kèm về ý nghĩa chính xác của tác giả.

Vì không ai hiểu ngay ý của bạn về 4G 4GL, nên bạn không nên sử dụng các phân loại như vậy. Thay vào đó, sử dụng các thuật ngữ cụ thể để truyền đạt chính xác những gì bạn muốn nói. Ví dụ, tất cả NASM, LLVM IR và Jasmin là ngôn ngữ hợp ngữ, nhưng hai VM đích sau và cuối cùng cũng là ngôn ngữ lập trình hướng đối tượng. Có phải tất cả các 2GL đó không? SQL là một ngôn ngữ cụ thể theo miền, khai báo một phần cho các truy vấn cơ sở dữ liệu từ những năm 80. Và TeX là một ngôn ngữ cụ thể cho miền để sắp chữ từ những năm 70. Cả hai đều là 4GL vì cả hai đều có ít nhiều tên miền cụ thể?


22
Tôi đang phát triển ngôn ngữ 8G. Nó sẽ trở nên tuyệt vời. ... nó thậm chí sẽ rán julienne. Tôi sẽ bán giấy phép cho ba khoản thanh toán dễ dàng của ...;)
BrianH

10
Tôi nghĩ rằng các thế hệ ngôn ngữ lập trình NÊN bằng cách nào đó tương ứng với các thế hệ máy bay chiến đấu phản lực . Số lượng tuyệt vời này dường như đủ để biện minh cho một RFC về chủ đề này.
toniedzwiedz

11
Ah, điều này mang lại những ký ức, trở lại khi các ngôn ngữ thế hệ thứ năm sẽ sớm dễ sử dụng đến mức hầu hết các lập trình viên sẽ mất việc.
Gort Robot

5
@Izkata 1GL là mã máy nhị phân (ví dụ: tập lệnh amd64). 2GL là ngôn ngữ lắp ráp văn bản cung cấp khả năng ghi nhớ cho mã máy (ví dụ GAS). 3GL là một cái gì đó trừu tượng hơn các hướng dẫn máy. Fortran là người đầu tiên làm điều này bằng cách cho phép các lập trình viên sử dụng các biểu thức và biến như (I + 7) * 3. Tuy nhiên, không có sự đồng thuận về việc danh mục 3GL kết thúc ở đâu và 4GL và 5GL được cho là cụ thể có nghĩa là gì.
amon

5
"Một số nitwits thậm chí nghĩ rằng Java ... thuộc cùng thể loại 3GLv của Fort như Fortran ..." - trong khi các nitwits khác tin rằng nếu hai thứ xuất hiện rất khác với họ, thì không thể tồn tại một sơ đồ phân loại nhóm chúng cùng nhau theo tiêu chí nào có liên quan đến chương trình đó? ;-p
Steve Jessop
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.