학교 / 대학 수준으로 분류되는 경우가 많기 때문에 널리 사용되는 프로그래밍 언어 (C #, Java, C ++)는 모두 3 세대 언어입니다 (기계의 물리적 부분에서 더 높은 추상화 수준으로). 또한 어셈블리 언어는 2 차 언어로, 기계 언어는 1 세대 언어로 분류됩니다.
처음에는 SQL이 4 세대 언어로 간주되어야한다고 생각했습니다. 더 추상적이고 반복적 인 세부 사항과는 거리가 먼 것입니다.
지금은 4 세대와 5 세대 언어가 있다는 것을 알았습니다. 그러나 프로그래밍 언어 나 기술이 4 세대 또는 5 세대 언어로 분류되는 기초는 무엇입니까?
또한 6 세대 또는 7 세대 언어도 있습니까?
답변
간단한 세대 개요 : 빌딩 블록을 만들 때 언어는 n 세대입니다.
- 비트
- 명령
- 추상 작업
- 도메인 객체
- 프로그램 목표
따라서 Google Go 또는 Apple Swift와 같은 새로운 언어조차도 여전히 3 세대입니다. 정규식은 텍스트 일치 언어이므로 초기 4 세대 언어입니다. 이 정의에 따르면 4 세대는 DSL과 밀접한 관련이 있습니다. 그러나, C ++와 같은 언어와 같은 실제 유형을 가질 수 있습니다 Length
과 Weight
에 추가 float
하고 double
그들에게 하이브리드 3 / 4 세대를 만든다.
5 세대 언어는 일반적으로 실현되지 않은 수준의 AI가 필요하기 때문에 실제로 존재하지 않습니다. 프로그래머가 여전히 필요하다는 사실은 프로그래머가 아닌 사람들이 정확히 원하는 것을 컴퓨터에 정확하게 말할 수 없기 때문입니다.
답변
“n 세대 언어”는 유행어입니다. 마케팅 용어입니다. n> 2의 “n 세대”를 정확하게 정의하는 것에 대한 보편적으로 인정 된 정의는 없습니다. 어떤 사람들은 Perl 또는 Python과 같은 “스크립팅”언어를 C보다 훨씬 수준이 높기 때문에 4GL로 분류합니다. 4GL의 특성은 도메인과 관련이 있다는 것입니다 (예 : SQL). 일부 멍청이들은 심지어 90 년대 중반의 언어 (객체 오리엔테이션과 가비지 수집 및 리플렉션으로 가득 찬 언어)가 Fortran (50 년대) 및 C (70 년대)와 동일한 “3GL”범주에 속한다고 생각합니다.
“4 세대 언어”와 같이 혼동 된 분류는 사용되지 않습니다. 오래된 교과서에서 보거나 80 년대에 프로그래밍을 시작한 사람들로부터들을 수 있지만“4GL”과 같은 태그는 저자가 정확히 무엇을 의미하는지에 대한 설명 없이는 가치가 없습니다.
“4GL”의 의미를 즉시 이해하는 사람은 없으므로 그러한 분류를 사용해서는 안됩니다. 대신, 특정 용어를 사용하여 자신이 의미하는 바를 정확하게 전달하십시오. 예를 들어 NASM, LLVM IR 및 Jasmin은 모두 어셈블리 언어이지만 후자의 두 대상 VM이며 마지막 VM은 객체 지향 프로그래밍 언어입니다. 이 2GL은 모두 있습니까? SQL은 80 년대 데이터베이스 쿼리를위한 부분적으로 선언 된 도메인 별 언어입니다. TeX는 70 년대부터 조판하기위한 도메인 별 언어입니다. 둘 다 도메인 특정 적이기 때문에 둘 다 4GL입니까?