(대강 기억나는대로)
- 대부분 우리가 쓰는 언어는 imperative language 이다. 왜 그럴까?
- PL/1 이 실패한 이유는?
- Compilation 과 pure interpretion 을 비교하시오.
- C / C++ 에서의 스트링의 길이는 가변적인가?
- 다음과 같은 문법이 있다. Top-Down Parsing 의 가능 또는 불가능함을 증명하시오
다음과 같은 unambiguous 문법이 있다. (대강 이런식. 아 곱셈부분이 생각안난다; 정확한거 아시는분은 보충을;)
<assign> -> <id> = <expr> |
<expr> -> <term> + <factor> |
<factor> -> <id> | (<expr>) |
다음과 같은 식이 있다.
- 위의 식을 문법에 맞게 left-most 로 유도하시오.
- B = 6, C = 4, D = -2 라고 했을때 위의 문법에 의하면 A 의 값은 무엇인가?
- Type 이 결정짓는 요소들에는 어떤 것이 있는가?
- FORTRAN, PL/1, BASIC, Perl 이 언어들의 변수 선언시의 공통점은?
- Perl 은 변수에 대해서 위의 언어들과 다른 점이 있다. 어떤 점인가?
- Primitive Data Type 에 대해 정의하시오.
- Floating Point 변수의 경우 해당 값에 대해 근사값만을 표현한다. 그 이유는 무엇인가?
- 다른 Primitive Data Type 을 이용, 정확하게 Floating Point 를 구현할 방법이 있을까? (자신의 의견을 적으시오)
Thread ¶
공부할때 각 요소들에 대한 비교 할때마다 Ada 를 빼놓지 않기에 (늘 책에서의 비교언어는 C/C++, Pascal, Ada, Java 이다) 주로 언급된 언어들만 공부했건만, 왜 뜬금없이 PL/1 을 내신걸까; 그밖에 다른 문제들은 평이해서 그다지 별 감흥(?)없었고, 마지막 문제가 괜찮았던듯.
나의 경우는 1. string (char array) 으로 애뮬레이션 한다. (단점도 썼음. 계산뒤의 메모리할당 문제와 실제 산술연산 계산을 위한 형변환시 cost가 많이 든다 등등) 2. long integer 2 개로 앞의 32 bit 는 유효숫자를, 뒤의 32bit 는 지수를 표현한다. (2^-31 ~ 2^31 * 2^-31 ~ 2^31 까지 표현된다라고 썼는데, 실제론 저 숫자들을 다 표현할 수가 없겠군. 2^31 1024 * 1024 * 1024 * 2 니까 약 10억. 즉, 자리수 표현도 10억 이후부터는 precision 유효숫자를 다 쓸수 없을테니) 아.. 풀고나니 잘못생각했군. 흑; --석천