형은 데이터에 붙은 추가데이터다.
컴퓨터는 데이터를 on/off, 1과 0의 집합으로 표현한다.
같은 비트열 형식이지만 컴퓨터가 어떻게 처리할 지를 CPU에 알리는 것이 형의 시작이다.
데이터를 지금의 비트열로 표현하기 까지는 많은 과정이 있었다.
적은 수의 on과 off를 이용해서 많은 데이터를 표현할 수 있어야 한다.
그래서 자릿수나 8진수, 16진수가 나온것이다.
1983년에 닌텐도가 출시한 패밀리 컴퓨터는 8bit를 사용했고, 현재는 보통 64bit를 이용해 데이터를 표현한다.
파이썬 3.0 에서는 8비트, 1
즉, 형이 생기게 된 근본적인 이유는 컴퓨터의 연산처리와 관계가 있는데 변수형 선언을 함으로써 정수는 CPU는 어떤 계산을 할 지 아는 것이다.
이렇게 알리는게 중요한 이유는 예를들어 부동소수점과 고정소수점의 연산 방법에는 차이가 있기 때문이다.
그렇다면 형은 어떻게 발전하였을까?
1. 이런 기본형 외에도 개발의 편의를 위해서 사용자가 임의로 형을 정의할 수 있게 되었다.
C언어의 구조체가 대표적인 예이다.
실제로 리눅스는 OOP의 개념을 굉장히 추구하고 반영하고 있는데, C로 작성되었기 때문에 OOP를 클래스가 아닌 구조체 단위로 구현한다.
C++ 설계자인 바얀교수는 사용자가 정의하는 형이야 말로 프로그램 구축에 기본요소라 생각하여 개념을 도입했고, 클래스라고 이름을 붙였다.
2. 형은 통해서 접근레벨을 사용하여 public, private같은 접근권한을 설정 할 수 있게 되었다.
구조체나 클래스를 구성하는 형을 최소한만 공개하여 코드를 보호한다는 의미이다. 형이 맞는지 틀린지는 컴파일단계에서 컴파일러가 해준다. 그래서 이런 사양을 형으로 표현하게되면 우리는 개발을 할 때 컴파일러에게 유용한 도움을 받을 수 있게 되는 것이다.
3. 이런 개념은 인터페이스로까지 발전되었다. 인터페이스 처럼 추상적인 개념을 개발할 때 컴파일러가 오류를 검출해 주기때문에, 우리는 잘못된 코드를 작성할 걱정과 수고를 덜 수 있게되었다.
형은 다시 재정의 할 수 있다. 다시 말하면 기존의 형을 구성 요소의 일부분을 바꾸어 다시 재사용 할 수 있다는 말이다.
C++의 template, Java의 generics, Haskell의 형 생성자 등이 해당된다.
출처. 코딩을 지탱하는 기술
'Development > Etc.' 카테고리의 다른 글
Jekyll과 Git page로 블로그 만들기 (0) | 2016.02.13 |
---|---|
언어별로 문자열 처리 (0) | 2016.02.06 |
전역스코프 동적스코프 정적스코프 (0) | 2016.02.06 |
상속이 is-a 관계여야 하는이유와 delegation (0) | 2016.02.06 |
언어별 클래스의 의미 (0) | 2016.02.06 |