프로그래밍언어론 1강 - 프로그래밍 언어 소개
프로그래밍 언어의 정의와 기능을 살펴보고, 데이터·연산·명령어·서브프로그램·타입·모듈이 어떻게 프로그램을 구성하는지 학습한다. 자연어와 프로그래밍 언어의 차이, 언어의 추상화 수준, 구문론과 의미론의 관계를 이해한 뒤 효과적인 언어 학습 방법까지 정리한다.
제1장 프로그래밍 언어란 무엇인가
1. 언어와 프로그램
언어는 한 사람의 생각을 다른 사람에게 전달하는 의사소통 수단이다. 사람이 일상에서 사용하는 자연어는 말과 글의 두 형태로 존재하며, 대화의 맥락이나 상황에 따라 표현을 함축하거나 다소 모호하게 사용할 수 있다.
프로그래밍 언어도 의사를 전달하는 수단이지만, 전달의 주된 대상이 컴퓨터라는 점에서 자연어와 구별된다. 프로그래머는 자신이 해결하려는 문제와 계산 절차를 프로그래밍 언어로 표현하고, 컴퓨터는 그 표현에 따라 작업을 수행한다. 다만 프로그램은 작성자뿐 아니라 유지·보수하거나 검토하는 다른 사람도 읽으므로, 프로그래밍 언어는 기계와 사람을 모두 고려해야 한다.
프로그램은 컴퓨터가 수행할 명령어를 순서대로 나열해 둔 것이다. 명령어의 단순한 모음이 아니라, 어떤 데이터를 어떤 순서와 방법으로 처리할지 나타낸 구조화된 표현이라고 이해할 수 있다.
핵심 정의: 프로그래밍 언어는 컴퓨터가 수행할 수 있고 사람이 읽을 수 있는 형태로 계산을 나타내는 표기 체계이다. 이 정의에는 실행 가능성과 사람이 이해할 수 있는 표현이라는 두 요구가 함께 들어 있다.
2. 자연어와 프로그래밍 언어의 차이
자연어와 프로그래밍 언어는 모두 내용을 전달하지만 표현 형식과 규칙의 엄밀성에서 차이가 난다. 자연어는 말과 글로 표현되고 모호하거나 함축적인 내용을 허용한다. 반면 프로그래밍 언어는 주로 글의 형태로 작성되며, 컴퓨터가 기계적으로 처리할 수 있도록 엄밀한 규칙과 정확한 의도를 요구한다.
| 구분 | 자연어 | 프로그래밍 언어 |
|---|---|---|
| 형식 | 말과 글 | 주로 글 |
| 내용 | 모호성과 함축을 허용함 | 엄밀한 규칙으로 정확한 의도를 표현함 |
| 방향성 | 주로 사람 사이의 양방향 의사소통 | 사람에서 컴퓨터로 향하는 단방향 또는 사람 사이까지 포함한 양방향 의사소통 |
예를 들어 if (a > 0)과 같은 조건은 값이 0보다 큰지를 명확히 판단하도록 작성된다. 자연어에서는 “a가 양수라면”이라는 표현을 문맥으로 해석할 수 있지만, 프로그램에서는 문법과 의미가 정확해야 컴퓨터가 의도한 작업을 수행한다.
3. 프로그래밍 언어와 프로그래밍을 배우는 이유
프로그래밍 언어를 공부하면 프로그래밍에 대한 사고의 범위가 넓어진다. 문제 해결자는 여러 언어의 특성과 기능을 이해한 뒤 문제에 맞는 언어를 현명하게 선택할 수 있고, 언어 사용자는 자신이 쓰는 언어를 더 자세히 이해할 수 있다. 또한 프로그램이나 개발 조직을 관리하거나 새로운 언어와 시스템을 설계할 때도 더 나은 판단을 내릴 수 있다.
프로그래밍 자체를 배우는 일은 체계적으로 생각하는 방법과 변화를 표현하는 방법을 익히는 과정이기도 하다. 문제를 작은 단계로 나누고, 데이터의 상태가 연산에 따라 어떻게 달라지는지 추적하면서 논리적인 사고 습관을 기를 수 있다.
프로그래밍 언어를 공부한다는 것은 특정 문법만 암기하는 일이 아니다. 어떤 생각을 계산 가능한 형태로 바꾸고, 그 표현을 사람과 컴퓨터가 모두 이해할 수 있도록 조직하는 원리를 배우는 일이다.
제2장 프로그래밍 언어의 기능과 특성
1. 세 가지 기본 기능
프로그래밍 언어의 기본 기능은 작성력, 가독성, 실행 가능성이다. 이 세 기능은 각각 프로그램을 쓰는 사람, 읽는 사람, 실행하는 컴퓨터의 관점과 연결된다.
| 기능 | 의미 | 확인할 관점 |
|---|---|---|
| 작성력 | 프로그래머의 의도를 나타낼 수 있게 하는 기능 | 해결 절차를 언어로 충분히 표현할 수 있는가 |
| 가독성 | 프로그램을 쉽게 해독할 수 있게 하는 기능 | 작성자와 다른 사람도 코드의 뜻을 파악할 수 있는가 |
| 실행 가능성 | 프로그램이 컴퓨터에서 실행될 수 있게 하는 기능 | 표현된 계산을 기계가 실제로 처리할 수 있는가 |
작성력만 높고 가독성이 부족하면 코드를 이해하고 관리하기 어렵다. 반대로 사람이 읽기 쉬워도 컴퓨터에서 실행할 수 없다면 프로그래밍 언어의 목적을 달성하지 못한다. 따라서 세 기능을 서로 분리된 조건으로만 보지 말고, 유용한 언어가 갖추어야 할 상호 보완적 조건으로 이해해야 한다.
2. 추상화와 모듈화
추상화는 어떤 대상에서 중요한 내용만 간략하게 추려 나타낼 수 있게 하는 기능이다. 복잡한 내부 절차를 매번 모두 드러내지 않고 필요한 관점에 집중하게 해 준다. 모듈화는 복잡한 대상을 여러 부분으로 나누어 구성할 수 있게 하는 기능이다. 큰 프로그램을 독립적인 단위로 나누면 각 부분을 이해하고 관리하기 쉬워진다.
추상화가 “무엇을 드러내고 무엇을 감출 것인가”에 초점을 둔다면, 모듈화는 “복잡한 전체를 어떤 단위로 나눌 것인가”에 초점을 둔다. 두 기능은 복잡성을 다루는 데 함께 사용되지만 같은 개념은 아니다.
시험 포인트: 작성력·가독성·실행 가능성은 기본 기능이고, 추상화·모듈화는 복잡한 프로그램을 효과적으로 표현하고 구성하도록 돕는 부가 기능이다.
3. 기계적·구조적·가변적 특성
프로그래밍 언어는 기계적이다. 프로그램을 컴퓨터가 처리해야 하므로 언어가 엄밀한 규칙에 따라 정의되어야 한다. 작은 표기 차이도 기계의 해석에 영향을 줄 수 있기 때문에 자연어보다 형식이 엄격하다.
프로그래밍 언어는 구조적이다. 프로그램이 다루는 문제가 복잡해질수록 단순한 명령의 나열만으로는 전체를 표현하기 어렵다. 따라서 자료구조로 데이터를 조직하고 제어구조로 수행 순서와 반복, 선택 등을 나타낼 수 있어야 한다.
프로그래밍 언어는 가변적이다. 시대의 요구와 프로그래밍 방식이 변하면 기존 언어에도 새로운 개념이 들어갈 수 있다. 강의록에서는 Python이 명령형 언어로 출발했지만 객체지향 개념을 탑재한 사례를 제시한다. 이는 언어의 특성과 기능이 고정된 채로 머무르지 않을 수 있음을 보여 준다.
4. 추상화 수준에 따른 언어 스펙트럼
프로그래밍 언어는 컴퓨터 하드웨어에 가까운 정도와 추상화 수준에 따라 하나의 스펙트럼을 이룬다. 고급언어는 기계 독립적으로 정의되고 실행될 수 있는 언어이며 C, Java, Python 등이 그 예이다. 같은 고급언어 안에서도 추상화 수준에는 차이가 있으므로 모든 고급언어를 하나의 동일한 지점에 놓을 수는 없다.
저급언어는 특정 기계에 종속적인 언어이며 기계어와 어셈블리어가 대표적이다. 추상화 수준이 낮을수록 컴퓨터 구조에 더 가까워지고, 높을수록 사람의 문제 표현과 요구 사항에 가까워진다.
| 구분 | 특징 | 예 |
|---|---|---|
| 고급언어 | 기계 독립적으로 정의되고 실행될 수 있으며, 내부에서도 다양한 추상화 수준을 가짐 | C, Java, Python |
| 저급언어 | 기계에 종속적이며 컴퓨터 구조에 가까움 | 기계어, 어셈블리어 |
제3장 프로그래밍 언어의 구성요소
프로그래밍 언어는 데이터, 연산, 명령어, 서브프로그램, 타입, 모듈 등의 요소로 구성된다. 데이터는 처리 대상이고, 연산과 명령어는 처리 방법을 표현한다. 서브프로그램과 모듈은 프로그램을 조직하며, 타입은 데이터와 연산의 관계를 안전하게 제한한다.
1. 데이터
데이터는 자료를 프로그램이 처리할 수 있는 형태로 나타낸 것이다. 수, 문자, 문자열, 멀티미디어 데이터 등이 모두 프로그램의 처리 대상이 될 수 있다.
강의록은 데이터를 이진 데이터와 텍스트 데이터로 구분한다. 이진 데이터는 이진수의 나열로 이루어진 데이터로, 임의의 비정형 데이터를 포함한다. 텍스트 데이터는 문자열을 나타내는 데이터이다. 이 구분은 데이터가 저장되고 해석되는 형식을 이해하는 출발점이 된다.
2. 연산과 명령어
연산은 데이터를 처리하는 방법이다. 데이터에 연산을 적용하면 새로운 데이터를 결과로 얻는다. 연산자는 특별한 연산을 수행하는 함수이고, 변수는 연산 결과를 저장하는 이름이다. 대입연산은 변수에 값을 부여하는 연산이다.
연산은 수식과 문장으로 나타난다. 수식은 값을 나타내는 표현이고, 문장은 처리를 나타내는 표현이다. 예를 들어 계산 결과 자체를 표현하는 것은 수식의 관점이고, 어떤 값을 변수에 대입하거나 특정 동작을 실행하도록 지시하는 것은 문장의 관점이다.
명령어는 특정 작업을 지시하는 단어이다. if나 while은 선택이나 반복과 관련된 작업을 나타내는 대표적인 명령어이다. 대부분의 프로그래밍 언어는 다양한 연산자와 명령어를 조합하여 수식과 문장을 구성한다.
연산의 종류
| 구분 | 내용 |
|---|---|
| 원시연산 | 프로그래밍 언어가 기본적으로 제공하는 연산 |
| 사용자 정의 연산 | 프로그래머가 필요에 따라 추가로 정의한 연산 |
| 라이브러리 | 사용자가 자주 사용할 만한 연산을 미리 정의해 둔 것 |
3. 서브프로그램
서브프로그램은 전체 프로그램을 이루는 작은 코드 블록에 이름을 붙인 것이다. 서브루틴이라고 부르기도 한다. 반복되는 처리나 논리적으로 독립된 작업을 이름 있는 단위로 묶으면 프로그램의 구조를 더 쉽게 파악할 수 있다.
서브프로그램은 결과값 반환 여부에 따라 함수와 프로시저로 구분할 수 있다. 함수는 연산 수행 결과값을 반환하는 서브프로그램이고, 프로시저는 결과값을 반환하지 않는 서브프로그램이다.
함수와 프로시저의 구분에서 핵심은 “코드 블록인가”가 아니라 “연산 수행 결과값을 반환하는가”이다. 두 종류 모두 이름이 붙은 서브프로그램이라는 공통점을 가진다.
4. 타입과 타입 안전성
타입은 데이터 집합과 그 데이터에 적용할 수 있는 연산 집합을 합친 개념이다. 단순히 데이터의 이름이나 저장 형식만 뜻하는 것이 아니라, 어떤 값에 어떤 연산을 적용할 수 있는지까지 함께 규정한다. 타입은 잘못된 연산을 막고 연산의 안전성을 보장하기 위해 필요하다.
함수 f의 타입을 f(x): A → B라고 할 때, 모든 a ∈ A에 대해 f(a) ∈ B여야 타입 안전성을 만족한다. 프로그램 안의 모든 연산과 함수가 이러한 타입 안전성을 만족하면 타입 안전한 프로그램이라고 한다.
타입 안전성에 따른 언어 분류
| 구분 | 내용 |
|---|---|
| 강타입 언어 | 타입 오류를 모두 검출하는 언어 |
| 약타입 언어 | 타입 오류를 검출하지만 일부 타입 오류를 허용하는 언어 |
| 무타입 언어 | 타입 선언문이 없고 어떤 대상의 타입이 계속 변경될 수 있는 언어 |
핵심 관계: 타입은 데이터 집합과 연산 집합의 결합이며, 타입 안전성은 허용된 입력에 연산이나 함수를 적용했을 때 결과도 정해진 범위 안에 있도록 보장하는 성질이다.
5. 모듈
모듈은 독립적인 프로그램 구성 단위이다. 서브프로그램도 모듈의 한 종류로 볼 수 있지만, 모듈은 더 넓은 범위에서 변수, 함수, 타입 등 프로그래밍 언어가 제공하는 거의 모든 것을 포함할 수 있다.
모듈은 내부와 외부를 구별하고, 독자적인 이름공간을 차지하며 관리한다. 따라서 같은 이름이 여러 곳에서 사용될 때 발생할 수 있는 충돌을 줄이고, 외부에 공개할 요소와 내부에서만 사용할 요소를 나누어 프로그램을 조직할 수 있다.
제4장 프로그래밍 언어의 학습 방법
1. 구문론과 의미론
프로그래밍 언어는 작성한 프로그램 자체와 실행할 때 나타나는 과정이라는 두 측면에서 살펴볼 수 있다. 작성된 프로그램에는 데이터와 연산이 표현되어 있고, 실행 시에는 프로세스, 메모리, 수행 흐름이 나타난다.
구문론은 프로그램을 어떤 형태로 작성하는가와 관련되고, 의미론은 작성한 프로그램이 실행될 때 무엇을 뜻하고 어떤 동작을 하는가와 관련된다. 언어를 제대로 이해하려면 문법에 맞게 코드를 쓰는 법뿐 아니라 그 코드가 실행 과정에서 만들어 내는 상태 변화와 수행 흐름도 함께 알아야 한다.
| 측면 | 주요 관찰 대상 | 핵심 질문 |
|---|---|---|
| 구문론 | 작성한 프로그램, 데이터와 연산의 표현 | 어떤 형식으로 작성하는가 |
| 의미론 | 실행 시 프로세스, 메모리, 수행 흐름 | 작성한 표현이 무엇을 뜻하고 어떻게 동작하는가 |
2. 읽기·작성·실행의 반복
프로그래밍 언어를 배우려면 좋은 프로그램을 많이 읽고, 프로그램을 직접 많이 작성하며, 실행 결과를 보면서 충분히 생각해야 한다. 읽기는 좋은 표현과 구조를 익히게 하고, 작성은 알고 있다고 생각한 개념을 실제 코드로 옮기게 하며, 실행은 자신의 예상과 실제 동작을 비교하게 한다.
3. 숙련도에 따른 언어 선택
초보자는 자신이 조금이라도 알고 있는 언어, 실제로 사용해 볼 수 있는 언어, 주변에서 정보를 얻기 쉬운 언어, 작성한 프로그램을 관리하기 쉬운 언어를 선택하는 것이 좋다. 학습을 지속하고 문제를 해결할 수 있는 환경을 우선 고려하는 것이다.
숙련자는 자신의 업무 분야에서 사용되는 언어 또는 이미 알고 있는 언어와 유사한 언어를 선택할 수 있다. 초보자의 선택이 접근성과 지원 환경에 무게를 둔다면, 숙련자의 선택은 업무 적합성과 기존 지식의 활용에 더 큰 비중을 둔다.
4. 효과적인 학습 요령
눈보다 손
코드를 보기만 하지 말고 직접 타이핑하고 실행하면서 언어의 표현과 동작을 체화해야 한다. 실행 전 결과를 예상하고 실제 결과와 비교하면 구문과 의미의 관계를 더 분명히 이해할 수 있다.
그림으로 생각하기
데이터 구조를 그림으로 그리고 연산에 따른 변화 과정을 따라가면 보이지 않는 메모리 상태와 수행 흐름을 구체적으로 파악할 수 있다. 특히 데이터가 여러 단계에서 바뀌는 프로그램은 상태를 시각화할수록 이해하기 쉽다.
점진적으로 변경하기
처음부터 완벽한 프로그램을 한 번에 작성하려 하지 말고, 작게 시작하여 실행 가능한 범위를 조금씩 넓혀 나간다. 한 번에 바꾸는 부분을 제한하면 어느 변경이 결과에 영향을 주었는지 추적하기 쉽다.
5. 프로그래밍 언어론을 배우는 목적
프로그래밍 언어론을 공부하면 여러 언어가 공유하는 대표적인 기능을 알게 되어 새로운 언어를 더 쉽게 습득할 수 있다. 또한 자신이 사용하는 언어의 기능이 어떤 방식으로 구현되는지 이해하여 프로그램의 실행 과정을 더 정확히 파악할 수 있다.
언어의 구성과 기능을 이해하는 지식은 현명한 언어 설계자가 되는 데도 도움이 된다. 데이터 구조나 서브프로그램을 설계하는 일 역시 어떤 표현과 규칙을 제공할지 결정한다는 점에서 언어 설계와 연결되며, 궁극적으로 새로운 프로그래밍 언어를 설계하는 기반이 된다.
학습 원칙: 좋은 코드를 읽고 직접 작성·실행하되, 데이터와 수행 흐름을 그림으로 추적하고 프로그램을 점진적으로 변경한다. 문법인 구문론과 실행 의미인 의미론을 연결하는 것이 중요하다.
핵심 개념 정리
강의 전체 요약
- 프로그래밍 언어는 컴퓨터가 수행할 수 있고 사람이 읽을 수 있는 형태로 계산을 나타내는 표기 체계이다.
- 자연어는 모호성과 함축을 허용하지만, 프로그래밍 언어는 기계 처리를 위해 엄밀한 규칙과 정확한 의도를 요구한다.
- 기본 기능은 작성력, 가독성, 실행 가능성이며, 추상화와 모듈화는 복잡한 대상을 간략히 표현하고 나누어 구성하게 한다.
- 프로그래밍 언어는 기계적·구조적·가변적 특성을 가지며, 추상화 수준에 따라 고급언어에서 저급언어까지 스펙트럼을 이룬다.
- 주요 구성요소는 데이터, 연산, 명령어, 서브프로그램, 타입, 모듈이다.
- 수식은 값을 나타내고 문장은 처리를 나타낸다. 연산은 원시연산, 사용자 정의 연산, 라이브러리로 구분할 수 있다.
- 함수는 결과값을 반환하는 서브프로그램이고 프로시저는 결과값을 반환하지 않는다.
- 타입은 데이터 집합과 연산 집합의 결합이며, 모듈은 내부와 외부 및 독자적인 이름공간을 갖는 독립적 구성 단위이다.
- 언어를 배울 때는 작성 형식인 구문론과 실행 의미인 의미론을 함께 이해해야 한다.
- 좋은 프로그램을 읽고 직접 작성·실행하며, 그림으로 생각하고 점진적으로 변경하는 방식이 효과적이다.
최종 정리: 프로그래밍 언어는 사람의 계산 의도를 기계가 실행할 수 있는 엄밀한 표현으로 바꾸는 도구이다. 언어의 기능과 여섯 구성요소를 서로 연결해 이해하고, 구문이 실제 실행 과정에서 어떤 의미를 만드는지 직접 확인하는 것이 1강의 핵심이다.
예상문제 20선
1. 강의록에서 정의한 프로그래밍 언어에 대한 설명으로 가장 적절한 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ③
프로그래밍 언어는 기계가 계산을 수행할 수 있어야 하는 동시에 사람이 읽고 이해할 수 있어야 하는 표기 체계이다.
2. 자연어와 비교한 프로그래밍 언어의 특징으로 옳은 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ①
컴퓨터는 표현을 기계적으로 처리하므로 프로그래밍 언어에는 엄밀한 규칙과 정확한 의도가 필요하다. 프로그램을 읽는 사람도 고려해야 한다.
3. 프로그래밍 언어의 기본 기능에 포함되지 않는 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ④
기본 기능은 작성력, 가독성, 실행 가능성이다. 모호성은 기계 처리를 위해 피해야 할 성질이다.
4. 복잡한 대상을 여러 부분으로 나누어 구성할 수 있게 하는 기능은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ②
모듈화는 복잡한 대상을 나누어 구성하게 한다. 추상화는 대상의 중요한 내용을 간략히 추려 나타내는 기능이다.
5. 프로그래밍 언어의 가변적 특성을 보여 주는 강의록의 사례는?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ②
언어는 시대의 필요에 따라 바뀔 수 있다. 강의록은 Python이 명령형 언어에 객체지향 개념을 탑재한 것을 가변성의 사례로 든다.
6. 고급언어와 저급언어에 관한 설명으로 옳지 않은 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ④
저급언어는 기계에 종속적이다. 기계 독립성은 강의록에서 고급언어를 설명할 때 제시된 특징이다.
7. 프로그래밍 언어의 구성요소를 모두 바르게 나열한 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ①
강의록은 프로그래밍 언어의 여섯 구성요소로 데이터, 연산, 명령어, 서브프로그램, 타입, 모듈을 제시한다.
8. 데이터 분류에 관한 설명으로 옳은 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ③
이진 데이터는 이진수의 나열로 이루어진 데이터이며 임의의 비정형 데이터를 포함한다. 텍스트 데이터는 문자열을 나타낸다.
9. 연산 관련 용어의 연결로 옳지 않은 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ④
연산자는 특별한 연산을 수행하는 함수이다. 결과값을 반환하지 않는 서브프로그램은 프로시저이다.
10. 수식과 문장의 차이를 바르게 설명한 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ①
강의록은 연산을 나타내는 구조에서 수식을 값을 나타내는 표현, 문장을 처리를 나타내는 표현으로 구분한다.
11. 사용자가 자주 사용할 만한 연산을 미리 정의해 둔 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ②
라이브러리는 사용자가 자주 사용할 만한 연산을 미리 정의해 둔 것이다. 원시연산은 언어가 기본 제공하고, 사용자 정의 연산은 프로그래머가 추가한다.
12. 함수와 프로시저의 구분 기준으로 가장 적절한 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ③
함수는 연산 수행 결과값을 반환하고 프로시저는 결과값을 반환하지 않는다. 둘 다 이름이 붙은 서브프로그램이다.
13. 타입에 대한 설명으로 옳은 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ①
타입은 데이터 집합과 연산 집합을 결합한 개념이며, 허용되지 않은 연산을 막아 연산의 안전성을 보장하는 데 필요하다.
14. 타입 안전성 측면의 언어 분류에 대한 설명으로 옳은 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ④
강타입 언어는 타입 오류를 모두 검출하고, 약타입 언어는 검사하면서도 일부 오류를 허용한다. 무타입 언어는 타입 선언문이 없고 대상의 타입이 계속 바뀔 수 있다.
15. 모듈의 특징으로 옳지 않은 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ③
모듈은 변수, 함수, 타입 등 언어가 제공하는 거의 모든 것을 포함할 수 있다. 내부와 외부 및 독자적 이름공간을 갖는 독립적인 구성 단위이다.
16. 구문론과 의미론을 바르게 연결한 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ②
구문론은 프로그램을 작성하는 형식에, 의미론은 작성한 표현이 실행 시 무엇을 뜻하고 어떻게 동작하는지에 관련된다.
17. 초보자의 프로그래밍 언어 선택 기준으로 강의록에서 제시하지 않은 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ④
초보자는 지식, 사용 가능성, 정보 접근성, 프로그램 관리 용이성을 고려한다. 가장 낮은 추상화 수준은 선택 기준으로 제시되지 않았다.
18. 데이터의 변화 과정을 이해하기 위해 강의록이 권한 학습 요령은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ②
“그림으로 생각”은 데이터 구조를 시각화하고 변화 과정을 따라가는 방법이다. 보이지 않는 상태와 수행 흐름을 이해하는 데 도움이 된다.
19. 점진적 변경 방식에 가장 잘 맞는 학습 행동은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ①
점진적 변경은 처음부터 완벽하게 작성하려 하지 않고 작은 범위에서 시작해 실행 가능한 프로그램을 조금씩 확장하는 방식이다.
20. 프로그래밍 언어론을 배우는 이유로 가장 거리가 먼 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ③
프로그래밍 언어론은 여러 언어의 기능을 이해하고 문제에 맞는 언어를 선택하게 한다. 모든 문제에 같은 언어만 고집하려는 목적과는 반대이다.
댓글
댓글 쓰기