1. 타입의 환경 (Evolution of Data Types)
- 1956년 : FORTRAN - INTEGER, REAL, arrays 등 간단한 것만 사용을 했었다.
- 1983년 : Ada - 사용자가 데이터타입을 만들어서 사용하면서, 복잡한 데이터 유형이 나타나기 시작했다.
2. 타입 설계 (Type Design)
- 타입을 명세하는 기법. 즉, 타입을 바인딩하는 기법을 말한다.
- 타입에 의해 바인딩 된 것은 타입으로 할 수 있는 연산자를 같이 바인딩 된다.
- Primitive Data Type 방식과 Not-Primitive Data Type 방식이 있다.
3. Primitive Data Type
- 다른 데이터에 의해서 정해지지 않고, 자기 자신자체로 데이터가 된다.
- 우리가 쓰고 있는 int, float등이 이에 해당한다.
ⓐ Integer (정수)
- 하드웨어에 정확한 값이 저장된다.
- 8개의 다른 인티저 타입이 존재한다.
> (signed | unsigned) (long | short) (long | short) int // 2 * 2* 2 의 경우로 8가지
ⓑ Floating point (실수)
- Integer와 다르게 근사값이 저장이 된다.
ex) PI = 3.14159... > Float point의 저장 공간에 따라서 뒤의 유효자리 숫자가 잘려진다.
-
ⓒ Character (문자)
- Computer에선 문자는 숫자로 변경된다
> 전세계적으로 컴퓨터에서의 처리를 통일하기 위해서 ASCII 코드를 정하게 된다.
(ASCII 코드는 1byte로 128개의 문자만 저장가능 / 저장공간의 부족)
> ASCII의 저장공간 부족으로 Unicode(16byte)가 새로 통일안으로 나왔다.
ⓓ Boolean (True/False)
- 1Bit로 True/False를 저장하는 것을 하지만, 메모리가 Byte단위로 바인딩 되므로 1Byte를 가지고 있다.
ⓔ Decimal (10진수)
- 정밀한 계산이 필요할 경우 제공 ( ex) 돈계산을 할경우 )
- 각각의 숫자 하나하나에 1byte를 제공해준다.
ex) 2 5 6 의 10진수형 저장은 00000010 00000101 00000110 로 각각의 숫자에 1Byte씩 총 3Byte가 필요하다.
- 장점 : 매우 정확한 계산이 가능하다.
- 단점 : 메모리가 많이들어 높은 자리 숫자를 표현하지 못한다.
> 적은 범위에서 정확한 계산이 요할때 사용
4. String Type
- Primitive Type과 Not-Primitive Type이 모두 나타나는 Type이다.
- String Type를 Primitive하게 제공시에는 스트링을 다루는데 필요한 연산자들이 존재하며,
이미 언어상에 작성되있어야 한다.
- (In Pascal)
Not Primitive / 기본적인 assignment와 comparison만 제공, 그 이외에는 사용자가 모두 코드로 작성해야함.
- (in Ada, FORTRAN 77/90, Basic)
Primitive / assignment, comparison, catenation, substring reference 등의 기능을 제공해준다.
/ 특히 FORTRAN은 pattern matching 기능도 제공해준다.
- (In C/C++)
Not Primitive, But Library형태로 스트링 함수를 제공
- (In SNOBOL 4)
Primitive / String에 해당하는 연산자를 완벽하게 모두 제공해준다.
- (In Perl)
Regular expression을 이용하여 사용이 가능하다.
> [A-Za-z][A-za\d]+/ : Regular expression에 적합하면 변수로써 사용 가능
ex) 위와 같이 Regular expression을 정했다면 N1 = apple가능, N2 = 2apple 불가능이 된다.
- (In Java)
거의 Primitive하다. String을 클래스로서 제공이 된다.
4.1 String Type유지시 꼭 필요한 요소
- 길이 : length
ⓐ Static : 한번 정한 길이가 변하지 않음.
ⓑ Dynamic : 필요한 만큼만 사용
ⓒ Limited Dynamic Length : 제한된 범위내에서 길이 변환이 자유롭게 됨.
- Primitive로 줄때 길이는 어떤 룰에 따라서 줄 것인가?
ⓐ Static Length 컴파일 시간에 길이가 정해저 유지해야 될 값이 적다. 하지만 메모리 효율이 낮다.
ⓑ Dynamic Length 실행시간에 따라서 지속적으로 길이가 변한다. 현재 길이값만을 유지하지만 회수와 할당을 반복하여 실행시간이 길어진다.
ⓒ Limited Dynamic Length 실행시간에 따라 바뀐 현재 길이와 최대수용 길이를 같이 유지해야한다.
- 1956년 : FORTRAN - INTEGER, REAL, arrays 등 간단한 것만 사용을 했었다.
- 1983년 : Ada - 사용자가 데이터타입을 만들어서 사용하면서, 복잡한 데이터 유형이 나타나기 시작했다.
2. 타입 설계 (Type Design)
- 타입을 명세하는 기법. 즉, 타입을 바인딩하는 기법을 말한다.
- 타입에 의해 바인딩 된 것은 타입으로 할 수 있는 연산자를 같이 바인딩 된다.
- Primitive Data Type 방식과 Not-Primitive Data Type 방식이 있다.
3. Primitive Data Type
- 다른 데이터에 의해서 정해지지 않고, 자기 자신자체로 데이터가 된다.
- 우리가 쓰고 있는 int, float등이 이에 해당한다.
ⓐ Integer (정수)
- 하드웨어에 정확한 값이 저장된다.
- 8개의 다른 인티저 타입이 존재한다.
> (signed | unsigned) (long | short) (long | short) int // 2 * 2* 2 의 경우로 8가지
ⓑ Floating point (실수)
- Integer와 다르게 근사값이 저장이 된다.
ex) PI = 3.14159... > Float point의 저장 공간에 따라서 뒤의 유효자리 숫자가 잘려진다.
-
ⓒ Character (문자)
- Computer에선 문자는 숫자로 변경된다
> 전세계적으로 컴퓨터에서의 처리를 통일하기 위해서 ASCII 코드를 정하게 된다.
(ASCII 코드는 1byte로 128개의 문자만 저장가능 / 저장공간의 부족)
> ASCII의 저장공간 부족으로 Unicode(16byte)가 새로 통일안으로 나왔다.
ⓓ Boolean (True/False)
- 1Bit로 True/False를 저장하는 것을 하지만, 메모리가 Byte단위로 바인딩 되므로 1Byte를 가지고 있다.
ⓔ Decimal (10진수)
- 정밀한 계산이 필요할 경우 제공 ( ex) 돈계산을 할경우 )
- 각각의 숫자 하나하나에 1byte를 제공해준다.
ex) 2 5 6 의 10진수형 저장은 00000010 00000101 00000110 로 각각의 숫자에 1Byte씩 총 3Byte가 필요하다.
- 장점 : 매우 정확한 계산이 가능하다.
- 단점 : 메모리가 많이들어 높은 자리 숫자를 표현하지 못한다.
> 적은 범위에서 정확한 계산이 요할때 사용
4. String Type
- Primitive Type과 Not-Primitive Type이 모두 나타나는 Type이다.
- String Type를 Primitive하게 제공시에는 스트링을 다루는데 필요한 연산자들이 존재하며,
이미 언어상에 작성되있어야 한다.
- (In Pascal)
Not Primitive / 기본적인 assignment와 comparison만 제공, 그 이외에는 사용자가 모두 코드로 작성해야함.
- (in Ada, FORTRAN 77/90, Basic)
Primitive / assignment, comparison, catenation, substring reference 등의 기능을 제공해준다.
/ 특히 FORTRAN은 pattern matching 기능도 제공해준다.
- (In C/C++)
Not Primitive, But Library형태로 스트링 함수를 제공
- (In SNOBOL 4)
Primitive / String에 해당하는 연산자를 완벽하게 모두 제공해준다.
- (In Perl)
Regular expression을 이용하여 사용이 가능하다.
> [A-Za-z][A-za\d]+/ : Regular expression에 적합하면 변수로써 사용 가능
ex) 위와 같이 Regular expression을 정했다면 N1 = apple가능, N2 = 2apple 불가능이 된다.
- (In Java)
거의 Primitive하다. String을 클래스로서 제공이 된다.
4.1 String Type유지시 꼭 필요한 요소
- 길이 : length
ⓐ Static : 한번 정한 길이가 변하지 않음.
ⓑ Dynamic : 필요한 만큼만 사용
ⓒ Limited Dynamic Length : 제한된 범위내에서 길이 변환이 자유롭게 됨.
- Primitive로 줄때 길이는 어떤 룰에 따라서 줄 것인가?
ⓐ Static Length 컴파일 시간에 길이가 정해저 유지해야 될 값이 적다. 하지만 메모리 효율이 낮다.
ⓑ Dynamic Length 실행시간에 따라서 지속적으로 길이가 변한다. 현재 길이값만을 유지하지만 회수와 할당을 반복하여 실행시간이 길어진다.
ⓒ Limited Dynamic Length 실행시간에 따라 바뀐 현재 길이와 최대수용 길이를 같이 유지해야한다.