왜 그렇게 많은 프로그래밍 언어가 있습니까? 왜 새로운 언어가 여전히 만들어지고 있습니까? [닫은]


51

왜 그렇게 많은 프로그래밍 언어가 있습니까?

그리고 다른 언어가 이미 존재 함에도 불구하고 프로그래밍 언어를 작성하라는 메시지는 무엇입니까?


이 주제에 대한 재미있는 비디오 삼촌 밥 마틴 (기준 "마지막 프로그래밍 언어"입니다 skillsmatter.com/podcast/agile-testing/bobs-last-language )
mikera

프로그래머는 도구를 좋아하기 때문입니다.
haylem


2
관련이 없음 : xkcd.com/927
Monica와의

이것을 정당화하기는 어렵습니다. 각 언어에는 이야기가 있다고 생각합니다. 대부분의 언어는 제조업체가 제 지식에 크게 도움이되지 않았습니다. 대부분의 언어는 동일한 개념을 중심으로 진행되며 실제 문제를 거의 해결하거나 좋은 환경을 제공하지 않습니다. 나는 그들이 그것을 만들 때까지, 그들은 전체 일에 지친 느낌과 어쩌면 그들의 삶을 낭비하는 방법을 볼 수 있습니다 .... ksh 또는 JavaScript를 생각하십시오 ..... 아주 끔찍하고 해로운 도구.
NoChance

답변:


36

프로그래밍 언어 진화

새로운 프로그래밍 언어는 종종 기존 언어에서 배우고 새로운 방식으로 기능을 추가, 제거 및 결합합니다. 객체 지향기능 과 같은 몇 가지 패러다임이 있으며 많은 현대 언어는 둘 다에서 기능을 혼합하려고합니다.

멀티 코어 CPU의 증가와 같이 해결해야 할 새로운 문제도 있습니다. 이것에 대한 가장 일반적인 해결책은 스레드이지만 일부 프로그래밍 언어는 액터 모델과 같은 다른 방식으로 동시성 문제를 해결하려고 시도합니다. 참조 동시 세계를위한 소프트웨어 - 얼랑을


10
Erlang의 흥미로운 점은 액터 모델의 "청정실 재창조"라는 것입니다. 암스트롱과 친구들이 Erlang을 개발했을 때, 그들은 배우 모델에 대한 Hewitt et al의 연구에 대해 알지 못했습니다!
Frank Shearar

@Frank : 흥미 롭습니다. 몰랐어요, 고마워요
Jonas

2
진화에 +1 비슷한 질문은 "왜 동물과 식물의 종이 너무 많은가? 왜 새로운 종과 식물이 여전히 나타나는가?"
Gyan 일명 Gary Buy

1
@GaryBuyn 그것은 당신이 그 관점을 구독한다면 "진화를위한 +1"일뿐입니다. 많은 경우, 동물의 비유는 너무 조금 먼 것입니다.
Darknight

@GaryBuyn, Uhm ... "hamlet"이 "hamster" 와 비슷 합니다.
Pacerier

22

사이클입니다. 새로운 언어를 시작하면 이전의 잘못된 구문과 잘못된 선택을 모두 자유롭게 할 수 있습니다. 버전 1에서는 해당 수하물이 없으므로 언어가 훌륭해 보이고 작업이 완료됩니다. 그런 다음 최신 버전에서는 작동하지 않을 수있는 기능을 시험해 보거나 구문이 약간 혼란스러워지는 다른 최신 언어의 기능을 가져옵니다. Lo와 보라, 몇 가지 버전을 더한 후에는 어리석은 구문 문제와 레거시 수하물로 인해 언어가 대체 한 언어만큼 복잡하다는 것을 알 수 있습니다. 그리고 갑자기 언어를 만들면 모든 언어를 고칠 수 있다는 것을 알고 있습니다.


2
이것은 라이브러리, 프레임 워크 및 소프트웨어에 있어서는 사실이지만, 개인적으로 이것이 적용되는 언어를 모릅니다. 예가 있습니까?
back2dos

16
글쎄, C #과 복잡성을 해결하기 위해 C #과 Java가 적어도 부분적으로 도입되었다고 생각합니다. 그리고 이제 여러 버전 이후에이 두 언어를 모두 살펴보면 사람들이 "언덕 위에"있다고 이야기하기 시작하면 구문과 기능 세트가 복잡해집니다. 아무 것도 증명할 수 없지만 그냥 가져 가라. :-)
RationalGeek

2
좋은 지적이지만, C #과 함께 또 다른 사실이 있다고 생각합니다. 그것은 자선적인 이유와 시장 수용을 위해 존재하지 않는 상용 제품입니다. 고객의 제품을 새로운 릴리스 등을 위해 "개선"해야합니다.
gf

1
사실입니다. 시장에서 더 많은 돈을 벌기 위해 새로운 기능을 추가하려는 드라이브는 무시할 수 없습니다. 그러나 양날의 칼입니다. 이 정확한 이유로 상용 제품의 새로운 기능을 기대할 수 있습니다. 그러나 오픈 소스 제품에서 자원 봉사 군대가 관심을 유지하는 한 새로운 기능 만 얻을 수 있으며 고양이를 키울 수있는 기술이 있습니다.
RationalGeek

C #에는 많은 기능이 있지만 여전히 C ++보다 깨끗한 언어입니다. LINQ와 같은 새로운 추가 기능을 사용하면 C ++에서 쉽게 할 수없는 일을 깔끔하게 수행 할 수 있습니다. 복잡성에 대한 보존에는 두 가지 종류가 있습니다. 하나는 문제에 내재 된 복잡성과 하나는 프로그램에서 한 가지 종류의 중복 복잡성을 제거 할 때 데이터와 같이 복잡성이 증가한다는 것입니다. 사용 가능한 "공간"을 채우도록 확장합니다.
Steve314

11

같은 이유로 망치, 드라이버, 톱, 띠톱, 착암기, 쇠 지렛대 및 기타 여러 도구가 있습니다. 모든 언어가 모든 작업에 완벽하지는 않습니다. 일부 언어는 특정 문제 영역을 대상으로합니다. R은 특히 통계 분석에 적합하고, C는 특히 운영 체제 커널 작성에 적합하며, Haskell은 특히 수학 계산이나 재무 계산에 적합하며 Erlang은 동시 프로그래밍에 특히 적합합니다.

또한 같은 이유로 셔츠가 다른 색으로 나옵니다. 어떤 사람들은 한 언어의 "스타일"을 다른 언어보다 좋아합니다.

물론 많은 프로그래머들이 새로운 언어를 발명하거나, 무슨 일이 일어나는지 보거나, 언어에 대한 지식이 있고 가려움증을 긁거나 아이디어를 시험 해보고 싶어하기 때문에 재미 있다는 것을 알게됩니다.


모든 건설 도구가있을뿐만 아니라 비슷하게 보이는 여러 가지 종류의 망치와 망치가 있지만 다른 작업이나 사용자에게 더 나은 특정 설계 요소가 있습니다.
베리 브라운

+1 문제 영역에 적합합니다. 일반적으로 도구를 연구하는 학자들은 매우 일반적인 도구는 특정 작업을위한 특정 도구보다 덜 강력하다고 말합니다. 조정 가능한 스패너와 고정 크기 스패너에 대해 생각해보십시오
MarkJ

8

왜냐하면 그들은 모두 빨기 때문입니다.

현재 우리는 자연 문제를 설명하기 위해 약 5000 개의 언어를 만들었으며 그 중 어느 것도 프로그램을 작성할 수 없습니다 (예 : "영어").

누군가가 자연 언어로 한 문장으로 표현할 수있는 것을 표현할 수있는 프로그래밍 언어를 만드는 방법을 찾을 때까지 계속 올 것입니다.


15
그럼에도 불구하고 그들은 계속 올 것입니다. 죽은 언어 만 석재로 작성되고 말장난을 용서하십시오. 살아있는 언어가 끊임없이 변화하는 이유가 있습니다.
R. Martinho Fernandes

1
어떤 사람들은 문제를 표현하는 자연어가 수학이라고 주장합니다. 이것은 왜 사람들이 순수한 람다 미적분학을 사용하지 않고 기능적 언어에 구문 설탕을 계속 추가하는지에 대한 의문을 제기합니다. 우리가 일상적으로 해결해야하는 문제는 영어 나 수학으로 쉽게 표현할 수 없다고 생각합니다.
Steve314

5
동의했다. 순수한 수학을 사용하여 "배고파요"를 표현하기가 너무 어렵습니다.
Aaron Digulla

1
@AaronDigulla : 배고픈 = SUM (배 / 음식) 확실히 :)
gbjbaanb

좋은 예인 @AaronDigulla, 종종 계산을 표현하고 싶습니다. 그래서 우리는 다음과 같은 시나리오를 취합니다 : 배가 고프다. 이제는 먹어라. 협상하거나 컨텍스트를 확장 할 수있는 시스템을 구축하려면 이것이 AI의 목표라고 생각합니다. 일반적인 프로그래밍 언어는 사람들이해야 할 일을 말하며 일반적으로 일반적인 것보다 구체적입니다. 그러나 대부분의 문제는 특정 문제이므로 여기에서 문제를 볼 수 있습니다.
AndreasScheinert

6

새로운 언어를 만들기위한 중요한 동기 중 하나는 기존 언어보다 더 나은 것을 달성하는 것입니다. 그리고 항상 개선의 여지가 있으므로 항상 새로운 언어가있을 것입니다.

상업적 이익은 또 다른 큰 이유입니다. 회사와 개발자가 플랫폼을 선호하도록 모든 요구에 맞는 언어를 제공 할 수있는 것이 Microsoft와 같은 것이 중요하다고 생각합니다.


6

레거시 코드. 새 언어를 시작하면 이전 언어를 변경할 때 모든 불만 사항을 듣거나 고려할 필요가 없습니다. 모두가 새로운 구현이 더 낫다는 데 동의하더라도 이전 코드를 어길 수는 없습니다. 그리고 오래된 코드가 많이 있습니다.


3
레거시 코드를 피하도록 설계된 언어의 문서화 된 사례가 있습니까? 이 주장은 거의 불가능 해 보인다. 새로 시작하려는 경우 (.net이 떠오를 때)를 볼 수 있지만 레거시 코드를 피하는 것이 아니라 향후 코드를 더 잘 활성화하는 것이 좋습니다.
Bryan Oakley

나는 이것이 옳다고 믿지 않습니다. 존재하는 언어의 오픈 소스 구현을 포크 할 수 있습니다.
대안

@BryanOakley-원래 .NET은 VB6과의 호환성을 유지하기위한 것이지만 문제가 너무 어렵다고 판단했습니다. .NET은 여전히 ​​많은 레거시 WRT Java / J ++를 기반으로했습니다. D는 레거시 코드를 대상으로 설계된 언어의 예라고 생각합니다.
gbjbaanb

4

실제로 사용하지 않아도 새로운 언어를 만드는 것이 재미 있기 때문에

난해한 프로그래밍 언어 (때로는 esolang으로 단축 됨)는 컴퓨터 프로그래밍 언어 디자인의 경계를 테스트하거나 개념 증명 또는 농담으로 설계된 프로그래밍 언어입니다.


1
위키 피 디아 문서의 각주에 내려하지 않은 사람들을 위해, 밀교 언어의 위키는 많은 재미입니다 esoteric.voxelperfect.net/wiki/Main_Page
데이비드 윈 슬로

무엇을하는지 더 자세히 설명해 주시겠습니까? 그리고 질문에 대한 답변으로 추천하는 이유는 무엇입니까? "링크 전용 답변" 은 Stack Exchange에서 환영받지 못합니다
gnat

1
@gnat 솔직히 원문은 링크 전용 답변이 아니라 링크가 없으면 짧지 만 완벽하게 유효한 답변이라고 생각합니다. 그러나 링크가 맛을 더한다는 점을 감안할 때 짧은 인용문을 포함 시켰습니다.
jk.

3

프로그래밍 언어를 만드는 것은 다소 재미있다. 이전 요구 사항에 국한되지 않기 때문에 순수한 창작 작업에 가깝습니다. 컴파일러를 처음 작성하는 경우 항상 C로 컴파일하고 적절한 성능을 위해 C 코드를 컴파일 할 수 있으므로 더 이상 구현하기가 어렵지 않습니다.

물론 우리 대부분은 우리가 생각하는 것보다 좋은 아이디어가 적기 때문에 원래 디자이너가 아닌 다른 사람에게 실망하거나 사랑하지 않는 경우가 많습니다.

알고있는 프로그래밍 언어를 생각해보십시오. 마음에 들지 않는 몇 가지 사항을 쉽게 찾을 수 있습니다. 아마도 그것들을 어떻게 고칠 수 있을지에 대한 아이디어가있을 것입니다. 컴파일러 구현에 대해 많이 알고 있고 많은 사람들이 알고 있다고 가정하면 조금 더 자극을 주면 자신의 설계 및 구현을 시작할 수 있습니다.


2

빠른 답변

휠 재발 명 ... 현재 추세는 무엇입니까 ...

지루한 긴 답변

많은 사람들은 "오래된 프로그래머를위한 또 다른 새로운 언어"가 "새로운 프로그래머를위한 새로운 언어"라는 사실을 잊어 버립니다.

그게 무슨 뜻이야?

"몇 년 동안"프로그래머의 경우 Java 또는 C #은 기존 Cobol (OO / Procedural) Basic, C / C ++에 대한 추가 프로그래밍 언어 일 수 있지만 "새"프로그래머의 경우 Java 또는 C #은 새로운 언어 인 반면 Cobol, (OO / Procedural) Basic, C / C ++는 존재하지 않으므로 휠을 재창조하는 것이 일반적입니다 ...

그리고 기술에 대한 새로운 트렌드가 있다면 사람들은 웹 및 기능적 프로그래밍을위한 ecmascript / javascript와 같은 해당 트렌드를 기반으로 새로운 프로그래밍 언어를 만들 수 있습니다 ...

건배.


바퀴의 재발견을 지적하기 위해 +1. 마케팅상의 이유로 종종 이루어집니다. 대기업이나 조직은 자체 프로그래밍 언어를 가지고 있어야합니다.
조르지오

1

새로운 프로그래밍 언어는 여러 가지 이유로 만들어졌습니다. 주로 새로운 프로그래밍 패러다임이 있거나 하드웨어의 발전으로 인해 멀티 태스킹 등과 같은 새로운 하드웨어 기능을 활용하기 위해 새로운 언어를 만듭니다.

필자의 경우 일반적으로 특수한 이유로 작은 컴파일러 (새로운 프로그래밍 언어로)를 작성합니다. 게임을 할당하고 게임 개발을 위해 특별히 작성된 프로그래밍 언어가 더 빠른 코드와 더 빠른 개발로 이어질 것이라고 생각하면 빌드합니다. 그리고 나서 다른 범용 프로그래밍에도 사용될 수 있음이 밝혀졌습니다.

프로그래밍 언어를 만드는 대부분의 사람들은 특정한 목적을 염두에두고 있다고 생각합니다. 처음부터 일반적인 목적으로 만드는 사람들이 있습니다. 그러나 대부분은 그렇지 않습니다.

그건 그렇고, 프로그래밍 언어가 너무 많다고 생각하지만 수백 가지의 새로운 언어가 항상 나올 것입니다. 일부는 재미 있고, 일부는 틈새 목적으로, 학교 프로젝트로, 또는 수백 가지의 다른 이유로. 조만간 새로운 것이 인기를 얻게 될 것입니다. 결코 끝나지 않을 것입니다.


0

같은 이유로 <whatever>가 너무 많아서 새로운 <whatever>를 계속 만듭니다

예를 들어, 수십 개의 PHP MVC 프레임 워크가 있지만 사람들은 항상 특정 요구를 충족 시키거나 다른 팀에 의존하지 않도록하거나 더 나은 것을 만들기 위해 새로운 것을 만들 것입니다. 기본적으로 모든 유형의 도구 또는 응용 프로그램에 대해서도 마찬가지입니다.

내 의견으로는 모든 사람에게 아주 좋은 일입니다.


NIH 증후군 = 일반적으로 IT 산업에는 전혀 유용하지 않습니다.
gbjbaanb

0

대학은 많은 프로그래밍 언어를 제공하며 Ericsson (Erlang = Ericsson 언어), Bell Labs (B 및 C 언어), Google (몇 달 전의 Go 언어)과 같은 대기업도 마찬가지입니다. 대학 연구의 일환으로 작성된 많은 것들이 많이 사용되지 않습니다. 그러나 몇 가지 주목할만한 예외가 있습니다. 나는 당신 자신의 언어 / 컴파일러를 작성하는 것이 CS 이론이나 관련 학문을 공부하는 사람들의 박사 학위 논문에 좋은 주제를 만든다고 생각합니다. 파이썬은 단일 아이디어를 중심으로 다양한 프로그래머의 공동 온라인 노력으로 탄생 한 최초의 언어 중 하나입니다.


python-history.blogspot.com/2009/01/… 파이썬의 탄생을 자세히 설명합니다.
Andy Dent

0

몇 가지 이유가 있습니다. 대부분의 사람들은 존재하는 것이 일부 문제를 쉽게 해결할 수 없다고 생각하기 때문입니다. 일부는 단지 재미 나 학문적 관심을위한 것입니다.

완벽한 언어를 디자인하는 방법에 대한 문제는 아직 해결되지 않았으며 결코 그렇지 않을 수도 있다는 확실한 주장이 있다고 생각합니다. 사람들이 훌륭한 언어를 만드는 것에 대한 새로운 아이디어를 가지고있는 한 사람들은 계속 노력할 것입니다. 이러한 시도 중 일부는 Erlang과 같은 멋진 새 공간을 매핑하고 일부는 퍼집니다. 그러나 플롭에서 무언가를 배우는 한 괜찮습니다.


-1

앞에서 언급 한 것처럼 언어는 특정 특정 작업을 대상으로하려고 시도하며 새 언어는 새로운 영역을 대상으로 할 수 있습니다. 이러한 언어는 현재 사용중인 다른 언어의 기능을 사용할 수 있습니다.

새로운 언어에 대한 또 다른 이유는 다양한 작업을 통합하고 다양한 요구에 맞는 언어가되기위한 것입니다. 이러한 언어 중 일부는 사용자의 필요에 관계없이 항상 사용할 언어를 모두 포괄하려고합니다.


-1

나는 프로그래밍 언어 수업에서 대부분의 언어가 가려움증을 긁기 위해 발명되었다는 것을 배웠다. 대부분의 언어는 일부 알고리즘을 더 잘 표현할 수 있도록 개발되었습니다. 예를 들어, 재귀 알고리즘에 훨씬 더 표현적인 공간을 제공하기 위해 기능적 언어가 발명되었습니다.

왜 그렇게 많은 언어가 있는지 묻는 것은 왜 C ++ 0x를 묻는 것과 같습니다. :)

또한 더 많은 언어를 알수록 표현력이 향상됩니다. 이는 프로그래밍 언어와 자연 언어 모두에 해당됩니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.