왜 그렇게 많은 프로그래밍 언어가 있습니까?
그리고 다른 언어가 이미 존재 함에도 불구하고 프로그래밍 언어를 작성하라는 메시지는 무엇입니까?
왜 그렇게 많은 프로그래밍 언어가 있습니까?
그리고 다른 언어가 이미 존재 함에도 불구하고 프로그래밍 언어를 작성하라는 메시지는 무엇입니까?
답변:
새로운 프로그래밍 언어는 종종 기존 언어에서 배우고 새로운 방식으로 기능을 추가, 제거 및 결합합니다. 객체 지향 및 기능 과 같은 몇 가지 패러다임이 있으며 많은 현대 언어는 둘 다에서 기능을 혼합하려고합니다.
멀티 코어 CPU의 증가와 같이 해결해야 할 새로운 문제도 있습니다. 이것에 대한 가장 일반적인 해결책은 스레드이지만 일부 프로그래밍 언어는 액터 모델과 같은 다른 방식으로 동시성 문제를 해결하려고 시도합니다. 참조 동시 세계를위한 소프트웨어 - 얼랑을
사이클입니다. 새로운 언어를 시작하면 이전의 잘못된 구문과 잘못된 선택을 모두 자유롭게 할 수 있습니다. 버전 1에서는 해당 수하물이 없으므로 언어가 훌륭해 보이고 작업이 완료됩니다. 그런 다음 최신 버전에서는 작동하지 않을 수있는 기능을 시험해 보거나 구문이 약간 혼란스러워지는 다른 최신 언어의 기능을 가져옵니다. Lo와 보라, 몇 가지 버전을 더한 후에는 어리석은 구문 문제와 레거시 수하물로 인해 언어가 대체 한 언어만큼 복잡하다는 것을 알 수 있습니다. 그리고 갑자기 새 언어를 만들면 모든 언어를 고칠 수 있다는 것을 알고 있습니다.
같은 이유로 망치, 드라이버, 톱, 띠톱, 착암기, 쇠 지렛대 및 기타 여러 도구가 있습니다. 모든 언어가 모든 작업에 완벽하지는 않습니다. 일부 언어는 특정 문제 영역을 대상으로합니다. R은 특히 통계 분석에 적합하고, C는 특히 운영 체제 커널 작성에 적합하며, Haskell은 특히 수학 계산이나 재무 계산에 적합하며 Erlang은 동시 프로그래밍에 특히 적합합니다.
또한 같은 이유로 셔츠가 다른 색으로 나옵니다. 어떤 사람들은 한 언어의 "스타일"을 다른 언어보다 좋아합니다.
물론 많은 프로그래머들이 새로운 언어를 발명하거나, 무슨 일이 일어나는지 보거나, 언어에 대한 지식이 있고 가려움증을 긁거나 아이디어를 시험 해보고 싶어하기 때문에 재미 있다는 것을 알게됩니다.
왜냐하면 그들은 모두 빨기 때문입니다.
현재 우리는 자연 문제를 설명하기 위해 약 5000 개의 언어를 만들었으며 그 중 어느 것도 프로그램을 작성할 수 없습니다 (예 : "영어").
누군가가 자연 언어로 한 문장으로 표현할 수있는 것을 표현할 수있는 프로그래밍 언어를 만드는 방법을 찾을 때까지 계속 올 것입니다.
레거시 코드. 새 언어를 시작하면 이전 언어를 변경할 때 모든 불만 사항을 듣거나 고려할 필요가 없습니다. 모두가 새로운 구현이 더 낫다는 데 동의하더라도 이전 코드를 어길 수는 없습니다. 그리고 오래된 코드가 많이 있습니다.
실제로 사용하지 않아도 새로운 언어를 만드는 것이 재미 있기 때문에
난해한 프로그래밍 언어 (때로는 esolang으로 단축 됨)는 컴퓨터 프로그래밍 언어 디자인의 경계를 테스트하거나 개념 증명 또는 농담으로 설계된 프로그래밍 언어입니다.
프로그래밍 언어를 만드는 것은 다소 재미있다. 이전 요구 사항에 국한되지 않기 때문에 순수한 창작 작업에 가깝습니다. 컴파일러를 처음 작성하는 경우 항상 C로 컴파일하고 적절한 성능을 위해 C 코드를 컴파일 할 수 있으므로 더 이상 구현하기가 어렵지 않습니다.
물론 우리 대부분은 우리가 생각하는 것보다 좋은 아이디어가 적기 때문에 원래 디자이너가 아닌 다른 사람에게 실망하거나 사랑하지 않는 경우가 많습니다.
알고있는 프로그래밍 언어를 생각해보십시오. 마음에 들지 않는 몇 가지 사항을 쉽게 찾을 수 있습니다. 아마도 그것들을 어떻게 고칠 수 있을지에 대한 아이디어가있을 것입니다. 컴파일러 구현에 대해 많이 알고 있고 많은 사람들이 알고 있다고 가정하면 조금 더 자극을 주면 자신의 설계 및 구현을 시작할 수 있습니다.
빠른 답변
휠 재발 명 ... 현재 추세는 무엇입니까 ...
지루한 긴 답변
많은 사람들은 "오래된 프로그래머를위한 또 다른 새로운 언어"가 "새로운 프로그래머를위한 새로운 언어"라는 사실을 잊어 버립니다.
그게 무슨 뜻이야?
"몇 년 동안"프로그래머의 경우 Java 또는 C #은 기존 Cobol (OO / Procedural) Basic, C / C ++에 대한 추가 프로그래밍 언어 일 수 있지만 "새"프로그래머의 경우 Java 또는 C #은 새로운 언어 인 반면 Cobol, (OO / Procedural) Basic, C / C ++는 존재하지 않으므로 휠을 재창조하는 것이 일반적입니다 ...
그리고 기술에 대한 새로운 트렌드가 있다면 사람들은 웹 및 기능적 프로그래밍을위한 ecmascript / javascript와 같은 해당 트렌드를 기반으로 새로운 프로그래밍 언어를 만들 수 있습니다 ...
건배.
새로운 프로그래밍 언어는 여러 가지 이유로 만들어졌습니다. 주로 새로운 프로그래밍 패러다임이 있거나 하드웨어의 발전으로 인해 멀티 태스킹 등과 같은 새로운 하드웨어 기능을 활용하기 위해 새로운 언어를 만듭니다.
필자의 경우 일반적으로 특수한 이유로 작은 컴파일러 (새로운 프로그래밍 언어로)를 작성합니다. 게임을 할당하고 게임 개발을 위해 특별히 작성된 프로그래밍 언어가 더 빠른 코드와 더 빠른 개발로 이어질 것이라고 생각하면 빌드합니다. 그리고 나서 다른 범용 프로그래밍에도 사용될 수 있음이 밝혀졌습니다.
프로그래밍 언어를 만드는 대부분의 사람들은 특정한 목적을 염두에두고 있다고 생각합니다. 처음부터 일반적인 목적으로 만드는 사람들이 있습니다. 그러나 대부분은 그렇지 않습니다.
그건 그렇고, 프로그래밍 언어가 너무 많다고 생각하지만 수백 가지의 새로운 언어가 항상 나올 것입니다. 일부는 재미 있고, 일부는 틈새 목적으로, 학교 프로젝트로, 또는 수백 가지의 다른 이유로. 조만간 새로운 것이 인기를 얻게 될 것입니다. 결코 끝나지 않을 것입니다.
대학은 많은 프로그래밍 언어를 제공하며 Ericsson (Erlang = Ericsson 언어), Bell Labs (B 및 C 언어), Google (몇 달 전의 Go 언어)과 같은 대기업도 마찬가지입니다. 대학 연구의 일환으로 작성된 많은 것들이 많이 사용되지 않습니다. 그러나 몇 가지 주목할만한 예외가 있습니다. 나는 당신 자신의 언어 / 컴파일러를 작성하는 것이 CS 이론이나 관련 학문을 공부하는 사람들의 박사 학위 논문에 좋은 주제를 만든다고 생각합니다. 파이썬은 단일 아이디어를 중심으로 다양한 프로그래머의 공동 온라인 노력으로 탄생 한 최초의 언어 중 하나입니다.
몇 가지 이유가 있습니다. 대부분의 사람들은 존재하는 것이 일부 문제를 쉽게 해결할 수 없다고 생각하기 때문입니다. 일부는 단지 재미 나 학문적 관심을위한 것입니다.
완벽한 언어를 디자인하는 방법에 대한 문제는 아직 해결되지 않았으며 결코 그렇지 않을 수도 있다는 확실한 주장이 있다고 생각합니다. 사람들이 훌륭한 언어를 만드는 것에 대한 새로운 아이디어를 가지고있는 한 사람들은 계속 노력할 것입니다. 이러한 시도 중 일부는 Erlang과 같은 멋진 새 공간을 매핑하고 일부는 퍼집니다. 그러나 플롭에서 무언가를 배우는 한 괜찮습니다.