[Book] 프로그래밍 언어도감 - 스크립트 언어
목차: 스크립트 언어
JavaScript
ActionScript
CoffeeScript
Dart
TypeScript
Perl
Python
Ruby
PHP
JavaScript 🔥
탄생 : 1995년
주요 용도 : 웹 브라우저
분류 : 절차형 객체지향형/인터프리터
✎ DHTML & Ajax : DHTML(Dynamic HTML, 동적 HTML)에 의해서 동적으로 페이지를 변화시킬 수 있다. 또한 Ajax 비동기 방식으로 페이지 전환 없이 새로운 콘텐츠를 표현할 수 있다. (실제 사례: Google Maps JavaScript API)
✎ 프로토타입 기반 : JavaScript는 객체지향 언어이지만 클래스 기반이 아니라 프로토타입 기반이다. 기존 객체를 복제하여 새로운 객체를 생성한다. (더 알아보기: JavaScript 프로토타입 이해하기)
✎ JSON : JavaScript Object Notation. 텍스트 기반의 데이터 구조로 eval 함수로 평가해서 JavaScript 객체로 변환할 수 있다. XML 대신에 사용되는 경우가 많고, 많은 언어에서 지원하고 있다.
✎ 다양한 프레임워크 : jQuery, AngularJS, PrototypeJS 등이 있다. 서버 측에서 실행하는 Node.js도 있다.
✎ AltJS : JavaScript 대신 사용되는 환경. 예를 들어, TypeScript, Haxe, Dart, CoffeeScript 등이 있다.
✎ ECMAScript : JavaScript 표준화 사양. 각 브라우저마다 동일한 사양으로 통일하기 위함. JavaScript 컴파일러인 Babel 툴도 있다.
1999년 - ECMAScript 3
2009년 - ECMAScript 5
2015년 - ECMAScript 2015 (ES6)
2016년 - ECMAScript 2016 (ES7)
2017년 - ECMAScript 2017 (ES8)
2018년 - ECMAScript 2018 (ES9)
2019년 - ECMAScript 2019 (ES10)
ActionScript
탄생 : 2000년 (Adode Systems)
주요 용도 : 플래시 앱
분류 : 절차형 객체지향형/컴파일러
✎ 뛰어난 멀티미디어 : Adobe Flash에서 사용되는 멀티미디어용 스크립트 언어로, 음성이나 영상 같은 애니메이션을 사용한 콘텐츠 제작에 적합하다.
✎ 환경에 의존하지 않음 : Flash를 사용하면 웹 브라우저에서 동적인 콘텐츠를 동일하게 재생할 수 있다.
✎ 사용률이 줄고 있음 : 웹 브라우저에서 Plugin을 실행해야 하는 단점 대문에 사용이 점점 줄어들고 있다.
CoffeeScript
탄생 : 2009년
주요 용도 : 웹 브라우저
분류 : 절차형 함수형/트랜스파일러
✎ 적은 코드 양 : JavaScript보다 코드량이 적고 읽기 쉬운 코드이다. JavaScript 프로토타입 기반의 객체지향을 의식하지 않고 사용할 수 있다.
✎ 들여 쓰기 중요 : 블록을 표현할 때 Python처럼 들여 쓰기(인덴트)를 사용한다. 끝에 세미클론을 사용할 필요가 없다.
✎ Ruby on Rails에서 도입이 쉬움 : RoR에서는 'Asset Pipeline' 구조가 있어 CoffeeScript의 소스코드를 배치하는 것만으로 동적 컴파일을 할 수 있다.
✎ Backbone.js나 Underscore.js를 만든 개발자 : Backbone.js는 SPA 용의 가벼운 프레임워크, Underscore.js는 JavsScript 라이브러리이다. 둘 다 CoffeeScript 개발자인 Jeremy Ashkenas이 개발하였다.
✎ 소스 맵: 소스코드를 변환하면 디버그 시 어떤 부분에서 문제가 발생하고 있는지 찾기 어려운 때가 있다. CoffeeScript에서는 소스로 원래 소스코드를 디버거로 표시할 수 있다.
✎ js2coffee : CoffeeScript는 JavaScript로 변환해서 사용한다. js2coffee를 사용하면 JavaScript에서 CoffeeScript로 역변환이 가능하다.
Dart
탄생 : 2011년 (Google)
주요 용도 : 웹 브라우저, 웹앱, 모바일 앱
분류 : 객체지향형/인터프리터 트랜스파일러
✎ JavaScript와 공존 : JavaScript와 대체가 아닌 적재적소에 함께 공존하는 것을 지향하는 언어이다. (실제 사례: Google AdSense, AdWords, Elections, Shopping Express)
✎ 모바일 앱도 개발 가능 : Flutter 프레임워크를 사용해서 Android, iOS를 지원하는 크로스 플랫폼 모바일 앱을 개발할 수 있다.
✎ JavaScript로 변환 : DDC(Dart Dev Complier)는 Dart로 만든 소스코드를 JavaScript로 변환한다.
✎ 2개의 실행 모드 : 프로덕션 모드, 체크 모드가 있다. 개발할 때는 체크 모드로 자료형 체크 등을 할 수 있고, 릴리스 할 때는 프로덕션 모드로 빠르게 처리할 수 있다.
✎ DartPad : 웹 브라우저에서 Dart을 실행 테스트할 수 있는 개발환경
✎ Pub 패키지 매니저 : Dart에서 사용할 수 있는 풍부한 패키지를 관리할 수 있다. YAML 파일에서 설정을 기술하고, 커맨드 라인에서 설치 및 업데이트할 수 있다.
TypeScript 🔥
탄생 : 2012년 (Microsoft)
주요 용도 : 웹 브라우저
분류 : 절차형 함수형 객체지향형/트랜스파일러
✎ 정적 타이핑 : JavaScript, 다른 AltJS는 동적 타이핑 언어이지만, TypeScript는 정적 타이핑 언어이다. 의도하지 않은 값이 저장되는지 실행 전에 검사할 수 있다. 대규모 프로젝트에 적합하다.
✎ IDE 사용 가능 : Microsoft이 개발해서 Visual Studio를 사용할 수 있다.
✎ 변환이 쉽다 : JavaScript 소스코드는 그대로 TypeScript의 소스코드로 사용할 수 있기 때문에, 기존 소스코드를 일단 그대로 살려 변수 자료형을 추가할 수도 있다.
✎ Haxe와의 비교 : Hexe도 JavaScript 뿐만 아니라 Java, C#, PHP, Python 등으로 변환할 수 있다. 다만 현실적으로는 JavaScript로 변환해서 사용하는 경우가 많아 TypeScript 쪽이 압도적으로 인기가 높다.
✎ 모듈 : 클래스를 그룹으로 나누어 관리할 수 있기 때문에, 대규모 개발에 유리하다. CommonJS 형식이나 AMD(Asynchronous Module Definition) 형식의 모듈을 지원한다.
✎ AngularJS 2.0 : 프론트엔드 웹 애플리케이션 프레임워크(오픈소스). JavaScript로 작성되었으며, 버전 2부터 TypeScript가 권장되고 있다.
✎ Playground : 온라인으로 JavaScript로 변환 내용을 확인하면서 프로그램을 수정할 수 있다. (바로가기: http://www.typescriptlang.org/play/)
Perl
탄생 : 1987년
주요 용도 : 웹앱
분류 : 절차형 함수형 객체지향형/인터프리터
✎ CGI 시대의 대표 : 인터넷이 보급되기 시작한 1990년대는 정적 웹 페이지가 많았지만, 그중에서 동적 웹 페이지를 표시하는 방법으로 CGI가 많이 사용되었다. 특히 Perl은 압도적으로 인기가 많았다.
✎ 문자열 처리가 장점 : sed, awk 프로그래밍 언어의 특징을 도입해서 문자열 처리가 장점이다. 정규 표현식이 폭넓게 사용되는 계기가 된 언어라고 할 수 있다.
✎ 정규표현식 : 문자열의 패턴 매치를 할 수 있는 표현 방법 (더 알아보기: 정규표현식 POSIX)
✎ 하위 호환성 확보 : Perl 버전이 바뀌어도 이전 버전에서 사용하던 기능을 그대로 사용할 수 있다. 다만 Perl 6은 Perl 5까지와는 다른 언어로 간주되고 있을 정도로 크게 변경되었다. (더 알아보기: 하위 호환성)
✎ 아쉬운 가독성 : 스크립트 언어로는 빠른 편이지만, 소스코드 가독성 면에서는 상대적으로 어려워서 Python, Ruby 언어에 점유율을 빼앗겼다.
Python 🔥
탄생 : 1991년
주요 용도 : 웹앱 데이터 분석, AI
분류 : 절차형 함수형 객체지향형/인터프리터
✎ 데이터 사이언티스트 : 웹앱, 인공지능, 데이터 분석에 장점을 가진 스크립트 언어. 버전 2.x와 3.x는 일부 호환이 되지 않지만, 두 버전 모두 이용자가 많다.
✎ 들여 쓰기 중요 : 블록을 표현할 때 Python처럼 들여 쓰기(인덴트)를 사용한다. "코드는 쓰는 것보다 읽는 것이 더 많다"라는 의미에서 PEP 8 코딩 가이드도 제공된다.
✎ 다양한 구현 : 원래의 처리계인 'CPython' 말고도 'Jython', 'PyPy', 'Cython', 'IronPython' 등 다양한 구현이 있다.
✎ 다양한 통계 라이브러리 : 데이터 분석과 기계학습에 사용할 수 있는 라이브러리가 많다. 특히 'NumPy', 'Pandas', 'matplotlib'이 유명하다.
✎ pip : Python 패키지 관리 시스템. 최신 Python이 기본으로 제공되어 검색, 설치, 업데이트가 가능하다. GitHub에서 설치 가능하다.
✎ 리스트 컴프리헨션 : 컴프리헨션은 더 파이써닉하게 파이썬을 사용한다는 것을 의미한다. 리스트 컴프리헨션은 대괄호 안에 for 구문을 사용하여 리스트를 초기화 함으로써 컴프리헨션 기능을 수행할 수 있다.
✎ Django : Python으로 작성된 사용되는 오픈소스 웹 애플리케이션 프레임워크. Instagram, Pinterest 등 개발에도 사용되고 있다. (실제 사례: Django로 구축된 10개의 인기 웹 사이트)
Ruby
탄생 : 1995년
주요 용도 : 웹앱, 교육
분류 : 절차형 함수형 객체지향형/인터프리터
✎ 즐기기 위해 : 즐기기 위한 목적으로 개발된 프로그래밍 언어.
✎ 모든 것이 객체 : 객체지향 언어라도 다른 언어는 대부분 정수 같은 원시적인 형태는 객체가 아닌데 반해, Ruby는 Smalltalk와 같은 객체지향 언어이다.
✎ DSL로 이용이 많다 : DSL(도메인 특화 언어)은 특정 작업을 위해 설계된 언어이다. Ruby는 내부 DSL에 적합하다고 해서 Chef와 Vagrant 등 다양한 프로그램 설정 파일에 사용되고 있다.
✎ Ruby on Rails : 웹 애플리케이션 프레임워크. '설정보다 규약' (CoC: Convention over Configuration)이라는 말이 있을 정도로 수동으로 해야 하는 설정이 적다.
✎ gem : Ruby 패키지 관리 시스템인 'RubyGems'에서 사용되는 라이브러리. gem 커맨드로 패키지 빌드와 설치가 가능하다.
✎ YARV : Yet Another Ruby VM. Ruby를 빠르게 실행하기 위한 처리계로 개발되었고, Ruby 1.9 이후는 Ruby 본체에 내장되어 있다.
PHP
탄생 : 1995년
주요 용도 : 웹앱
분류 : 절차형 객체지향형/인터프리터
✎ 다양한 프레임워크 : CakePHP, Zend Framework, Symfony, Laravel, CodeIgniter 등 다양한 프레임워크가 있다.
✎ 취약성이 남는 경우도 : 초보자도 개발하기 쉬운 언어라서 보안을 의식하지 않고 만들어진 프로그램도 있기 때문에, 취약점이 남아있는 프로그램이 많은 것으로 알려져 있다.
✎ 렌털 서버에서 이용하기 쉽다 : 대부분의 렌털 서버에는 사전에 PHP가 도입되어 있어서 상대적으로 환경을 구축하는 번거로움이 적고 바로 사용을 시작할 수 있다.
✎ LAMP : Linux, Apache, MySQL, PHP의 약자. 동적 웹 사이트를 구축할 때 적합한 오픈 소프트웨어의 조합으로 자주 사용된다.
✎ WordPress : PHP로 개발된 블로그용 소프트웨어. 블로그 말고도 업데이트가 쉬운 웹사이트 구축에도 사용된다.
✎ Hack : Facebook이 개발한 PHP와 호환성이 있는 언어. PHP를 더 빨리 실행하는 것을 목표로 개발되고 있으며, 그 처리 속도로 주목을 받고 있다.
from http://devpad.tistory.com/30 by ccl(A) rewrite - 2020-03-07 08:21:38
댓글
댓글 쓰기