1. Dynamic Typing
Dynamic Typing 이란 프로그램이 런타임하는 동안 변수의 data type을 결정하는 것을 말한다.
그래서 파이썬에서는 따로 변수에 대한 정보를 선언할 필요없이 바로 사용가능하다.
class Cell: #Python version
def __init__(self, row = 0 , col = 0):
self._row = row
self._col = col
self._occupant = None
self._color = None
self._hours = 0
pubilc class Cell { #Java version
public Cell(int row, int col) {
this.row = row;
this.col = col;
this.occupant = null;
this.color = null;
this.hours = 0;
}
}
파이썬 같은 경우 함수의 매개변수 row, col에 따로 변수 선언 을 할 필요 없지만, 자바같은 경우, row와 col에 int라는 data type을 확실히 선언해줘야한다.
def set_occupant(self, obj): #Python version
if self.occupant == None or self.occupant.interact_with(obj):
self._occupant = obj
return True
else:
return False
public boolean set_occupant(GameCharacter obj) { #Java version
if (this.getOccupant() == null || this.occupant.interactWith(obj)) {
this.occupant = obj;
return true;
} else {
return false;
}
}
이 경우는 function에도 똑같이 적용되는데, set_occupant라는 함수를 선언할때도 파이썬은 따로 변수를 선언할 필요없지만 자바같은 경우 boolean같이 data type을 반드시 명시해줘야한다.
2. 장점
코드를 작성하기 편하고 빠름
처음 프로그래밍을 접하기에는 편함
3. 단점
컴파일 시 데이터타입을 결정하기 때문에 속도 측면에선 안 좋음
아무래도 데이터 타입이 명시되있지 않기 때문에 이해하기 수정할때 이해하기 힘든 요소도 있음
My Review
이렇게 Dynamic typing 과 Static typing을 구분하여 보고나서 이러한 점들을 고려할 수 있게 되었다.
만약 Static typing을 쓴다면 에러를 빠르게 식별하기 편하고 프로그램의 실행속도를 확실히 올려 줄 수 있는 것은 확실하다. 하지만 불필요한 타이핑(반복된 변수 선언, 명시)을 반복해야하고 구조체를 변수로 사용할 때 불편한 점도 있을 것 같다.
반면 Dynamic typing은 구조체나 클래스의 method도 간단하게 쓸 수 있고 코드를 작성할 때도 훨씬 편하지만 코드가 복잡해질수록 에러가 발생시 이 에러를 찾아내는데 그만큼 많은 시간을 필요로 할 수 있는 위험이 있는 것 같다.
'Language' 카테고리의 다른 글
| [Perl] What is dynamic scoping in Perl ? (3) | 2023.02.14 |
|---|---|
| [Python] What is Duck typing? (1) | 2023.02.06 |
| [C 언어] How to read file in C (2) | 2023.01.18 |
| [COBOL] What is COBOL ? (0) | 2023.01.10 |
| [Java] Why use Prepared Statement (0) | 2023.01.02 |