언어를 스크립팅 언어로 만드는 것은 무엇입니까? 나는 어떤 사람들이 "컴파일 대신 해석 될 때"라고 말하는 것을 들었습니다. 그러면 PHP (예 :)가 스크립팅 언어가됩니다. 그게 유일한 기준입니까? 아니면 다른 기준이 있습니까?
언어를 스크립팅 언어로 만드는 것은 무엇입니까? 나는 어떤 사람들이 "컴파일 대신 해석 될 때"라고 말하는 것을 들었습니다. 그러면 PHP (예 :)가 스크립팅 언어가됩니다. 그게 유일한 기준입니까? 아니면 다른 기준이 있습니까?
답변:
스크립팅 언어는 작업을 수행하기 위해 다른 일을 "스크립트"하는 언어입니다. 주된 초점은 브라우저 용 JavaScript, MS Office 용 VBA와 같이 기존 앱이 원하는 방식으로 작동하도록하는 것만 큼 기본적으로 자체 앱을 빌드하는 것이 아닙니다.
단순한. 내가 그것을 사용할 때, 그것은 현대적인 동적 언어이고, 당신이 그것을 사용할 때 그것은 단지 스크립팅 언어입니다!
전통적으로 스크립팅과 프로그래밍의 차이점에 대해 이야기 할 때 스크립트가 해석되고 프로그램이 컴파일됩니다. 언어는 해석 또는 컴파일 (바이트 코드 또는 기계 코드로)과 같은 다양한 방식으로 실행될 수 있습니다. 이것은 하나 또는 다른 언어를 만들지 않습니다 .
어떤 시각에서는 언어 를 사용 하는 방식 이이를 스크립팅 언어로 만듭니다 (예를 들어 주로 C ++로 개발하는 게임 개발자 는 Lua에서 객체를 스크립팅 합니다). 다시 말하지만, 선이 흐릿합니다. 한 사람이 프로그래밍에 언어를 사용할 수 있고 다른 사람이 스크립팅 언어에 동일한 언어를 사용할 수 있습니다.
이것은 스크립팅 언어에 대한 위키피디아 기사 에서 발췌 한 것 입니다.
스크립팅 언어, 스크립트 언어 또는 확장 언어는 하나 이상의 소프트웨어 응용 프로그램을 제어 할 수있는 프로그래밍 언어입니다. "스크립트"는 일반적으로 다른 언어로 작성되고 최종 사용자가 작성하거나 최소한 수정하기 때문에 응용 프로그램의 핵심 코드와는 다릅니다. 스크립트는 종종 소스 코드 또는 바이트 코드에서 해석되는 반면 스크립트가 제어하는 응용 프로그램은 전통적으로 원시 기계 코드로 컴파일됩니다. 스크립팅 언어는 거의 항상 제어하는 응용 프로그램에 포함됩니다.
"보통", "자주", "전통적으로"및 "거의 항상"의 사용을 알 수 있습니다.이 모든 것은 특정 언어를 "스크립팅 언어"로 만드는 고유 한 속성 집합 이 없음을 나타 냅니다.
"대본은 배우들에게주는 것입니다. 프로그램은 청중에게주는 것입니다." -래리 월
나는 더 이상 큰 차이가 없다고 생각합니다. 소위 "스크립팅"언어는 종종 매우 빠르게 런타임에 컴파일됩니다. 그리고 일부 "프로그래밍"언어는 런타임시 추가로 컴파일되며 (JIT를 생각하면) "컴파일"의 첫 번째 단계는 구문 검사 및 리소스 확인입니다.
그것에 매달리지 마십시오. 정말 중요하지 않습니다.
내 정의는 일반적으로 바이너리가 아닌 소스로 배포되는 언어입니다.
이것에 대한 가능한 많은 답변이 있습니다.
첫째 : 그것은 정말의 문제가 아니라 차이 스크립트 언어가 있기 때문에, 스크립트 언어와 프로그래밍 언어 사이 인 프로그래밍 언어. 어떤 특성이 일부 프로그래밍 언어를 스크립팅 언어로 만드는 반면 다른 프로그래밍 언어 는 스크립팅 언어 가 아닌지에 대한 질문입니다 .
둘째, XYZ가 "스크립팅"인지, "기능적 프로그래밍"인지, "객체 지향 프로그래밍"인지, 아니면 무엇을 가지고 있는지 여부에 관계없이 XYZ 언어가 무엇인지 말하기가 정말 어렵습니다. "기능적 프로그래밍"이 무엇인지에 대한 정의는 매우 명확하지만 "기능적 프로그래밍 언어"가 무엇인지 아무도 모릅니다.
함수형 프로그래밍 또는 객체 지향 프로그래밍은 프로그래밍 스타일입니다 . 거의 모든 언어로 기능적 스타일이나 객체 지향 스타일로 작성할 수 있습니다. 당신이 웹에서 볼 수 Java 또는 C # 코드의 많은 아주 절차 및 객체 지향하지 반면 예를 들어, 리눅스 가상 파일 시스템 스위치 및 리눅스 드라이버 모델은 주로 객체 지향 C로 작성에도 불구하고 있습니다 전혀 . OTOH, 나는 매우 기능적인 자바 코드를 보았다.
그렇다면 함수형 프로그래밍과 객체 지향 프로그래밍이 단순히 어떤 언어 로도 수행 할 수있는 스타일이라면 "객체 지향 프로그래밍 언어"를 어떻게 정의할까요? 객체 지향 프로그래밍 언어는 객체 지향 프로그래밍을 허용하는 언어라고 말할 수 있습니다. 그러나 그것은 그다지 정의가 아닙니다. 모든 언어가 객체 지향 프로그래밍을 허용하므로 모든 언어가 객체 지향입니까? 그래서, 당신은 언어가 객체 지향 스타일로 프로그래밍 하도록 강요 한다면 객체 지향적이라고 말합니다 . 그러나 그것은 정의가 아닙니다. 모든 언어가 함수형 프로그래밍을 허용하므로 어떤 언어도 객체 지향적이지 않습니까?
그래서 저는 다음과 같은 정의를 찾았습니다.
언어는 만약 스크립팅 언어 (객체 지향 언어 / 함수형 언어)는 모두
- 스크립팅 (객체 지향 프로그래밍 / 함수 프로그래밍)을 용이하게 합니다. 수 를하지만 만드는 간단 하고 자연 과 포함 된 기능 의 도움이 그것으로, AND
- 스크립팅 (객체 지향 프로그래밍 / 함수 프로그래밍)을 권장 하고 안내 합니다.
그래서 5 개의 단락을 거쳐 "스크립팅 언어는 스크립팅을위한 언어"에 도달했습니다. 정말 대단한 정의입니다. 아니.
분명히 이제 "스크립팅"의 정의를 살펴볼 필요가 있습니다.
여기에서 세 번째 문제가 발생합니다. "기능적 프로그래밍"이라는 용어는 잘 정의되어 있고 "기능적 프로그래밍 언어"라는 용어 만 문제가있는 반면, 스크립팅에서는 "스크립팅"이라는 용어와 "스크립팅 언어"라는 용어 모두 문제가 됩니다. "는 잘못 정의되었습니다.
첫째, 스크립팅 은 프로그래밍입니다. 그것은 단지 특별한 종류의 프로그래밍입니다. IOW : 모든 스크립트는 프로그램이지만 모든 프로그램이 스크립트는 아닙니다. 모든 스크립트 집합은 모든 프로그램 집합의 적절한 하위 집합입니다.
제 개인적인 의견으로는 스크립팅 스크립팅을 만들고 다른 종류의 프로그래밍과 구별하는 것은…
스크립트는 주로
- 스크립트에 의해 생성되지 않았습니다.
- 스크립트와 무관 한 평생을
- 스크립트 도메인 외부에 있습니다.
또한 사용되는 데이터 유형과 알고리즘은 일반적으로 스크립트가 아닌 외부 환경에 의해 정의됩니다.
쉘 스크립트를 생각해보십시오. 쉘 스크립트는 일반적으로 파일, 디렉토리 및 프로세스를 조작합니다. 시스템에있는 대부분의 파일, 디렉토리 및 프로세스는 현재 실행중인 스크립트에 의해 생성되지 않았을 수 있습니다. 그리고 스크립트가 종료 될 때 사라지지 않습니다. 수명은 스크립트와 완전히 독립적입니다. 그리고 그들은 실제로 스크립트의 일부가 아니며 시스템의 일부이기도합니다. 작성 File
및 Directory
클래스로 스크립트를 시작하지 않았습니다 . 이러한 데이터 유형은 문제가되지 않습니다. 단지 거기에 있다고 가정 하고 작동 방식을 알지 못합니다 (알 필요 도 없음 ). 그리고 당신은 당신 자신의 알고리즘을 구현하지 않습니다. 예를 들어 디렉토리 탐색을 위해 당신은 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는 그렇지 않습니다.
"스크립팅 언어"는 많은 것을 의미 할 수있는 모호한 개념 중 하나입니다. 일반적으로 소스 코드에서 실행으로 이동하는 한 단계 프로세스가 있다는 사실을 나타냅니다.
예를 들어 Perl에서는 다음을 수행합니다. perl my_source.pl
위의 기준이 주어지면 PHP는 스크립팅 언어입니다 (예를 들어 Zend 인코더를 사용하여 소스 코드를 "보호"할 때 "컴파일"프로세스를 가질 수 있음).
추신. 종종 (항상 그런 것은 아님) 스크립팅 언어가 해석됩니다. 또한 자주 (항상 그런 것은 아님) 스크립팅 언어가 동적으로 입력됩니다.
Roberto Ierusalimschy는 'Programming in Lua'에서 아주 좋은 대답이나 질문을 가지고 있다고 생각합니다.
그러나 해석 된 언어의 특징은 컴파일되지 않는다는 것이 아니라 모든 컴파일러가 언어 런타임의 일부이므로 즉석에서 생성 된 코드를 실행할 수 있다는 것입니다.
eval
기능을 가지고 있습니다.
한 부문은
동적으로 해석되는 언어는 런타임에 해석되는 반면 컴파일 된 언어는 실행 전에 컴파일됩니다.
Jörg가 지적했듯이 해석 / 컴파일 된 구별은 언어의 기능이 아니라 실행 엔진의 기능이라고 덧붙여 야합니다.
이 설명에 관심이있을 수도 있습니다. 실행 엔진 대신 언어 측면에 더 초점을 맞추고 관련되어있는이 Type system . 대부분의 스크립팅 언어는 동적으로 입력되는 반면 "일반"언어는 대부분 정적으로 입력됩니다.
일반적으로 정적 언어와 동적 유형 언어의 구분이 더 잘 정의되고 언어의 유용성에 더 많은 영향을 미칩니다.
스크립팅 언어는 일반적으로 다음과 같습니다.
비 스크립팅 언어는 일반적으로 다음과 같습니다. 1. 정적으로 입력 2. 컴파일, 성능에 중점을 둡니다. 3. 더 많은 상용구 코드가 필요하므로 프로토 타이핑 속도가 느려지지만 가독성과 장기적인 유지 관리 가능성이 높아집니다. 디자인 패턴
그러나 제 생각에는 요즘에는 역사적 차이에 가깝습니다. Javascript와 Perl은 작고 간단한 스크립트를 염두에두고 작성되었으며 C ++는 복잡한 응용 프로그램을 염두에두고 작성되었습니다. 그러나 둘 다 어느 쪽이든 사용할 수 있습니다. 그리고 많은 프로그래밍 언어 (현대적이든 구식이든)는 어쨌든 선을 흐릿하게 만듭니다 (그리고 처음에는 모호했습니다!).
슬픈 점은 "스크립팅 언어"로 인식하는 것을 싫어하는 개발자 몇 명을 알고 있는데, 그들이 더 간단하고 강력하지 않다고 생각합니다. 제 생각에는 오래된 진부함-작업에 적합한 도구를 사용하십시오.
스크립팅 언어는 원래 하드 프로그래밍 언어로 작성된 응용 프로그램의 제어 메커니즘으로 생각되었습니다. 컴파일 된 프로그램은 런타임에 수정할 수 없었기 때문에 스크립팅은 사람들에게 유연성을 제공했습니다.
특히, 쉘 스크립트는 OS 커널 (전통적으로 Mac의 AppleScript)에서 프로세스를 자동화했습니다. 점점 더 많은 역할이 Perl의 손에 전달되었고, 최근에는 Python으로 전달되었습니다. 레이트 레이싱 장면을 선언하는 데 사용되는 Scheme (특히 Guile 구현)을 보았습니다. 최근에 Lua는 게임 스크립트를위한 프로그래밍 언어로 매우 인기가 있습니다. 많은 새로운 게임에서 하드 코딩 된 유일한 것은 그래픽 / 물리 엔진이고 전체 게임 로직은 Lua로 인코딩된다는 점입니다. 같은 방식으로 JavaScript는 웹 브라우저의 동작을 스크립팅하는 것으로 생각되었습니다.
해방 된 언어; 이제 아무도 OS를 응용 프로그램으로 생각하지 않으며 (또는 전혀 생각하지 않습니다.) 이전에 스크립팅 언어를 사용하여 전체 응용 프로그램을 자체적으로 작성하기 시작했습니다. 이름 자체는 의미가 없어졌고 다른 시스템 내에서 해석되도록 설계되었는지 여부에 관계없이 오늘날 사용되는 많은 해석 언어로 퍼졌습니다.
그러나 "스크립팅 언어"는 "해석 된 언어"와 거의 동의어가 아닙니다. 예를 들어 BASIC은 대부분의 생애 동안 해석되었지만 (즉, 약어를 잃어 버리고 Visual Basic이되기 전에) 아무도 그것을 실제로 그렇게 생각하지 않습니다. 스크립팅.
업데이트 : Wikipedia에서 평소처럼 자료를 읽을 수 있습니다 .
첫째, 프로그래밍 언어는 "스크립팅 언어"또는 다른 것이 아닙니다. "스크립팅 언어"와 다른 것이 될 수 있습니다.
두 번째로, 언어 구현자가 스크립팅 언어인지 알려줄 것입니다.
질문은 "스크립트 언어와 프로그래밍 언어의 차이점은 무엇입니까?"가 아니라 "어떤 구현에서 프로그래밍 언어가 스크립팅 언어로 간주됩니까?"로 읽어야합니다. 사이가 없습니다.
그러나 어떤 유형의 미들웨어를 제공하는 데 사용되는 언어를 스크립팅 언어로 간주하겠습니다. 예를 들어, 대부분의 JavaScript 구현을 스크립팅 언어라고 생각합니다. JavaScript가 브라우저가 아니라 OS에서 실행 되었다면 스크립팅 언어가 아닙니다. PHP가 Apache 내부에서 실행되는 경우 스크립팅 언어입니다. 명령 줄에서 실행되면 그렇지 않습니다.
스크립팅 언어는 명백한 무거운 느낌의 '컴파일'단계가 필요하지 않은 것으로 생각합니다. 프로그래머의 관점에서 볼 때 주요 기능은 코드를 편집하고 즉시 실행하는 것입니다.
따라서 저는 JavaScript와 PHP를 스크립팅 언어로 간주하지만 ActionScript 3 / Flex 는 그렇지 않습니다.
제 친구와 저는 다음과 같은 주장을했습니다. 프로그래밍 언어와 스크립팅 언어의 차이점은 무엇입니까?
인기있는 주장은 프로그래밍 언어가 컴파일되고 스크립팅 언어가 해석된다는 것입니다. 그러나 저는이 주장이 완전히 거짓이라고 생각합니다 ... 왜?
이를 바탕으로 프로그래밍 언어와 스크립팅 언어의 차이점에 대한 내 주장입니다.
프로그래밍 언어는 컴퓨터 수준에서 실행되며 컴퓨터 자체 (메모리, 그래픽, 사운드 등)에 액세스 할 수 있습니다.
스크립팅 언어는 샌드 박스이며 샌드 박스에 노출 된 개체에만 액세스 할 수 있습니다. 기본 컴퓨터에 직접 액세스 할 수 없습니다.
My Opinion에서는 PHP, Ruby 등과 같이 동적으로 해석되는 언어가 여전히 "일반"언어라고 말할 수 있습니다. "스크립팅"언어의 예는 bash (또는 ksh 또는 tcsh 등) 또는 sqlplus와 같은 것입니다. 이러한 언어는 종종 시스템의 기존 프로그램을 다음과 같은 일련의 일관된 관련 명령으로 묶는 데 사용됩니다.
그래서 나는 (어쨌든 나에게) 그 언어 를 사용 하는 방법에 더 많은 차이가 있다고 말하고 싶습니다 . PHP, Perl, Ruby와 같은 언어는 "스크립팅 언어"로 사용될 수 있지만 일반적으로 "일반 언어"로 사용되는 것을 봅니다 (양방향으로 작동하는 Perl 제외).
계속해서 중복 질문에서 내 답변을 마이그레이션하겠습니다.
"스크립팅 언어"라는 이름은 매우 특정한 역할, 즉 기존 소프트웨어 응용 프로그램에 보낼 명령을 작성하는 언어에 적용됩니다. (전통적인 TV 또는 영화 "스크립트"처럼)
예를 들어, 옛날에 HTML 웹 페이지는 지루했습니다. 그들은 항상 정적이었습니다. 그러던 어느 날 Netscape는 "브라우저가 페이지의 작은 명령을 읽고 실행하도록하면 어떨까요?"라고 생각했습니다. 그리고 그렇게 자바 스크립트가 형성되었습니다.
간단한 javascript 명령은 alert()
웹 페이지를 읽는 브라우저 (소프트웨어 앱)에 경고를 표시하도록 지시 / 명령하는 명령입니다.
이제 alert()
어떤 식 으로든 C ++ 또는 브라우저가 경고를 표시하는 데 실제로 사용 하는 코드 언어와 관련이 있습니까? 당연히 아니지. .html 페이지에 "alert ()"를 작성하는 사람은 브라우저가 실제로 경고를 표시하는 방법을 이해하지 못합니다. 그는 브라우저가 해석 할 명령을 작성하고 있습니다.
간단한 자바 스크립트 코드를 보자
<script>
var x = 4
alert(x)
</script>
이것은 브라우저가 자체적으로 해석 할 수 있도록 브라우저로 전송되는 명령입니다. 브라우저가 실제로 변수를 4로 설정하고 경고에 넣는 프로그래밍 언어는 자바 스크립트와 완전히 관련이 없습니다.
우리는 마지막 일련의 명령을 "스크립트"라고 부릅니다 (이것이 <script>
태그 로 묶인 이유입니다 ). 전통적인 의미에서 "스크립트"의 정의에 따라 액터에게 전송되는 일련의 지침과 명령 입니다. 예를 들어 각본 (영화 대본)이 대본이라는 것을 누구나 알고 있습니다.
각본 (대본)은 배우 나 카메라, 특수 효과 가 아닙니다 . 각본은 그들에게 무엇을해야하는지 알려줍니다.
이제 스크립팅 언어 가 정확히 무엇입니까?
도구 상자의 다른 도구와 같은 프로그래밍 언어가 많이 있습니다. 일부 언어는 특별히 설계되었습니다. 스크립트로 사용 .
Javasript는 명백한 예입니다. 스크립팅 영역에 속하지 않는 Javascript 응용 프로그램은 거의 없습니다.
ActionScript (Flash 애니메이션의 언어)와 그 파생어는 단순히 Flash 플레이어 / 인터프리터에 명령을 내린다는 점에서 스크립팅 언어입니다. 물론 객체 지향 프로그래밍과 같은 추상화가 있지만, 그저 목적을위한 수단 일뿐입니다. 플래시 플레이어에 명령을 전송하는 것입니다.
Python과 Ruby는 일반적으로 스크립팅 언어로도 사용됩니다. 예를 들어, 저는 Ruby를 사용하여 몇 가지 기본적인 자동화 테스트를 수행하기 위해 "이 사이트로 이동,이 링크를 클릭하십시오 ..."라는 줄을 따라 브라우저에 보낼 명령을 스크립트로 작성하는 회사에서 일했습니다. 나는 그 직업에서 "소프트웨어 개발자" 가 아니었다 . 브라우저에 명령을 보내기 위해 컴퓨터에 명령을 보내는 스크립트를 작성했습니다.
특성상 스크립팅 언어는 거의 '컴파일'되지 않습니다. 즉, 기계 코드로 번역되어 컴퓨터에서 직접 읽습니다.
Python과 Ruby로 만든 GUI 응용 프로그램도 C ++ 또는 C로 작성된 API로 전송되는 스크립트입니다. C 앱에 수행 할 작업을 알려줍니다.
물론 모호한 선이 있습니다. Machine Language / C는 컴퓨터가 기본 마더 보드 / 그래픽 카드 / 칩과 인터페이스하는 데 사용하는 스크립트이기 때문에 스크립팅 언어라고 말할 수없는 이유는 무엇입니까?
명확히하기 위해 그릴 수있는 몇 가지 선이 있습니다.
스크립팅 언어를 작성하고 "컴파일"없이 실행할 수 있다면 직접 스크립트에 가깝습니다. 예를 들어, 배우에게 무엇을해야하는지 알리기 위해 각본으로 아무것도 할 필요가 없습니다. 이미있는 그대로 사용됩니다. 이러한 이유로 컴파일 된 언어 는 경우에 따라 스크립팅 목적으로 사용될 수 있더라도 스크립팅 언어 에서 제외됩니다 .
스크립팅 언어는 복잡한 소프트웨어 응용 프로그램으로 전송되는 명령을 의미합니다 . 이것이 우리가 처음에 스크립트를 작성하는 이유입니다. 따라서 명령을 전송하기 위해 소프트웨어가 작동하는 방식의 복잡성을 알 필요가 없습니다. 따라서 스크립팅 언어는 복잡한 소프트웨어 응용 프로그램에 (상대적으로) 간단한 명령을 보내는 언어 인 경향이 있습니다 .이 경우 기계 언어와 어셈블리 코드는이를 잘리지 않습니다.
스크립팅 언어가 많은 사람들이 멀어지고있는 용어라고 제안하겠습니다. 요즘에는 대부분 컴파일 된 언어와 동적 언어로 귀결된다고 말하고 싶습니다.
제 말은 파이썬과 같은 것을 정말로 말할 수 없다는 것을 의미합니다. 또는 Ruby가 오늘날과 같은 시대에 "스크립팅"언어입니다 ( IronPython 및 JIT-your-favorite-language 와 같은 언어도 있지만 그 차이는 훨씬 더 희미 해졌습니다).
솔직히 저는 개인적으로 PHP가 더 이상 스크립팅 언어라고 생각하지 않습니다. 나는 사람들이 이력서에서 Java와 다르게 PHP를 분류하는 것을 좋아하지 않을 것입니다.
스크립팅 언어는 더 큰 애플리케이션의 일부인 스크립팅 엔진 내에서 실행되는 경향이 있습니다. 예를 들어 JavaScript는 브라우저 스크립팅 엔진 내에서 실행됩니다.
스크립팅 언어는 스크립트가 실행될 때마다 해석되는 언어로, 인터프리터가 있음을 의미하며 대부분 사람이 읽을 수 있으므로 스크립트 언어는 배우고 사용하기 쉽습니다.
모든 컴파일 가능한 언어는 스크립트 언어로 만들 수 있으며 그 반대의 경우도 마찬가지입니다. 예를 들어 C ++에는 인터프리터가 있으므로 사용하는 경우 스크립트 언어라고 할 수 있습니다 (일반적으로 C ++처럼 실용적이지 않음). 매우 복잡한 언어), 현재 가장 유용한 스크립트 언어 중 하나는 Python입니다.
따라서 귀하의 질문에 답하기 위해 정의는 빠르고 쉬운 스크립트 프로그램을 실행하기 위해 인터프리터를 사용하는 것입니다. 간단한 작업이나 프로토 타입 응용 프로그램을 처리하기 위해 스크립트 언어를 사용할 수있는 가장 강력한 방법은 모든 사용에 대한 가능성을 포함하는 것입니다. 컴파일 된 애플리케이션.
저는 사람들이 "스크립팅 언어"라는 용어를 사용하지 않는 것을 선호합니다. 종종 "스크립팅 언어"라고 불리는 Perl과 같은 언어를 사용하십시오.
컴파일 된 Java와 같은 언어와 그렇지 않은 Ruby를 구별해야하는 이유는 무엇입니까? 라벨링의 가치는 무엇입니까?
이에 대한 자세한 내용은 http://xoa.petdance.com/Stop_saying_script를 참조하십시오 .
스크립팅 언어는 프로그램이 일반적으로 읽을 수있는 텍스트 형식으로 최종 사용자에게 제공되고 분명히 다음 과 같은 프로그램이있는 프로그래밍 언어입니다. 직접 그 프로그램을 실행이. (프로그램은 내부적으로 스크립트를 컴파일 할 수 있습니다. 사용자에게 보이지 않기 때문에 여기서는 관련이 없습니다.)
사용자가 프로그램을 입력하기 만하면 즉시 실행할 수있는 대화 형 세션을 지원할 수있는 스크립팅 언어가 비교적 일반적입니다. 이것은 첫 번째 단락의 필수 요구 사항을 사소하게 확장 한 것이기 때문입니다. 주요 추가 요구 사항은 입력 된 명령문이 언제 완료되었는지 파악하여 실행 엔진으로 보낼 수있는 메커니즘을 추가하는 것입니다.
약간 다른 질문에 대해 알아보십시오. 스크립팅 언어는 프로그래밍 언어이지만 프로그래밍 언어가 반드시 스크립팅 언어는 아닙니다. 스크립팅 언어는 시스템을 제어하거나 스크립팅하는 데 사용됩니다. 이 시스템은 스크립팅 언어가 bash 인 운영 체제 일 수 있습니다. 시스템은 스크립트 언어 인 PHP를 사용하는 웹 서버 일 수 있습니다. 스크립팅 언어는 특정 틈새 시장을 채우도록 설계되었습니다. 도메인 별 언어입니다. 대화 형 시스템은 스크립팅 언어를 해석하여 스크립팅 언어가 해석된다는 개념을 제공합니다. 그러나 이것은 스크립팅 언어 자체가 아니라 시스템의 결과입니다.
스크립팅 언어는 기존 프로그램을 구성하거나 확장하는 언어입니다.
스크립팅 언어는 프로그래밍 언어입니다.
"스크립팅 언어"의 정의는 매우 모호합니다. 다음 고려 사항을 기반으로합니다.
스크립팅 언어에는 일반적으로 사용자가 볼 수있는 컴파일 단계가 없습니다. 일반적으로 사용자는 하나의 쉬운 명령으로 프로그램을 실행할 수 있습니다.
스크립팅 언어로 된 프로그램은 일반적으로 소스 형식으로 전달됩니다.
스크립팅 언어에는 일반적으로 많은 시스템에 존재하는 런타임이 있으며 런타임은 대부분의 시스템에 쉽게 설치할 수 있습니다.
스크립팅 언어는 시스템에 한정되지 않고 교차 플랫폼 인 경향이 있습니다.
스크립팅 언어를 사용하면 다른 프로그램을 쉽게 호출하고 운영 체제와 인터페이스 할 수 있습니다.
스크립팅 언어는 일반적으로보다 일반적인 프로그래밍 언어로 작성된 대규모 시스템에 쉽게 포함 할 수 있습니다.
스크립팅 언어는 일반적으로 쉽게 프로그래밍 할 수 있도록 설계되었으며 실행 속도는 크게 고려하지 않습니다. (빠른 실행을 원하는 경우 일반적인 조언은 시간이 많이 걸리는 부분을 C와 같이 코딩하고 언어를 C에 포함하거나 언어에서 C 비트를 호출하는 것입니다.)
위에 나열된 특성 중 일부는 구현에 해당하며,이 경우 더 일반적인 구현을 언급합니다. (AFAIK) 명백한 컴파일 단계가없는 C 인터프리터가 있었지만 대부분의 C 구현에서는 그렇지 않습니다. Perl 프로그램을 네이티브 코드로 컴파일 할 수는 있지만 일반적으로 사용되는 방식은 아닙니다. 다른 특성은 본질적으로 사회적입니다. 위의 기준 중 일부는 다소 겹칩니다. 내가 말했듯이 정의는 모호합니다.
그렇지 않다면CPU에서 실행 실행 나에게 스크립트입니다. 인터프리터가 프로그램 아래의 CPU에서 실행되어야하는 경우 스크립트와 스크립팅 언어입니다.
이것보다 더 복잡하게 만들 이유가 없습니까?
물론 대부분 (99 %)의 경우 언어가 스크립팅 언어인지 여부는 분명합니다. 그러나 예를 들어 VM은 x86 명령어 세트를 에뮬레이트 할 수 있습니다. VM에서 실행할 때 x86 바이트 코드가 스크립팅 언어가되지 않을까요? 누군가가 펄 코드를 네이티브 실행 파일로 바꾸는 컴파일러를 작성한다면 어떨까요? 이 경우 더 이상 언어 자체를 무엇이라고 부를지 모르겠습니다. 중요한 것은 언어가 아니라 출력입니다.
그런 다음 다시 말하지만, 이와 같은 작업이 수행 된 것을 알지 못하므로 지금은 여전히 통역 언어 스크립팅 언어를 호출하는 것이 편합니다.
스크립트는 상대적이다 작은 프로그램입니다. 시스템은 상대적이다 큰 프로그램 또는 컬렉션 비교적 큰 프로그램.
일부 프로그래밍 언어는 언어 설계자와 프로그래밍 커뮤니티가 비교적 작은 프로그램을 작성할 때 유용하다고 생각하는 기능으로 설계되었습니다. 이러한 프로그래밍 언어는 PHP 와 같은 스크립팅 언어로 알려져 있습니다 .
마찬가지로 다른 프로그래밍 언어는 언어 디자이너와 프로그래밍 커뮤니티가 비교적 큰 프로그램을 작성할 때 유용하다고 생각하는 기능으로 디자인됩니다. 이러한 프로그래밍 언어는 Java 와 같은 시스템 언어로 알려져 있습니다 .
이제 크고 작은 프로그램을 모든 언어로 작성할 수 있습니다. 작은 Java 프로그램은 스크립트입니다. 예를 들어 Java "Hello World"프로그램은 시스템이 아니라 스크립트입니다. PHP로 작성된 대규모 프로그램 또는 프로그램 모음은 시스템입니다. 예를 들어, PHP로 작성된 Facebook은 스크립트가 아니라 시스템입니다.
언어가 스크립팅 또는 시스템 프로그래밍에 가장 적합한 지 결정하기위한 "리트머스 테스트"로 단일 언어 기능을 고려하는 것은 의문의 여지가 있습니다. 예를 들어, 스크립트 는 바이트 코드 또는 기계 코드로 컴파일되거나 직접 추상 구문 트리 (AST) 해석에 의해 실행될 수 있습니다.
따라서 일반적으로 스크립트를 작성하는 데 사용되는 언어는 스크립팅 언어 입니다. 스크립팅 언어를 사용하여 시스템을 작성할 수 있지만 이러한 응용 프로그램은 모호한 것으로 간주 될 수 있습니다.