본문 바로가기

개발자 레니는 지금 -/공부하는 중

스크립트 언어

개발자 될 때 까지..

Scripting Language


# 나는 너무 바쁘다, 긴 글 너무 힘들다 READ THIS HIGHLIGHT


책을 읽는데 "실제 Python은 많은 상용 애플리케이션의 스크립트 언어로 채택되어 있다." 라는 문구를 보았다.

스크립트 언어, 그것은 대체 무엇일까 T0T 괴롭다 용어가 너무 많아

그래서 우리들의 위키백과를 찾아보았다.


컴퓨터 프로그래밍 언어로서 응용 소프트웨어를 제어한다. 스크립트 프로그래밍 언어라고도 한다. 스크립트 언어는 응용 프로그램과 독립하여 사용되고 일반적으로 응용 프로그램의 언어와 다른 언어로 사용되어 최종사용자가 응용 프로그램의 동작을 사용자의 요구에 맞게 수행할 수 있도록 해준다. 스크립트(scripts)는 연극 용어인 스크립트에서 유래되었으며 초창기 스크립트 언어는 배치언어(batch languages) 또는 작업 제어 언어(job control language)라고도 불리었다.


어. 음. 그러니까 그럼 중간 연결로 조작을 한다 그런 느낌인가 싶다. 특징을 좀 더 볼까..


일반적으로 스크립트 언어는 매우 빠르게 배우고 작성하기 위해 고안되었으며, 짧은 소스 코드 파일이나 REPL(Read–eval–print-loop)로 상호작용하는데 적합하다. 일반적으로 상대적으로 단순한 구문과 의미를 내포한다. 즉, 보통 "스크립트"(스크립트 언어로 작성된 코드)는 시작에서 끝날 때까지 실행되며, 명확한 엔트리 포인트가 없다.


이를테면, 자바를 스크립트 언어로 규정하는 것은 일반적이지 않은데, 이는 어느 클래스들이 어느 파일에 존재하는지에 대한 길이가 긴 문법과 규칙 때문이며, 자바를 상호작용적으로 직접 실행하는 것도 불가능한데 그 까닭은 소스 파일들이 오직 호스트 애플리케이션이나 애플리케이션 런처를 사용하여 외부에서 호출되어야 하기 때문이다.


그럼 여기서 명확한 엔트리 포인트가 없다는 말은 무슨 말일까?


제어가 운영 체제에서 컴퓨터 프로그램으로 이동하는 것을 말하며, 프로세서는 프로그램이나 코드에 진입해서 실행을 시작한다. 어떤 운영체제나 프로그래밍 언어에서, 초기 엔트리는 프로그램의 한 부분이 아니라 런타임 라이브러리의 한 부분이다. 즉 런타임 라이브러리가 프로그램을 초기화하고 프로그램에 진입한다. 다른 경우에는 프로그램이 진입 직후에 바로 런타임 라이브러리를 호출하고, 이것이 반환된 후에 실제 실행을 시작한다. 이것은 로드 타임에서 런타임으로의 전환이다.

간단한 레이아웃(흔히 스크립트 언어, 간단한 바이너리 실행 파일 포맷 그리고 부트 로더)에서는 시작점에서 실행을 시작한다. 또는 상대 주소나 절대 주소가 아니라 고정된 위치에 존재한다.그 대신에 프로그램 실행은 프로그래밍 언어나 운영체제 등에 의해 정의된 관용명을 통한, 지정된 이름으로 시작될 수 있다. 많은 언어에서(특히 C) 이 지정된 이름은 main이라고 불리는 함수이다. 결과적으로 엔트리 포인트는 main 함수이라고 불린다.


간단히 이해한 바로는 흔히 사용하는 Java/C 에서 main 안에 코드를 적지 않고 실행하면 아무런 결과가 나오지 않는 것은 엔트리 포인트가 있는 것이고,

Python 처럼 따로 main ( 시작 지점 )을 정하지 않아도 코드만 쓰면 동작이 되는 것이 엔트리 포인트 ( 제어가 운영체제에서 컴퓨터 프로그램으로 이동하는 )가 없는 것으로 보인다.


대충이해는 했으나 어려우니 자료를 좀 더 찾아보았다.


스크립트 언어란 소스 코드를 컴파일 하지 않고도 실행할 수 있는 프로그래밍 언어를 말한다.

예를 들어 C나 비주얼 베이직, 자바같은 겨웅는 작성한 소스를 컴파일러를 통해 기계어 코드로 변경해야 사용자가 실행할 수 있는 실행 파일이 얻어지는데 비해 스크립트 언어는 별도의 컴파일 없이 내장된 번역기에 의해 번역 되므로 바로 실행 할 수 있다.

스크립트 언어는 소스를 작성한 후 컴파일 과정 없이 바로 실행하여 결과를 확인 할 수 있다는 장점이 있는 반면에 번역 관정을 거쳐야 하기 때문에 다소 느리다는 단점이 있다. C언어나 Java와 같은 비스크립트 언어의 경우 실행 속도가 빠른 장점이 있는 반면 컴파일 과정을 거쳐야 하는 등 개발 과정이 조금 복잡하다는 단점이 있다.


스크립트 언어는 실행시 프로그램 전체를 컴파일 하지 않고 해당 코드가 실행될 때 한 줄 한 줄 해석을 해서 실행한다.

네이버 검색을 통해서 보면 스크립트 언어는 파일을 하지 않고, 작성해서 바로 실행시킬 수 있는 언어로 컴파일 하지 않고 변수 타입을 선언하지 않는 다는 특징을 가진다고 한다.

!! Python이 후에 문제가 생기는게 이런이유로!? 소오름


스크립트 언어를 주로 사용하는 곳은 어디일까?


1. 시스템

유닉스 쉘 스크립트, 윈도우 배치 스크립트처럼 일괄 처리 작업에 사용

- 커맨드 칠 때 마다 실행되는 것을 생각하면 될 것 같다.


2. 웹 애플리케이션

일반적으로 스크립트 언어는 빠른 성능이 필요하지 않은 웹 애플리케이션을 만드는데 이용되어 왔으며, 크게 서버 사이드 스크립트와 클라이언트 사이드 스크립트로 나눌 수 있다.


A. 서버 사이드 스크립트: 해당 소스의 실행 결과를 확인하기 위해 웹 서버를 거쳐야 하는 스크립트

< ex > ASP, PHP, JSP, PYTHON, PERL, PUBY 등


B. 클라이언트 사이드 스크립트: 내장된 번역기( 인터넷 익스플로러 등 )에 의해 실행되는 스크립트로 서버를 거치지 않고 사용자쪽( 웹 서버에 접속한 PC )에서 처리되는 스크립트

< ex > JavaScript, VBScript, JScript 등



그래서 좀 더 찾아 보았더니 누가 3개의 차이점을 적어놓았다.


스크립트 언어 - 어플리케이션에 명령을 전달하기 위한 것입니다. 

예) sql, awk, 자바스크립트 등 


인터프리터 언어 - 컴파일이 된 목적물을 생산하지 않는 것입니다. 

예) gw-basic, php, perl 


컴파일 언어 - 컴파일이 된 목적물을 생산합니다. 

예) c, 파스칼 


php도 컴파일한 것을 목적물로 쏟아내게 하면 컴파일언어가 되는 것입니다. 

그리고 c도 c인터프리터라는 것이 있어서 목적물 없이 결과를 볼 수 있습니다. 


TERMS 여기 보면 다 나와여.. 


그럼 실제로 컴퓨터 언어는 컴파일 유무에 따라 컴파일/인터프리터 언어로 나뉘 그 중에 애플리케이션에 명령을 전달하기 위해 사용한 언어를 스크립트 언어.. 라고 하는 것.. 이..다? 중간단계를 놓아 제어를 담당해 주는 언어로 사용될 수 있는 언어를 스크립트 언어라고 정의하는 것 같다.

_M#]


겸이씨가 찾아준 자료를 추가하자면

프로그래밍 언어인데 그 용도가 주로 운영체제 위에서 움직이는 새로운 프로그램을 만드는 것 보다는, 기존에 존재하는 어떤 다른 프로그램들을 제어하기 위해 쓰이며 그 기존의 프로그램들 위에서 구동이 지원되는 언어들을 스크립트 언어라고 부르기로 한 것이다. 웹브라우저에서 구동이 지원되는 자바스크립트나, 플래시를 제어하기 위해 플래시에서 구동이 지원되는 액션 스크립트 등이 대표적인 스크립트 언어다. 


겸's : 만들어 놓은 프로그램들을 제어 및 조작하는 용도의 스크립트를 짜는데 용이하게 쓰이는 언어가 아닐까?


최종 적으로 정리하자면 스크립트 언어는 앞서 위키에 있는 것 처럼 조작의 용도로 사용되어지는 언어를 말한다.

예를 들어 어떤 프로그램을 만들고 나서 Python으로 그 프로그램을 조작하는 쉘 스크립트를 만드는 것과 같이 말이다.




그림을 그려보자면

왼쪽과 같이 표현할 수 있겠다.


< SCRIPT FILE > 스크립 언어 : 생성된 프로그램 조작

< PROGRAM > 컴파일/인터프리터 언어 : 프로그램생성







자세 방법은 아래의 #참조내용을 참조