안녕하세요
프로그래밍 언어 개념 연습문제 3장 본문
01. 다음과 같은 언어 설계 원칙을 잘 준수하고 있거나 위반하는 특징의 예를 실제 언어에서 찾아라.
(1) 효율성(efficiency)
(2) 표현력(expressiveness)
(3) 유지 보수성(maintainability)
(4) 판독성(readability)
(5) 안전성(security)
(6) 간결성(simplicity)
(7) 작성력(writability)
(8) 신뢰성(reliability)
02. 직교성, 일반성, 획일성을 구분할 수 있는 예를 들어 보아라.
03. 부프로그램 호출에서 매개변수에 대한 타입 검사가 언어 설계 기준에서 왜 중요한가?
04. 지난 40년 동안 프로그래밍 언어 설계에 가장 강력하게 영향을 미친 설계 기준은 무엇인가?
05. 서로간에 직접 상충되는 두 가지의 언어 설계 기준에는 어떤 것들이 있는가?
06. C와 Java와 같은 언어는 식별자를 표현할 때 대문자와 소문자를 구별한다. 이러한 설계결정에 대해서 찬성 의견과 반대 의견은 무엇인가?
07. 프로그램의 주석에 대한 상반된 주장이 다음과 같다.
(1) 프로그램은 읽기 쉽고 유지 보수하기 쉽도록 주석을 항상 포함해야 한다.
(2) 프로그램은 가능하면 자체 문서화 되어야 하며 주석은 코드 부분이 명확하게 이해되지 않는 부분에만 최소한으로 사용되어야 한다.
언어 설계 측면에서 이 두 가지 관점에 대해 토론해 보아라. 그리고 어떤 언어 설계 기준이 한 관점에 부합되고 다른 관점에 부합되지 않는지를 살펴보고, 두 가지 관점 모두에 부합되는 설계 기준들을 살펴보아라.
08. 지역성의 원리(principle of locality)는 사용될 변수의 선언이 가능한 한 사용될 지점으로부터 가까이 선언되어야 한다는 것이다. 어떠한 언어 설계 원칙이 이러한 점을 따르며, Ada, Modula-2. C. Pascal 언어는 이러한 원리를 따르는가?
09. 지금까지 수많은 언어가 설계, 구현되어 왔다. 이렇게 계속해서 새로운 프로그래밍 언어가 설계되고 구현되는 이유는 무엇인가?
10. Java 언어가 C 언어에서 개선했는데, 어떤 특징이 추가되거나 삭제되어 어떤 설계원칙을 만족시키며, 또는 어떤 설계 원칙을 위배하는지 논하라.
11. Modula-2 와 Ada에는 LOOP..EXIT 구조가 있고 PL/I에도 비슷한 LOOP.. BREAK 구조가 있다. Pascal에는 이런 구조가 없다. Wirth가 왜 이러한 것을 포함시키지 않았다고 생각하는가? 이것은 어떤 설계 원리를 위반하는가?
12. Java에서 정수는 실수형 변수에 배정이 가능하나 역은 성립하지 않는다. 이것은 어떤 설계 원리를 위반하는가? 실수를 정수형 변수에 배정할 수 있게 하는 것은 좋은 아이디어인가? 그 이유와 Java에서 해결 방법은?
13. 여러분이 선택한 프로그래밍 언어에서 없어져야 할 기능을 하나 골라라. 그 기능이 없어져야 하는 이유는? 그 결과로 어떤 문제가 발생하는가?
14. 여러분이 선택한 프로그래밍 언어에서 추가되어야 할 기능을 하나 골라라. 그 기능이 추가되어야 하는 이유는? 그 기능의 행동과 다른 기능과의 상호작용을 완전히 명시하기 위해서 무엇을 설명해야 하는가?
15. Ada에서 예약어 end는 그것이 끝내는 블록의 종류에 따라 달라진다: if ... then ... end if, loop ... end loop, 등. Algol68에서 end는 예약어를 역으로 쓰는 것으로 대치되었다: if ... then ... fi, case ... esac, 등. 이러한 규칙이 판독성, 작성용이성, 안전성에 미치는 영향을 설명하라. 한편 Modula-2는 END 하나로 모든 제어문의 끝을 표시한다. 이 설계와 Ada의 end들을 설계 기준에 기반하여 비교하라.
16. 언어가 변수를 선언해야 하는가? FORTRAN과 BASIC 같은 언어는 변수 이름이 선언없이 사용되도록 허용한다. 반면에 Ada, Modula-2. Pascal, C에서는 모든 변수가 선언되어야 한다. 변수가 선언되어야 한다는 요구 조건을 판독성, 작성력, 효율성, 안전성, 표현력 관점에서 논하라.
17. 대부분의 언어 구현에서 정수 자료형은 고정된 크기를 갖는데 이는 정수의 최대 크기가 기계에 의존한다는 것을 의미한다. 그렇지만 Scheme 과 같은 언어에서는 정수는 임의의 크기가 될 수 있으며 기계에 독립적이다. 이러한 '무한-정밀도' 정수를 언어 정의의 요구조건으로 하는 것의 장점과 단점을 논하라. '무한-정밀도' 실수를 구현하는 것이 가능한가? 실수도 기계에 독립적일 수 있는가?
'Study_exam > 프로그래밍 언어 개념 연습문제' 카테고리의 다른 글
프로그래밍 언어 개념 연습문제 6장 (0) | 2023.06.05 |
---|---|
프로그래밍 언어 개념 연습문제 5장 (0) | 2023.04.20 |
프로그래밍 언어 개념 연습문제 4장 (0) | 2023.04.20 |
프로그래밍 언어 개념 연습문제 2장 (0) | 2023.04.20 |
프로그래밍 언어 개념 연습문제 1장 (0) | 2023.04.20 |