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

+ Recent posts