문제

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

또한보십시오:

도움이 되었습니까?

해결책

스크립팅 언어는 작업을 수행하기 위해 다른 작업을 "스크립트"하는 언어입니다.주요 초점은 기본적으로 자신만의 앱을 구축하는 것이 아니라 기존 앱이 원하는 방식으로 작동하도록 하는 것입니다.브라우저용 JavaScript, MS Office용 VBA.

다른 팁

단순한.내가 사용하면 그것은 현대적인 동적 언어이고, 당신이 사용하면 그것은 단지 스크립트 언어일 뿐입니다!

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

어떤 눈에는 너처럼 사용 언어는 그것을 스크립팅 언어로 만듭니다(예를 들어 주로 C++로 개발하는 게임 개발자는 스크립트 Lua의 객체).다시 말하지만, 경계는 모호합니다. 한 사람이 프로그래밍에 언어를 사용할 수 있고 다른 사람이 동일한 언어를 스크립팅 언어에 사용할 수 있습니다.

이것은 위키피디아 스크립팅 언어에 관한 기사:

스크립팅 언어, 스크립트 언어 또는 확장 언어는 하나 이상의 소프트웨어 응용 프로그램을 제어할 수 있는 프로그래밍 언어입니다."스크립트"는 일반적으로 다른 언어로 작성되고 최종 사용자가 생성하거나 최소한 수정한다는 점에서 애플리케이션의 핵심 코드와 구별됩니다.스크립트는 소스 코드나 바이트코드에서 해석되는 경우가 많지만 스크립트가 제어하는 ​​애플리케이션은 전통적으로 네이티브 기계 코드로 컴파일됩니다.스크립팅 언어는 거의 항상 자신이 제어하는 ​​응용 프로그램에 내장되어 있습니다.

"보통", "자주", "전통적으로", "거의 항상"이라는 표현을 사용하는 것을 볼 수 있습니다. 아니요 특정 언어를 "스크립팅 언어"로 만드는 고유한 속성 집합입니다.

“대본은 배우들에게 주는 거예요.프로그램은 청중에게주는 것입니다. " - Larry Wall

사실 더 이상 별 차이가 없는 것 같아요.소위 "스크립팅" 언어는 런타임에 매우 빠르게 컴파일되는 경우가 많습니다.그리고 일부 "프로그래밍" 언어는 런타임 시에도 추가로 컴파일되며(JIT를 생각해 보세요) "컴파일"의 첫 번째 단계는 구문 검사와 리소스 확인입니다.

그것에 매달리지 마십시오. 실제로는 중요하지 않습니다.

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

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

첫 번째:그것은 실제로의 문제가 아닙니다. 차이점 스크립팅 언어와 프로그래밍 언어 사이에 있는 이유는 스크립팅 언어 때문입니다. ~이다 프로그래밍 언어.어떤 프로그래밍 언어를 스크립팅 언어로 만들고 다른 프로그래밍 언어로 만드는 특성에 대한 질문입니다. 그렇지 않다 스크립팅 언어.

두번째:XYZ 언어가 무엇인지, XYZ가 "스크립팅"인지, "함수형 프로그래밍"인지, "객체 지향 프로그래밍"인지 또는 무엇인지 말하기는 정말 어렵습니다."함수형 프로그래밍"이 무엇인지에 대한 정의는 매우 명확하지만 "함수형 프로그래밍 언어"가 무엇인지 아는 사람은 없습니다.

함수형 프로그래밍 또는 객체 지향 프로그래밍은 프로그래밍입니다. 스타일;거의 모든 언어에서 기능적 스타일이나 객체 지향 스타일로 작성할 수 있습니다.예를 들어, Linux 가상 파일 시스템 스위치 및 Linux 드라이버 모델은 C로 작성되었음에도 불구하고 객체 지향적인 반면, 웹에서 볼 수 있는 많은 Java 또는 C# 코드는 매우 절차적이며 객체 지향적이지 않습니다. 조금도.OTOH, 저는 매우 기능적인 Java 코드를 보았습니다.

따라서 함수형 프로그래밍과 객체지향 프로그래밍이 단지 언어로 할 수 있는 스타일이라면 어느 언어, 그렇다면 "객체 지향 프로그래밍 언어"를 어떻게 정의합니까?객체지향 프로그래밍 언어는 객체지향 프로그래밍을 가능하게 하는 언어라고 말할 수 있습니다.그러나 그것은 그다지 정의가 아닙니다. 모두 언어는 객체 지향 프로그래밍을 허용하므로 모두 언어는 객체지향인가요?그래서 당신은 언어가 객체 지향적이라고 말합니다. 객체지향 스타일로 프로그래밍을 하게 됩니다.그러나 그것은 그다지 정의가 아닙니다. 모두 언어는 함수형 프로그래밍을 허용하므로 아니요 언어는 객체지향인가요?

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

언어는 스크립팅 언어(객체 지향 언어/기능 언어)입니다. 둘 다

  • 촉진 스크립팅(객체 지향 프로그래밍/기능 프로그래밍), 즉뿐만 아니라 허용한다 하지만 해낸다 쉬운 그리고 자연스러운 다음과 같은 기능이 포함되어 있습니다. 돕다 그것으로, 그리고
  • 격려한다 그리고 가이드 스크립팅(객체 지향 프로그래밍/기능 프로그래밍)을 지향합니다.

그래서 다섯 문단 후에 나는 다음과 같은 결론에 이르렀습니다."스크립팅 언어는 스크립팅을 위한 언어이다".정말 훌륭한 정의입니다.아니다.

이제 우리는 "스크립팅"의 정의를 살펴볼 필요가 있습니다.

여기서 세 번째 문제가 발생합니다."함수형 프로그래밍"이라는 용어는 잘 정의되어 있으며 불행하게도 스크립팅에서는 "함수형 프로그래밍 언어"라는 용어만 문제가 됩니다. 둘 다 "스크립팅"이라는 용어와 "스크립팅 언어"라는 용어는 잘못 정의되어 있습니다.

음, 먼저 스크립팅 ~이다 프로그램 작성.그것은 단지 특별한 종류의 프로그래밍일 뿐입니다.아이오우:모든 스크립트는 프로그램이지만 모든 프로그램이 스크립트는 아닙니다.모든 스크립트 세트는 모든 프로그램 세트의 적절한 하위 세트입니다.

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

스크립트는 주로 다음과 같은 개체를 조작합니다.

  • 스크립트에 의해 생성되지 않았으며
  • 스크립트와는 별개로 평생을 보내며
  • 스크립트 영역 외부에 살고 있습니다.

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

쉘 스크립트를 생각해 보세요:쉘 스크립트는 일반적으로 파일, 디렉토리 및 프로세스를 조작합니다.시스템에 있는 대부분의 파일, 디렉터리 및 프로세스는 현재 실행 중인 스크립트에 의해 생성되지 않았을 수 있습니다.그리고 스크립트가 종료될 때 사라지지 않습니다.그들의 수명은 스크립트와 완전히 독립적입니다.그리고 그것들은 실제로 대본의 일부도 아니고 시스템의 일부이기도 합니다.당신은 글을 쓰는 것으로 스크립트를 시작하지 않았습니다 File 그리고 Directory 클래스, 해당 데이터 유형은 걱정할 사항이 아닙니다.당신은 그들이 거기 있다고 가정하고 당신은 심지어 알지도 못합니다. 필요 알기 위해) 그들이 어떻게 작동하는지.그리고 자신만의 알고리즘도 구현하지 않습니다.디렉토리 순회를 위해 방금 사용했습니다. find 자신만의 너비 우선 검색을 구현하는 대신.

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

더 큰 시스템은 쉘 스크립트의 경우 운영 체제, 브라우저 스크립트의 경우 브라우저 DOM, 게임(예:Lua를 사용하는 World of Warcraft 또는 Linden 스크립팅 언어를 사용하는 Second Life), 애플리케이션(예:AutoCAD 또는 Excel/Word/Office 매크로용 AutoLisp 언어), 웹 서버, 로봇 팩 또는 완전히 다른 것.

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

예를 들어, 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화되더라도 언어의 "특성"은 바뀌지 않습니다.

남은 질문은 새로운 언어가 스크립팅 언어인지 어떻게 알 수 있느냐는 것입니다.글쎄요, 스크립팅 언어라고 한다면 그것은 바로 하나입니다.그래서 요인 는 스크립팅 언어입니다(또는 적어도 작성 당시에는 그랬습니다). 하지만 Java는 그렇지 않습니다.

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

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

위의 기준에 따라 PHP는 스크립팅 언어입니다(예를 들어 소스 코드를 "보호"하기 위해 Zend Encoder를 사용할 때 "컴파일" 프로세스가 있을 수 있음에도 불구하고).

추신.항상은 아니지만 종종 스크립팅 언어가 해석됩니다.또한 (항상 그런 것은 아니지만) 스크립팅 언어가 동적으로 입력되는 경우도 많습니다.

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

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

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

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

한 부서는

  • 스크립팅 = 동적으로 해석됨
  • 보통 = 컴파일됨

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

Jörg가 지적했듯이 해석/컴파일 구별은 언어의 특징이 아니라 실행 엔진의 특징이라는 점을 덧붙이고 싶습니다.

이 설명에 관심이 있으실 수도 있습니다. 유형 시스템, 실행 엔진 대신 언어 측면에 더 중점을 두고 관련되어 있습니다.대부분의 스크립팅 언어는 동적으로 유형이 지정되는 반면 "일반" 언어는 대부분 정적으로 유형이 지정됩니다.

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

스크립팅 언어는 일반적으로:

  1. 동적으로 입력됨
  2. 성능에 대한 강조는 거의 없지만 이식성은 우수합니다.
  3. 훨씬 적은 양이 필요합니다 상용구 코드, 매우 빠른 프로토타이핑으로 이어짐
  4. 유용한 "스크립트"를 실행하기 위해 하나의 단일 파일을 작성하는 데 적합한 작은 작업에 사용됩니다.

비스크립팅 언어는 대개:1.정적으로 입력 한 2.성능에 중점을 둔 컴파일 3.더 많은 보일러 플레이트 코드가 필요하므로 프로토 타이핑이 느려지지만 가독성과 장기 유지 보수 성 4 개가 필요합니다.대규모 프로젝트에 사용되며 다양한 디자인 패턴에 적응

하지만 제 생각에는 요즘에는 역사적인 차이가 더 큽니다.Javascript와 Perl은 작고 간단한 스크립트를 염두에 두고 작성된 반면 C++는 복잡한 애플리케이션을 염두에 두고 작성되었습니다.하지만 둘 다 어느 쪽이든 사용할 수 있습니다.그리고 현대와 옛날을 막론하고 많은 프로그래밍 언어는 어쨌든 경계를 모호하게 만듭니다(처음에는 모호했습니다!).

슬픈 점은 "스크립팅 언어"로 인식되는 것을 싫어하고 더 간단하고 강력하지 않다고 생각하는 개발자 몇 명을 알고 있다는 것입니다.내 의견은 오래된 진부한 표현입니다. 작업에 적합한 도구를 사용하십시오.

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

가장 주목할만한 점은 쉘 스크립트가 OS 커널(전통적으로 Mac의 AppleScript)에서 프로세스를 자동화했다는 것입니다.점점 더 많은 역할이 Perl의 손에 넘어갔다가 최근에는 Python으로 넘어갔습니다.나는 광선 추적 장면을 선언하는 데 사용되는 Scheme(특히 Guile 구현에서)을 본 적이 있습니다.최근 Lua는 게임 스크립트를 위한 프로그래밍 언어로 매우 인기가 높습니다. 많은 새로운 게임에서 하드 코딩된 유일한 항목은 그래픽/물리 엔진인 반면 전체 게임 로직은 Lua로 인코딩된다는 점입니다.마찬가지로 JavaScript는 웹 브라우저의 동작을 스크립트로 작성하는 것으로 간주되었습니다.

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

그러나 "스크립팅 언어"는 "해석 언어"와 확실히 동의어가 아닙니다. 예를 들어 BASIC은 대부분의 수명 동안 해석되었습니다(예:그 약어성을 잃고 Visual Basic이 되기 전에는) 아무도 그것을 스크립팅이라고 생각하지 않습니다.

업데이트: 평소대로 자료 읽기 가능 위키피디아에서.

첫 번째 요점은 프로그래밍 언어는 "스크립팅 언어"나 다른 것이 아닙니다."스크립팅 언어"가 될 수도 있고 다른 것일 수도 있습니다.

두 번째 요점은 언어 구현자가 그것이 스크립팅 언어인지 알려줄 것입니다.

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

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

나는 스크립팅 언어를 지나치게 무거운 느낌의 '컴파일' 단계를 필요로 하지 않는 것으로 봅니다.프로그래머의 관점에서 볼 때 주요 기능은 다음과 같습니다.코드를 편집하고 바로 실행하면 됩니다.

따라서 나는 JavaScript와 PHP를 스크립팅 언어로 간주할 것입니다. 액션스크립트 3/몸을 풀다 실제로는 그렇지 않습니다.

내 친구와 나는 방금 다음과 같은 논쟁을 벌였습니다.프로그래밍 언어와 스크립팅 언어의 차이점은 무엇입니까?

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

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

이를 바탕으로 프로그래밍 언어와 스크립팅 언어의 차이점에 대한 나의 주장은 다음과 같습니다.

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

스크립팅 언어는 샌드박스로 구성되어 있으며 샌드박스에 노출된 개체에만 액세스할 수 있습니다.기본 머신에 직접 액세스할 수 없습니다.

내 의견으로는 PHP, Ruby 등과 같은 동적으로 해석되는 언어라고 말하고 싶습니다.여전히 "정상적인" 언어입니다."스크립팅" 언어의 예로는 bash(또는 ksh나 tcsh 등) 또는 sqlplus가 있습니다.이러한 언어는 시스템의 기존 프로그램을 다음과 같이 일련의 일관되고 관련 명령으로 묶는 데 사용되는 경우가 많습니다.

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

그래서 나는 (어쨌든 나에게 있어서) 차이점은 당신이 어떻게 하느냐에 더 있다고 말하고 싶습니다. 사용 언어.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는 컴퓨터가 기본 마더보드/그래픽 카드/칩과 인터페이스하는 데 사용하는 스크립트이기 때문에 왜 스크립트 언어라고 말할 수 없습니까?

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

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

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

스크립팅 언어는 많은 사람들이 점점 멀어지고 있는 용어라고 말씀드리고 싶습니다.요즘에는 주로 컴파일된 언어와 동적 언어로 귀결된다고 말하고 싶습니다.

제 말은 Python이나 Ruby 같은 것이 오늘날 "스크립팅" 언어라고 말할 수 없다는 뜻입니다(심지어 다음과 같은 것도 있습니다). IronPython 그리고 JIT-당신이 가장 좋아하는 언어, 차이가 더욱 흐려졌습니다).

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

스크립팅 언어는 더 큰 응용 프로그램의 일부인 스크립팅 엔진 내에서 실행되는 경향이 있습니다.예를 들어 JavaScript는 브라우저 스크립팅 엔진 내에서 실행됩니다.

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

모든 컴파일 가능한 언어는 스크립트 언어로 만들어질 수 있으며 그 반대의 경우도 모두 인터프리터 또는 컴파일러 구현에 따라 달라집니다. 예를 들어 C++에는 인터프리터가 있으므로 그렇게 사용하면 스크립트 언어라고 부를 수 있습니다(일반적으로 C++만큼 실용적이지는 않습니다). 매우 복잡한 언어입니다) 현재 가장 유용한 스크립트 언어 중 하나는 Python입니다...

따라서 귀하의 질문에 대답하려면 인터프리터를 사용하여 빠르고 쉽게 스크립트 프로그램을 실행하고, 간단한 작업이나 프로토타입 응용 프로그램을 처리하기 위해 스크립트 언어를 사용할 수 있는 가장 강력한 용도는 모든 용도에 확장 가능성을 포함시키는 것입니다. 컴파일된 응용 프로그램입니다.

나는 사람들이 "스크립팅 언어"라는 용어를 사용하지 않는 것을 선호합니다. 왜냐하면 그것이 노력을 줄여준다고 생각하기 때문입니다.종종 "스크립팅 언어"라고 불리는 Perl과 같은 언어를 사용하십시오.

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

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

이에 대한 자세한 내용은 다음을 참조하세요. http://xoa.petdance.com/Stop_saying_script.

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

스크립팅 언어는 프로그램이 일반적으로 읽을 수 있는 텍스트 형식으로 최종 사용자에게 전달되고 다음을 수행할 수 있는 프로그램이 있는 프로그래밍 언어입니다. 보기에 해당 프로그램을 직접 실행해 보세요.(프로그램은 내부적으로 스크립트를 컴파일할 수 있습니다.이는 사용자에게 표시되지 않으므로 여기서는 관련이 없습니다.)

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

질문에 대해 약간 다른 견해를 가지고 있습니다.스크립팅 언어는 프로그래밍 언어이지만 프로그래밍 언어가 반드시 스크립팅 언어는 아닙니다.스크립팅 언어는 시스템을 제어하거나 스크립팅하는 데 사용됩니다.해당 시스템은 스크립팅 언어가 bash인 운영 체제일 수 있습니다.시스템은 PHP 스크립트 언어를 사용하는 웹 서버일 수 있습니다.스크립팅 언어는 특정 틈새 시장을 채우기 위해 설계되었습니다.그들은 도메인 특정 언어입니다.대화형 시스템은 스크립팅 언어가 해석된다는 개념을 발생시키는 스크립팅 언어를 해석했습니다.그러나 이는 시스템의 결과이지 스크립팅 언어 자체의 결과는 아닙니다.

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

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

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

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

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

  4. 스크립팅 언어는 기계에 특정하지 않고 플랫폼 간을 지원하는 경향이 있습니다.

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

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

  7. 스크립팅 언어는 일반적으로 프로그래밍 용이성을 위해 설계되었으며 실행 속도는 훨씬 덜 고려되었습니다.(빠른 실행을 원한다면 일반적인 조언은 시간이 많이 걸리는 부분을 C와 같은 것으로 코딩하고 언어를 C에 포함시키거나 언어에서 C 비트를 호출하는 것입니다.)

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

스크립팅 언어는 자체적으로 정의하지 않는 엔터티를 심하게 조작하는 언어라고 말하고 싶습니다.예를 들어, JavaScript는 브라우저가 제공하는 DOM 개체를 조작하고, PHP는 C 기반 기능의 거대한 라이브러리를 운영하는 등의 작업을 수행합니다.물론 정확한 정의는 아니고, 그렇게 생각하는 방법에 더 가깝습니다.

그렇지 않다면/않을 것이다 CPU에서 실행되는 것은 나에게 스크립트입니다.인터프리터가 프로그램 아래의 CPU에서 실행되어야 한다면 그것은 스크립트이자 스크립팅 언어입니다.

이보다 더 복잡하게 만들 이유가 없나요?

물론 대부분(99%)의 경우 해당 언어가 스크립팅 언어인지 여부는 분명합니다.그러나 예를 들어 VM이 x86 명령 세트를 에뮬레이트할 수 있다는 점을 고려하십시오.VM에서 실행될 때 x86 바이트 코드를 스크립팅 언어로 만들지 않습니까?누군가 Perl 코드를 기본 실행 파일로 바꾸는 컴파일러를 작성한다면 어떻게 될까요?이 경우에는 더 이상 언어 자체를 무엇이라고 불러야 할지 모르겠습니다.중요한 것은 언어가 아니라 결과일 것입니다.

그리고 다시 말하지만, 나는 이런 일이 일어난 적이 없기 때문에 지금은 여전히 ​​해석 언어 스크립팅 언어라고 부르는 것이 편안합니다.

스크립트 상대적이다 작은 프로그램.ㅏ 체계 상대적이다 크기가 큰 프로그램 또는 수집 상대적으로 큰 프로그램의

일부 프로그래밍 언어는 언어 디자이너와 프로그래밍 커뮤니티가 상대적으로 작은 프로그램을 작성할 때 유용하다고 간주하는 기능으로 설계되었습니다.이러한 프로그래밍 언어는 다음과 같이 알려져 있습니다. 스크립팅 언어, 예를 들어PHP.

마찬가지로 다른 프로그래밍 언어도 언어 디자이너와 프로그래밍 커뮤니티가 상대적으로 큰 프로그램을 작성할 때 유용하다고 간주하는 기능으로 설계되었습니다.이러한 프로그래밍 언어는 다음과 같이 알려져 있습니다. 시스템 언어, 예를 들어자바.

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

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

그래서, 일반적으로 스크립트를 작성하는 데 사용되는 언어는 스크립팅 언어입니다..스크립팅 언어는 시스템을 작성하는 데 사용될 수 있지만 그러한 애플리케이션은 모호한 것으로 간주될 가능성이 높습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top