C가 여전히 고급 언어 카테고리에있는 이유는 무엇입니까? [닫은]


12

C 프로그래밍 언어에 대한 많은 교과서는 C가 고급 프로그래밍 언어라고 말하지만 많은 온라인 교사는 C도 중간 수준 프로그래밍 언어라고 말합니다. 왜 그런가요?


3
추천 독서 : $ {blog} 토론
gnat

6
나는 당신의 혼란에 공감합니다. 이것은 "잘못 된"대답조차 정확하기 때문에 시험에서 볼 수있는 종류의 분류입니다. 이 시험이 참 / 거짓 또는 객관식 시험 문제가되지 않도록기도하십시오. 그렇게한다면, 교과서의 말에 근거하여 대답하십시오. 자신이 옳다고 느끼는 것이 아닙니다.
Brandon

1
역사적으로 '상위 수준의 언어'는 어셈블리 언어와 달리 프로그래머가 특정 기계에서 추상화하고보다 문제가 많은 방식으로 코드를 작성할 수있는 언어였습니다. Fortran과 Cobol은 초기에 '높은 수준'이었습니다. C는 기계에 특화된 것 이상의 얇은 베일이지만 그 목적은 기계에 특화되어 휴대용입니다. 따라서 1960 년대 표준 C는 높은 수준이었습니다. 물론 C ++ 14, Haskell, OCaml 또는 Rust와 비교했을 때 C는 그리 높지 않습니다.
9000

이 "현대 고급"언어 "는 대부분 스크립팅 언어입니다. 차이점은 컴파일되거나 해석되는 경우입니다.
MarcusJ

Asm은 높은 수준입니다. 하드웨어를 통한 asm의 추상화는 엄청납니다.
curiousguy

답변:


34

역사적으로 어셈블리 코드를 추상화하는 모든 것을 상위 수준이라고합니다. C는 확실히 그렇게합니다. 이 정의는 또한 다음과 달리 비교적 명확합니다.

시간이 지남에 따라 점점 더 많은 프로그래밍 언어를 만들고 점점 더 많은 추상화와 도구를 발명했습니다. 예를 들어, 파이썬과 비교할 때 C 언어는 의미 론적 풍부함과 하드웨어에 대한 추상화 수준에서 긍정적으로 원시적입니다. 이를 염두에두고 많은 사람들이 하드웨어보다 훨씬 더 많은 언어가있을 때 C를 높은 수준으로 부르는 것이 오해의 소지가 있음을 알게됩니다.

따라서 "높은 수준"은 일반적으로 "하드웨어보다 많은 것을 요약합니다"를 의미하고 "낮은 수준"은 "작은 것을 추상화합니다"를 의미합니다. 이것은 교사가 사용하는 정의입니다. 모든 사람이 동의하는 것은 아니며 오래된 텍스트는 마술처럼 새로운 용어를 채택하지 않으므로 여전히 "높은 수준"(C는 높은 수준)이 떠 오릅니다. 많은 훌륭한 C 서적은 기본적으로 20 년 전에 출시 된 최신 버전의 서적임을 명심하십시오.


적절한 저수준 프로그래밍 언어로 간주 되려면 프로그래머가 기본 하드웨어와 동일한 추상화 수준에서 쉽게 작동 할 수 있어야합니다. C 표준은 구현이 이러한 방식으로 작동하도록 허용하지만, 추상화 수준에서 작동하는 구현과 그렇지 않은 구현 간에는 공식적으로 인식되는 차이가 없습니다.
supercat

12

C 프로그래밍 서적 및 자습서가 제공하는 관점 인 머신 코드 (어셈블리)보다 높은 수준의 언어입니다.

그런면에서 그것은 고급 프로그래밍 언어입니다.

그러나 여전히 다른 최신 언어 (Java, C # 등)보다 훨씬 하드웨어에 가깝습니다.이 관점에서 볼 때 중간 수준의 프로그래밍 언어입니다.


1
그렇다면 C가 중간 수준의 프로그래밍 언어라고 명확하게 말할 수없는 이유는 무엇입니까?
CodeIt

5
@manutd-그것은 저자를 예약하는 질문입니다;)-그러나 그게 문제입니다. 그들의 관점에서 C는 고급 언어입니다. 그것이 그들이 다루는 것입니다. "고수준 언어"의 개념은 모호합니다. 모두 동의 한 단일 정의는 없습니다.
오디드

불행히도 커뮤니티에서 의견에 동의하는 것은 정의가 작동하는 방식이 아닙니다. 제작자이며 개념은 프로세서의 어셈블리 언어보다 높은 수준입니다. 이것이 결정적인 선입니다. 이것이 높은 수준으로 정의됩니다. 컴퓨터 과학에 관한 책은 항상 이런 식으로 정의됩니다. 교사는 그렇지 않을 수도 있고 사람들의 의견은 그렇지 않을 수도 있지만 컴퓨터가 작동하는 방식과 컴퓨터와 프로세서의 과학에 정의 된 방식에 대한 실제 과학은 매우 분명합니다.
Ryan Rentfro

C #을 사용하면 프로그래머가 편리한대로 64 비트, 32 비트, 16 비트 또는 8 비트 값 시퀀스로 다양한 메모리에 액세스 할 수 있습니다. 예를 들어 메모리에 16 비트 픽셀이 있으면 코드는 알고리즘에 가장 적합한 것에 따라 픽셀을 개별적으로 또는 2 개 또는 4 개 그룹으로 처리 할 수 ​​있습니다. 표준에 정의 된 C는 프로그래머가 유사한 의미를 요청할 수있는 실용적인 수단을 정의하지 않습니다. 많은 C 방언은 물론 C #보다 낮은 수준이지만 표준에 의해 정의 된 언어는 그렇지 않습니다.
supercat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.