[IT용어] 정적,동적 프로그래밍 언어
정적 언어
개념
자료형(Type)이 고정돼 있는 언어.
정적 언어는 *컴파일을 진행할 때 변수의 타입이 결정된다.
*컴파일 : 우리 사용한 언어를 컴퓨터가 알아먹을 수 있게 바이트코드 라는 것으로 변경하는 작업
대표적인 예를 들자면,
Java(자바)
String a = 10; //에러
int b = 10; //성공
var c = 22; //에러
이렇게 코딩을 했을 경우 바로 빨간줄이 그어지면서 에러가 나는데,
유치한 상황극
Java : "야 String인데 정수잖아, 그리고 var는 뉘집 개야? 난 몰라 에러 나는 코드야 컴파일 난 안해줘 아니 못해줘"
프로 야근러 : "아 그러네 미안"
이런 식으로컴파일 시에 자료형에 맞지 않은 값이 들어있으면 컴파일 에러가 발생합니다.
사용 이유
컴파일 시에 타입에 대한 정보를 결정하기 때문에 속도 향상
타입 에러로 인한 문제점을 초기에 발견할 수 있어 타입의 안정성 보장
종류
C
C#
C++
Java
Go
Haskell
Kotlin
Rust
Scala
... 외에 더 있습니다.
동적 언어
개념
자료형이 그것을 처리할 함수(또는 메서드)에 따라 그때그때 바뀌는 언어.
동적 타입 언어의 자료형은 컴파일 시 자료형을 정하는 것이 아니고 *런타임 시에 결정합니다.
대표적인 예를 들자면,
JavaScript(자바스크립트)
function sum(){
var a = 10;
var b= "10";
console.log(a+b);
//"1010"
}
이런 식으로 정수 10인 a 변수와 문자열 "10"인 b 변수를 더하면 에러를 뱉지 않고, 문자열 "1010"이 된다.
유치한 상황극 2
JavaScript : "a랑 b를 더한다고? 음 정수+문자열이긴 한데 정수 값으로 된 문자열이니까 내가 합쳐줘야겠다 여기 1010"
프로 야근러 : "고맙다^^ 근데 내가 원하는 값은 20이야"
*런타임 : 프로그래밍 언어가 구동되는 환경
런타임이 실행될 때 타입을 검사한다는 게 무슨 말일까?
JavaScript(자바스크립트) 코드로 알아보자
function calc(){
var a = 'blueHat'-1;
return a;
}
Java 코드였다면 미치고 팔짝 뛰면서 에러를 뱉을 텐데
JavaScript는 아무런 반응이 없다. 컴파일을 통과했다는 소리!
하지만
calc();
함수를 실행한다면? 실행될 때 즉!! *런타임 될 때!!
NaN (TypeError)를 뱉습니다.
JavaScript : 이건 너무한 거 아니냐고! 퉤 TypeError
사용 이유
*런타임(Run time)까지 타입에 대한 결정을 끌고 갈 수 있기 때문에 많은 선택의 여지가 있고,
동적으로 변경되기 때문에 결과가 이상하게 나올지라도 (빨간 글씨만 나오면 심장이 두근대는)
매우 까다로운(?) 자료형 검사를 피할 수 있다.
종류
JavaScript
Ruby
Python
SmallTalk
Lisp
Lua
Perl
PHP
... 외에 더 있습니다.
'IT 용어' 카테고리의 다른 글
[IT용어] NameSpace(네임스페이스)란? (0) | 2019.11.29 |
---|---|
[IT용어] 프레임워크(Framework)와 라이브러리(Library) (0) | 2019.11.18 |
[IT용어] JSON(JavaScript Object Notation) (3) | 2019.11.14 |
[IT 용어] REST,REST API,RESTful (0) | 2019.11.03 |
[IT용어] Web Server와 WAS(Web Application Server) 개념 총 정리 (1) | 2019.10.30 |