[programming-languages] 언어는 언제 스크립팅 언어로 간주됩니까? [닫은]

언어를 스크립팅 언어로 만드는 것은 무엇입니까? 나는 어떤 사람들이 “컴파일 대신 해석 될 때”라고 말하는 것을 들었습니다. 그러면 PHP (예 :)가 스크립팅 언어가됩니다. 그게 유일한 기준입니까? 아니면 다른 기준이 있습니까?

또한보십시오:



답변

스크립팅 언어는 작업을 수행하기 위해 다른 일을 “스크립트”하는 언어입니다. 주된 초점은 브라우저 용 JavaScript, MS Office 용 VBA와 같이 기존 앱이 원하는 방식으로 작동하도록하는 것만 큼 기본적으로 자체 앱을 빌드하는 것이 아닙니다.


답변

단순한. 내가 그것을 사용할 때, 그것은 현대적인 동적 언어이고, 당신이 그것을 사용할 때 그것은 단지 스크립팅 언어입니다!


답변

전통적으로 스크립팅과 프로그래밍의 차이점에 대해 이야기 할 때 스크립트가 해석되고 프로그램이 컴파일됩니다. 언어는 해석 또는 컴파일 (바이트 코드 또는 기계 코드로)과 같은 다양한 방식으로 실행될 수 있습니다. 이것은 하나 또는 다른 언어를 만들지 않습니다 .

어떤 시각에서는 언어 를 사용 하는 방식 이이를 스크립팅 언어로 만듭니다 (예를 들어 주로 C ++로 개발하는 게임 개발자 는 Lua에서 객체를 스크립팅 합니다). 다시 말하지만, 선이 흐릿합니다. 한 사람이 프로그래밍에 언어를 사용할 수 있고 다른 사람이 스크립팅 언어에 동일한 언어를 사용할 수 있습니다.

이것은 스크립팅 언어에 대한 위키피디아 기사 에서 발췌 한 것 입니다.

스크립팅 언어, 스크립트 언어 또는 확장 언어는 하나 이상의 소프트웨어 응용 프로그램을 제어 할 수있는 프로그래밍 언어입니다. “스크립트”는 일반적으로 다른 언어로 작성되고 최종 사용자가 작성하거나 최소한 수정하기 때문에 응용 프로그램의 핵심 코드와는 다릅니다. 스크립트는 종종 소스 코드 또는 바이트 코드에서 해석되는 반면 스크립트가 제어하는 ​​응용 프로그램은 전통적으로 원시 기계 코드로 컴파일됩니다. 스크립팅 언어는 거의 항상 제어하는 ​​응용 프로그램에 포함됩니다.

“보통”, “자주”, “전통적으로”및 “거의 항상”의 사용을 알 수 있습니다.이 모든 것은 특정 언어를 “스크립팅 언어”로 만드는 고유 한 속성 집합 이 없음을 나타 냅니다.


답변

“대본은 배우들에게주는 것입니다. 프로그램은 청중에게주는 것입니다.” -래리 월

나는 더 이상 큰 차이가 없다고 생각합니다. 소위 “스크립팅”언어는 종종 매우 빠르게 런타임에 컴파일됩니다. 그리고 일부 “프로그래밍”언어는 런타임시 추가로 컴파일되며 (JIT를 생각하면) “컴파일”의 첫 번째 단계는 구문 검사 및 리소스 확인입니다.

그것에 매달리지 마십시오. 정말 중요하지 않습니다.


답변

내 정의는 일반적으로 바이너리가 아닌 소스로 배포되는 언어입니다.


답변

이것에 대한 가능한 많은 답변이 있습니다.

첫째 : 그것은 정말의 문제가 아니라 차이 스크립트 언어가 있기 때문에, 스크립트 언어와 프로그래밍 언어 사이 프로그래밍 언어. 어떤 특성이 일부 프로그래밍 언어를 스크립팅 언어로 만드는 반면 다른 프로그래밍 언어 스크립팅 언어 가 아닌지에 대한 질문입니다 .

둘째, XYZ가 “스크립팅”인지, “기능적 프로그래밍”인지, “객체 지향 프로그래밍”인지, 아니면 무엇을 가지고 있는지 여부에 관계없이 XYZ 언어가 무엇인지 말하기가 정말 어렵습니다. “기능적 프로그래밍”이 무엇인지에 대한 정의는 매우 명확하지만 “기능적 프로그래밍 언어”가 무엇인지 아무도 모릅니다.

함수형 프로그래밍 또는 객체 지향 프로그래밍은 프로그래밍 스타일입니다 . 거의 모든 언어로 기능적 스타일이나 객체 지향 스타일로 작성할 수 있습니다. 당신이 웹에서 볼 수 Java 또는 C # 코드의 많은 아주 절차 및 객체 지향하지 반면 예를 들어, 리눅스 가상 파일 시스템 스위치 및 리눅스 드라이버 모델은 주로 객체 지향 C로 작성에도 불구하고 있습니다 전혀 . OTOH, 나는 매우 기능적인 자바 코드를 보았다.

그렇다면 함수형 프로그래밍과 객체 지향 프로그래밍이 단순히 어떤 언어 로도 수행 할 수있는 스타일이라면 “객체 지향 프로그래밍 언어”를 어떻게 정의할까요? 객체 지향 프로그래밍 언어는 객체 지향 프로그래밍을 허용하는 언어라고 말할 수 있습니다. 그러나 그것은 그다지 정의가 아닙니다. 모든 언어가 객체 지향 프로그래밍을 허용하므로 모든 언어가 객체 지향입니까? 그래서, 당신은 언어가 객체 지향 스타일로 프로그래밍 하도록 강요 한다면 객체 지향적이라고 말합니다 . 그러나 그것은 정의가 아닙니다. 모든 언어가 함수형 프로그래밍을 허용하므로 어떤 언어도 객체 지향적이지 않습니까?

그래서 저는 다음과 같은 정의를 찾았습니다.

언어는 만약 스크립팅 언어 (객체 지향 언어 / 함수형 언어)는 모두

  • 스크립팅 (객체 지향 프로그래밍 / 함수 프로그래밍)을 용이하게 합니다. 를하지만 만드는 간단 하고 자연 과 포함 된 기능 의 도움이 그것으로, AND
  • 스크립팅 (객체 지향 프로그래밍 / 함수 프로그래밍)을 권장 하고 안내 합니다.

그래서 5 개의 단락을 거쳐 “스크립팅 언어는 스크립팅을위한 언어”에 도달했습니다. 정말 대단한 정의입니다. 아니.

분명히 이제 “스크립팅”의 정의를 살펴볼 필요가 있습니다.

여기에서 세 번째 문제가 발생합니다. “기능적 프로그래밍”이라는 용어는 잘 정의되어 있고 “기능적 프로그래밍 언어”라는 용어 만 문제가있는 반면, 스크립팅에서는 “스크립팅”이라는 용어와 “스크립팅 언어”라는 용어 모두 문제가 됩니다. “는 잘못 정의되었습니다.

첫째, 스크립팅 프로그래밍입니다. 그것은 단지 특별한 종류의 프로그래밍입니다. IOW : 모든 스크립트는 프로그램이지만 모든 프로그램이 스크립트는 아닙니다. 모든 스크립트 집합은 모든 프로그램 집합의 적절한 하위 집합입니다.

제 개인적인 의견으로는 스크립팅 스크립팅을 만들고 다른 종류의 프로그래밍과 구별하는 것은…

스크립트는 주로

  • 스크립트에 의해 생성되지 않았습니다.
  • 스크립트와 무관 한 평생을
  • 스크립트 도메인 외부에 있습니다.

또한 사용되는 데이터 유형과 알고리즘은 일반적으로 스크립트가 아닌 외부 환경에 의해 정의됩니다.

쉘 스크립트를 생각해보십시오. 쉘 스크립트는 일반적으로 파일, 디렉토리 및 프로세스를 조작합니다. 시스템에있는 대부분의 파일, 디렉토리 및 프로세스는 현재 실행중인 스크립트에 의해 생성되지 않았을 수 있습니다. 그리고 스크립트가 종료 될 때 사라지지 않습니다. 수명은 스크립트와 완전히 독립적입니다. 그리고 그들은 실제로 스크립트의 일부가 아니며 시스템의 일부이기도합니다. 작성 FileDirectory클래스로 스크립트를 시작하지 않았습니다 . 이러한 데이터 유형은 문제가되지 않습니다. 단지 거기에 있다고 가정 하고 작동 방식을 알지 못합니다 (알 필요 도 없음 ). 그리고 당신은 당신 자신의 알고리즘을 구현하지 않습니다. 예를 들어 디렉토리 탐색을 위해 당신은 find당신 자신의 폭 우선 검색을 구현 하는 대신에 사용 합니다.

간단히 말해, 스크립트는 스크립트와 독립적으로 존재하는 더 큰 시스템에 연결되어 시스템의 작은 부분을 조작 한 다음 종료됩니다.

더 큰 시스템은 쉘 스크립트의 경우 운영 체제, 브라우저 스크립트의 경우 브라우저 DOM, 게임 (예 : Lua를 사용하는 World of Warcraft 또는 Linden Scripting Language를 사용하는 Second Life), 응용 프로그램 (예 : AutoLisp AutoCAD 또는 Excel / Word / Office 매크로 용 언어), 웹 서버, 로봇 팩 또는 그 밖의 모든 것입니다.

스크립팅 측면은 프로그래밍 언어의 다른 모든 측면과 완전히 직교합니다. 스크립팅 언어는 강력하거나 약한 형식, 엄격하거나 느슨한 형식, 정적으로 또는 동적 형식, 명목상, 구조 또는 오리 형식 일 수 있습니다. . 명령 적이거나 기능적, 객체 지향적, 절차 적 또는 기능적, 엄격하거나 게으른 것일 수 있습니다. 그 구현은 해석, 컴파일 또는 혼합 될 수 있습니다.

예를 들어, Mondrian은 컴파일 된 구현이있는 엄격하게 정적으로 형식화 된 게으른 기능적 스크립팅 언어입니다.

용어 방식 때문에,이 모든 논쟁이며, 스크립트 언어가 되어 정말 현실 세계에서 사용이, 위의 어떤과는 아무 상관이 없습니다. 모욕으로 가장 자주 사용되며 정의는 다소 간단하고 단순합니다.

  • 실제 프로그래밍 언어 : 내 프로그래밍 언어
  • 스크립팅 언어 : 프로그래밍 언어

이 용어가 가장 자주 사용되는 방식 인 것 같습니다.


답변

그것은 포르노와 같습니다. 당신은 그것을 볼 때 그것을 알 수 있습니다. 스크립팅 언어의 유일한 정의는 다음과 같습니다.

A language which is described as a scripting language.

약간 원형이 아닌가? (그런데 농담이 아닙니다).

기본적으로 언어를 스크립팅 언어로 만드는 것은 특히 제작자가 그렇게 부르는 것 외에는 없습니다. 최신 스크립팅 언어의 주요 세트는 PHP, Perl, JavaScript, Python, Ruby 및 Lua입니다. Tcl은 최초의 주요 현대 스크립팅 언어입니다 (첫 스크립팅 언어는 아니지만 그것이 무엇인지 잊었지만 Tcl보다 앞선다는 사실에 놀랐습니다).

필자는 논문 에서 주요 스크립팅 언어의 기능을 설명합니다 .

 A Practical Solution for Scripting Language Compilers
 Paul Biggar, Edsko de Vries and David Gregg
 SAC '09: ACM Symposium on Applied Computing (2009), (March 2009)

대부분은 동적으로 형식화되고 해석되며 대부분의 경우 참조 구현 외부에 정의 된 의미가 없습니다. 그러나 주요 구현이 컴파일되거나 JIT 된 경우에도 언어의 “특성”은 변경되지 않습니다.

남은 질문은 새로운 언어가 스크립팅 언어인지 어떻게 알 수 있는가입니다. 음, 스크립팅 언어라고하면 하나입니다. 따라서 Factor 는 스크립팅 언어 (또는 적어도 작성되었을 때)이지만 Java는 그렇지 않습니다.