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


107

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

또한보십시오:


질문을 조금 더 확장하고 싶을 수도 있습니다. 나는 이것이 거의 속임수라고 생각합니다. 다른 사람들은 구별을 보지 못할 수 있습니다
Kent Fredric

다른 질문에 대한 속임수?
Sietse

2
stackoverflow.com/questions/98268/… 많은 유사성이 있습니다. 필연적으로 동일하지는 않지만 많은 공유 컨텍스트 / 의견.
Kent Fredric

7
... 언어가 API를 깨고 매 부 릴리스마다 구문을 변경하면 관리되지 않는 버그가있는 C 라이브러리 100 개에 대한 래퍼 일 때 스크립트 언어가됩니다. ;)
ivan_ivanovich_ivanoff

1
당신이 찾을 사이드 바 "관련"에서 stackoverflow.com/questions/1514206/... 내가 다시 가고 다음 기존 중복의 더미 연결되는 stackoverflow.com/questions/101055/...~~V을 .
dmckee --- 전 중재자 새끼 고양이

답변:


52

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


그렇다면 파이썬과 같은 언어는 어떻습니까? 초점이 어디에 있는지 알기는 쉽지 않지만 자체 애플리케이션에 더 초점을 맞추고 있다고 말할 수 있지만 여전히 "스크립팅 언어"라고도합니다. 참조 CPython impl의 바이트 코드로 숨겨진 컴파일 때문일 수 있습니다. "유형 안전성"에 관한 컴파일 오류가 발생하지 않습니까? 어쩌면의 오디드 대답이 ...이
n611x007

바이트 코드와 유형 시스템은 실제로 그와 관련이 없습니다. 위의 정의에 따르면 앱이 API를 Python에 노출하면 Python을 스크립팅 언어로 사용한다고합니다. 앱을 완전히 Python으로 빌드하는 경우 해당 앱은이를 프로그래밍 언어로 사용합니다.
버그

"스크립팅"은 언어 유형의 정의가 아닙니다. 그것은 언어 가 가질 수 있는 특성입니다 . 따라서 Python은 스크립트를 작성하는 코드를 쉽게 작성할 수 있기 때문에 "좋은 스크립트 언어"입니다. 어셈블리는 스크립팅을 어렵게 만들기 때문에 좋은 스크립팅 언어가 아닙니다. C는 중간 어딘가에 있습니다. 왜냐하면 호출을위한 키워드 (시스템)가 있기는하지만 거기에 도달하기 전에 사용자에게 많은 양을 안겨줍니다.
nomen

93

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


19
네. "그것은 '장난감 언어'가 아니라 '고수준 언어'입니다.": P
Roberto Bonvallet

6
그것은 요란하고 주제에서 벗어났습니다. -1
adf88

1
-(1 + 1)을 사용하더라도 체크 표시가 된 것보다 약 2x +1을 얻습니다. : D
아나톨리 techtonik

베스트. 대답. EVAR!
iconoclast 2013

41

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

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

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

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

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


1
@Amr : 그것은 자바 스크립트
sepp2k

1
@Ram Bhat-구별이 인위적이기 때문에 혼란 스럽습니다.
Oded

11
@Andrey : 모든 최신 JavaScript 구현이 컴파일됩니다. 그리고 C를위한 통역사가 있습니다.
Jörg W Mittag

27
이것은 단지 명백한 잘못입니다. 글쎄요, 사실 그것은 틀린 것도 아닙니다 . 그것은 단지 평범한 말이 아닙니다. 컴파일되거나 해석 된 언어 같은 것은 없습니다. 언어가 컴파일되지 않으며, 언어는 단지 입니다 . 그것은 추상적 인 수학적 규칙들입니다. 해석과 컴파일은 언어가 아니라 실행 엔진의 특성입니다 . 모든 언어는 컴파일러 또는 인터프리터로 구현할 수 있습니다. 실제로이 페이지에서 "해석 된"것으로 언급 된 모든 언어는 JavaScript, PHP, Python, Ruby와 같이 거의 독점적으로 컴파일 된 구현을 가지고 있습니다.
Jörg W Mittag

5
@Andrey : Chakra (IE9), TraceMonkey / JägerMonkey (Firefox), Nitro (Safari), Carakan (Opera)은 모두 JavaScript를 바이트 코드로 컴파일 한 다음 일부 바이트 코드가 해석되고 일부는 네이티브 코드로 컴파일됩니다. V8 (Chrome)은 바이트 코드를 건너 뛰고 자바 스크립트를 네이티브 코드로 직접 컴파일합니다. IronJS는 JavaScript를 CIL 바이트 코드로 컴파일합니다. Rhino는 JavaScript를 JVML 바이트 코드로 컴파일합니다. BESEN (지금까지 유일한 ECMAScript 5 엔진)은 JavaScript를 BESEN 바이트 코드로 컴파일하며 현재 네이티브 컴파일러가 추가되고 있습니다. 위의 일부는 정규식을 네이티브 기계어 코드로 컴파일하기도합니다.
Jörg W Mittag

31

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

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

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


흠 .. 전화를 끊는 건 아니지만 대부분의 면접관과 선생님은 그렇습니다. 그리고 저는이 사람들 중 누구도 저에게 만족스러운 대답을 해주지 못했습니다!
Laz

1
그리고 여기에 다른 답변 중 하나를 주 셨다면 면접관으로서 질문에 대해 정말 이해하지 못했을 것입니다. 구분이 정말 모호하고 명확한 대답이 없습니다. "글쎄, 전통적으로 ..."라고 말했다면 나는 그것을 받아 들일 것이다. 그러나 나는 당신이 런타임 컴파일과 JIT와 같은 것에 대해서도 논의 할 것으로 기대한다.
클린턴 피어스

25

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


5
그래서 PHP, Python 등이 스크립팅 언어라고 생각합니까?
Sietse

"스크립팅"은 Python 및 PHP에 대한 일반적인 설명입니다.
S.Lott

22
php와 python-물론 그들은 스크립팅 언어입니다!
Antony Carthy

이것이 제 정의가 시작된 이래로 왔습니다

@Antony Carthy 이것은 잘못되었습니다. Python은 일반적으로 스크립팅 언어가 아니지만 다른 언어와 마찬가지로 프로그램 내에서 사용할 수 있습니다 (예 : Word (VB), 브라우저 (JS))
Joschua

16

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

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

둘째, 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은 컴파일 된 구현이있는 엄격하게 정적으로 형식화 된 게으른 기능적 스크립팅 언어입니다.

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

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

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


이 답변 중 일부는 어리 석습니다. 객체 를 사용한 프로그래밍을 지향 하는 언어는 "객체 지향" 입니다. 언어는 일류 기능이있는 경우 "기능적"입니다. 그렇다고 언어가 둘 다가 될 수 없다는 의미는 아닙니다. 이것은 유형의 정의가 아니라 언어의 특성 입니다. 스크립팅도 비슷합니다. 언어는 스크립트를 쉽게 작성할 수있게 해주는 "좋은 스크립팅 언어"입니다. 짧고 간단한 사용자-응용 프로그램 상호 작용입니다.
nomen

16

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

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는 그렇지 않습니다.


1
그것은 아주 좋은 설명이지만, 어떤 사람들은 "포르노"를보기 때문에 그것을
찬성한다고 확신합니다

종이 링크가 끊어졌습니다.
Quazi Irfan 2015 년

5

"스크립팅 언어"는 많은 것을 의미 할 수있는 모호한 개념 중 하나입니다. 일반적으로 소스 코드에서 실행으로 이동하는 한 단계 프로세스가 있다는 사실을 나타냅니다.

예를 들어 Perl에서는 다음을 수행합니다. perl my_source.pl

위의 기준이 주어지면 PHP는 스크립팅 언어입니다 (예를 들어 Zend 인코더를 사용하여 소스 코드를 "보호"할 때 "컴파일"프로세스를 가질 수 있음).

추신. 종종 (항상 그런 것은 아님) 스크립팅 언어가 해석됩니다. 또한 자주 (항상 그런 것은 아님) 스크립팅 언어가 동적으로 입력됩니다.


Perl은 실행되기 전에 바이트 코드로 컴파일됩니다.
Brad Gilbert

2
Java는 어떻습니까? 자바 프로그램을 실행하려면 jvm이 필요하지만 스크립팅 언어라고 부르지는 않을 것입니다
Eineki 2008-12-29

5

모든 스크립팅 언어는 프로그래밍 언어입니다. 엄밀히 말하면 차이가 없습니다.

이 용어는 언어의 기본 속성을 나타내는 것이 아니라 언어의 일반적인 사용 을 나타냅니다 . 일반적으로 기존 코드에 대한 호출을 주로 수행하는 짧은 프로그램을 작성하고 결과에 대한 간단한 처리를 수행하는 경우 (즉, 일반적인 용도가 스크립트 작성 인 경우 ) 스크립팅 언어입니다.


4

Roberto Ierusalimschy는 'Programming in Lua'에서 아주 좋은 대답이나 질문을 가지고 있다고 생각합니다.

그러나 해석 된 언어의 특징은 컴파일되지 않는다는 것이 아니라 모든 컴파일러가 언어 런타임의 일부이므로 즉석에서 생성 된 코드를 실행할 수 있다는 것입니다.


이것은 질문에 전혀 대답하지 않습니다!
폴 비거

다시 말씀 드리면 스크립팅 언어는 컴파일러가 포함 된 언어이며 생성 된 코드를 즉석에서 실행할 수 있습니다. 그게 어떻게 질문에 답하지 않습니까?
로드리고 로페즈

그것은 통역 언어입니다. 통역 언어가 스크립팅 언어라고 말하려는 경우 그렇게 말하십시오.
Paul Biggar

글쎄요, 모든 언어를 스크립팅에 사용할 수 있습니다. 저에게있어 핵심 항목은 얼마나 적합한 지입니다. 나에게 두드러진 특징은 네, 그것들이 해석된다는 것입니다.
Rodrigo Lopez

4
Common Lisp는 제가 일반적으로 스크립팅 언어로 생각하는 언어가 아니지만 완전한 eval기능을 가지고 있습니다.
David Thornley 2010-06-15

4

한 부문은

  • 스크립팅 = 동적 해석
  • 정상 = 컴파일 됨

동적으로 해석되는 언어는 런타임에 해석되는 반면 컴파일 된 언어는 실행 전에 컴파일됩니다.

Jörg가 지적했듯이 해석 / 컴파일 된 구별은 언어의 기능이 아니라 실행 엔진의 기능이라고 덧붙여 야합니다.

이 설명에 관심이있을 수도 있습니다. 실행 엔진 대신 언어 측면에 더 초점을 맞추고 관련되어있는이 Type system . 대부분의 스크립팅 언어는 동적으로 입력되는 반면 "일반"언어는 대부분 정적으로 입력됩니다.

일반적으로 정적 언어와 동적 유형 언어의 구분이 더 잘 정의되고 언어의 유용성에 더 많은 영향을 미칩니다.


Objective-C는 어떻습니까?
mouviciel

1
동적 타이핑을 지원하지만 스크립팅 언어라고 부르지는 않겠습니다.
Timo Westkämper

2
이것은 단지 명백한 잘못입니다. 글쎄요, 사실 그것은 틀린 것도 아닙니다 . 그것은 단지 평범한 말이 아닙니다. 컴파일되거나 해석 된 언어 같은 것은 없습니다. 언어가 컴파일되지 않으며, 언어는 단지 입니다 . 그것은 추상적 인 수학적 규칙들입니다. 해석과 컴파일은 언어가 아니라 실행 엔진의 특성입니다 . 모든 언어는 컴파일러 또는 인터프리터로 구현할 수 있습니다. 실제로이 페이지에서 "해석 된"것으로 언급 된 모든 언어는 JavaScript, PHP, Python, Ruby와 같이 거의 독점적으로 컴파일 된 구현을 가지고 있습니다.
Jörg W Mittag

@ jorg-w-mittag, 내 대답을 더 정확하게 편집하십시오. 포인트가 유효합니다. 일반적으로 언어에 대해 이야기하는 경우 기본 실행 엔진에 대해서도 이야기합니다.
Timo Westkämper

3

스크립팅 언어는 일반적으로 다음과 같습니다.

  1. 동적으로 입력
  2. 성능에 거의 중점을 두지 않지만 우수한 이식성으로 해석 됨
  3. 훨씬 적은 상용구 코드가 필요하므로 프로토 타이핑이 매우 빠릅니다.
  4. 작은 작업에 사용되며 유용한 "스크립트"를 실행하기 위해 단일 파일을 작성하는 데 적합합니다.

비 스크립팅 언어는 일반적으로 다음과 같습니다. 1. 정적으로 입력 2. 컴파일, 성능에 중점을 둡니다. 3. 더 많은 상용구 코드가 필요하므로 프로토 타이핑 속도가 느려지지만 가독성과 장기적인 유지 관리 가능성이 높아집니다. 디자인 패턴

그러나 제 생각에는 요즘에는 역사적 차이에 가깝습니다. Javascript와 Perl은 작고 간단한 스크립트를 염두에두고 작성되었으며 C ++는 복잡한 응용 프로그램을 염두에두고 작성되었습니다. 그러나 둘 다 어느 쪽이든 사용할 수 있습니다. 그리고 많은 프로그래밍 언어 (현대적이든 구식이든)는 어쨌든 선을 흐릿하게 만듭니다 (그리고 처음에는 모호했습니다!).

슬픈 점은 "스크립팅 언어"로 인식하는 것을 싫어하는 개발자 몇 명을 알고 있는데, 그들이 더 간단하고 강력하지 않다고 생각합니다. 제 생각에는 오래된 진부함-작업에 적합한 도구를 사용하십시오.


2
컴파일되거나 해석 된 언어 같은 것은 없습니다. 언어가 컴파일되지 않으며, 언어는 단지 입니다 . 그것은 추상적 인 수학적 규칙들입니다. 해석과 컴파일은 언어가 아니라 실행 엔진의 특성입니다 . 모든 언어는 컴파일러 또는 인터프리터로 구현할 수 있습니다. 사실, 이 페이지에서 "해석 된"것으로 언급 된 모든 언어는 거의 독점적으로 컴파일 된 구현을 가지고 있습니다 (예 : JavaScript, PHP, Python, Ruby).
Jörg W Mittag

@Jorg : 좋은 지적, 동의합니다. 그러나 나는 그것이 컴파일 될 수 없다고 말한 것이 아니라, 이러한 종류의 언어는 일반적으로 일반적으로 컴파일되기보다는 해석된다고 말했습니다.
Oak

그렇습니까? 현재 Python, PHP, Perl 및 Lua의 모든 구현이 컴파일됩니다. MRI를 제외하고 현재의 모든 Ruby 구현이 컴파일됩니다. (그리고 거기 있는 사실 하나가 아닌 두 개의 MRI에 대한 JIT 컴파일러를.) JScript를 제외하고, 현재의 모든 자바 스크립트 구현은 컴파일됩니다. JScript의 후속 버전 인 Chakra가 컴파일됩니다. Scheme의 많은 구현이 컴파일됩니다. ELisp가 컴파일됩니다.
Jörg W Mittag

3

스크립팅 언어는 원래 하드 프로그래밍 언어로 작성된 응용 프로그램의 제어 메커니즘으로 생각되었습니다. 컴파일 된 프로그램은 런타임에 수정할 수 없었기 때문에 스크립팅은 사람들에게 유연성을 제공했습니다.

특히, 쉘 스크립트는 OS 커널 (전통적으로 Mac의 AppleScript)에서 프로세스를 자동화했습니다. 점점 더 많은 역할이 Perl의 손에 전달되었고, 최근에는 Python으로 전달되었습니다. 레이트 레이싱 장면을 선언하는 데 사용되는 Scheme (특히 Guile 구현)을 보았습니다. 최근에 Lua는 게임 스크립트를위한 프로그래밍 언어로 매우 인기가 있습니다. 많은 새로운 게임에서 하드 코딩 된 유일한 것은 그래픽 / 물리 엔진이고 전체 게임 로직은 Lua로 인코딩된다는 점입니다. 같은 방식으로 JavaScript는 웹 브라우저의 동작을 스크립팅하는 것으로 생각되었습니다.

해방 된 언어; 이제 아무도 OS를 응용 프로그램으로 생각하지 않으며 (또는 전혀 생각하지 않습니다.) 이전에 스크립팅 언어를 사용하여 전체 응용 프로그램을 자체적으로 작성하기 시작했습니다. 이름 자체는 의미가 없어졌고 다른 시스템 내에서 해석되도록 설계되었는지 여부에 관계없이 오늘날 사용되는 많은 해석 언어로 퍼졌습니다.

그러나 "스크립팅 언어"는 "해석 된 언어"와 거의 동의어가 아닙니다. 예를 들어 BASIC은 대부분의 생애 동안 해석되었지만 (즉, 약어를 잃어 버리고 Visual Basic이되기 전에) 아무도 그것을 실제로 그렇게 생각하지 않습니다. 스크립팅.

업데이트 : Wikipedia에서 평소처럼 자료를 읽을 수 있습니다 .


사실 원래 BASIC 구현은 컴파일러였습니다. 인터프리터가 컴파일러보다 쓰기가 더 쉽기 때문에 BASIC 클론이 인터프리터로 작성되었습니다.
Jörg W Mittag

1
@ Jörg : 그렇지 않습니다. Dartmouth BASIC의 첫 번째 테스트 구현이 컴파일되었지만 (Card BASIC이라고 함) 실제 구현은 인터프리터였습니다. 사실, 아마도 BASIC의 가장 중요한 새로운 기능은 그것이 상호 작용 적이라는 것입니다. 소스 코드를 카드에 펀칭하여 컴파일러에 공급할 필요가 없습니다. 사용자는 텔레타이프에 앉아 프로그램을 작성한 다음 실행할 수 있습니다.
PauliL

이 답변이 '어려운'언어의 개념을 소개한다는 것은 흥미 롭습니다. 이 맥락에서 'hard'는 정의가 필요합니까?
DA 빈센트

@DavidVincent : 아마 "더 열심히"를 의미했을 것입니다. 공식적인 정의는 필요하지 않으며 직관적 인 이해만으로도 충분합니다. 전자가 후자보다 훨씬 낮은 수준이고 장황하다는 점을 감안할 때 Ruby 또는 Python보다 Assembly 또는 C로 프로그램을 작성하는 것이 훨씬 더 어렵습니다.
Amadan 2015

3

첫째, 프로그래밍 언어는 "스크립팅 언어"또는 다른 것이 아닙니다. "스크립팅 언어"와 다른 것이 될 수 있습니다.

두 번째로, 언어 구현자가 스크립팅 언어인지 알려줄 것입니다.

질문은 "스크립트 언어와 프로그래밍 언어의 차이점은 무엇입니까?"가 아니라 "어떤 구현에서 프로그래밍 언어가 스크립팅 언어로 간주됩니까?"로 읽어야합니다. 사이가 없습니다.

그러나 어떤 유형의 미들웨어를 제공하는 데 사용되는 언어를 스크립팅 언어로 간주하겠습니다. 예를 들어, 대부분의 JavaScript 구현을 스크립팅 언어라고 생각합니다. JavaScript가 브라우저가 아니라 OS에서 실행 되었다면 스크립팅 언어가 아닙니다. PHP가 Apache 내부에서 실행되는 경우 스크립팅 언어입니다. 명령 줄에서 실행되면 그렇지 않습니다.


3

스크립팅 언어는 명백한 무거운 느낌의 '컴파일'단계가 필요하지 않은 것으로 생각합니다. 프로그래머의 관점에서 볼 때 주요 기능은 코드를 편집하고 즉시 실행하는 것입니다.

따라서 저는 JavaScript와 PHP를 스크립팅 언어로 간주하지만 ActionScript 3 / Flex 는 그렇지 않습니다.


나는 피터의 대답을 폄하하고 싶지 않지만 의견 이상을 추가 할 수 있습니까?
DA 빈센트

3

제 친구와 저는 다음과 같은 주장을했습니다. 프로그래밍 언어와 스크립팅 언어의 차이점은 무엇입니까?

인기있는 주장은 프로그래밍 언어가 컴파일되고 스크립팅 언어가 해석된다는 것입니다. 그러나 저는이 주장이 완전히 거짓이라고 생각합니다 ... 왜?

  1. Chakra 및 V8 (Microsoft 및 Google의 JavaScript 엔진)은 실행 전에 코드를 컴파일합니다.
  2. QBasic이 해석됩니다. Qbasic이 "스크립팅"언어가 되나요?

이를 바탕으로 프로그래밍 언어와 스크립팅 언어의 차이점에 대한 내 주장입니다.

프로그래밍 언어는 컴퓨터 수준에서 실행되며 컴퓨터 자체 (메모리, 그래픽, 사운드 등)에 액세스 할 수 있습니다.

스크립팅 언어는 샌드 박스이며 샌드 박스에 노출 된 개체에만 액세스 할 수 있습니다. 기본 컴퓨터에 직접 액세스 할 수 없습니다.


2

My Opinion에서는 PHP, Ruby 등과 같이 동적으로 해석되는 언어가 여전히 "일반"언어라고 말할 수 있습니다. "스크립팅"언어의 예는 bash (또는 ksh 또는 tcsh 등) 또는 sqlplus와 같은 것입니다. 이러한 언어는 종종 시스템의 기존 프로그램을 다음과 같은 일련의 일관된 관련 명령으로 묶는 데 사용됩니다.

  1. A.txt를 / tmp / work /에 복사하십시오.
  2. 데이터베이스 서버에서 야간 정리 프로세스 실행
  3. 결과를 기록하고 sysdamin에 보냅니다.

그래서 나는 (어쨌든 나에게) 그 언어 를 사용 하는 방법에 더 많은 차이가 있다고 말하고 싶습니다 . PHP, Perl, Ruby와 같은 언어는 "스크립팅 언어"로 사용될 수 있지만 일반적으로 "일반 언어"로 사용되는 것을 봅니다 (양방향으로 작동하는 Perl 제외).


고마워 .. 이건 좀 더 명확하게 해줘. 요약하자면 스크립팅 언어는 기존 프로그램을 순서대로 함께 사용하도록 설계되었습니다. 그러나 C와 같은 언어는 API를 통해 동일한 작업을 수행하는 데 사용할 수 있습니다. 기술적으로 말해서 모든 것은 사용에 달려 있습니다
Laz

아니, 당신은 단지 인위적인 구별을하고있는 것입니다. 빠르게 무언가를 만들 수 있다면, 언어는 종종 스크립팅 언어라고 불릴 것입니다. 그러나 그것은 엄격한 정의 나 그 어떤 것도 아닙니다. 일반적으로 해석되는 언어는 종종 스크립팅 언어라고도합니다.
wlangstroth

@Will : 구별은 인위적입니다. 이것은 내 의견 차이였습니다. ;)
FrustratedWithFormsDesigner

예,하지만이 경우 "스크립팅"은 매우 구어적이고 모호한 사용법입니다. "이미 존재하는 프로그램을 순서대로 함께 사용하는 것"이라고 결정하는 것은 매우 구체적이며 옳지 않습니다. 쉘 스크립트 처럼 들리지만 Perl은 아닙니다. 그런 다음이를 API (?)와 대조하기 위해 ... 나는 그 사람이 너무 멀어지는 것을 원하지 않았습니다.
wlangstroth

2

계속해서 중복 질문에서 내 답변을 마이그레이션하겠습니다.


"스크립팅 언어"라는 이름은 매우 특정한 역할, 즉 기존 소프트웨어 응용 프로그램에 보낼 명령을 작성하는 언어에 적용됩니다. (전통적인 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는 컴퓨터가 기본 마더 보드 / 그래픽 카드 / 칩과 인터페이스하는 데 사용하는 스크립트이기 때문에 스크립팅 언어라고 말할 수없는 이유는 무엇입니까?

명확히하기 위해 그릴 수있는 몇 가지 선이 있습니다.

  1. 스크립팅 언어를 작성하고 "컴파일"없이 실행할 수 있다면 직접 스크립트에 가깝습니다. 예를 들어, 배우에게 무엇을해야하는지 알리기 위해 각본으로 아무것도 할 필요가 없습니다. 이미있는 그대로 사용됩니다. 이러한 이유로 컴파일 된 언어 는 경우에 따라 스크립팅 목적으로 사용될 수 있더라도 스크립팅 언어 에서 제외됩니다 .

  2. 스크립팅 언어는 복잡한 소프트웨어 응용 프로그램으로 전송되는 명령을 의미합니다 . 이것이 우리가 처음에 스크립트를 작성하는 이유입니다. 따라서 명령을 전송하기 위해 소프트웨어가 작동하는 방식의 복잡성을 알 필요가 없습니다. 따라서 스크립팅 언어는 복잡한 소프트웨어 응용 프로그램에 (상대적으로) 간단한 명령을 보내는 언어 인 경향이 있습니다 .이 경우 기계 언어와 어셈블리 코드는이를 잘리지 않습니다.


2

스크립팅 언어가 많은 사람들이 멀어지고있는 용어라고 제안하겠습니다. 요즘에는 대부분 컴파일 된 언어와 동적 언어로 귀결된다고 말하고 싶습니다.

제 말은 파이썬과 같은 것을 정말로 말할 수 없다는 것을 의미합니다. 또는 Ruby가 오늘날과 같은 시대에 "스크립팅"언어입니다 ( IronPythonJIT-your-favorite-language 와 같은 언어도 있지만 그 차이는 훨씬 더 희미 해졌습니다).

솔직히 저는 개인적으로 PHP가 더 이상 스크립팅 언어라고 생각하지 않습니다. 나는 사람들이 이력서에서 Java와 다르게 PHP를 분류하는 것을 좋아하지 않을 것입니다.


비록 내가 PHP에서 많이 작업하더라도, 스크립트 기반에서 / real / fcgi 서블릿 모델이 서버에서 위임 된 작업을 디스패치 할 때까지 개인적으로 이것을 "아주 좋은 스크립팅 언어"라고 부를 것입니다. 응용 프로그램의 환상을 줄 수 있습니다. "
Kent Fredric

정적 / 동적, 컴파일되는 동적 언어가 있습니다.
Brad Gilbert

반복합니다. 실제로 Python과 같은 것을 말할 수 없거나 Ruby가 오늘날 시대에 "스크립팅"언어라고 말할 수 없습니다 (IronPython 및 JitYourFavoriteLanguage와 같은 언어도 있습니다. 그 차이는 훨씬 더 희미 해졌습니다).
Robert Gould

1

스크립팅 언어는 더 큰 애플리케이션의 일부인 스크립팅 엔진 내에서 실행되는 경향이 있습니다. 예를 들어 JavaScript는 브라우저 스크립팅 엔진 내에서 실행됩니다.


수락 된 답변에 두 개의 반대표가 있다는 것이 유쾌합니다.
Robert S.

1
그것에 대한 일종의 배지가 있어야합니다. "진실을 처리 할 수 ​​없습니다."는 어떻습니까? 아니, 너무 말이 많네요. ;-)
Joseph Ferris

3
Perl, Python, Ruby, Tcl / Tk (이름으로는 4 가지 스크립팅 언어)는 주로 더 큰 애플리케이션에 내장되어 있지 않습니다.
Jonathan Leffler

3
Ergo-스크립팅 언어가 아닙니다.
Milen A. Radev

3
예, 이것이 어떻게 든 올바른 것으로 표시되지 않을 수 있다면 좋을 것입니다.
Noon Silk

1

스크립팅 언어는 스크립트가 실행될 때마다 해석되는 언어로, 인터프리터가 있음을 의미하며 대부분 사람이 읽을 수 있으므로 스크립트 언어는 배우고 사용하기 쉽습니다.

모든 컴파일 가능한 언어는 스크립트 언어로 만들 수 있으며 그 반대의 경우도 마찬가지입니다. 예를 들어 C ++에는 인터프리터가 있으므로 사용하는 경우 스크립트 언어라고 할 수 있습니다 (일반적으로 C ++처럼 실용적이지 않음). 매우 복잡한 언어), 현재 가장 유용한 스크립트 언어 중 하나는 Python입니다.

따라서 귀하의 질문에 답하기 위해 정의는 빠르고 쉬운 스크립트 프로그램을 실행하기 위해 인터프리터를 사용하는 것입니다. 간단한 작업이나 프로토 타입 응용 프로그램을 처리하기 위해 스크립트 언어를 사용할 수있는 가장 강력한 방법은 모든 사용에 대한 가능성을 포함하는 것입니다. 컴파일 된 애플리케이션.


1

저는 사람들이 "스크립팅 언어"라는 용어를 사용하지 않는 것을 선호합니다. 종종 "스크립팅 언어"라고 불리는 Perl과 같은 언어를 사용하십시오.

  • Perl은 프로그래밍 언어입니다!
  • Perl은 Java 및 C ++처럼 컴파일됩니다. 훨씬 빠르게 컴파일되었습니다!
  • Perl에는 객체와 네임 스페이스 및 클로저가 있습니다.
  • Perl에는 IDE, 디버거 및 프로파일 러가 있습니다.
  • Perl은 교육 및 지원 및 커뮤니티를 보유하고 있습니다.
  • Perl은 단순한 웹이 아닙니다. Perl은 단순한 시스템 관리자가 아닙니다. Perl은 인터넷의 덕트 테이프가 아닙니다.

컴파일 된 Java와 같은 언어와 그렇지 않은 Ruby를 구별해야하는 이유는 무엇입니까? 라벨링의 가치는 무엇입니까?

이에 대한 자세한 내용은 http://xoa.petdance.com/Stop_saying_script를 참조하십시오 .


어떤 컴퓨터도 기본적으로 perl이나 ruby ​​(또는 컴파일 할 수있는 모든 형식)를 실행할 수 없습니다. 따라서 perl과 ruby는 파서 또는 VM에 의해 해석되는 스크립팅 언어입니다.
anon6439

@psoul : 네. 자바도 마찬가지입니다.
Stefano Borini

루비를 기계 코드로 컴파일하는 몇 가지 기술이 있지만 그 중 하나가 루비 코드를 나타내는 문자열로 인터프리터를 번들로 묶지 않는지 확실하지 않지만 그것이 사실이더라도 루비를 기계 코드로 번역 할 수 있습니다. 기계 코드에 대한 모든 동적 디스패치 및 gc로 인해 c 속도에 가깝게 만들지 않습니다. 나는 루비 프로세서가 없다고 생각하지만 자바 바이트 코드를 실행하는 lisp 모델과 프로세서에 더 잘 맞도록 설계된 기계였습니다.
Roman A. Taycher 2010 년

1

중요한 차이점은 강력한 타이핑 ( 약한 타이핑약한 타이핑 )입니다. 스크립팅 언어는 종종 약하게 입력 되므로 작은 프로그램을 더 빠르게 작성할 수 있습니다. 대형 프로그램의 경우 이것은 컴파일러 / 인터프리터가 특정 버그를 자율적으로 찾는 것을 방해하여 코드를 리팩토링하기가 매우 어렵 기 때문에 단점입니다.


1

스크립팅 언어는 프로그램이 일반적으로 읽을 수있는 텍스트 형식으로 최종 사용자에게 제공되고 분명히 다음 과 같은 프로그램이있는 프로그래밍 언어입니다. 직접 그 프로그램을 실행이. (프로그램은 내부적으로 스크립트를 컴파일 할 수 있습니다. 사용자에게 보이지 않기 때문에 여기서는 관련이 없습니다.)

사용자가 프로그램을 입력하기 만하면 즉시 실행할 수있는 대화 형 세션을 지원할 수있는 스크립팅 언어가 비교적 일반적입니다. 이것은 첫 번째 단락의 필수 요구 사항을 사소하게 확장 한 것이기 때문입니다. 주요 추가 요구 사항은 입력 된 명령문이 언제 완료되었는지 파악하여 실행 엔진으로 보낼 수있는 메커니즘을 추가하는 것입니다.


1

약간 다른 질문에 대해 알아보십시오. 스크립팅 언어는 프로그래밍 언어이지만 프로그래밍 언어가 반드시 스크립팅 언어는 아닙니다. 스크립팅 언어는 시스템을 제어하거나 스크립팅하는 데 사용됩니다. 이 시스템은 스크립팅 언어가 bash 인 운영 체제 일 수 있습니다. 시스템은 스크립트 언어 인 PHP를 사용하는 웹 서버 일 수 있습니다. 스크립팅 언어는 특정 틈새 시장을 채우도록 설계되었습니다. 도메인 별 언어입니다. 대화 형 시스템은 스크립팅 언어를 해석하여 스크립팅 언어가 해석된다는 개념을 제공합니다. 그러나 이것은 스크립팅 언어 자체가 아니라 시스템의 결과입니다.


1

스크립팅 언어는 기존 프로그램을 구성하거나 확장하는 언어입니다.
스크립팅 언어는 프로그래밍 언어입니다.


1

"스크립팅 언어"의 정의는 매우 모호합니다. 다음 고려 사항을 기반으로합니다.

  1. 스크립팅 언어에는 일반적으로 사용자가 볼 수있는 컴파일 단계가 없습니다. 일반적으로 사용자는 하나의 쉬운 명령으로 프로그램을 실행할 수 있습니다.

  2. 스크립팅 언어로 된 프로그램은 일반적으로 소스 형식으로 전달됩니다.

  3. 스크립팅 언어에는 일반적으로 많은 시스템에 존재하는 런타임이 있으며 런타임은 대부분의 시스템에 쉽게 설치할 수 있습니다.

  4. 스크립팅 언어는 시스템에 한정되지 않고 교차 플랫폼 인 경향이 있습니다.

  5. 스크립팅 언어를 사용하면 다른 프로그램을 쉽게 호출하고 운영 체제와 인터페이스 할 수 있습니다.

  6. 스크립팅 언어는 일반적으로보다 일반적인 프로그래밍 언어로 작성된 대규모 시스템에 쉽게 포함 할 수 있습니다.

  7. 스크립팅 언어는 일반적으로 쉽게 프로그래밍 할 수 있도록 설계되었으며 실행 속도는 크게 고려하지 않습니다. (빠른 실행을 원하는 경우 일반적인 조언은 시간이 많이 걸리는 부분을 C와 같이 코딩하고 언어를 C에 포함하거나 언어에서 C 비트를 호출하는 것입니다.)

위에 나열된 특성 중 일부는 구현에 해당하며,이 경우 더 일반적인 구현을 언급합니다. (AFAIK) 명백한 컴파일 단계가없는 C 인터프리터가 있었지만 대부분의 C 구현에서는 그렇지 않습니다. Perl 프로그램을 네이티브 코드로 컴파일 할 수는 있지만 일반적으로 사용되는 방식은 아닙니다. 다른 특성은 본질적으로 사회적입니다. 위의 기준 중 일부는 다소 겹칩니다. 내가 말했듯이 정의는 모호합니다.


0

스크립팅 언어는 자체적으로 정의하지 않는 엔티티를 많이 조작하는 것입니다. 예를 들어 JavaScript는 브라우저에서 제공하는 DOM 객체를 조작하고 PHP는 방대한 C 기반 함수 라이브러리를 운영합니다. 물론 정확한 정의가 아니라 생각하는 방법이 더 많습니다.


음, PHP는 기본 C 라이브러리를 사용하지만 Java를 포함한 대부분의 언어 (최저 수준)에 해당합니다. 그리고 이러한 기능을 조작하지 않습니다 ...
PhiLho

0

그렇지 않다면CPU에서 실행 실행 나에게 스크립트입니다. 인터프리터가 프로그램 아래의 CPU에서 실행되어야하는 경우 스크립트와 스크립팅 언어입니다.

이것보다 더 복잡하게 만들 이유가 없습니까?

물론 대부분 (99 %)의 경우 언어가 스크립팅 언어인지 여부는 분명합니다. 그러나 예를 들어 VM은 x86 명령어 세트를 에뮬레이트 할 수 있습니다. VM에서 실행할 때 x86 바이트 코드가 스크립팅 언어가되지 않을까요? 누군가가 펄 코드를 네이티브 실행 파일로 바꾸는 컴파일러를 작성한다면 어떨까요? 이 경우 더 이상 언어 자체를 무엇이라고 부를지 모르겠습니다. 중요한 것은 언어가 아니라 출력입니다.

그런 다음 다시 말하지만, 이와 같은 작업이 수행 된 것을 알지 못하므로 지금은 여전히 ​​통역 언어 스크립팅 언어를 호출하는 것이 편합니다.


1
스크립팅 언어를 위해 네이티브 바이너리로 컴파일하는 언어를 제외한 거의 모든 언어를 호출하고 있습니까? 자바 개발자는 스크립터라고
부르게되어 기뻐할 것입니다

1
그들은. 즉, 스크립터입니다.
anon6439

0

스크립트는 상대적이다 작은 프로그램입니다. 시스템은 상대적이다 프로그램 또는 컬렉션 비교적 큰 프로그램.

일부 프로그래밍 언어는 언어 설계자와 프로그래밍 커뮤니티가 비교적 작은 프로그램을 작성할 때 유용하다고 생각하는 기능으로 설계되었습니다. 이러한 프로그래밍 언어는 PHP 와 같은 스크립팅 언어로 알려져 있습니다 .

마찬가지로 다른 프로그래밍 언어는 언어 디자이너와 프로그래밍 커뮤니티가 비교적 큰 프로그램을 작성할 때 유용하다고 생각하는 기능으로 디자인됩니다. 이러한 프로그래밍 언어는 Java 와 같은 시스템 언어로 알려져 있습니다 .

이제 크고 작은 프로그램을 모든 언어로 작성할 수 있습니다. 작은 Java 프로그램은 스크립트입니다. 예를 들어 Java "Hello World"프로그램은 시스템이 아니라 스크립트입니다. PHP로 작성된 대규모 프로그램 또는 프로그램 모음은 시스템입니다. 예를 들어, PHP로 작성된 Facebook은 스크립트가 아니라 시스템입니다.

언어가 스크립팅 또는 시스템 프로그래밍에 가장 적합한 지 결정하기위한 "리트머스 테스트"로 단일 언어 기능을 고려하는 것은 의문의 여지가 있습니다. 예를 들어, 스크립트 바이트 코드 또는 기계 코드로 컴파일되거나 직접 추상 구문 트리 (AST) 해석에 의해 실행될 있습니다.

따라서 일반적으로 스크립트를 작성하는 데 사용되는 언어는 스크립팅 언어 입니다. 스크립팅 언어를 사용하여 시스템을 작성할 수 있지만 이러한 응용 프로그램은 모호한 것으로 간주 될 수 있습니다.

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