1970 년대 UNIX가 부상하면서 표준 시스템 프로그래밍 언어 C는 빠르게 프로그래밍 세계의 lingua franca 가되었습니다. 한동안 C는 모든 프로그래머에게 실질적으로 필수였습니다. 따라서 C가 어떤 식 으로든 뒤 따르는 거의 모든 프로그래밍 언어에 영향을 미쳤다는 사실은 다음 두 가지 이유로 놀라운 일이 아닙니다.
- 새 언어를 설계 할 때 가능한 경우 해당 구문은 상식이라고 가정 할 수있는 인기있는 기존 언어를 기반으로합니다.
- 학습 곡선이 얕고 이미 알려진 언어와 유사한 구문이 있으면 새로운 언어가 성공할 가능성이 더 높습니다. 일반적으로 배우기가 더 쉽습니다 (명백한 유사성에도 불구하고 근본적으로 다르게 작동하지 않는 한). 따라서 C에서 구문을 차용하는 언어는 일반적으로 그렇지 않은 언어보다 더 빨리 견인력을 얻습니다.
그러나 다른 언어가 존재했고 여전히 존재합니다. 일부는 C보다 앞선 언어도 있습니다. LISP 제품군 (CL, Clojure 및 Scheme이 가장 인기있는 현대 방언), ML 제품군 (여러 현대 방언 포함), “BASIC 방언의 전체 군대 (VB.NET 및 VBA는 최신 구현 임)”가 있습니다. Pascal 그리고 그 친척들 (델파이는 가장 잘 알려진 것임)과 다른 많은 언어들로부터 영향을 받아 몇 가지를 스스로 발명 한 많은 “이상한”언어들; 예를 들어 Go, Python, Lua, Haskell (및 이전 버전 인 Miranda), Prolog 및 Erlang이 있습니다. 이러한 언어 (Python 제외) 중 어느 것도 상위 10 개에 포함되지는 않지만 많은 언어가 안정적인 사용자 기반과 활발한 커뮤니티를 보유하고 있습니다. 그들은 “확실히 사라지지 않을 것입니다.
또한, 이러한 언어에서 C 영향의 양은 거의 100 % C 호환 언어 인 C ++ 및 Objective-C에서 최대 Python (고의적으로 많은 C의 구문 기능을 포기 함). 그리고 그것은 구문 일뿐입니다. 의미론 측면에서 해당 목록에있는 대부분의 언어는 C와 공통점이 많지 않습니다. 압도적 인 대다수는 언어에 메모리 관리 기능이 내장되어 있으며 결과적으로 복사 의미론, 인수 전달, 등은 매우 다릅니다. 예를 들어 JavaScript는 Scheme에서 강력한 의미 론적 영향을받는 반면, 그 구문은 Java와 유사하게 설계되었습니다 (이는 의미론이 아닌 C를 기반으로하는 비트 앤 피스 구문). 다른 차이점 (대부분 C와 역 호환되는 C ++ 및 Objective-C 제외)에는 오류 처리, 범위 규칙, 표준 라이브러리, 외부 코드 포함 (#include
), 그리고 이러한 언어 중 상당수가 “가상화”되어 있다는 사실, 즉 인터프리터, JIT 컴파일러 또는 가상 머신에서 실행된다는 사실이 있습니다.
그런데 Python은 C에 영향을 미칩니다. 이것은 확실히 C를 “기반”하지 않습니다. 구문과 의미는 모두 C와 상당히 근본적으로 다르며 이는 의도적으로 설계된 것입니다. Python은 다른 대안이 똑같이 “좋은”C의 기능 만 차용합니다 ( “Zen of Python”-python 인터프리터에서 import this
유형).
프로그래밍의 미래에 관해서는; 예측은 다양합니다. C의 영향은 사라지지 않지만 최근 하드웨어 (멀티 코어 머신이 보편화 됨, 강력한 GPU “, CPU가 일반적인 성능 병목 현상이되지 않음, 빠르고 안정적인 네트워크 연결 등)의 발전은 근본적으로 다른 접근 방식을 요구합니다. 일반적인 프로그래밍에.명령형 언어로 멀티 스레드 분산 응용 프로그램을 작성한 적이있는 사람이라면 누구나 “엄청나게 어렵다고 말할 수 있습니다. 반면에 Haskell과 같은 언어는 대부분의 일반적인 문제를 제거하고 분산, 동시 및 분산에 대한보다 추상적이고 구조화 된 접근 방식을 제공하는 기능을 제공합니다. 병렬 처리 (순수는이 맥락에서 중요한 개념 임) 최신 프로그래밍 언어 (예 : C # 또는 D)에는 이미 이러한 관용구를 지원하는 많은 기능이 포함되어 있습니다. 어떤 경우에도 C가 프로그래밍에 미친 영향도없고 C와 유사하지 않은 언어는 사라집니다.
댓글
이것은 왜 영어가 미국에서 지배적 인 언어인지 묻는 것과 비슷합니다. 스페인어 나 프랑스어가 아닌 이유는 무엇입니까? 그들은 영국 식민지보다 미국 영토를 더 많이 장악했습니다. 네덜란드어가 아닌 이유는 무엇입니까? 최초의 미국 수도는 이전 네덜란드 식민지였습니다. 이에 대한 “답변”이있을 수 있을지 모르겠습니다.
그러나 “컴퓨터 언어 기록”타임 라인 ( http://www.levenez.com/lang/ )는 가능한 모든 답을 제공합니다.
댓글
If 새로운 프로그래밍 언어를 만들고, 기존의 인기있는 언어와 유사한 구문을 사용하면 새로운 사용자가 쉽게 학습 할 수 있습니다. 특히 많은 개념이 언어간에 유사하다면.
또한 C 스타일 구문이 비교적 읽기 쉽다고 생각합니다. 파스칼과 비교해 보면 코드 블록에 “{“및 “}”기호를 사용하는 것이 식별자와 시각적으로 매우 유사한 “시작”및 “끝”보다 더 읽기 쉽습니다. Python은 훨씬 더 읽기 쉽지만 구문에 공백을 포함하면 편집에 새로운 문제가 발생합니다. 또 다른 예 : Lisp와 JavaScript는 몇 가지 아이디어를 공유하지만 동일한 내용이 C 스타일 구문으로 작성되면 덜 모호합니다.
많은 사람들이 두 번째 단락에 동의하지 않을 것입니다. 자신이 가장 좋아하는 언어가 있지만 C 스타일 구문의 인기는 부분적으로는 역사적 우연이라고 생각하지만 부분적으로는 C 작성자가 몇 가지 좋은 결정을 내렸다는 것을 보여줍니다.
프로그래밍 언어는 자연어와 마찬가지로 시간이 지남에 따라 진화하며 일부 오래된 언어는 다른 언어보다 더 강력한 방식으로 그 진화에 영향을 미칩니다. , 다른 사람들은 모호하게 사라지고 그 영향력은 표면 수준, 즉 구문에서 추적하기가 더 어렵습니다.
C의 영향은 많은 출처에서 비롯됩니다. 낮은 수준이고 널리 퍼져 있으며 뒷받침이있었습니다. Unix와 Microsoft 서클 모두. 그것은 또한 적자 문제의 생존이기도하다. 1970 년대와 1980 년대에 Pascal과 C의 다른 경쟁자들의 장황한 Algol 파생 구문보다 간결한 C와 유사한 구문이 더 매력적이라는 것을 쉽게 알 수있다. 따라서 그것은 그 이후에 나온 언어들에 의해 널리 채택되었습니다.
현재 멀티 스레드 프로그래밍의 중요성이 커지고 있고 특히 그것에 적합한 기능적 언어가 증가함에 따라, 나는 그들의 영향력이 증가 할 것이라고 말하고 싶습니다. 미래. 적절한 사례 : Python은 질문 게시물에 해당 목록을 작성하기도했습니다.
숙고 할 언어 역사의 멋진 타임 라인보기
a>
댓글