C의 영향을받는 인기 프로그래밍 언어가 몇 개인 이유 [닫은]


23

TIOBE 지수 에 따르면 톱 10 프로그래밍 언어 는 C의 영향을 많이받는 것으로 보입니다.

1. 자바

이 언어는 C 및 C ++에서 많은 구문을 파생하지만 더 간단한 객체 모델과 더 적은 수준의 기능을 갖습니다. - wikipedia.org

2. C

C는 가장 널리 사용되는 프로그래밍 언어 중 하나이며 C 컴파일러가 존재하지 않는 컴퓨터 아키텍처는 거의 없습니다. - wikipedia.org

3. C #

.NET Framework를 개발하는 동안 클래스 라이브러리는 원래 SMC (Simple Managed C)라는 관리 코드 컴파일러 시스템을 사용하여 작성되었습니다. 1999 년 1 월 Anders Hejlsberg는 "C-like Object Oriented Language"를 뜻하는 Cool이라는 새로운 언어를 개발할 팀을 구성했습니다. - wikipedia.org

4. C ++

Bjarne Stroustrup은 1979 년 Bell Labs에서 C 언어를 향상시키기 위해 개발했습니다. - wikipedia.org

5. 목표 -C

Objective-C는 스몰 토크 스타일 메시징을 C 프로그래밍 언어에 추가하는 반사 형 객체 지향 프로그래밍 언어입니다. - wikipedia.org

6. PHP

그는이 스크립트를 C 프로그래밍 언어 CGI (Common Gateway Interface) 바이너리로 다시 작성하여 웹 양식을 사용하고 데이터베이스와 통신하는 기능을 추가하고이를 "개인 홈 페이지 / 양식 해석기"또는 PHP / FI라고합니다. - wikipedia.org

8. 파이썬

파이썬은 1980 년대 후반에 고안되었으며 1989 년 12 월 네덜란드 CWI의 귀도 반 로섬 (Guido van Rossum)이 예외 처리 및 Amoeba 운영 체제와 인터페이스 할 수있는 ABC 프로그래밍 언어 (SETL에서 영감을 얻음)의 후계자로 구현되었습니다. - wikipedia.org

ABC (프로그래밍 언어) 설계자는 ABC 프로그램이 일반적으로 동등한 파스칼 또는 C 프로그램 크기의 1/4 정도이며 더 읽기 쉽다고 주장합니다. - wikipedia.org

9. 펄

Perl은 C, 쉘 스크립팅 (sh), AWK 및 sed를 포함한 다른 프로그래밍 언어에서 기능을 차용합니다. - wikipedia.org

10. 자바 스크립트

JavaScript는 C의 영향을받는 구문을 사용합니다.- wikipedia.org

그들 중 대부분은 C에서 구문을 빌리거나 적어도 처음에는 여러 가지 다른 방식으로 많은 영향을받는 것으로 보입니다. 왜?


15
c와 유사한 구문을 갖는 것은 c를 기반으로하는 것과 다릅니다.
Oded

15
또한 TIOBE는 정크 인덱스입니다.
DeadMG

3
오히려 C에 기반한 프로그래밍 언어가 왜 더 인기가 있는지 물어볼 수 있습니까?
Manoj R

3
@YannisRizos 질문의 위대한 구제! 실제로 지금은 큰 질문입니다.
maple_shaft

16
C는 ALGOL의 자손이기 때문에 ALGOL은 아브라함이 기독교인, 유대인 및 무슬림을 위해 무엇인지 아는 블록 범위의 명령 실습을 수행해야하기 때문입니다.
Ingo

답변:


40

1970 년대 UNIX의 등장으로 표준 시스템 프로그래밍 언어 C는 빠르게 프로그래밍 세계 의 언어 가되었습니다 . 꽤 오랫동안 C는 모든 프로그래머에게 실질적으로 필수였습니다. 따라서 C가 어떤 식 으로든 그 뒤에 오는 거의 모든 프로그래밍 언어에 영향을 미친다는 사실은 두 가지 이유로 놀랍지 않습니다.

  • 새 언어를 디자인 할 때는 가능한 경우 일반적인 지식으로 간주 될 수있는 널리 사용되는 기존 언어를 기반으로 구문을 분석하는 것이 좋습니다.
  • 학습 곡선이 얕 으면 새로운 언어가 성공할 가능성이 높으며, 이미 알려진 언어와 유사한 구문은 배우기가 더 쉽습니다 (겉으로 유사한 점에도 불구하고 근본적으로 다르게 행동하지 않는 한). 따라서 C에서 구문을 빌리는 언어는 일반적으로 그렇지 않은 언어보다 더 빨리 견인력을 얻습니다.

그러나 다른 언어가 존재했지만 여전히 C를 포섭하는 일부 언어도 있습니다 .LISP 패밀리 (CL, Clojure 및 Scheme이 가장 인기있는 현대 방언 임), ML 가족 (몇 가지 현대적인 방언 포함), 전체 군대가 있습니다. 기본 방언 (VB.NET 및 VBA는 최신 구현), 파스칼과 그 친척 (Delphi가 가장 잘 알려진 언어) 및 다른 많은 언어의 영향을 받아 여러 가지 자체를 발명 한 많은 'oddball'언어가 있습니다. 예를 들어 Go, Python, Lua, Haskell (및 이전 버전 인 Miranda), Prolog 및 Erlang이 있습니다. 이 언어들 (파이썬 제외) 중 어느 것도 상위 10 개 언어에 속하지는 않지만, 대부분의 언어는 안정적인 사용자 기반과 활발한 커뮤니티를 가지고 있습니다. 그들은 확실히 떠나지 않을 것입니다.

또한 이러한 언어에서 C의 영향은 거의 100 % C 호환 언어 C ++ 및 Objective-C에서 Python (고의적으로 많은 C의 구문 기능을 포기 함)에 이르기까지 크게 다릅니다. 그리고 그것은 구문에 불과합니다. 의미 론적으로, 그 목록에있는 대부분의 언어는 C와 공통점이 많지 않습니다. 압도적 인 대다수는 언어에 메모리 관리 기능이 내장되어 있으므로 복사 의미론, 인수 전달 등이 있습니다. 매우 다릅니다. 예를 들어, JavaScript는 Scheme의 의미에 큰 영향을 미치며, 구문은 Java와 유사하게 설계되었습니다 (이는 의미론이 아닌 C의 비트 및 조각 구문을 기반으로 함). 다른 차이점은 (C와 하위 호환되는 C ++ 및 Objective-C를 제외하고) 오류 처리, 범위 규칙,#include) 및 이러한 많은 언어가 '가상화'되었다는 사실, 즉 인터프리터, JIT 컴파일러 또는 가상 머신에서 실행됩니다.

그건 그렇고, 파이썬은 C에 영향을 미치지 만 C에 기반을두고 있지는 않습니다. 문법과 의미는 C와는 크게 다르며 이것은 의도적으로 설계된 것입니다. 파이썬은 다른 대안이 똑같이 "좋은"( import this파이썬 인터프리터에서 "Zen of Python"에 따라) C에서 기능을 빌려옵니다 .

프로그래밍의 미래에 관해서는; 예측은 다양합니다. C의 영향은 사라지지 않지만 최근의 하드웨어 개발 (멀티 코어 머신이 일반화되고 강력한 GPU, CPU가 일반적인 성능 병목 현상이되고 CPU 속도가 빠르며 안정적인 네트워크 연결 등이되고 있음)의 프로그래밍은 근본적으로 다른 프로그래밍 방식을 요구합니다. 일반적으로. 명령형 언어로 다중 스레드 분산 응용 프로그램을 작성한 사람이라면 누구나 어렵다는 것을 알 수 있지만 Haskell과 같은 언어는 대부분의 일반적인 문제를 제거하고 분산, 동시 및 병렬 처리에 대한 더 추상적이고 구조적인 접근 방식을 제공하는 기능을 가지고 있습니다 (이 맥락에서 순도는 중요한 개념이다). 최신 프로그래밍 언어 (예 : C # 또는 D)에는 이미 이러한 관용구를 지원하는 많은 기능이 포함되어 있습니다. 어쨌든


좋은 대답이지만 "CPU가 일반적인 성능 병목 현상이되고 있습니다"? 내 경험상 CPU, IO 등 성능 문제가 많이 있습니다. 그렇지 않은 경우 프로파일 러는 효과적이지 않더라도 필요하지 않습니다.
Mike Dunlavey 2013

6
@ MikeDunlavey : 일반적으로 발생하는 병목 현상은 I / O, 네트워킹, CPU 캐시 성능, 버스 처리량 및 (비효율적 인) 프로세스 간 통신으로 인해 발생합니다. 당시에는 CPU가 필연적으로 병목 현상이었습니다. 이것은 더 이상 사실이 아닙니다.
tdammers

1

이것은 왜 영어가 미국에서 지배적 인 언어인지 묻는 것과 매우 흡사합니다. 왜 스페인어 나 프랑스어가 아닙니까? 그들은 영국 식민지보다 더 많은 미국 영토를 통제했습니다. 왜 네덜란드어가 아닙니까? 최초의 미국 수도는 전 네덜란드 식민지였습니다. 이에 대한 "답변"이있을 수 있는지 잘 모르겠습니다.

그러나 "컴퓨터 언어 기록"타임 라인 ( http://www.levenez.com/lang/ )은 가능한 모든 답변을 제공합니다.


6
1600-1880 년 대 브리튼이 대략 세계의 주요 산업 및 금융 강국 이었기 때문에 1880- 현재 (<-논쟁의 여지가있는) 미국이 그 뒤를이었습니다. 이 언어는 국제 비즈니스의 언어가되었으며 전세계 20 억 명이 유창하게 구사합니다. 그것과 아무도 스페인어 또는 네덜란드어를 말하기를 원하지 않습니다 :)
maple_shaft

6
@maple_shaft- "아무도 스페인어를하고 싶지 않다"?! ... 얼마나 많은 나라에서 사용되는지 알고 있습니까? en.wikipedia.org/wiki/Spanish_language
Rook

12
@ S. 로트 : 당신은 대영 제가 존재하는 가장 큰 제국이었고 전 세계 표면의 25 %를 차지한 부분을 의미합니까? 그런 종류의 "강하지 않은"?
DeadMG

3
@DeadMG : 나는 세상에 대해 이야기하고 있지 않습니다. 저는 1700 년대에 프랑스 인들이 해안가를 따라 작은 지역으로 헤엄을 쳤던 미국에 대해 이야기하고 있습니다. 나는 영국이이 극장에서만 군사적 약혼을 잃는 것에 대해 이야기하고 있습니다. 프랑스 인은 그가 미국이 된 대부분의 것을 분명히 통제했다. 아직. 미국은 영어를 말하지 않았다. 프랑스어가 아닙니다. 동일한 분석이 C에도 적용됩니다. 영향을 미치는 요인이 많은 복잡한 기록입니다. 사소한, 대답은 없습니다.
S.Lott

4
@ S.Lott 프랑스는 매번 만날 때마다 승리하지 않았습니다. 북아메리카를 보면 그들은 대다수를 차지했습니다. 그러나 1559/60 동안 NA에서 5 번의 주요 전투 중 4 번을 잃으면 극장에서 파멸이 일어났다. 티콘 데로가 요새와 나이아가라 요새, 아브라함 평원, Restigouche 전투는 모두 영국의 승리였습니다. 공급 / 강화를 중단함으로써 후자는 생트 포이에서의 프랑스 승리를 무의미하게 만들었습니다.
Dan Neely

0

새로운 프로그래밍 언어를 만드는 경우 널리 사용되는 기존 언어와 비슷한 구문을 사용하면 새로운 사용자가 쉽게 배울 수 있습니다. 특히 언어간에 많은 개념이 유사한 경우.

또한 C 스타일 구문은 비교적 읽기 쉽다고 생각합니다. Pascal과 비교할 때 코드 블록에 "{"및 "}"기호를 사용하는 것은 식별자와 광학적으로 매우 유사한 "시작"및 "끝"보다 읽기 쉽습니다. 파이썬은 훨씬 더 읽기 쉽지만 구문에 공백을 포함 시키면 편집에 새로운 문제가 생깁니다. 또 다른 예 : Lisp와 JavaScript는 몇 가지 아이디어를 공유하지만 C 스타일 구문으로 동일한 내용을 작성하면 덜 모호합니다.

모든 사람들이 자신이 좋아하는 언어를 가지고 있기 때문에 많은 사람들이 두 번째 단락에 동의하지 않을 것이라고 확신하지만 C 스타일 구문의 인기는 부분적으로 역사적인 우연의 일치라고 생각합니다. 결정.


-1

프로그래밍 언어는 자연 언어와 마찬가지로 시간이 지남에 따라 진화하며, 일부 오래된 언어는 다른 언어보다 더 강력한 방식으로 진화하는 데 영향을 미치며 다른 언어는 모호하게 사라지고 그 영향이 표면 수준, 즉 구문에서 추적하기가 더 어렵습니다.

C의 영향은 여러 출처에서 비롯됩니다. 낮은 수준이고 널리 퍼져 있으며 Unix와 Microsoft 서클 모두에서 지원했습니다. 그것은 또한 가장 적합한 이슈의 생존이기도하다. 1970 년대와 1980 년대에 간장 한 C- 유사 구문이 파스칼과 다른 C의 경쟁자에 대한 장황한 Algol 파생 구문보다 더 매력적이라는 것을 쉽게 알 수있다. 따라서 그것은 그 뒤를 따르는 언어들에 의해 널리 채택되었습니다.

현재 멀티 스레드 프로그래밍의 중요성이 커지고 기능 언어가 특히 적합 해짐에 따라 앞으로 그 영향이 커질 것입니다. 적절한 예 : 파이썬, 심지어 질문 게시물에 해당 목록을 만들었습니다.

숙고 할 언어 역사의 멋진 타임 라인보기


잘못 했어요 PASCAL과 C는 모두 ALGOL 자손입니다.
Ingo

그러나 Algol 자체는 Fortran 자손이며 내가 언급 한 구성 중 일부를 선택했습니다 (c, 대괄호와 비교하여 프로그램, 끝, 서브 루틴). 아직도, 내가 생각한 것은 사실 Algol과 같은 구문이었습니다. 편집했습니다.
scrwtp

간결한 C- 유사 구문은 70 년대와 80 년대 +1 에서 Pascal과 C의 다른 경쟁사에 대한 자세한 Algol 파생 구문보다 더 매력적이었습니다 . 시작 프로그래머는 사람도 있습니다 종료 시작 믿는 사람들 이 단어가 중괄호로 자신의 전투를 잃은 끝이-시작 좋아하는 문장 부호를 매핑하는 것이 편리하다는 이야기의 끝
모기

나는 대부분의 개발자들이 C 나 어떤 종류의 C 관련 언어를 알고 있다는 점을 제외하고는 C 구문이 덜 애매하다는 증거를 보지 못하므로 더 친숙해 보인다. AFAICT, C는 파스칼의 구조와 구현이 구문이 아닌 자체 링크를 롤링 할 필요가 없다는 사실 때문에 파스칼을 이겼습니다.
David Thornley

@ David- 내가 기억하는 것에서 C가 다른 언어보다 우월한 이유 중 하나는 C의 메모리에 액세스하기가 상대적으로 쉬웠 기 때문입니다 (예 : 포인터). 나는 그들이 지금 당황하고 있다는 것을 알고 있지만 1KB의 RAM이 많은 메모리 일 때, 그것은 언어의 매우 강력한 기능이었습니다. 다른 언어는 기능과 같은 포인터를 제공하지만 C만큼 쉬운 것은 아닙니다.
Dunk

-3

당신이 열거 한 대부분의 언어는 C와 관련이 없으며, 관련없는 구문상의 유사점과는 별개입니다. 실제 C 파생물은 Objective-C와 C ++뿐입니다.


우리가 구문을 고려하지 않는다면, 모든 언어 사이의 유일한 차이점은 일반적인 언어 구조 (루프, 조건부, 변수, 클래스와 클로저 등의 추상화 등)의 가용성과 모두 기계의 동작과 동일하다는 것입니다. 암호. 모든 저급 언어는 서로 비슷하며 모든 고급 언어는 그 시점에서 서로 매우 유사합니다.
maple_shaft

2
언어는 어떤 기능을 가지고 있는지, 응용 프로그램 동작을 어떻게 전달하는지에 대해 생각해서는 안됩니다. 소스 코드는 문서의 가장 낮은 수준이며, 하나의 소스 코드를 작성 NOT 을위한 기계 . 우리가 기계를 위해 코드를 엄격하게 작성했다면 우리 모두는 어셈블리로 코딩 할 것입니다.
maple_shaft

1
@maple_shaft : 그렇습니다! 인터뷰에서 기계 언어 (어셈블러)와 프로그래밍 언어의 차이점을 설명하라는 요청을 받았습니다. 제 대답은 "기계 언어는 기계를위한 것이고, 프로그래밍 언어는 프로그래머를위한 것입니다."
Treb

1
@maple_shaft : 구문은 사람들과 의 의사 소통과 관련이 없습니다 . 영어 단어를 다른 철자로 바꿔도 영어는 여전히 같은 언어입니다. 구문 형태는 무의미합니다. 의사 소통하는 것은 언어 의미론입니다.
DeadMG

3
@DeadMG : 그러나 문제는 구문 에 관한 것 입니다. 구문상의 유사점은 무의미하다고 생각할 수 있지만, 질문을하는 사람은 이러한 부적합한 유사점 이 존재 하는지 알고 싶어 합니다 .
Nicol Bolas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.