의도 된 목적 이외의 언어로 어떤 언어가 널리 보급 되었습니까?


70

이 시나리오를 수행하십시오.

  • 프로그래머는 문제를 해결하기 위해 언어를 만듭니다.

  • 그런 다음 다른 사람들이 같은 문제를 해결하도록 돕기 위해이 언어를 발표합니다.

  • 다른 프로그래머는 실제로 다른 범주의 문제에 대해 훨씬 더 낫다는 것을 발견했습니다.

  • 이 새로운 응용 프로그램 덕분에 언어는 주로 해당 응용 프로그램에 널리 사용됩니다.

실제로 이런 일이 있습니까?

다른 말로 표현하자면, 언어의 의도 된 목적이 실제로 어떻게 사용되는지 또는 대중화되는지 여부와 관련이 있습니까? 언어 광고 목적 을 갖는 것이 중요 합니까?


4
HTML 예제가 실제로 찾고있는 것과 맞지 않는 것 같습니다. 기술 문서가 다른 문서와 너무 다른가요? HTML의 핵심 목적은 문서를 서로 참조 할 수있는 쉬운 방법을 제공하기 위해 1989 년과 동일합니다. IMHO HTML은 실제로 찾고있는 것과 정반대입니다.
yannis

5
긴 답변 목록을 고려합니다. 아마도 반대 질문은 더 흥미 롭다 : (인기) 언어가 무엇인지 바로 이 목적을 의도에 사용?
Jaap

@Yannis : 좋은 지적입니다. 가장 좋은 예는 아니며 어느 쪽이든 논쟁 할 수 있습니다. 제거하도록 수정되었습니다.
존 퍼디

@ Jaap : 나는 같은 생각!
leonbloy

2
나는 이것에 틀릴 수 있지만 대부분의 언어가 제작자가 의도 한대로 사용되지 않을 것이라고 확신합니다. 이것의 가장 큰 이유는 외부인들이 자신이 무엇을 사용해야하는지 알지 못하기 때문에 언어의 잠재력에 대해 더 개방적인 생각을 갖도록하는 것입니다.
케네스

답변:


118

리스프 . McCarthy는 원래 논문에서 Lisp를 지정하여 튜링 완전한 언어를 만들기에 간단한 표기법이 거의 없음을 보여줍니다. 그는 Lisp가 머신 코드로 구현 될 수 있다는 사실에 놀랐습니다 (Steve Russel은 최초의 Lisp 인터프리터 구현을 수행했습니다). Lisp는 AI 프로그래밍에 널리 사용됩니다.


70
+1, Lisp 프로그래밍 언어 가 아니 었습니다 ! 나는 당신이 그것을 꼭대기에 올 수 있다고 생각하지 않습니다.
Kilian Foth

7
OTOH는 LISP가 프로그래밍과 수학의 경계에서 사용하도록 설계되었다고 주장 할 수 있습니다.
MSalters

1
McCarthy가 클래스에서 Lisp를 예제로 사용하고 컴파일러를 작성하려고했지만 언젠가 클래스에서 eval 함수를 핸드 코딩하면 인터프리터를 구현하지만 실제로는 아무도 원하지 않는다고 언급했습니다.
Steven A. Lowe

내 Lisper 친구는 더 이상 AI에서 사용되지 않지만 여전히 모든 곳에 응용 프로그램이 있다고 말합니다 .
greyfade

111

Java는 원래 임베디드 시스템 프로그래밍을위한 것입니다. 위키 백과에서 "자바는 원래 대화 형 텔레비전을 위해 설계되었습니다" . 그러나 응용 프로그램 및 웹 프로그래밍에 큰 인기를 얻었습니다.


4
허. 내가 이것을 생각하지 않았다는 것을 믿을 수 없다. 그것은 아마도 정식적인 예일 것입니다 ...하지만 아직 놀라지 않을 것이라고 말할 수는 없습니다.
Jon Purdy

그러나 Java가 실제로 임베디드 작업을 위해 출시 된 적이 있습니까 (웹에 대한 홍보 후에 나온 임베디드 Java 이전)?
Marcin

디자인 Java의 중요한 디자인 요소는 신뢰할 수없는 코드를 실행하는 기능이었습니다.

13
이야기는 더 나쁘다 : A) 임베디드 시스템을위한 것이었다. B)하지만 웹 페이지에 포함될 때까지 빛을 보지 못했습니다. C) '엔터 프시'웹 애플리케이션에 사용될 때까지 아무런 존중도받지 못했다. D) 마침내 많은 전화 OS에 내장되었다. 하드웨어 컨트롤러가 아니라 GUI 플랫폼입니다.
Javier

10 년 이상 셋톱 박스에 설치하는 프로젝트가있었습니다. OCAP 또는 tru-2way를 살펴보십시오.
Bill K

32

Lua는 기본적으로 구성 언어로 설계되었으며, 게임에 가장 인기있는 스크립팅 언어로 틈새 시장을 찾게되었습니다 (작고 빠르며 강력하며 이식 가능하며 쉽게 확장 및 내장되어 사용자 친화적 인 구문으로 인해). 가장 널리 사용되는 게임 인 World of Warcraft는 XML을 대신 사용하여 구성에 실제로 사용하지도 않습니다.


... 그리고 이제 LuaJIT을 통해 실시간 처리 애플리케이션에서 점점 더 많이 사용되고 있습니다
Javier


@lukas : "실제로" 무엇 ? 이전 버전 인 SOL과 DEL은 제어 흐름조차 없었으며 순전히 구성 언어였습니다. Lua는 프로그래밍 지원을 포함하도록 이러한 구성 언어의 확장이었습니다.
Mud

"루아는 주로 구성 언어로 설계되었습니다."나는 프로그래밍 언어라고 말할 것입니다.
Lukasz Madon

7
아마도 "주로 설계된 것"보다는 "의도 된 목적"이라고 말했을 것입니다. 소기의 목적은 SOL 및 DEL이 사용 된 루아를 사용하는 것이 었습니다. 이들은 사용자가 프로그래밍 기능을 요구하기 시작한 구성 언어입니다. Lua는 이러한 요구를 충족시키기 위해 만들어졌습니다. 저자 자신 이 말했듯 이 "게임에서 Lua를 광범위하게 채택한 것은 놀라운 일이었습니다. 우리는 Lua의 목표로 게임 개발을하지 않았습니다." 그것은 OP가 찾고 있던 것과 거의 똑같습니다.
Mud

32

래리 벽의 원래 의도 은 "위해이었다 쉽게 처리 보고서를 만들기 위해 범용 유닉스 스크립트 언어 와" 사람이 페이지를 언어로 설명합니다 :

Perl은 임의의 텍스트 파일을 스캔하고 해당 텍스트 파일에서 정보를 추출하며 해당 정보를 기반으로 보고서를 인쇄하는 데 최적화 된 해석 언어입니다.

물론 Man 페이지는 Perl이 실용 추출 및 보고서 언어를 의미한다고 알려줍니다 (실제 이름은 Pearl 이 원래 이름 인 맞춤법 오류이며 Wall이 기존 PEARL 언어를 발견했을 때 변경됨 ).

펄은 신들이 우주를 만들어 낸 언어 이기 때문에 먼 길을 갔다 .

여기에 이미지 설명을 입력하십시오


23
하나는 해결됩니다 : 병리학 취사 쓰레기 리스터
리처드

3
unabbrev하는 방법은 여러 가지가 있습니다! 매우 Perly

Perl에 대한 모든 약어는 실제로는 약어입니다.
CanSpice

1
@DarkTemplar 내가 해석하는 방법은 펄이 거의 모든 곳에서 삐걱 거리는 것입니다. 초창기부터 펄은 매우 인기있는 웹 언어, 매우 인기있는 스크립팅 언어, 다소 인기있는 다목적 언어로 성장했으며 정규 표현식 구문은 결정적인 것으로 바뀌었고 다른 언어 (php) 등을 낳았습니다. 또한 lisp는 질문에 대한 대답으로 받아 들여 졌으므로 두 언어의 관계에 대한 재미있는 묘사 (정확하지는 않지만)라고 생각했습니다 (하나는 꿈꾸는 언어이고 다른 하나는 실제로 사용하는 언어입니다).
yannis

1
@DarkTemplar Yeap. TIOBE 지수에서 10 위 안에 들었습니다 . 물론 당신은 TIOBE 지수를 매우 심각하게 생각하지 않습니다. 그것은 상대적이고 주관적입니다. 그러나 여전히 언어 인기의 좋은 지표입니다.
yannis

28

내가 추측 것이 자바 스크립트 내가 브렌던 아이크가 다시 넷스케이프 일, 지금까지 자신의 향후 버전 상상 생각하지 않기 때문에뿐만 아니라이 질문에 맞는 는 LiveScript는 오늘날의 소위 웹 "응용 프로그램"을 만드는 데 사용된다.

JavaScript는 간단한 양식 검증 및 이미지 롤오버에서 기능과 아름다움 측면에서 오프라인 응용 프로그램과 경쟁 할 수 있는 강력한 도구로 이동했습니다.

불행히도, 나는 아직도 많은 사람들이 그것을 장난감으로 간주한다고 생각합니다.


31
흥미로운 것은 웹의 어셈블리 언어로 나아가고 있다는 것입니다. 다시 말해서, 다른 언어가 컴파일되고 실행되는 것입니다. 나는 Brendan Eich가 그것을 기대했다고 생각하지 않습니다 .

3
추가해야 할 것이 있습니다. 단지 클라이언트 측 스크립팅 언어가 아닙니다. node.js 또는 rhino와 같은 많은 프로젝트는 자바 스크립트를 서버 측 언어로 사용합니다
gion_13

궁금한 점이 있지만 "클라이언트 측 스크립팅 언어"와 "서버 측 언어"는 무엇입니까?
Dark Templar

@DarkTemplar. 서버 측 스크립팅 언어가 서버에서 실행되고 해당 출력이 브라우저로 전송됩니다. 클라이언트 측 스크립팅 언어는있는 그대로 브라우저로 전송되어 실행됩니다. (원하는 경우 서버 측 언어를 사용하여 클라이언트 측 언어를 출력 할 수 있습니다.) 대부분의 브라우저에서 실행되는 유일한 언어는 javascript입니다.
TRiG February

19

얼랭. Ericsson 연구소에서 오랫동안 스위칭 및 액세스 장치 라인을위한 전화 애플리케이션을 개발하기 위해 발명되었습니다. 이제 흥미로운 동시성 개념을 갖춘 유망한 범용 동적 언어로 발전했습니다.

미래에는 통신 업계에서 IT 세계로 넘어가는 언어가 더 많아지고, 거기에서 진화하는 경우, 특히 프로토콜의 모델링 및 검증을 위해 설계된 언어가 더 흥미로울 것입니다.


그리고 그것은 node.js에 대한 영감 중 하나가 아니 었습니까?
dodgy_coder

이것이 자격이 있다고 생각하지 마십시오. Erlang이 전화를 위해 발명 된 이유는 일반적인 동적 동시성 언어가 필요했기 때문입니다. 여전히 그래요
Alan Baljeu


14

PHP는 원래 Personal Home Page를 의미 했지만 오늘날은 약간 더 큰 웹 응용 프로그램에도 사용됩니다.


18
물론 가장 큰 PHP 사용자 인 Facebook은 여전히 ​​개인 홈페이지 시장에 여러 가지면에서 있습니다.
Jaap

3
"PHP / FI는 1995 년 Rasmus Lerdorf가 처음으로 온라인 이력서에 대한 액세스를 추적하기위한 간단한 Perl 스크립트 세트로 작성되었습니다." 먼 길이야, 자기야
nickf

PHP는 여전히 웹 언어 인 반면, 약간의 역전이 진행되고 있습니다. PHP는 HTML에 작은 스 니펫으로 포함되어 있지만 많은 프로젝트는 이제 PHP에서 HTML 문자열을 생성합니다. 그래도 <?php파일 시작 부분에 태그 가 필요합니다 !
Warbo

14

VBScript 는 악성 코드를 작성하기위한 것이 아니라고 확신 합니다.


1
조금 가혹하다고 생각하지 않습니다. Java와 C는 맬웨어에 대해 상당한 점유율을 가지고 있습니다.
제레미

@JChild : 귀하의 의견 이후 몇 년이 지났습니다. 그러나 VB 방어는 매우 이상한 일이었습니다.
Magus

@Magus VB도 아닙니다. VBScript입니다. 확장명이 .vbs 인 파일입니다. 당신이 자동으로 가정하는 것은 당신이 볼 때 바이러스입니다.
user16764

13

C ++의 템플릿 메타 프로그래밍 은 코드를보다 일반적인 코드로 만드는 방법으로 초기에 설계되었으며, 현재까지 부스트와 같은 라이브러리를 통해 C ++ 언어를 크게 향상시키는 데 사용되었습니다.


8
... 그리고 ;-) 긴 시간을 구축 과도 함께 눈물을 C ++ 프로그래머를 가져다
quant_dev

8
그리고 끔찍한 오류 메시지.
DeadMG

11

기본은 또 다른 유명한 사례입니다. 이름 ( 초보자의 다목적 기호 명령 코드)은 학습자 언어의 기원을 암시하지만 그 이후로 꽤 커졌습니다.


24
heh-Microsoft는 "초보자"를 "비즈니스"로 바꾸고 수백만을
Steven A. Lowe

11

VHDLVerilog (일명 VerilogHDL)는 원래 디지털 회로 및 구성 요소 를 설명 하기위한 것 입니다. 이들은 문서 형식으로 사용되어 구성 요소의 동작을 시뮬레이션합니다. 나중에 Synopsys와 다른 사람들은 이러한 설명을 게이트의 순 목록으로 변환 할 수있는 기술을 개발하여 실제 하드웨어를 생성하는 데 사용할 수 있습니다.

VHDL 및 Verilog는 역사적 이유로 하드웨어 설명 언어 (HDL)라고합니다. 오늘날 이들은 실제로 하드웨어 디자인 언어 (동일한 약어)로 사용됩니다 .


멋진 실제 모델 중심 개발
Jaap

@Mark 예, VHDL은 초고속 집적 회로, 하드웨어 설명 언어입니다. Verilog는 완전히 다른 언어입니다. Verilog는 때때로 Verilog HDL이라고도합니다. en.wikipedia.org/wiki/Verilog
Philippe

2
QHDL은 VHDL과 매우 유사하며 양자 컴퓨터의 회로를 설명하는 데 사용됩니다. 나는 언어가 그 기원에서 멀리 떨어져 있다고 상상할 수 없다.
Mark Booth

@ Mark Wow, 흥미로운 "QHDL"입니다! 구글은 많은 소음을 보여줍니다. 당신은 참조가 있습니까?
Philippe

1
ACCU 2011 컨퍼런스에서 Paul Blacks의 우수한 "Quantum Computing for Programmers"세션에서이 사실을 알게되었습니다. 그의 슬라이드는 accu.org/content/conf2011/…에 있습니다.
Mark Booth

10

ML은 정리 증명자를 개발하고 스크립팅하기위한 언어로 시작했습니다. 그것은 정리 증명 자의 "메타 언어"였습니다.


좋구나. 이것이 올바른 대답 인 이유는 기본 응용 프로그램이 이제 컴파일러와 다른 언어 도구 (적어도 내가 아는 한)이기 때문입니다.
존 퍼디

6
+1, 그러나 ML이 "대인기"되었다고 말하는 것은 약간의 확장입니다
nikie

아마도 오늘날의 직접 사용자뿐만 아니라 그 뒤에 오는 모든 단일 유형 언어에 영향을 미쳤을 것입니다.
Ryan Culpepper

7

C
원래 원래 Unix 운영 체제에서 사용하도록 개발되었습니다. 그러나 Dennis Ritchie가 놀랐을 때조차도 언어가 인기를 얻었습니다.
그의 유명한 저서 C 프로그래밍 언어에서 . Ritchie는 "이는 UNIX 운영 체제의 언어로서 그 기원을 넘어 널리 퍼져있다"고 말합니다. 그리고 응용 프로그램 개발에 널리 사용되는 언어가 된 것에 놀랐습니다.


11
글쎄, 원래 크로스 플랫폼 방식으로 시스템과 저수준 응용 프로그램을 개발하도록 설계되었습니다. 인기에도 불구하고 원래 목표와 일치하므로 적합하지 않습니다.
Jon Purdy

3
@Jon 글쎄, 그것은 발에 자신을 쏠 수있는 가장 쉬운 방법이되어 목적을 능가하기 때문에 일종의 적합합니다.
yannis

1
@Yannis : 하하, 사실입니다. 그러나 나는 더 많은 목적을 포함하기 위해 성장한 언어가 아니라 주요 목적이 완전히 변경된 언어에 대해 묻고 있습니다.
Jon Purdy

나는 C가 난독 화 된 코드 콘테스트의 주요 언어 중 하나로 유명해 졌다고 덧붙입니다.
Peter G.

운영 체제를 구현하도록 설계되지 않았습니까?
Nikko

3

C ++ 는 원래 C ++ 에서 객체 지향 프로그래밍을 용이하게하기 위해“클래스가있는 C”로 설계되었습니다.

그런 다음 강력한 형식의 컨테이너 클래스를 구현할 수 있도록 이후 버전의 템플릿이 제공되었습니다. 이 템플릿은 실제로 Turing-complete 컴파일 타임 프로그래밍 언어를 구성한다는 것을 나중에 알게되었습니다.

결과적으로 많은 응용 프로그램은 이제 C ++을 객체 지향 프로그래밍 언어가 아니라 컴파일 타임 다형성 및 메타 프로그래밍에 크게 의존 하는 알고리즘 중심 프로그래밍 언어로 사용합니다.


7
그러나 C ++은 범용으로 설계되었으며 범용 언어로 사용됩니다.
BenjaminB

@ Ubiquité C ++이 실제로 범용 언어로 설계된 것은 아니라고 생각합니다. 또는 오히려, 그것은 사용할 수 있도록 설계되었다 위한 다른 목적으로 (그러나 특정 시스템 프로그래밍에서). 그러나 여러 패러다임 과 함께 작동하도록 설계 되지 않았습니다 .
Konrad Rudolph

실제로, 다중 패러다임 특성은 설계에 고유 한 것으로, OO 기능을 C에 볼트로 고정하고 적절한 경우보다 절차 적 기능을 사용할 수있는 능력을 유지하기 때문입니다.
존 퍼디

@Jon OK, 인정하겠습니다. 그러나 일반 프로그래밍 및 템플릿 메타 프로그래밍은 이러한 기능 중 하나가 아닙니다. 그리고 오늘날 C ++은 이러한 기능을 지원하는 유일한 언어 일 것입니다.
Konrad Rudolph

매우 사실입니다. 지옥, 제네릭 프로그래밍을 지원하고 const있습니다 ++ 나 C를 사용하는 가장 중요한 두 가지 이유.
존 퍼디

2

ADA — 원래 항공 전자 장치에 대한 DoD 계약에 따라 설계되었습니다. 해당 응용 프로그램에서 여전히 사용되지만 실시간 비즈니스 미들웨어에도 인기가 있습니다.


5
범용 언어로 구축되었습니다. DoD는 사용되는 언어의 양을 줄이기 위해 모든 언어를 사용할 수있는 언어를 원했습니다.
BenjaminB

꽤 재밌어요. 에이다는 다른 언어의 수를 줄이기 위해 명시 적으로 만들어진 언어였습니다. 해당 메트릭 ( "한 가지 목적으로 디자인되고 다른 목적으로 사용됨")에 따라 Ada는 다른 언어 반대 언어 인 Lisp를 사용하여 목록의 맨 위에 표시되어야합니다.
Jared Updike

2

"언어의 의도 된 목적이 실제로 어떻게 사용되는지 또는 대중화되는지 여부와 관련이 있습니까?"

언어의 의도 된 목적이 실제 사용과 인기에 많은 영향을 미친다고 생각하지 않습니다. 처음부터 혁신적이고 유연하며 다재다능하도록 고안된 훌륭한 언어가 있지만 매우 전문화 된 수직 시장 (예 : 에펠) OTOH, Basic, Pascal, C 등은 원래 제한된 특정 목적을 위해 설계되었지만 수년간 풍경을 지배했습니다.

IMO 마케팅 / 금융 및 지원 고려 사항은 항상 특정 언어의 확산 및 확장에 중요한 역할을했습니다. 예를 들어 : Borland는 TurboPascal과 패키지, 시장 및 지원을 제공합니다. MS는 C # 및 패키지, 시장 및 지원을 제공합니다. 결과적으로 이러한 언어가 인기를 얻었고 타사 도구 산업이 생겨나 고 점점 더 많은 개발자와 기업이 악몽에 뛰어 들었습니다.

그러나 지난 몇 년간 오픈 소스 언어와 툴은 역 동성을 변화시키고 있으며 이제는 루비, 파이썬, 펄과 같이 마케팅보다 '장점'에 기반한 언어가 대중화되고 있습니다. 그러나 그것은 언어가 확장되고 편리한 사용을 위해 내장 된만큼 발명자들의 '의도'때문이 아닙니다.


2

원래 의도에서 다른 목적으로 사용되지 않은 인기있는 언어는 없다고 생각합니다. C조차도 원래 휴대용 OS (유닉스)를 만들기 위해 작성되었습니다.

특정 목표를 염두에두고 진정으로 일반적인 프로그래밍 언어를 작성하려는 시도는 제한과 초점이 ​​부족하여 비참하게 실패 할 것입니다.


postscript-거의 모든 컴퓨터와 프린터에서 어디에나 있지만 그래픽 인쇄에만 사용됩니다. 그러나 pdf에서 사용될 때 용도가 변경되었다고 주장 할 수 있습니다.
13ren

1

루비 는시를 쓰는 언어로 디자인되었다고 들었습니다. 꽤 아름다운 코드도 쓸 수 있다는 것이 밝혀졌습니다!

나는 당신과 똑바로 할 것입니다. 울고 싶어 울다. 상냥하게 속삭이는 것. 이 책은 루비에 대한 강력한 안내서입니다. 그것은 눈물이 흘릴 정도로 아름다운 코드를 의미합니다. 그것은 다음 날 아침이 책의 팔에서 깨어 나게하는 용감한 이야기와 우울한 진실을 의미합니다.


2
흥미 롭군 어떤 소스?
Anto

루비 링크는 루비를 예술적으로 가르치기 위해 쓰여진 책으로 연결됩니다. 나의 대답은 루비를 쓰는 것이시와 같다고 주장하는 그 책에 관한 농담입니다. 실제로 루비는 범용 프로그래밍 언어로 설계되었지만 루비 코드를 시로 보는 사람들에게 영감을주었습니다.
Tinco
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.