스크립팅 언어

Scripting language

스크립팅 언어 또는 스크립트 언어는 인간 운영자가 개별적으로 수행할 수 있는 작업의 실행을 자동화하는 런타임 시스템프로그래밍 언어다.[1]스크립팅 언어는 보통 컴파일보다는 런타임해석된다.

스크립팅 언어의 기본 요소는 대개 기본 작업이나 API 호출이며[clarification needed], 스크립팅 언어를 사용하면 더 많은 프로그램으로 결합할 수 있다.스크립팅을 통해 자동화할 수 있는 환경으로는 애플리케이션 소프트웨어, 텍스트 편집기, 웹 페이지, 운영 체제 , 임베디드 시스템, 컴퓨터 게임 등이 있다.스크립팅 언어는 특정 환경의 도메인별 언어로 볼 수 있다. 응용프로그램을 스크립팅하는 경우 확장 언어라고도 한다.스크립팅 언어는 때로는 높은 수준의 추상화 또는 제어 언어, 특히 메인프레임의 작업 제어 언어에 대해 작동하기 때문에 매우 높은 수준의 프로그래밍 언어라고도 한다.

스크립팅 언어라는 용어는 더 넓은 의미로, 즉 일반적으로 동적 고급 프로그래밍 언어를 가리키는 말로도 쓰이고, 일부는 엄격히 해석된 언어인 반면, 다른 일부는 컴파일 형식을 사용한다.이런 맥락에서, 스크립트라는 용어는 그러한 언어로 된 작은 프로그램을 가리킨다. 전형적으로, 하나의 파일에 포함되어 있고, 몇 천 줄의 코드보다 크지 않다.

스크립팅 언어의 범위는 작은 언어에서 큰 언어까지, 그리고 도메인별 언어에서 범용 프로그래밍 언어까지 다양하다.언어는 작고 고도로 도메인 고유의 언어로서 시작되어 나중에 휴대용 및 범용 언어로 발전될 수 있다. 반대로 범용 언어는 나중에 특별한 도메인 고유 사투리를 개발할 수 있다.

주목할 만한 예

  • Unix 및 Unix와 유사운영 체제 및 환경에서 사용하기 위해 해석된 스크립트 언어인 Bash.
  • PowerShell은 원래 Microsoft Windows에서 사용하기 위한 스크립팅 언어지만 요즘은 MacOSLinux에서도 설치할 수 있다.
  • 주로 유닉스 같은 환경에서 사용되는 두 개의 텍스트 처리 언어인 sed와 AWK.
  • 나중에 범용 언어로 발전한 텍스트 처리 언어인 [2]은 다양한 응용 프로그램의 확장 언어로도 사용되었다.
  • 범용 스크립팅 언어인 파이톤(Python)은 확장 언어로도 사용된다.
  • 유닉스 유사 환경을 위한 스크립팅 언어인 [3]Tcl은 1990년대에 GUI 애플리케이션을 만드는 데 인기가 있었다.
  • JavaScript(Later: ECMAScript)는 원래 매우 작고 도메인별 언어로, 웹 브라우저 내에서 실행되어 보여지는 웹 페이지를 동적으로 수정하는 것으로 제한되었으며, 후에 널리 휴대 가능한 범용 프로그래밍 언어로 발전되었다.
  • Kotlin은 컴파일된 언어임에도 불구하고 (Gradle 빌드 스크립트와[6] 마찬가지로) REF와 스크립팅 지원을[5] 제공한다.
  • Microsoft Office 응용 프로그램용 확장 언어인 Visual Basic for Applications.
  • 루아(Lua)는 일반적으로 응용 프로그램의 확장 언어로 사용하도록 설계되었으며, 여러 응용 프로그램에서 이와 같이 사용된다.
  • Lisp, 범용 언어 및 특정 응용 프로그램용 확장 언어(예: Emacs Lisp), Emacs 편집기용 Emacs Lisp.

일부 게임 시스템은 사용자 지정 언어를 사용하여 확장을 스크립팅함으로써 기능성이 광범위하게 확장되었으며, 특히 SL 가상 세계(Linden Scripting Language 사용)와 Trainz 프랜차이즈 철도 시뮬레이터(TrainzScript 사용)의 Trainz 프랜차이즈가 그것이다.Wesnoth와 같은 일부 게임에서 사용자들은 사용자들이 기부한 스크립트에 의해 정의된 게임의 사용자 지정 변형 게임을 한다.

특성.

일반적인 스크립팅 언어는 짧은 소스 코드 파일로 또는 읽기-평가-인쇄 루프(REPL, 언어 쉘)에서 대화식으로 학습하고 쓰기 매우 빠른 것을 목적으로 한다.[7]이는 일반적으로 비교적 간단한 구문의미론을 내포하고 있으며, 일반적으로 "스크립트"(스크립트 언어로 작성된 코드)는 명시적인 진입점이 없는 "스크립트"로서 처음부터 끝까지 실행된다.

예를 들어, Java를 스크립팅 언어로 특징짓는 것은 흔치 않은 일로, 어떤 클래스가 어떤 파일에 존재하는지에 대한 긴 구문과 규칙 때문에, Java를 직접 대화식으로 실행할 수 있는 것은 불가능하며, 소스 파일은 호스트 애플리케이션이나 응용 프로그램 실행기에 의해 외부에서 호출되어야 하는 정의만 포함할 수 있기 때문이다.

공중의 계급 안녕 세계 {     공중의 공허하게 하다 인쇄HelloWorld() {         시스템.밖으로.인쇄하다("헬로 월드");     } } 

"Hello World"를 인쇄하기 위한 이 코드 조각은 아래의 것이 유용하겠지만, 메인()HelloWorld 클래스에 선언되지 않았기 때문에 아무 것도 하지 않는다.

공중의 계급 안녕 세계 {     공중의 공허하게 하다 인쇄HelloWorld() {         시스템.밖으로.인쇄하다("헬로 월드");     }     공중의 정태의 공허하게 하다 본래의([] 아그) {         인쇄HelloWorld();     } } 

위의 예에서, 메인(main)은 정의되어 있으며, 따라서 이것은 여전히 대화형으로 실행될 수 없지만, 발사기에 의해 호출될 수 있다.이와는 대조적으로 파이썬은 일부 함수의 정의를 단일 파일에 허용하거나 함수를 완전히 피하고 명령적인 프로그래밍 스타일을 사용하거나 심지어 대화식으로 사용할 수도 있다.

인쇄하다("헬로 월드") 인쇄하다 "헬로 월드"  # 파이썬 2.7 이하 

이 파이톤 코드의 한 줄에는 "Hello World"가 인쇄된다. 여기에는 main()과 같은 선언적 문장이 필요하지 않다.

스크립팅 언어는 보통 소스 코드나 바이트 코드에서 해석된다.[8]대조적으로 스크립트가 작성되는 소프트웨어 환경(인터프리터)은 일반적으로 컴파일된 언어로 작성되고 기계 코드 형태로 배포된다.

스크립팅 언어는 프로그램의 최종 사용자(최종 사용자 개발)가 사용할 수 있도록 설계되거나 개발자가 내부적으로만 사용할 수 있으므로 프로그램의 일부를 스크립팅 언어로 작성할 수 있다.스크립팅 언어는 일반적으로 정보 은닉의 한 형태인 추상화를 사용하여 사용자에게 내부 변수 유형, 데이터 스토리지 및 메모리 관리에 대한 세부사항을 제공한다.

스크립트는 실행자가 작성하거나 수정하는 경우가 많지만,[9] 특히 Google Chrome T-rex 게임과 같이 많은 양의 게임이 스크립팅 언어로 작성될 때와 같이 배포되는 경우도 많다.

역사

초기 메인프레임 컴퓨터(1950년대)는 배치 처리를 사용하는 대신에 비 상호작용이었습니다.IBM의 JCL(Job Control Language, JCL)은 일괄 처리를 제어하기 위해 사용되는 언어의 원형이다.[10]

최초의 인터랙티브 은 1960년대에 최초의 시간 공유 시스템의 원격 조작이 가능하도록 개발되었으며, 이 스크립트는 컴퓨터 프로그램인 셸 내에서 실행 중인 컴퓨터 프로그램을 제어하는 데 사용되었다.Calvin MoersTRAC 언어로 번역될 때 문자열을 스크립트에 삽입하는 명령 대체 기능을 고안한 으로 일반적으로 인정받고 있다.[11]다중 사용자들은 이러한 기능을 활성 기능이라고 부른다.[12]루이 푸진은 1964년경 CTSS용 RUNCOM이라는 명령 스크립트를 위한 초기 프로세서를 썼다.MIT의 스튜어트 매드닉은 1966년에 IBM의 CP/CMS용 스크립팅 언어를 썼다.그는 원래 이 프로세서를 COMPERT라고 불렀고, 나중에 EXEC라고 불렀다.[13]다중 작업에는 RUNCOM이라고도 불리는 CTSS RUNCOM의 오프슈트가 포함되었다.[14] EXEC는 결국 EXEC 2REXX로 대체되었다.

TclLua와 같은 언어는 어떤 응용 프로그램에도 내장될 수 있는 범용 스크립팅 언어로 특별히 설계되었다.VBA(Visual Basic for Applications)와 같은 다른 언어는 기반 시스템의 자동화 시설과 강력한 통합을 제공했다.응용 프로그램마다 새로운 언어를 개발하는 대신에 이러한 범용 스크립팅 언어를 내장하는 것 또한 분명한 이점을 가지고 있어서 응용 프로그램 개발자는 처음부터 언어 번역기를 코드화할 필요성을 덜었고 사용자는 다른 곳에서 배운 기술을 적용할 수 있었다.

일부 소프트웨어에는 몇 가지 서로 다른 스크립팅 언어가 통합되어 있다.현대의 웹브라우저는 일반적으로 브라우저 자체에 확장자를 쓰는 언어를 제공하며, 자바스크립트(ECMAScript의 방언) 또는 XUL을 포함한 브라우저 제어를 위한 몇 가지 표준 내장 언어를 제공한다.

종류들

스크립팅 언어는 여러 가지 다른 유형으로 분류할 수 있으며, 유형 간 중첩 정도가 상당하다.

글루어족

스크립팅은 종종 오스터홀트의 이분법이나 "대규모 프로그래밍과 소규모 프로그래밍"에서와 같이 시스템 프로그래밍과 대조된다.이 견해에서 스크립팅은 글루 코드, 소프트웨어 구성요소를 연결하는 것이며, 이 목적에 특화된 언어는 글루 언어다.파이프라인과 셸 스크립팅은 글루언어의 전형적인 예로서, Perl은 처음에 이 같은 역할을 채우기 위해 개발되었다.웹 개발데이터베이스와 웹 서버 사이의 인터페이스인 접착 언어의 사용으로 간주될 수 있다.그러나 상당량의 논리가 대본으로 쓰여진다면, 그것은 "글루"가 아니라 단순히 또 다른 소프트웨어 구성요소로 더 잘 특징지어진다.

글루 언어는 특히 쓰기 및 유지관리에 유용하다.

  • 명령 셸에 대한 사용자 정의 명령;[15]
  • 컴파일된 언어로 더 잘 구현되는 프로그램보다 [16]작은 프로그램
  • 워드프로세서, 스프레드시트, 데이터 베이스, 어셈블러, 컴파일러 등의 애플리케이션을 실행하기 전 또는 이후에 파일을 이동하거나 조작하고 운영 체제를 사용하여 기타 작업을 수행하는 배치 파일과 같은 실행 파일에 대한 "실행자"[17] 프로그램
  • 변경될 수 있는 스크립트.[18]
  • 솔루션의 신속한 애플리케이션 개발은 대개 컴파일된 다른 언어로 구현된다.[citation needed]

글루 언어 예제:

운영 체제나 애플리케이션 구성 요소에 노출된 매크로 언어는 풀 언어의 역할을 할 수 있다.여기에는 어플리케이션용 Visual Basic, WordBasic, LotusScript, CorelScript, Humerbird Basic, QuickScript, Rexx, 색스 베이직, WinWrap Basic이 포함된다.Other tools like AWK can also be considered glue languages, as can any language implemented by a Windows Script Host engine (VBScript, JScript and VBA by default in Windows and third-party engines including implementations of Rexx, Perl, Tcl, Python, XSLT, Ruby, Modern Pascal, Delphi, and C).대다수의 애플리케이션은 객체 모델이나 그 자체의 기능을 통해 운영 체제 구성요소에 접근하여 사용할 수 있다.

프로그램 가능한 계산기와 같은 다른 장치도 글루 언어를 가질 수 있다; Windows CE와 같은 PDA의 운영체제는 Windows NT, DOS 및 일부 유닉스 쉘, Rexx, 모던 파스칼, PHP 및 Perl을 포함한 일반적인 글루 언어의 구현 외에도 응용 프로그램을 함께 접착하는 사용 가능한 기본 또는 타사 매크로 도구를 가질 수 있다.OS 버전에 따라 WSH와 기본 스크립트 엔진(VBScript, JScript)을 이용할 수 있다.

프로그램 가능한 계산기는 3가지 방법으로 글루 언어로 프로그래밍할 수 있다.예를 들어, 텍사스 인스트루먼트 TI-92는 공장 기본값으로 명령 스크립트 언어로 프로그래밍될 수 있다.TI-NSPIRE 계산기 시리즈에 스크립팅 및 접착 언어 루아가 포함된 것은 이를 계승하는 것으로 볼 수 있다.대부분의 그래프 작성 계산기(대부분 기본 변형, 때로는 Lisp 파생 모델, 그리고 더 흔치 않은 경우 C 파생 모델)의 기본 온보드 고수준 프로그래밍 언어는 그래프, 목록, 행렬 등과 같은 계산기 함수를 접착제로 결합할 수 있다.이 글에서 글루 언어로 나열된 변종에 더 가까운 보다 포괄적인 기본 버전의 제3자 구현을 이용할 수 있으며, TI 및 HP 그래핀 계산기에 Perl, Rexx 또는 다양한 운영 체제 쉘을 구현하려는 시도도 언급된다.C와 Perl, Rexx, AWK 및 쉘 스크립트를 Perl, Modern Pascal, VBScript로 변환하는 툴과 함께 사용되는 일부 TI 및 HP 기계에 대한 PC 기반 C 교차 컴파일러는 궁극적으로 (컴파일된 프로그램으로) Perl, Modern Pascal, VBScript로 변환하는 프로그램을 계산할 수 있다.[citation needed]

편집기 언어

다수의 텍스트 편집기는 편집기에 내장된 매크로 언어를 사용하여 작성한 매크로를 지원한다.SemWare Editor(TSE), vi 개선(VIM) 또는 외부 구현(예: XEDIT) 또는 둘 다 사용(예: KEDIT).때때로 텍스트 편집기와 편집 매크로는 CMS의 FILELIST와 RDRLIST와 같은 다른 응용 프로그램을 제공하기 위해 표지 아래에서 사용된다.

작업 제어 언어 및 셸

주요 스크립팅 언어의 클래스는 시스템 프로그램의 동작 시작 및 제어와 관련된 작업 제어의 자동화로부터 성장했다.(이런 의미에서 조개껍데기는 IBM의 JCL, 또는 정확히 이러한 목적을 위해 사용되었던 Job Control Language의 후손이라고 생각할 수도 있다.)이러한 언어의 많은 통역사가 Unix 셸 또는 MS-DOS와 같은 명령줄 통역사로 이중화됨COMMAND.COM애플스크립트와 같은 다른 것들은 스크립트를 만들기 위해 영어와 같은 명령어를 사용한다.

GUI 스크립팅

그래픽 사용자 인터페이스의 출현과 함께, 컴퓨터 제어를 위한 특별한 종류의 스크립팅 언어가 등장했다.이 언어들은 인간 사용자가 사용하는 것과 동일한 그래픽 창, 메뉴, 단추 등과 상호 작용한다.그들은 사용자의 행동을 시뮬레이션함으로써 이것을 한다.이러한 언어는 일반적으로 사용자 작업을 자동화하는 데 사용된다.이러한 언어는 터치 작동 화면을 누르거나 누르는 것뿐만 아니라 시뮬레이션 키 누름이나 마우스 클릭을 통해 제어될 때 "매크로스"라고도 불린다.

이러한 언어는 원칙적으로 GUI 응용 프로그램을 제어하는데 사용될 수 있지만, 실제로는 응용 프로그램과 운영 체제의 사용 지원이 필요하기 때문에 사용이 제한된다.이 제한에는 몇 가지 예외가 있다.일부 GUI 스크립팅 언어는 디스플레이 화면 픽셀에서 그래픽 개체를 인식하는 것을 기반으로 한다.이러한 GUI 스크립팅 언어는 운영 체제나 애플리케이션의 지원에 의존하지 않는다.

IBM Workplace Shell에서와 같이 GUI가 적절한 인터페이스를 제공하는 경우, GUI 스크립트 작성에 OREXX와 같은 일반 스크립팅 언어를 사용할 수 있다.

응용 프로그램별 언어

애플리케이션별 언어는 다양한 범주로 나눌 수 있다. 즉, 독립 실행형 기반 애플리케이션 언어(실행 가능) 또는 내부 애플리케이션별 언어(Adobe, MS, Google에서 구현한 널리 배포된 스크립트의 일부로서 postscript, xml, gscript)는 다음 중 하나에 맞춘 관용적 스크립팅 언어를 포함한다.애플리케이션 사용자의 요구 사항.마찬가지로, 많은 컴퓨터 게임 시스템들은 플레이어가 아닌 캐릭터와 게임 환경의 프로그래밍된 동작을 표현하기 위해 사용자 정의 스크립팅 언어를 사용한다.이러한 종류의 언어는 단일 용도에 맞게 설계되며, 표면적으로는 특정 범용 언어(예: C를 본떠 만든 DeinC)와 유사할 수 있지만, 이를 구별하는 맞춤형 특징을 가지고 있다.Emacs LispLisp의 완전한 형태와 능력을 갖춘 사투리로서 Emacs의 편집 기능을 확장하는데 가장 유용하게 사용할 수 있는 많은 특수 기능을 포함하고 있다.애플리케이션별 스크립팅 언어는 단일 애플리케이션에 특화된 도메인별 프로그래밍 언어로 볼 수 있다.

확장/임베드드 언어

응용 프로그램 프로그램에 내장할 수 있게 함으로써 응용 프로그램별 스크립팅 언어를 대체할 목적으로 여러 언어가 설계되었다.애플리케이션 프로그래머(C 또는 다른 시스템 언어로 작업)는 스크립팅 언어가 애플리케이션을 제어할 수 있는 "후크"를 포함한다.이러한 언어는 기술적으로 응용 프로그램 고유 확장 언어와 동일할 수 있지만 응용 프로그램에 "공통" 언어가 포함되면 사용자는 응용 프로그램에서 응용 프로그램으로 기술을 이전할 수 있다는 이점을 얻게 된다.보다 일반적인 대안은 단순히 특정 도메인의 언어를 수정하지 않고 범용 언어가 응용 프로그램을 제어하기 위해 사용할 수 있는 라이브러리(종종 C 라이브러리)를 제공하는 것이다.

자바스크립트는 웹 브라우저 내에서 스크립팅을 위한 언어로서 시작되었고, 주로 여전히 언어로서 시작되었지만, ECMAScript로서의 언어 표준화는 그것을 범용 임베디드 언어로 유명하게 만들었다.특히 모질라 구현 스파이더몬키야후!와 같은 여러 환경에 내장되어 있다. 위젯 엔진.ECMAScript 구현이 포함된 다른 애플리케이션으로는 Adobe 제품 Adobe Flash(ActionScript)와 Adobe Acrobat(PDF 파일 스크립팅을 위한 애플리케이션)이 있다.

tcl은 확장언어로 만들어졌지만 파이썬, , 루비와 비슷한 역할에서 범용언어로 더 자주 쓰이게 됐다.반면 렉스는 원래 직무통제언어로 만들어졌지만 범용언어는 물론 확장언어로도 널리 사용되고 있다.Perl은 범용어지만 Oracle Call Interface가 컴파일된 Perl 4 바이너리로 구성된 Oraperl(1990) 사투리를 가지고 있었다.그러나 이후 라이브러리(Perl Module), DBD::오라클.[19][20]

다른 복잡하고 작업 지향적인 애플리케이션은 사용자들이 얼마나 정교하든 사용자 인터페이스를 통해 이용할 수 있는 것보다 더 많은 제어와 기능성을 제공할 수 있도록 내장된 프로그래밍 언어를 통합하고 노출시킬 수 있다.예를 들어 Autodesk Maya 3D 저작 도구에는 Maya Embedded Language 또는 Python을 사용하여 이 역할을 채우는 Blender가 포함되어 있다.

더 빠른 기능 추가 또는 조정 실행 주기(예: 게임 엔진)가 필요한 일부 다른 유형의 애플리케이션도 내장 언어를 사용한다.개발 중에, 이것은 사용자가 응용 프로그램의 내부 작업에 대한 친밀한 지식을 갖거나 각 트위크 후에 재구축할 필요 없이, 더 빨리 프로토타입 기능을 하고 더 자유롭게 수정하도록 한다(이것은 상당한 시간이 걸릴 수 있다.이 목적에 사용되는 스크립팅 언어는 더 흔하고 더 유명한 루아, 파이톤에서 엔젤스크립트, 다람쥐와 같은 덜 알려진 언어에 이르기까지 다양하다.

Ch는 업계에서 C/C++ 애플리케이션 프로그램에 포함시킬 수 있는 또 다른 C 호환 스크립팅 옵션이다.

참고 항목

참조

  1. ^ "ECMAScript 2019 Language Specification". www.ecma-international.org. Retrieved 2018-04-02.
  2. ^ Sheppard, Doug (2000-10-16). "Beginner's Introduction to Perl". dev.perl.org. Retrieved 2011-01-08.
  3. ^ 프로그래밍은 어렵다, Let's Go Scripting…, Larry Wall, 2007년 12월 6일
  4. ^ 2021년 12월 3일 코틀린 코드 스니펫 실행
  5. ^ 실행 스크립트, Kotlin, 2021년 12월 3일
  6. ^ Gradle + Kotlin, Gradle Build Tool, 2021년 12월 3일
  7. ^ Hey, Tony; Pápay, Gyuri (2014). The Computing Universe: A Journey through a Revolution. Cambridge University Press. p. 76. ISBN 978-1-31612322-5, "A major characteristic of modern scripting languages is their interactivity, sometimes referred to as a REPL programming environment. […] The characteristics of ease of use and immediate execution with a REPL environment are sometimes taken as the definition of a scripting language."{{cite book}}: CS1 maint : 포스트스크립트(링크)
  8. ^ Brown, Vicki. "Scripting Languages". Retrieved 2009-07-22.
  9. ^ Loui, Ronald (2008). "In praise of scripting". IEEE Computer. Archived from the original on 2015-09-23. Retrieved 2013-08-27.
  10. ^ IBM Corporation (1967). IBM System/360 Operating System Job Control Language (C28-6529-4) (PDF).
  11. ^ Mooers, Calvin. "TRAC, A Procedure-Describing Language for the Reactive Typewriter". Archived from the original on 2001-04-25. Retrieved March 9, 2012.
  12. ^ Van Vleck, Thomas (ed.). "Multics Glossary – A — (active function)". Retrieved March 9, 2012.
  13. ^ Varian, Melinda. "VM AND THE VM COMMUNITY: Past, Present, and Future" (PDF). Retrieved March 9, 2012.
  14. ^ Van Vleck, Thomas (ed.). "Multics Glossary – R — (RUNCOM)". Retrieved March 9, 2012.
  15. ^ "What is glue code (glue code language)? - Definition from WhatIs.com". WhatIs.com. Retrieved 2022-01-31.
  16. ^ Larson, Quincy. "Interpreted vs Compiled Programming Languages". Free Code Camp. Retrieved 23 February 2022.{{cite web}}: CS1 maint : url-status (링크)
  17. ^ Balkis, Anton. "Script Adalah". Raja Tips. Retrieved 23 February 2022.{{cite web}}: CS1 maint : url-status (링크)
  18. ^ Axelsson, Mats. "Shell scripts - What can you change". Linux Hint. Retrieved 23 February 2022.{{cite web}}: CS1 maint : url-status (링크)
  19. ^ 오라펠, CPAN]
  20. ^ Perl, 지하 오라클 FAQ
  21. ^ van Rossum, Guido (January 6–8, 1998). "Glue it all together". Glue It All Together With Python. python.org.

추가 읽기

외부 링크

  • Wayback Machine에서 스크립트로 작성된 애플리케이션의 패턴(2004년 10월 10일 아카이브)