검수요청.png검수요청.png

"스크립트 언어"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
잔글 (같이 보기)
잔글 (같이 보기)
 
(같은 사용자의 중간 판 11개는 보이지 않습니다)
1번째 줄: 1번째 줄:
'''스크립트 언어'''(script language)란 다른 응용 프로그램에 삽입되어서 동작하는 [[프로그래밍 언어]]이다. '''스크립트 프로그래밍 언어''' 또는 간략히 '''스크립트'''라고도 한다. 비(非)스크립트 언어인 [[C]], [[C++]], [[Java]] 등은 [[컴파일]]된 후 독립적으로 작동하는 하나의 완전한 응용 프로그램이지만, [[Javascript]], [[jQuery]], [[JSP]], [[PHP]], [[ASP]], [[Perl]], [[Python]], [[Ruby]], [[VBScript]] 등의 스크립트 언어는 다른 응용 프로그램 안에 삽입되어 해석되는 방식으로 작동한다.
+
'''스크립트 언어'''(script language)란 다른 응용 프로그램에 삽입되어서 동작하는 [[프로그래밍 언어]]이다. '''스크립트 프로그래밍 언어''' 또는 간략히 '''스크립트'''라고도 한다. 비(非)스크립트 언어인 [[C 언어|C]], [[C++]], [[Java]] 등은 [[컴파일]]된 후 독립적으로 작동하는 하나의 완전한 응용 프로그램이지만, [[자바스크립트|자바스크립트(Javascript)]], [[제이쿼리|제이쿼리(jQuery)]], [[JSP]], [[PHP]], [[ASP]], [[펄|펄(Perl)]], [[파이썬|파이썬(Python)]], [[루비|루비(Ruby)]], [[브이비스크립트|브이비스크립트(VBScript)]] 등의 스크립트 언어는 다른 응용 프로그램 안에 삽입되어 해석되는 방식으로 작동한다.
 +
 
 +
== 개요 ==
 +
컴퓨터 프로그래밍에서의 스크립트란 (컴퓨터 프로세서가 아닌) 다른 프로그램에 의해 번역되거나 수행되는 프로그램이나 명령어들의 나열을 말한다. 몇몇 언어들은 명백히 스크립트 언어로 이해되어 왔는데, 그중에서도 비교적 유명한 것들로는 Perl, 자바스크립트, IBM 메인프레임에서 사용되는 REXX, 그리고 Tcl/Tk 등이 있다. 월드와이드웹에서의 이용을 생각해보면, Perl이나 자바 스크립트 등과 같은 스크립트 언어들은 웹 사이트의 입력 폼이나 기타 다른 서비스를 제공하기 위해 종종 사용되며, 웹 서버에 의해 처리된다. 웹 페이지 내에 포함된 자바스크립트는 웹 브라우저, 즉 클라이언트 측에서 수행된다. 일반적으로 스크립트 언어들은 더 구조적이며 컴파일이 필요한 C 나 C++과 같은 언어들에 비해 쉬우며 빠르게 작성할 수 있어서, 매우 제한된 능력을 갖춘 프로그램이나 컴파일된 기존 프로그램과 연결하여 재사용될 수 있는 프로그램들을 만드는데 가장 적당하다. 그러나, 스크립트는 컴파일된 프로그램보다 실행 시간이 오래 걸리는데, 그 이유는 모든 명령어가 기본 명령어 처리기에 의해 직접 처리되지 못하고, 우선 다른 프로그램에 의해 전처리가 필요하기 때문이다.
 +
 
 +
스크립트는 때로, 명령들이 파일 내에 미리 저장되어 있다가 파일 이름을 마치 하나의 명령처럼 입력했을 때, 운영체계의 명령어 인터프리터에 의해 파일 내의 내용이 차례로 수행되는 명령 목록을 의미하는 것으로 사용되는 경우도 있다(MS-DOS의 배치파일이 그 예이다).  
  
 
== 종류 ==
 
== 종류 ==
* '''[[자바스크립트]]'''(JavaScript) : 미국 [[넷스케이프]](Netscape)의 [[브렌던 아이크]](Brendan Eich)가 개발한 스크립트 프로그래밍 언어이다. 약칭 JS라고도 쓴다. 자바스크립트는 표준 [[HTML]] 문서 내에 삽입되어 사용되며, 인터랙티브한 웹 페이지를 만들 수 있게 한다. [[자바]](Java) 언어와 이름은 비슷해도, 기능상 아무런 관련이 없다.
+
* '''[[자바스크립트]]'''(JavaScript) : 미국 [[넷스케이프]](Netscape)의 [[브렌든 아이크]](Brendan Eich)가 개발한 스크립트 프로그래밍 언어이다. 약칭 JS라고도 쓴다. 자바스크립트는 표준 [[HTML]] 문서 내에 삽입되어 사용되며, 인터랙티브한 웹 페이지를 만들 수 있게 한다. [[자바]](Java) 언어와 이름은 비슷해도, 기능상 아무런 관련이 없다.
 
* '''[[제이쿼리]]'''(jQuery) : [[HTML]] 문서에 삽입하여 사용할 수 있는 [[자바스크립트]] [[라이브러리]]를 말한다.
 
* '''[[제이쿼리]]'''(jQuery) : [[HTML]] 문서에 삽입하여 사용할 수 있는 [[자바스크립트]] [[라이브러리]]를 말한다.
* '''[[JSP]]''' : '제이에스피'는 자바 서버 페이지(JavaServer Pages)의 약자로서, [[HTML]] 페이지 안에 [[자바]](Java) 코드를 직접 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 [[웹 브라우저]]가 표현할 수 있도록 전달해 주는 스크립트 [[프로그래밍 언어]]이다. 미국 [[썬 마이크로시스템즈]]가 처음 개발했고 2010년 [[오라클]]에 인수되었다. [[HTML]] 문서 안에 <% ... %> 기호를 쓰고, 그 안에 자바 코드를 삽입하는 방식으로 사용한다.
+
* '''[[JSP]]''' : '제이에스피'는 자바 서버 페이지(JavaServer Pages)의 약자로서, [[HTML]] 페이지 안에 [[자바]](Java) 코드를 직접 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 [[웹브라우저]]가 표현할 수 있도록 전달해 주는 스크립트 [[프로그래밍 언어]]이다. 미국 [[썬 마이크로시스템즈]]가 처음 개발했고 2010년 [[오라클 (회사)|오라클]]에 인수되었다. [[HTML]] 문서 안에 <% ... %> 기호를 쓰고, 그 안에 자바 코드를 삽입하는 방식으로 사용한다.
* '''[[PHP]]''' : '피에이치피'는 [[HTML]] 문서 안에 포함하여 작동하는 서버 측 스크립트 프로그래밍 언어이다. 1994년 [[라스무스 러도프]](Rasmus Lerdorf)가 개발했다. 원래 Personal Home Page의 약자였으나, 나중에 “PHP: Hypertext Preprocessor”의 약자(backronym)라고 설명되었다. [[리눅스]] 운영체제에 [[아파치]] 웹서버를 설치하고 [[MySQL]] DB 환경에서 PHP 프로그래밍 언어가 주로 사용되기 때문에 [[LAMP]]라는 말이 생겼다.
+
* '''[[PHP]]''' : '피에이치피'는 [[HTML]] 문서 안에 포함하여 작동하는 서버 측 스크립트 프로그래밍 언어이다. 1994년 [[라스무스 러도프]](Rasmus Lerdorf)가 개발했다. 원래 Personal Home Page의 약자였으나, 나중에 “PHP: Hypertext Preprocessor”의 약자(backronym)라고 설명되었다. [[리눅스]] 운영체제에 [[아파치]] 웹서버를 설치하고 [[마이에스큐엘]](MySQL) DB 환경에서 PHP 프로그래밍 언어가 주로 사용되기 때문에 [[LAMP]]라는 말이 생겼다.
* '''[[ASP]]''' : '에이에스피'는 Active Server Pages의 약자로서, 미국 [[마이크로소프트]]의 [[윈도]] 서버에서 운영되는 스크립트 방식의 웹 프로그래밍 언어이다.
+
* '''[[ASP]]''' : '에이에스피'는 Active Server Pages의 약자로서, 미국 [[마이크로소프트]]의 [[윈도우]] 서버에서 운영되는 스크립트 방식의 웹 프로그래밍 언어이다.
 
* '''[[펄]]'''(Perl) : Practical Extraction and Report Language의 약자로서, [[유닉스]] 계열의 운영체제에서 사용하는 스크립트 프로그래밍 언어이다. 1987년 [[래리 월]](Larry Wall)이 개발하였다. 펄의 마스코트는 낙타이다.
 
* '''[[펄]]'''(Perl) : Practical Extraction and Report Language의 약자로서, [[유닉스]] 계열의 운영체제에서 사용하는 스크립트 프로그래밍 언어이다. 1987년 [[래리 월]](Larry Wall)이 개발하였다. 펄의 마스코트는 낙타이다.
* '''[[파이썬]]'''(Python) : 1990년 [[네덜란드]] [[암스텔담]]의 [[귀도 반 로썸]](Guido van Rossum)이 개발한 객체 지향 스크립트 프로그래밍 언어이다. 별도의 [[컴파일]] 과정이 필요 없어 개발기간이 단축되고, [[리눅스]]나 [[윈도]] 등 특정 [[플랫폼]]에 의존적이지 않고 독립적이다. 주로 [[장고]](Django) [[프레임워크]] 기반으로 개발한다.
+
* '''[[파이썬]]'''(Python) : 1990년 [[네덜란드]] [[암스텔담]]의 [[귀도 반 로썸]](Guido van Rossum)이 개발한 객체 지향 스크립트 프로그래밍 언어이다. 별도의 [[컴파일]] 과정이 필요 없어 개발기간이 단축되고, [[리눅스]]나 [[윈도우]] 등 특정 [[플랫폼]]에 의존적이지 않고 독립적이다. 주로 [[장고]](Django) [[프레임워크]] 기반으로 개발한다.
 
* '''[[루비]]'''(Ruby) : 1995년 일본의 [[마츠모토 유키히로]](まつもとゆきひろ)가 만든 객체 지향 스크립트 프로그래밍 언어이다. 루비는 보석 이름에서 따온 말이다. [[파이썬]](Python)과 유사하다. [[깃허브]](GitHub) 사이트는 루비 언어를 사용하여 개발되었다.
 
* '''[[루비]]'''(Ruby) : 1995년 일본의 [[마츠모토 유키히로]](まつもとゆきひろ)가 만든 객체 지향 스크립트 프로그래밍 언어이다. 루비는 보석 이름에서 따온 말이다. [[파이썬]](Python)과 유사하다. [[깃허브]](GitHub) 사이트는 루비 언어를 사용하여 개발되었다.
* '''[[VBScript]]''' : '브이비스크립트'는 Visual Basic Scripting Edition의 약자로서, 미국 [[마이크로소프트]] [[비주얼 베이직]](Visual Basic) 기반의 스크립트 프로그래밍 언어이다.
+
* '''[[브이비스크립트]]'''(VBScript) : Visual Basic Scripting Edition의 약자로서, 미국 [[마이크로소프트]] [[비주얼베이직]](Visual Basic) 기반의 스크립트 프로그래밍 언어이다.
 +
 
 +
== 특징 ==
 +
[[월드와이드웹]]에서 펄(Perl)이나 자바스크립트 등과 같은 스크립트 언어들은 웹사이트의 입력 폼이나 다른 서비스를 제공하기 위해 종종 사용되며, 웹서버에 의해 처리되는데,  웹 페이지 내에 포함된 자바스크립트는 웹 브라우저, 즉 클라이언트 측에서 수행된다. 일반적으로 스크립트 언어들은 더 구조적이며 컴파일이 필요한 C 나 C++과 같은 언어들에 비해 쉬우며 빠르게 작성할 수 있어서, 매우 제한된 능력을 갖춘 프로그램이나 컴파일된 기존 프로그램과 연결하여 재사용될 수 있는 프로그램들을 만드는데 가장 적당하다. 그러나, 스크립트는 컴파일된 프로그램보다 실행 시간이 오래 걸리는데, 그 이유는 모든 명령어가 기본 명령어 처리기에 의해 직접 처리되지 못하고, 우선 다른 프로그램에 의해 전처리가 필요하기 때문이며, 스크립트는 때로, 명령들이 파일 내에 미리 저장되어 있다가 파일 이름을 마치 하나의 명령처럼 입력했을 때, 운영체계의 명령어 인터프리터에 의해 파일 내의 내용이 차례로 수행되는 명령 목록을 의미하는 것으로 사용되는 경우도 있다.<ref name="움">움헬켈, 〈[https://tip.daum.net/question/50211692 스크립트에 대해서 잘 설명이 되어있는 것이 있네요.]〉,《다음팁》, 2007-11-06 </ref>
 +
 
 +
* '''[[스크립트 알고리즘]]'''(script algorithm) : [[채굴]] 알고리즘의 일종이다.
 +
 
 +
* '''[[REXX]](REstructured eXtended eXecutor)'''
 +
: IBM사가 개발한 해석 프로그래밍 언어이다. 배우기 쉬울 뿐 아니라 읽기도 쉬운, 구조화된 고급 프로그래밍 언어로 스크립트 및 매크로 언어로 사용되며 데이터와 텍스트를 처리하고 보고서를 만드는 목적으로 종종 사용된다. 펄과 유사성이 있는데, REXX는 공통 게이트웨이 인터페이스(CGI) 프로그래밍과 잘 맞으며 실제로 이 목적을 위해 사용된다. REXX의 기능으로는 문자열 기반 동적 자료형, 예약어 없고 로컬 환경은 제외되며, 다배장 정수, 부동 소수점, 자체 함수의 고급 선택, 기억 자료 자동 관리, 충돌 보호, 연상 배열, 시스템 명령과 기능에 직접 접근, 단순 오류 관리, 자체 추적 및 오류 정정, 인간의 제한이 거의 없고, 단순화된 입출력 기능 등이 있다.
 +
X = 'input BYE to quit'
 +
do until X = 'BYE' ; interpret 'say' X ; pull X ; end
 +
 
 +
* '''[[펄]](Perl)'''
 +
: 펄(Perl)은 동적 타입의 고수준, (인터프리트되는) 스크립트 언어로 PHP와 파이선(Python)과 많이 비교되곤 한다. 펄의 구문은 예전의 셀 스크립트 (shell script)로부터 많이 따왔다. 그래서 구글로 검색하기 어려운 헷갈리기 쉬운 기호들을 많이 사용하는 것으로도 유명하다. 셀 스크립트로부터 기원한 까닭에 펄은 다른 스크립트나 프로그램을 엮어주는 글루 코드(glue code)를 만드는 데 아주 좋다. 텍스트 데이터를 처리하거나 생성하는데 펄은 안성맞춤이다. 펄은 널리 사용되고 있으며 인기도 많으며, 이식성도 좋고 지원도 잘되고 있다.
 +
 
 +
* '''Tcl/Tk'''
 +
: Tcl/Tk는 프로그래밍 언어이며, C나 자바에 비하면 상당히 쉬운 대표적인 스크립트 언어 중의 하나로, 많이 쓰이는 스크립트 언어 속에서 Tcl/Tk를 돋보이게 하는 것은 GUI(Graphical User Interface) 베이스의 애플리케이션을 간단하게 작성할 수 있는 언어이고, 윈도우즈의 메모장 같은 텍스트 에디터를 열어서 몇십 줄의 코드를 쓰는 것으로, 화려한 GUI 애플리케이션을 손쉽게 제작할 수 있으며, Java 등의 GUI에 비교하면 훨씬 간단하게 제작할 수 있다. 또한, 파일 조작, 스트링 조작 등 프로그램 개발에 꼭 필요한 기능도 충실히 지원하고 있어 재빠르게 개발하는데 적합한 언어이다. Tcl/Tk의 Tcl은 Tcl/Tk의 인터프리터의 핵심이 되는 부분으로 원래는 버클리대학에 있던 개발자 J.K Ousterhout 박사는, 집적회로의 설계 툴에 사용되던 스크립트 언어가 다른 툴에 의해 전혀 개선 될 수 없다고 생각하여, 확장성이 높은 인터프리터 형 언어를 개발하게 되었고, Tcl은 확장성이 높은 언어로 개발되었지만, 최초부터 현재 이르기까지 최대의 확장 라이브러리 세트는 TK 이다. Ousterhout 박사는 유닉스 계산기의 GUI 애플리케이션을 작성하는데 Tcl이 적합 하는 것을 알아차려, GUI 베이스의 계산기를 Tcl/Tk로 개발하게 되었다.<ref> Drupal, 〈[http://tcltk.co.kr/node/1 Tcl/Tk란?]〉,《Korea Tcl/Tk Community》, 2008-01-27 </ref>
 +
 
 +
* '''[[유닉스]](UNIX)'''
 +
 
 +
* '''유닉스 특성'''
 +
# 시분할 시스템(Time Sharing System)을 위해 설계된 대화식 운영체제로, 소스가 공개된 개방형 시스템이다.
 +
# 대부분 C언어로 작성되어 있어 이식성이 높으며 장치, 프로세스 간의 호환성이 높다.
 +
# 크기가 작고 이해하기가 쉽다.
 +
# 다중 사용자, 다중 작업을 지원한다.
 +
# 많은 네트워킹 기능을 제공하므로 통신망 관리용 운영체제로 적합하다.
 +
# 트리구조의 파일 시스템을 가지고 있다.
 +
# 전문적인 프로그램 개발에 용이하다.
 +
# 다양한 유틸리티 프로그램들이 존재한다.
 +
 
 +
* '''유닉스 시스템구성'''
 +
[[파일:유닉스 시스템 구성.PNG|600픽셀|'''유닉스 시스템 구성''']]
 +
: '''커널(Knernel)'''
 +
: Unix의 가장 핵심적인 부분으로, 컴퓨터가 부팅될 때 주기억장치에 적재된 후 상주되면서 실행된다. 하드웨어를 보호하고 프로그램과 하드웨어 간의 인터페이스 역할을 담당하며 프로세스(CPU 스케줄링)관리, 기억장치 관리, 파일관리, 입출력 관리, 프로세스간 통신, 데이터 전송 및 변환 등 여러가지 기능을 수행한다.
 +
: '''쉘(Shell)'''
 +
: 사용자의 명령어를 인식하여 프로그램을 호출하고 명령을 수행하는 명령어해석기 로 시스템과 사용자간의 인터페이스를 담당하며 주기억장치에 상주하지 않고, 명령어가 포함된 파일 형태로 존재하며 보조기억장치에서 교체처리가 가능하며, 파이프라인 기능을 지원하고 입출력 재지정을 통해 출력과 입력의 방향을 변경할 수 있고, 자신이 만든 Shell을 사용할 수도 있다.
 +
: '''유틸리티 프로그램(Utility Program)'''
 +
: 일반 사용자가 작성한 응용프로그램을 처리하는데 사용되며, Dos에서의 외부 명령어에 해당하며 유틸리티 프로그램에는 에디터, 컴파일러, 인터프리터, 디버거 등이 있다.
 +
 
 +
* '''[[스크립트 언어]]'''
 +
: 스크립트 언어(script language)는 다른 응용 프로그램에 삽입되어서 동작하는 [[프로그래밍 언어]] 로 소스 코드를 컴파일(Compile)하지 않고도 실행할 수 있는 프로그래밍 언어를 말한다. 예를 들어 C나 비주얼베이직, 자바 같은 경우는 작성한 소스를 컴파일러를 통해 기계어 코드로 변경해야 사용자가 실행할 수 있는 실행 파일이 얻어진 데 비해 스크립트 언어는 별도의 컴파일 없이 내장된 번역기에 의해 번역되므로 바로 실행 할 수 있다.<ref>JOKERGT, 〈[https://jokergt.tistory.com/81 스크립트 언어란?]〉,《티스토리》, 2012-05-23 </ref>
 +
 
 +
* '''스크립트 언어의 사용처'''
 +
# '''시스템에 사용''' : 유닉스의 쉘(Shell) 스크립트, 윈도우의 배치(Batch) 스크립트처럼 일괄 처리 작업에 사용된다.
 +
# '''웹 어플리케이션에 사용'''
 +
: 일반적으로 스크립트 언어는 빠른 성능이 필요하지 않은 웹 애플리케이션을 만드는 데 이용되어 왔으며, 크게 서버 사이드 스크립트(server-side-script)와 클라이언트 사이드 스크립트(client-side-script)로 나눌 수 있다. 해당 소스의 실행 결과를 확인하기 위해 웹서버를 거쳐야 하는 스크립트를 서버 사이드 스크립트(server-side-script)라 말하며, ASP, PHP, JSP, PYTHON, PERL, RUBY 등이 있다. 내장된 번역기(인터넷 익스플로러 등)에 의해 실행되는 스크립트로 서버를 거치지 않고 사용자 쪽(웹서버에 접속한 PC)에서 처리되는 스크립트를 클라이언트 사이드 스크립트(client-side-script) 라말하며, JavaScript, VB Script, JScript등이 있다.
 +
 
 +
* '''[[자바스크립트]]'''
 +
: 자바스크립트를 한마디로 요약하자면 웹을 풍부하게 만들어주는 작고 가벼운 언어이다. 미국의 넷스케이프 커뮤니케이션즈사(Netscape Communications)가 개발한 스크립트 언어이며. 웹 브라우저에서 실행하는 스크립트 언어를 기술이고, 작고도 빠르기 때문에 웹문서를 동적으로 꾸밀 때 가장 널리 쓰인다. 언어 규격은 자바의 부분 집합(subset)으로 되어 있고, 하이퍼텍스트 생성 언어(HTML) 문서를 작성하는 수준의 사용자가 사용하는 것을 주안점으로 하여 자바의 언어 규격으로부터 변수의 형(정수형이나 문자열형 등)을 생략하거나 새로운 클래스 정의를 할 수 없도록 하였다. 스크립트는 HTML 문서 속에 직접 기술하며, 프로그래밍 입문자들은 자바스크립트와 자바가 서로 비슷한 기술이라고 생각하지만 두 언어 모두 자바라는 언어를 기반으로 하고 있기 때문에 자바스크립트는 자바와는 다른점이 상당히 많으며, 기능과 사용법까지 완전히 다릅니다.
 +
:{|class=wikitable width=600 style="background-color:#ffffee"
 +
|+<big>'''Java와 비교한 JavaScrip'''</big>
 +
!align=center style="background-color:#ffeecc"|Java
 +
!align=center style="background-color:#ffeecc"|JavaScrip
 +
|-
 +
|align=center|객체 지향으로 객체의 형 간에 차이가 없고, 프로토타입 메커니즘을 통한 상속과 속성과 메서 드는 어떤 객체든 동적으로 추가될 수 있음.
 +
|align=center|클래스 기반으로 객체는 클래스 계층구조를 통한 모든 상속과 함께 클래스와 인스턴스로 나뉘며, 클래스와 인스턴스는 동적으로 추가된 속성이나 메소드를 가질 수 없다.
 +
|-
 +
|align=center|변수 자료형이 선언되지 않는다. (동적 형 지정, dynamic typing)
 +
|align=center|변수 자료형은 반드시 선언되어야 한다. (정적 형 지정, static typing)
 +
|-
 +
|align=center|하드 디스크에 자동으로 작성 불가.
 +
|align=center|하드디스크에 자동으로 작성 가능.
 +
|}
 +
 
 +
* '''자바스크립트 특징'''
 +
# JavaScript는 객체 기반의 언어이지만 상속과 클래스라는 개념은 없다.
 +
# JavaScript는 인터프리터 언어로서 클라이언트의 웹 브라우저에 의해 해석되고 실행된다.
 +
# JavaScript는 HTML 문서 내에 기술되고 HTML 문서와 함께 수행된다.
 +
# JavaScript는 HTML에 연산 제어 등 프로그래밍적인 요소를 추가하고 클라이언트의 자원을 활용할 수 있게 한다.
 +
 
 +
* '''자바스크립트 장점'''
 +
: 자바스크립트는 컴파일 과정이 없기 때문에 다른 언어와 비교했을 때 빠른 시간 안에 스크립트 코드를 작성할 수 있게 도와주는데. 기존 C나 자바 언어와 달리 굉장히 단순한 구조와 원칙을 가지고 있기 때문에 초보 개발자들이 쉽게 배우고 이해할 수 있다. 예를 들어 자바스크립트 코드 안에서는 변수, 클래스 및 메소드를 선언하지 않아도 되고, 메소드가 'public', 'private' 또는 'protected'인지 구분하지 않아도 되고, 자바스크립트는 웹에 특화된 기술이기 때문에 운영체제나 플랫폼에 상관없이 잘 작동되고 확장성도 높다.
 +
 
 +
* '''자바스크립트 단점'''
 +
: 단점은 성능이나 보안 측면으로 일단 내부에서 제공되는 기능이 제한적이고, 관련된 개발도구도 적은 편이며, 자바스크립트는 HTML 소스 코드에 함께 작성되면서 소스 코드가 외부로 공개되는데, 이 과정에서 보안 취약점이 발생할 수 있다.
 +
 
 +
{{각주}}
 +
 
 +
== 참고자료 ==
 +
* 텀즈 공식 홈페이지 - 〈http://www.terms.co.kr/script.htm〉
 +
* 〈[http://a.to/19Qu9aq 스크립트]〉《위키백과》
 +
* 코딩팩토리, 〈[https://coding-factory.tistory.com/193 자바스크립트란 무엇인가?]〉,《티스토리》, 2018-07-01
 +
* JOKERGT, 〈[https://jokergt.tistory.com/81 스크립트 언어란?]〉,《티스토리》, 2012-05-23
 +
* 코딩팩토리, 〈[https://coding-factory.tistory.com/315 UNIX란 무엇인가?]〉,《티스토리》, 2019-02-13
  
 
== 같이 보기 ==
 
== 같이 보기 ==
 +
* [[스크립트 알고리즘]]
 
* [[프로그램]]
 
* [[프로그램]]
 
* [[프로그래밍 언어]]
 
* [[프로그래밍 언어]]
 
* [[객체 지향 프로그래밍]]
 
* [[객체 지향 프로그래밍]]
* [[소프트웨어]]
+
* [[스크립트]]
  
[[분류:프로그래밍 언어]]
+
{{프로그래밍 언어|검토 필요}}
 +
[[분류:스크립트 언어]]

2021년 12월 19일 (일) 01:19 기준 최신판

스크립트 언어(script language)란 다른 응용 프로그램에 삽입되어서 동작하는 프로그래밍 언어이다. 스크립트 프로그래밍 언어 또는 간략히 스크립트라고도 한다. 비(非)스크립트 언어인 C, C++, Java 등은 컴파일된 후 독립적으로 작동하는 하나의 완전한 응용 프로그램이지만, 자바스크립트(Javascript), 제이쿼리(jQuery), JSP, PHP, ASP, 펄(Perl), 파이썬(Python), 루비(Ruby), 브이비스크립트(VBScript) 등의 스크립트 언어는 다른 응용 프로그램 안에 삽입되어 해석되는 방식으로 작동한다.

개요[편집]

컴퓨터 프로그래밍에서의 스크립트란 (컴퓨터 프로세서가 아닌) 다른 프로그램에 의해 번역되거나 수행되는 프로그램이나 명령어들의 나열을 말한다. 몇몇 언어들은 명백히 스크립트 언어로 이해되어 왔는데, 그중에서도 비교적 유명한 것들로는 Perl, 자바스크립트, IBM 메인프레임에서 사용되는 REXX, 그리고 Tcl/Tk 등이 있다. 월드와이드웹에서의 이용을 생각해보면, Perl이나 자바 스크립트 등과 같은 스크립트 언어들은 웹 사이트의 입력 폼이나 기타 다른 서비스를 제공하기 위해 종종 사용되며, 웹 서버에 의해 처리된다. 웹 페이지 내에 포함된 자바스크립트는 웹 브라우저, 즉 클라이언트 측에서 수행된다. 일반적으로 스크립트 언어들은 더 구조적이며 컴파일이 필요한 C 나 C++과 같은 언어들에 비해 쉬우며 빠르게 작성할 수 있어서, 매우 제한된 능력을 갖춘 프로그램이나 컴파일된 기존 프로그램과 연결하여 재사용될 수 있는 프로그램들을 만드는데 가장 적당하다. 그러나, 스크립트는 컴파일된 프로그램보다 실행 시간이 오래 걸리는데, 그 이유는 모든 명령어가 기본 명령어 처리기에 의해 직접 처리되지 못하고, 우선 다른 프로그램에 의해 전처리가 필요하기 때문이다.

스크립트는 때로, 명령들이 파일 내에 미리 저장되어 있다가 파일 이름을 마치 하나의 명령처럼 입력했을 때, 운영체계의 명령어 인터프리터에 의해 파일 내의 내용이 차례로 수행되는 명령 목록을 의미하는 것으로 사용되는 경우도 있다(MS-DOS의 배치파일이 그 예이다).

종류[편집]

  • 자바스크립트(JavaScript) : 미국 넷스케이프(Netscape)의 브렌든 아이크(Brendan Eich)가 개발한 스크립트 프로그래밍 언어이다. 약칭 JS라고도 쓴다. 자바스크립트는 표준 HTML 문서 내에 삽입되어 사용되며, 인터랙티브한 웹 페이지를 만들 수 있게 한다. 자바(Java) 언어와 이름은 비슷해도, 기능상 아무런 관련이 없다.
  • 제이쿼리(jQuery) : HTML 문서에 삽입하여 사용할 수 있는 자바스크립트 라이브러리를 말한다.
  • JSP : '제이에스피'는 자바 서버 페이지(JavaServer Pages)의 약자로서, HTML 페이지 안에 자바(Java) 코드를 직접 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹브라우저가 표현할 수 있도록 전달해 주는 스크립트 프로그래밍 언어이다. 미국 썬 마이크로시스템즈가 처음 개발했고 2010년 오라클에 인수되었다. HTML 문서 안에 <% ... %> 기호를 쓰고, 그 안에 자바 코드를 삽입하는 방식으로 사용한다.
  • PHP : '피에이치피'는 HTML 문서 안에 포함하여 작동하는 서버 측 스크립트 프로그래밍 언어이다. 1994년 라스무스 러도프(Rasmus Lerdorf)가 개발했다. 원래 Personal Home Page의 약자였으나, 나중에 “PHP: Hypertext Preprocessor”의 약자(backronym)라고 설명되었다. 리눅스 운영체제에 아파치 웹서버를 설치하고 마이에스큐엘(MySQL) DB 환경에서 PHP 프로그래밍 언어가 주로 사용되기 때문에 LAMP라는 말이 생겼다.
  • ASP : '에이에스피'는 Active Server Pages의 약자로서, 미국 마이크로소프트윈도우 서버에서 운영되는 스크립트 방식의 웹 프로그래밍 언어이다.
  • (Perl) : Practical Extraction and Report Language의 약자로서, 유닉스 계열의 운영체제에서 사용하는 스크립트 프로그래밍 언어이다. 1987년 래리 월(Larry Wall)이 개발하였다. 펄의 마스코트는 낙타이다.
  • 파이썬(Python) : 1990년 네덜란드 암스텔담귀도 반 로썸(Guido van Rossum)이 개발한 객체 지향 스크립트 프로그래밍 언어이다. 별도의 컴파일 과정이 필요 없어 개발기간이 단축되고, 리눅스윈도우 등 특정 플랫폼에 의존적이지 않고 독립적이다. 주로 장고(Django) 프레임워크 기반으로 개발한다.
  • 루비(Ruby) : 1995년 일본의 마츠모토 유키히로(まつもとゆきひろ)가 만든 객체 지향 스크립트 프로그래밍 언어이다. 루비는 보석 이름에서 따온 말이다. 파이썬(Python)과 유사하다. 깃허브(GitHub) 사이트는 루비 언어를 사용하여 개발되었다.
  • 브이비스크립트(VBScript) : Visual Basic Scripting Edition의 약자로서, 미국 마이크로소프트 비주얼베이직(Visual Basic) 기반의 스크립트 프로그래밍 언어이다.

특징[편집]

월드와이드웹에서 펄(Perl)이나 자바스크립트 등과 같은 스크립트 언어들은 웹사이트의 입력 폼이나 다른 서비스를 제공하기 위해 종종 사용되며, 웹서버에 의해 처리되는데, 웹 페이지 내에 포함된 자바스크립트는 웹 브라우저, 즉 클라이언트 측에서 수행된다. 일반적으로 스크립트 언어들은 더 구조적이며 컴파일이 필요한 C 나 C++과 같은 언어들에 비해 쉬우며 빠르게 작성할 수 있어서, 매우 제한된 능력을 갖춘 프로그램이나 컴파일된 기존 프로그램과 연결하여 재사용될 수 있는 프로그램들을 만드는데 가장 적당하다. 그러나, 스크립트는 컴파일된 프로그램보다 실행 시간이 오래 걸리는데, 그 이유는 모든 명령어가 기본 명령어 처리기에 의해 직접 처리되지 못하고, 우선 다른 프로그램에 의해 전처리가 필요하기 때문이며, 스크립트는 때로, 명령들이 파일 내에 미리 저장되어 있다가 파일 이름을 마치 하나의 명령처럼 입력했을 때, 운영체계의 명령어 인터프리터에 의해 파일 내의 내용이 차례로 수행되는 명령 목록을 의미하는 것으로 사용되는 경우도 있다.[1]

  • REXX(REstructured eXtended eXecutor)
IBM사가 개발한 해석 프로그래밍 언어이다. 배우기 쉬울 뿐 아니라 읽기도 쉬운, 구조화된 고급 프로그래밍 언어로 스크립트 및 매크로 언어로 사용되며 데이터와 텍스트를 처리하고 보고서를 만드는 목적으로 종종 사용된다. 펄과 유사성이 있는데, REXX는 공통 게이트웨이 인터페이스(CGI) 프로그래밍과 잘 맞으며 실제로 이 목적을 위해 사용된다. REXX의 기능으로는 문자열 기반 동적 자료형, 예약어 없고 로컬 환경은 제외되며, 다배장 정수, 부동 소수점, 자체 함수의 고급 선택, 기억 자료 자동 관리, 충돌 보호, 연상 배열, 시스템 명령과 기능에 직접 접근, 단순 오류 관리, 자체 추적 및 오류 정정, 인간의 제한이 거의 없고, 단순화된 입출력 기능 등이 있다.
X = 'input BYE to quit'
do until X = 'BYE' ; interpret 'say' X ; pull X ; end
펄(Perl)은 동적 타입의 고수준, (인터프리트되는) 스크립트 언어로 PHP와 파이선(Python)과 많이 비교되곤 한다. 펄의 구문은 예전의 셀 스크립트 (shell script)로부터 많이 따왔다. 그래서 구글로 검색하기 어려운 헷갈리기 쉬운 기호들을 많이 사용하는 것으로도 유명하다. 셀 스크립트로부터 기원한 까닭에 펄은 다른 스크립트나 프로그램을 엮어주는 글루 코드(glue code)를 만드는 데 아주 좋다. 텍스트 데이터를 처리하거나 생성하는데 펄은 안성맞춤이다. 펄은 널리 사용되고 있으며 인기도 많으며, 이식성도 좋고 지원도 잘되고 있다.
  • Tcl/Tk
Tcl/Tk는 프로그래밍 언어이며, C나 자바에 비하면 상당히 쉬운 대표적인 스크립트 언어 중의 하나로, 많이 쓰이는 스크립트 언어 속에서 Tcl/Tk를 돋보이게 하는 것은 GUI(Graphical User Interface) 베이스의 애플리케이션을 간단하게 작성할 수 있는 언어이고, 윈도우즈의 메모장 같은 텍스트 에디터를 열어서 몇십 줄의 코드를 쓰는 것으로, 화려한 GUI 애플리케이션을 손쉽게 제작할 수 있으며, Java 등의 GUI에 비교하면 훨씬 간단하게 제작할 수 있다. 또한, 파일 조작, 스트링 조작 등 프로그램 개발에 꼭 필요한 기능도 충실히 지원하고 있어 재빠르게 개발하는데 적합한 언어이다. Tcl/Tk의 Tcl은 Tcl/Tk의 인터프리터의 핵심이 되는 부분으로 원래는 버클리대학에 있던 개발자 J.K Ousterhout 박사는, 집적회로의 설계 툴에 사용되던 스크립트 언어가 다른 툴에 의해 전혀 개선 될 수 없다고 생각하여, 확장성이 높은 인터프리터 형 언어를 개발하게 되었고, Tcl은 확장성이 높은 언어로 개발되었지만, 최초부터 현재 이르기까지 최대의 확장 라이브러리 세트는 TK 이다. Ousterhout 박사는 유닉스 계산기의 GUI 애플리케이션을 작성하는데 Tcl이 적합 하는 것을 알아차려, GUI 베이스의 계산기를 Tcl/Tk로 개발하게 되었다.[2]
  • 유닉스 특성
  1. 시분할 시스템(Time Sharing System)을 위해 설계된 대화식 운영체제로, 소스가 공개된 개방형 시스템이다.
  2. 대부분 C언어로 작성되어 있어 이식성이 높으며 장치, 프로세스 간의 호환성이 높다.
  3. 크기가 작고 이해하기가 쉽다.
  4. 다중 사용자, 다중 작업을 지원한다.
  5. 많은 네트워킹 기능을 제공하므로 통신망 관리용 운영체제로 적합하다.
  6. 트리구조의 파일 시스템을 가지고 있다.
  7. 전문적인 프로그램 개발에 용이하다.
  8. 다양한 유틸리티 프로그램들이 존재한다.
  • 유닉스 시스템구성

유닉스 시스템 구성

커널(Knernel)
Unix의 가장 핵심적인 부분으로, 컴퓨터가 부팅될 때 주기억장치에 적재된 후 상주되면서 실행된다. 하드웨어를 보호하고 프로그램과 하드웨어 간의 인터페이스 역할을 담당하며 프로세스(CPU 스케줄링)관리, 기억장치 관리, 파일관리, 입출력 관리, 프로세스간 통신, 데이터 전송 및 변환 등 여러가지 기능을 수행한다.
쉘(Shell)
사용자의 명령어를 인식하여 프로그램을 호출하고 명령을 수행하는 명령어해석기 로 시스템과 사용자간의 인터페이스를 담당하며 주기억장치에 상주하지 않고, 명령어가 포함된 파일 형태로 존재하며 보조기억장치에서 교체처리가 가능하며, 파이프라인 기능을 지원하고 입출력 재지정을 통해 출력과 입력의 방향을 변경할 수 있고, 자신이 만든 Shell을 사용할 수도 있다.
유틸리티 프로그램(Utility Program)
일반 사용자가 작성한 응용프로그램을 처리하는데 사용되며, Dos에서의 외부 명령어에 해당하며 유틸리티 프로그램에는 에디터, 컴파일러, 인터프리터, 디버거 등이 있다.
스크립트 언어(script language)는 다른 응용 프로그램에 삽입되어서 동작하는 프로그래밍 언어 로 소스 코드를 컴파일(Compile)하지 않고도 실행할 수 있는 프로그래밍 언어를 말한다. 예를 들어 C나 비주얼베이직, 자바 같은 경우는 작성한 소스를 컴파일러를 통해 기계어 코드로 변경해야 사용자가 실행할 수 있는 실행 파일이 얻어진 데 비해 스크립트 언어는 별도의 컴파일 없이 내장된 번역기에 의해 번역되므로 바로 실행 할 수 있다.[3]
  • 스크립트 언어의 사용처
  1. 시스템에 사용 : 유닉스의 쉘(Shell) 스크립트, 윈도우의 배치(Batch) 스크립트처럼 일괄 처리 작업에 사용된다.
  2. 웹 어플리케이션에 사용
일반적으로 스크립트 언어는 빠른 성능이 필요하지 않은 웹 애플리케이션을 만드는 데 이용되어 왔으며, 크게 서버 사이드 스크립트(server-side-script)와 클라이언트 사이드 스크립트(client-side-script)로 나눌 수 있다. 해당 소스의 실행 결과를 확인하기 위해 웹서버를 거쳐야 하는 스크립트를 서버 사이드 스크립트(server-side-script)라 말하며, ASP, PHP, JSP, PYTHON, PERL, RUBY 등이 있다. 내장된 번역기(인터넷 익스플로러 등)에 의해 실행되는 스크립트로 서버를 거치지 않고 사용자 쪽(웹서버에 접속한 PC)에서 처리되는 스크립트를 클라이언트 사이드 스크립트(client-side-script) 라말하며, JavaScript, VB Script, JScript등이 있다.
자바스크립트를 한마디로 요약하자면 웹을 풍부하게 만들어주는 작고 가벼운 언어이다. 미국의 넷스케이프 커뮤니케이션즈사(Netscape Communications)가 개발한 스크립트 언어이며. 웹 브라우저에서 실행하는 스크립트 언어를 기술이고, 작고도 빠르기 때문에 웹문서를 동적으로 꾸밀 때 가장 널리 쓰인다. 언어 규격은 자바의 부분 집합(subset)으로 되어 있고, 하이퍼텍스트 생성 언어(HTML) 문서를 작성하는 수준의 사용자가 사용하는 것을 주안점으로 하여 자바의 언어 규격으로부터 변수의 형(정수형이나 문자열형 등)을 생략하거나 새로운 클래스 정의를 할 수 없도록 하였다. 스크립트는 HTML 문서 속에 직접 기술하며, 프로그래밍 입문자들은 자바스크립트와 자바가 서로 비슷한 기술이라고 생각하지만 두 언어 모두 자바라는 언어를 기반으로 하고 있기 때문에 자바스크립트는 자바와는 다른점이 상당히 많으며, 기능과 사용법까지 완전히 다릅니다.
Java와 비교한 JavaScrip
Java JavaScrip
객체 지향으로 객체의 형 간에 차이가 없고, 프로토타입 메커니즘을 통한 상속과 속성과 메서 드는 어떤 객체든 동적으로 추가될 수 있음. 클래스 기반으로 객체는 클래스 계층구조를 통한 모든 상속과 함께 클래스와 인스턴스로 나뉘며, 클래스와 인스턴스는 동적으로 추가된 속성이나 메소드를 가질 수 없다.
변수 자료형이 선언되지 않는다. (동적 형 지정, dynamic typing) 변수 자료형은 반드시 선언되어야 한다. (정적 형 지정, static typing)
하드 디스크에 자동으로 작성 불가. 하드디스크에 자동으로 작성 가능.
  • 자바스크립트 특징
  1. JavaScript는 객체 기반의 언어이지만 상속과 클래스라는 개념은 없다.
  2. JavaScript는 인터프리터 언어로서 클라이언트의 웹 브라우저에 의해 해석되고 실행된다.
  3. JavaScript는 HTML 문서 내에 기술되고 HTML 문서와 함께 수행된다.
  4. JavaScript는 HTML에 연산 제어 등 프로그래밍적인 요소를 추가하고 클라이언트의 자원을 활용할 수 있게 한다.
  • 자바스크립트 장점
자바스크립트는 컴파일 과정이 없기 때문에 다른 언어와 비교했을 때 빠른 시간 안에 스크립트 코드를 작성할 수 있게 도와주는데. 기존 C나 자바 언어와 달리 굉장히 단순한 구조와 원칙을 가지고 있기 때문에 초보 개발자들이 쉽게 배우고 이해할 수 있다. 예를 들어 자바스크립트 코드 안에서는 변수, 클래스 및 메소드를 선언하지 않아도 되고, 메소드가 'public', 'private' 또는 'protected'인지 구분하지 않아도 되고, 자바스크립트는 웹에 특화된 기술이기 때문에 운영체제나 플랫폼에 상관없이 잘 작동되고 확장성도 높다.
  • 자바스크립트 단점
단점은 성능이나 보안 측면으로 일단 내부에서 제공되는 기능이 제한적이고, 관련된 개발도구도 적은 편이며, 자바스크립트는 HTML 소스 코드에 함께 작성되면서 소스 코드가 외부로 공개되는데, 이 과정에서 보안 취약점이 발생할 수 있다.

각주[편집]

  1. 움헬켈, 〈스크립트에 대해서 잘 설명이 되어있는 것이 있네요.〉,《다음팁》, 2007-11-06
  2. Drupal, 〈Tcl/Tk란?〉,《Korea Tcl/Tk Community》, 2008-01-27
  3. JOKERGT, 〈스크립트 언어란?〉,《티스토리》, 2012-05-23

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 스크립트 언어 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.