문서 읽는 데 44분 · 38강 · 4과목 · 프로그래밍 언어 활용

프로그래밍 언어 활용

목차 23
전체 59강 중 38강 · 4과목 · 프로그래밍 언어 활용

프로그래밍 언어 활용은 언어가 어떻게 생겼고(세대·분류) 어떻게 기계어로 번역되며(번역기) 어떤 사고방식으로 짜이는지(패러다임)를 한눈에 조감하는 단원이다. 깊이 파기보다 키워드 매칭·함정 소거가 핵심으로, 매 회차 1~2문항이 안정적으로 나오는 효자 영역이다. 특히 스크립트 언어 고르기컴파일러 vs 인터프리터 8행 분별은 만나면 반드시 맞춰야 한다. 코드 추적은 39강 C언어부터 본격화되고, 38강은 이론·분류 지도다.

핵심 암기: 언어 4세대 ★기어고초★(기계어·어셈블리어·고급·초고급) · 3대 번역기 ★컴인어★(컴파일러·인터프리터·어셈블러) · 선정 5기준 ★범적효이친★(범용·적정·효율·이식·친밀) · 사용 목적 6분류 ★범과사인시스★ · 패러다임 4대장 ★절객함논★(절차·객체지향·함수형·논리형) · 저급은 기계어·어셈블리어 둘뿐 · C는 절차적 · Java는 하이브리드 · Python은 인터프리터·동적 타입


PART A — 언어 정의와 4세대

프로그래밍 언어란 — 프로그램 vs 언어 ·언어 정의·

[정의] 프로그래밍 언어 = 사람이 컴퓨터에 작업 절차를 알려주기 위한 기호 체계. 한 줄로 줄이면 사람과 기계 사이의 공용어다. 프로그램은 그 언어로 구현한 명령어 + 데이터의 집합(결과물).

[표] 프로그램 ↔ 언어 분별

용어 정의 한 줄
프로그래밍 언어 프로그램 작성을 위한 기호 체계 도구
프로그램 언어로 구현한 명령어 + 데이터 집합 결과물

💡 메뉴판(언어)이 있어야 주문이 되고, 주문이 있어야 음식(프로그램)이 나온다 — 언어는 도구, 프로그램은 결과물.

🔑 암기 "언어 = 도구(기호 체계) / 프로그램 = 결과물(명령어+데이터)"

⚠️ 함정 "프로그램 = 기호 체계 / 언어 = 명령어 집합" ❌(→ 자리 바꿔치기·언어가 기호 체계·프로그램이 결과물).

🎯 빈출 용어 정의 매칭. 간헐 출제지만 이후 분류의 전제 용어.

언어 4세대 — ★기어고초★ ·세대·시험 1순위·

[정의] 언어의 발전 단계를 4세대로 묶은 두음 = ★기어고초★. 1세대 계어 → 2세대 셈블리어 → 3세대 급 언어 → 4세대 고급 언어.

[표] 4세대 + 대표

글자 세대 이름 대표 한 줄
1세대 기계어 0과 1 CPU 직접 이해·번역기 0개
2세대 어셈블리어 MOV·ADD Mnemonic·어셈블러로 1:1
3세대 고급 언어 FORTRAN·C·Java·Python 컴파일러/인터프리터로 번역
4세대 초고급 언어 SQL·보고서 생성기 비절차적·"무엇을(WHAT)"만

💡 4세대는 "어떻게(HOW)"가 아니라 "무엇을(WHAT)"만 적는 언어다. SELECT * FROM members WHERE age > 30처럼 원하는 결과만 말하면 처리는 시스템이 알아서 한다 — 비절차적·사용자 중심·초고급은 모두 같은 4세대를 가리키는 세 이름.

🔑 암기 "★기어고초★ — 기계어·어셈블리어·고급·초고급. 4글자 순서를 벗어나면 전부 함정"

⚠️ 함정 "4세대 = 어셈블리어" ❌(→ 어셈블리어는 2세대·매년 1순위 함정) / "3세대 = SQL" ❌(→ SQL은 4세대) / "1세대 = FORTRAN" ❌(→ FORTRAN은 3세대).

🎯 빈출 세대↔언어 짝짓기. 4세대에 어셈블리어 끼우기가 매 회차 단골.

저급 vs 고급 — 기·어 저급 / 고·초 고급 ·세대·시험 1순위·

[정의] 언어는 친화 대상으로도 둘로 나뉜다. 저급 언어 = 기계 친화(기계어·어셈블리어 둘뿐) / 고급 언어 = 사람 친화(나머지 전부). ★기어고초★에서 기·어가 저급, 고·초가 고급.

[표] 저급 vs 고급 종합

구분 저급 언어 고급 언어
친화 대상 컴퓨터(기계) 사람
포함 언어 기계어 · 어셈블리어 (2개만) FORTRAN · C · Java · Python · SQL …
가독성 낮음 높음
이식성 낮음(CPU 의존) 높음
실행 속도 매우 빠름 상대적으로 느림
번역 어셈블러만(또는 0개) 컴파일러 또는 인터프리터

[참고] 어셈블리어는 기계어의 0과 1을 영어 약자(Mnemonic)로 바꾼 2세대 저급 언어다. 어셈블러가 단어 하나 = 단어 하나로 1:1 변환한다.

assembly
MOV  A, 5      ; A 레지스터에 5 넣기
MOV  B, 3      ; B 레지스터에 3 넣기
ADD  A, B      ; A = A + B (결과 8)

🔑 암기 "저급 = 기계어 · 어셈블리어 둘뿐 / 고 · 초는 전부 고급"

⚠️ 함정 "C는 시스템 언어라 저급 언어" ❌ → C는 시스템 프로그래밍에 많이 쓰여 '저급 같은 느낌'이지만 엄연한 고급 언어(3세대). 매년 단골 함정.

🎯 빈출 "저급 언어로 바르게 묶인 것" → 기계어·어셈블리어. C·Python·FORTRAN을 저급에 끼우면 함정.


PART B — 사용 목적별 분류

사용 목적 6분류 — ★범과사인시스★ ·분류·

[정의] 언어를 "무엇을 하려고 만들었나"로 나눈 분류. 5대 분류 + 스크립트 별도 = 6분류. 두음 ★범과사인시스★(범용·과학·사무·인공지능·시스템 + 스크립트).

[표] 사용 목적별 분류

글자 분류 대표 언어 용도
범용 BASIC · Pascal · C · C++ 응용 분야 제한 없음
과학 FORTRAN · ALGOL 수치 계산
사무 COBOL 보고서 · 십진수 산술
인공지능 LISP · Prolog 기호 계산 · 추론
시스 시스템 BLISS · ALGOL · C OS · 시스템 도구 개발
스크립트 Perl · PHP · ASP · JSP · JS · Python 파일 관리 · 자동화

🔑 암기 "★범과사인시스★ — 범용·과학·사무·인공지능·시스템 + 스크립트 별도. COBOL의 CO = Common Business = 사무"

⚠️ 함정 "COBOL = 과학용 / FORTRAN = 사무용" ❌(→ 자리 바꿔치기·COBOL=사무 / FORTRAN=과학) / "LISP는 함수형이니 인공지능 아님" ❌(→ 패러다임은 함수형이지만 사용 목적은 인공지능·두 차원 분리).

🎯 빈출 분류↔대표 언어 매칭. COBOL·FORTRAN 자리 바꾸기가 매년 단골.

스크립트 언어 6종 ·분류·시험 1순위·

[정의] 스크립트(script) = 차례대로 실행되는 명령을 한 파일에 적어둔 것(원래 뜻은 '대본'). 파일 관리·필터링·자동화에 쓰이며 인터프리터 기반으로 한 줄씩 실행된다. 시험에선 매년 1문항이 굳어 나온다.

[표] 스크립트 6종

언어 주 용도 한 줄
Perl 텍스트 처리 초기 웹 CGI
PHP 서버 웹 Hypertext Preprocessor
ASP 서버 웹 Active Server Pages
JSP 서버 웹 Java Server Pages
JavaScript 브라우저·서버 웹 프론트 필수·서버 확장
Python 만능 AI·데이터·자동화

[표] 스크립트 ↔ 컴파일러 언어

구분 스크립트(인터프리터 계열) 컴파일러 언어
번역 방식 한 줄씩 인터프리터 전체 한 번에 컴파일
종류 Perl · PHP · ASP · JSP · JS · Python C · C++ · Java · Go · Rust
목적 프로그램 생성 X 생성 O

🔑 암기 "스크립트 6종(Perl·PHP·ASP·JSP·JS·Python) + 컴파일러 3종 NO(C·C++·Java) = 9글자 즉답 카드"

⚠️ 함정 "스크립트 언어가 아닌 것" 보기에 C·C++·Java가 끼어든다 — 이 셋은 절대 스크립트가 아니다(컴파일러 언어).

🎯 빈출 "스크립트가 아닌 것은?" 소거형. 매 회차 1순위 효자 문제.


PART C — 3대 번역기 ★컴인어★

3대 번역기 — ★컴인어★ 개관 ·번역기·시험 1순위·

[정의] 사람의 언어(고급 언어)를 기계의 언어(기계어)로 바꿔주는 것이 번역 프로그램. 3대 번역기 두음 ★컴인어★ = 파일러 · 터프리터 · 셈블러.

텍스트
 고급 언어 (Python · Java · C)  ──  [ 번역기 ]  ──  기계어 (0과 1)
                                    ★컴인어★

[표] 3대 번역기 입력·출력

글자 번역기 입력 출력 방식
컴파일러 고급 언어 목적 프로그램(기계어) 전체를 한 번에
인터프리터 고급 언어 즉시 실행(목적 프로그램 X) 한 줄씩
어셈블러 어셈블리어 기계어 1:1 대응

💡 어셈블러는 어셈블리어 전용 번역기다. 고급 언어 → 기계어는 컴파일러, 어셈블리어 → 기계어는 어셈블러 — 입력 언어가 다르다.

🔑 암기 "★컴인어★ — 컴파일러(고급→기계어 전체) / 인터프리터(고급→즉시 한 줄씩) / 어셈블러(어셈블리어→기계어 1:1)"

⚠️ 함정 "어셈블러가 고급 언어를 번역" ❌(→ 어셈블리어 전용·고급 언어는 컴파일러).

🎯 빈출 번역기↔입출력 매칭. 매년 빈출 1순위다.

컴 · 컴파일러 — 전체 번역, 목적 프로그램 O ·번역기·

[정의] 컴파일러 = 원시 프로그램 전체를 한 번에 기계어로 번역해 목적 프로그램을 만드는 번역기. 한 번 만든 번역본을 직접 실행하므로 실행이 빠르다.

텍스트
hello.c (원시 코드)  ──  [컴파일러] 전체 번역  ──  hello.exe (목적 프로그램)  ──  실행

[표] 컴파일러 특성

항목 내용
번역 단위 프로그램 전체
결과물 목적 프로그램 생성 O
번역 속도 느림(전체를 한 번에)
실행 속도 빠름(번역본 직접 실행)
오류 발견 컴파일 시점에 한꺼번에
대표 언어 C · C++ · Java · Go · Rust

💡 책 한 권을 통째로 번역해 번역본을 만드는 번역가 — 한 번 번역해두면 다음부턴 번역본만 읽으면 되니 빠르다.

🔑 암기 "컴파일러 = 전체 번역 / 목적 프로그램 O / 번역 느림·실행 빠름 / C·C++·Java"

⚠️ 함정 "컴파일러는 번역 속도가 빠르다" ❌ → 번역은 느림·실행이 빠름(두 속도 정반대·자리 바꿔치기 매년).

🎯 빈출 번역/실행 속도 정반대 함정이 단골.

컴파일 단계 + 조연 2명(프리프로세서·링커) ·번역기·

[정의] 컴파일러가 거치는 과정. 필기에선 단계 이름과 순서, 그리고 프리프로세서·링커의 시점만 잡으면 충분하다(깊은 이론은 실기에서).

[표] 컴파일 핵심 5단계

순서 단계 영문 하는 일
어휘 분석 Lexical 토큰 쪼개기
구문 분석 Syntax 문법 확인
의미 분석 Semantic 의미 확인
최적화 Optimization 더 빠르게 다듬기
코드 생성 Code Generation 기계어 생성

[흐름] 조연 2명 — 프리프로세서(전)·링커(후)

텍스트
원시코드(.c)  ──  [프리프로세서]  ──  [컴파일러]  ──  목적파일(.o)  ──  [링커]  ──  실행파일(.exe)
조연 시점 역할
프리프로세서 컴파일 매크로 치환(#define · #include 처리)
링커 컴파일 목적 프로그램 + 라이브러리 연결 → 실행 파일

🔑 암기 "단어 나눔(어휘)→문법(구문)→의미→최적화→코드 생성 / 전처리는 프리프로세서·연결은 링커"

⚠️ 함정 "#include·#define을 컴파일러가 처리" ❌ → 프리프로세서가 컴파일 에 처리. 매년 단골.

🎯 빈출 단계 순서 + "#include는 프리프로세서" 두 가지.

인 · 인터프리터 — 한 줄씩, 목적 프로그램 X ·번역기·

[정의] 인터프리터 = 원시 프로그램을 한 줄씩 읽어 즉시 번역 + 실행하는 번역기. 목적 프로그램을 만들지 않는다(매 실행마다 다시 번역).

텍스트
hello.py  ──  줄1 번역+실행  ──  줄2 번역+실행  ──  줄3 번역+실행  ──  …
            (목적 프로그램 생성 X · 매 실행마다 다시 번역)

[표] 인터프리터 특성

항목 내용
번역 단위 한 줄씩
결과물 목적 프로그램 없음
번역 속도 빠름(한 줄만)
실행 속도 느림(매 실행마다 재번역)
오류 발견 실행 중 한 줄씩
대표 언어 Python · JavaScript · Ruby · BASIC · LISP

💡 회의장의 동시통역사 — 발화자가 한 문장 말하면 바로 통역한다. 번역본(책)을 안 만들어서 같은 회의가 또 열리면 처음부터 다시 통역. UNIX 쉘이 ls -l 한 줄을 즉시 해석·실행하는 것도 인터프리터 계열(37강 회수).

🔑 암기 "인터프리터 = 한 줄씩 / 목적 프로그램 X / 번역 빠름·실행 느림 / Python·JS — 컴파일러와 정반대"

⚠️ 함정 "인터프리터가 목적 프로그램을 생성" ❌ → 생성하지 않는다(생성하는 건 컴파일러).

🎯 빈출 목적 프로그램 생성 여부 + 실행 속도. 컴파일러와 짝지어 출제.

하이브리드 — Java JVM · JIT · 바이트 코드 · WORA ·번역기·시험 1순위·

[정의] 컴파일러 + 인터프리터를 합친 하이브리드 방식. 대표가 Java로, 매년 1~2문항이 여기서 나온다.

텍스트
[1단계]  Hello.java   ──  javac(컴파일러)         ──  Hello.class (바이트 코드·기계 독립)
[2단계]  Hello.class  ──  JVM(인터프리트 + JIT)  ──  기계어  ──  실행

[표] 핵심 용어

용어 의미
바이트 코드 기계어도 원시 코드도 아닌 중간 형태·기계 독립적
JVM 바이트 코드를 기계어로 변환·실행하는 가상 머신
JIT 컴파일러 자주 쓰이는 코드(핫스팟)를 미리 기계어로 변환 → 속도 향상
WORA Write Once, Run Anywhere — 한 번 작성, 모든 OS에서 실행

💡 Python도 .pyc 바이트 코드를 만들어 재실행 속도를 개선한다 — Java와 같은 원리(단, Python의 분류는 인터프리터).

🔑 암기 "Java = javac + JVM + JIT = 하이브리드 / 바이트 코드(중간 형태) + WORA(어디서나 실행)"

⚠️ 함정 "Java는 순수 컴파일러 언어" / "순수 인터프리터 언어" — 둘 다 ❌(→ 하이브리드가 정답).

🎯 빈출 Java 번역 방식 + 바이트 코드·WORA 용어. 매 회차 출제.

컴파일러 vs 인터프리터 — 8행 종합 + 함정 4종 ·번역기·매 회차 1순위·

[정의] 38강 PART C의 결정 카드. 이 8행 표가 매 회차 거의 같은 형태로 나온다 — 통째로 외운다.

[표] 8행 종합

# 비교 항목 컴파일러 인터프리터
1 번역 단위 전체 프로그램 한 번에 한 줄씩
2 목적 프로그램 생성 O 생성 X
3 번역 속도 느림(전체 처리) 빠름(한 줄만)
4 실행 속도 빠름(번역본 실행) 느림(매번 재번역)
5 메모리 사용 적음 많음
6 오류 발견 컴파일 시점에 전체 실행 중 한 줄씩
7 수정·디버깅 번거로움(재컴파일) 편함(수정 후 바로 실행)
8 대표 언어 C · C++ · Java · Go · Rust Python · JS · Ruby · BASIC · LISP

[표] ⚠️ 단골 함정 4종 (매년 돌아가며 출제)

# 함정 진실
컴파일러는 번역 속도가 빠르다 번역 느림 / 실행 빠름 — 정반대
인터프리터는 목적 프로그램을 생성한다 목적 프로그램 없음
Java는 순수 컴파일러 언어다 하이브리드(javac + JVM + JIT)
Python은 컴파일러 언어다 인터프리터(.pyc는 있지만 분류는 인터프리터)

🔑 암기 "컴파일러 = 전체·목적O·실행빠름·C/Java / 인터프리터 = 한줄·목적X·실행느림·Python/JS"

🎯 빈출 8행 표 + 함정 4종이 PART C의 절반 이상. 이 한 장이면 번역기 분별 문제 거의 100% 즉답.


PART D — 패러다임 ★절객함논★

패러다임 4대장 — ★절객함논★ ·패러다임·

[정의] 패러다임 = 프로그래밍의 사고방식·스타일. 같은 문제도 어떤 사고방식으로 접근하느냐에 따라 완전히 다른 코드가 나온다. 4대장 두음 ★절객함논★ = 차적 · 체지향 · 수형 · 리형.

[표] 패러다임 4대장

글자 패러다임 중심 사고 대표 언어
절차적 순서대로 실행 C · Pascal · FORTRAN
객체지향 객체들의 상호작용 Java · C++ · Python · C#
함수형 함수 조합·불변성 LISP · Haskell · Scala · F#
논리형 사실과 규칙의 추론 Prolog

💡 한 언어가 한 패러다임만 쓰는 건 옛날 얘기다. Python은 절차 + 객체지향 + 함수형을 모두 지원하는 멀티 패러다임 언어.

🔑 암기 "★절객함논★ — 절차·객체지향·함수형·논리형. 네 사고방식 + 대표 언어 매칭"

⚠️ 함정 "패러다임은 언어마다 하나로 고정" ❌(→ 멀티 패러다임 언어 존재·Python).

🎯 빈출 패러다임↔대표 언어 매칭. 다음 카드들에서 함정에 집중.

절 · 절차적 / 구조적 — ★순반선★ 3구조 ·패러다임·

[정의] 절차적 프로그래밍 = 문제를 순서대로 해결('이거 하고, 저거 하고…' 절차의 나열). 과거 GOTO 남용으로 코드가 스파게티처럼 엉키자, 이를 막는 구조적 프로그래밍이 등장했다 — GOTO 금지 + 하향식 설계 + 모듈화 3원칙.

[표] 구조적 프로그래밍 3대 논리 구조 — ★순반선★

글자 구조 영문 예시
순차 Sequence 위에서 아래로 차례대로
반복 Iteration for · while · do-while
선택 Selection if · else · switch

💡 대표 언어는 C · Pascal — C는 시스템 프로그래밍, Pascal은 교육용. 이 3구조(순차·반복·선택)는 39강 C언어의 if·for·while로 실제 코드에서 다시 만난다.

🔑 암기 "★순반선★ — 순차·반복·선택 3구조 / 구조적 = GOTO 금지·하향식·모듈화"

⚠️ 함정 "구조적 프로그래밍은 GOTO를 적극 활용" ❌ → 구조적 프로그래밍은 GOTO를 쓰지 않는다(GOTO 남용을 막으려 등장).

🎯 빈출 3구조 매칭 + "GOTO 사용" 부정 함정. 매년 빈출.

객 · 객체지향 — ★캡상다추★ 4특성 + 'C는 절차적' 함정 ·패러다임·시험 1순위·

[정의] 객체지향(OOP) = 현실 세계를 객체들의 집합으로 모델링. 데이터(속성)와 함수(메소드)를 하나로 묶은 객체들이 메시지를 주고받는다. 4대 특성 두음 ★캡상다추★(7강 등록·42강 Java에서 본격).

[표] 객체지향 4대 특성 — ★캡상다추★

글자 특성 한 줄
캡슐화 데이터 + 메소드를 묶고 외부에 감춤
상속 부모의 속성·메소드를 자식이 물려받음
다형성 같은 메시지에 객체마다 다르게 반응
추상화 세부는 숨기고 핵심만 노출

[표] C 계열 패러다임 분별

언어 패러다임
C 절차적 (객체지향 X)
C++ 객체지향 (+ 절차적 멀티)
Java 객체지향
Python 멀티(절차+객체+함수)

🔑 암기 "★캡상다추★ — 캡슐화·상속·다형성·추상화 / C는 절차적·C++/C#이 객체지향"

⚠️ 함정 "C는 객체지향 언어" ❌ → C는 절차적(이름 비슷한 C++·C#이 객체지향). C ↔ C++ 자리 바꾸기가 매년 단골.

🎯 빈출 "객체지향 언어가 아닌 것" 보기에 C가 끼어든다. 4특성 매칭도 빈출.

함 · 논 — 함수형 / 논리형 종합 ·패러다임·🌟 여기만·

[정의] 패러다임 남은 둘. 함수형 = 모든 것을 함수 조합으로(순수 함수·불변성) / 논리형 = 사실(Fact) + 규칙(Rule)을 주면 언어가 자동 추론. 각각 한 줄씩만 잡아도 충분하다.

[표] 함수형 vs 논리형

항목 함수형 논리형
핵심 함수 조합·순수 함수·불변성 사실 + 규칙 → 자동 추론
대표 언어 LISP(원조 1960) · Haskell · Scala · F# Prolog
비유 재료를 넣으면 같은 결과가 나오는 자판기(부작용 없음) 규칙만 주면 결과를 스스로 추론

💡 LISP과 Prolog는 둘 다 인공지능 분야로도 분류된다 — LISP은 패러다임은 함수형·사용 목적은 인공지능, Prolog는 논리형·인공지능. 패러다임과 사용 목적은 별개 차원.

🔑 암기 "함수형 = LISP·자판기(불변) / 논리형 = Prolog·규칙 추론 / 둘 다 인공지능 분류"

⚠️ 함정 "LISP만 인공지능이고 Prolog는 아니다" ❌(→ Prolog도 인공지능 분류).

🎯 빈출 대표 언어 매칭(LISP=함수형·Prolog=논리형). 간헐.


PART E — 언어 선정 기준

언어 선정 5기준 — ★범적효이친★ ·선정 기준·시험 1순위·

[정의] 신규 프로젝트에서 "어떤 언어로 개발할까"를 결정할 때 보는 5가지 기준. 두음 ★범적효이친★ = 용성 · 정성 · 율성 · 식성 · 밀성.

[표] 선정 5기준

글자 기준 영문 핵심 질문
범용성 Generality 여러 분야에 두루 쓸 수 있는가
적정성 Suitability 프로젝트 요구사항에 잘 맞는가
효율성 Efficiency 실행 속도·자원 사용이 효율적인가
이식성 Portability 다른 OS·기계로 옮겨도 잘 도는가
친밀성 Familiarity 개발팀이 얼마나 익숙한가

🔑 암기 "★범적효이친★ — 범용·적정·효율·이식·친밀 5축만. 보안성·확장성·생산성은 절대 NO"

⚠️ 함정 선정 기준에 보안성(Security)·확장성(Scalability)·생산성(Productivity)·유지보수성·호환성을 끼워 넣는다 — 5축 외 그럴듯한 단어는 전부 ❌.

🎯 빈출 "선정 기준에 포함되지 않는 것" 소거형. 매년 1문항. 한글 5글자만 외우면 즉답.


기출 다지기

[기출 1 출제] 다음 중 스크립트 언어가 아닌 것은? (소거형 · 매년 변형)

  • ① PHP
  • ② Perl
  • ③ Python
  • ④ C
정답 및 해설 보기

정답: ④ C

스크립트 언어는 한 줄씩 즉시 실행되는 인터프리터 기반 언어다. C는 전체를 번역한 뒤 실행하는 컴파일러 언어라 스크립트가 아니다. 보기에 C·C++·Java가 보이면 즉시 골라낸다.

선지 분류 정답?
① PHP 스크립트 X
② Perl 스크립트 X
③ Python 스크립트 X
C 컴파일러 O

🔑 스크립트 6종(Perl·PHP·ASP·JSP·JS·Python) + 컴파일러 3종 NO(C·C++·Java) = 9글자 즉답.

[기출 2 출제] 컴파일러에 대한 설명으로 옳지 않은 것은? (부정형)

  • ① 원시 프로그램 전체를 한 번에 번역한다.
  • ② 번역 결과로 목적 프로그램을 생성한다.
  • ③ 실행 속도가 인터프리터보다 빠르다.
  • ④ 대표 언어로 Python, JavaScript가 있다.
정답 및 해설 보기

정답: ④ — Python · JavaScript는 인터프리터

Python·JavaScript는 인터프리터 언어다. 컴파일러 대표는 C·C++·Java·Go·Rust.

선지 판정 설명
① 전체를 한 번에 번역 O 컴파일러 정의 그대로
② 목적 프로그램 생성 O .exe·.class
③ 실행 속도 빠름 O 번역본 직접 실행
Python · JS X 정답 — 인터프리터 계열

🔑 컴파일러 = C·C++·Java·Go·Rust / 인터프리터 = Python·JS·Ruby·BASIC·LISP. 5개씩만 외우면 분류 자리 바꾸기 100% 차단.

[기출 3 출제] 프로그래밍 언어의 세대 구분과 해당 언어의 짝이 잘못 연결된 것은? (짝짓기 오류형)

  • ① 1세대 — 기계어
  • ② 2세대 — 어셈블리어
  • ③ 3세대 — FORTRAN, C, Java
  • ④ 4세대 — 어셈블리어
정답 및 해설 보기

정답: ④ — 4세대는 초고급 언어(SQL 등)

4세대는 초고급·비절차적 언어로 대표는 SQL·보고서 생성기. 어셈블리어는 2세대다.

세대 글자 대표
1세대 기계어 (0과 1)
2세대 어셈블리어 (Mnemonic)
3세대 FORTRAN · C · Java 등
4세대 SQL · 보고서 생성기 (비절차적)

🔑 ★기어고초★ 4글자 순서를 벗어나면 전부 함정. 4세대에 어셈블리어 · 3세대에 SQL · 1세대에 FORTRAN이 돌아가며 출제.

[기출 4 출제] Python에 대한 설명으로 가장 거리가 먼 것은? (거리형)

  • ① 귀도 반 로섬이 개발한 언어이다.
  • ② 객체지향, 인터프리티드 스크립트 언어이다.
  • ③ 정적 타입(Static Typing)을 사용하는 언어이다.
  • ④ 바이트 코드를 생성하여 재실행 시 속도를 개선한다.
정답 및 해설 보기

정답: ③ — Python은 동적 타입

Python은 동적 타입(Dynamic Typing) 언어다. 변수 선언 시 타입을 명시하지 않고 실행 시점에 타입이 결정된다.

선지 판정 설명
① 귀도 반 로섬 개발 O 1991년
② 객체지향·인터프리티드 O 멀티 패러다임
정적 타입 X 정답 — 동적 타입(정적은 C·Java)
④ 바이트 코드 생성 O .pyc(Java JVM과 유사 원리)

🔑 정적 타입(컴파일 시점 결정) = C·C++·Java·Go / 동적 타입(실행 시점 결정) = Python·JS·Ruby.

[기출 5 출제] 저급 언어(Low-level Language)에 해당하는 것으로 바르게 묶인 것은? (묶음형)

  • ① 기계어, 어셈블리어
  • ② 기계어, C 언어
  • ③ 어셈블리어, Python
  • ④ C 언어, FORTRAN
정답 및 해설 보기

정답: ① 기계어, 어셈블리어

저급 언어는 컴퓨터 친화적인 언어로 기계어·어셈블리어 두 가지뿐이다.

언어 분류 이유
기계어 저급 1세대·2진수·CPU 직접 이해
어셈블리어 저급 2세대·1:1 대응
C 고급 3세대·사람 친화 문법
Python · FORTRAN 고급 3세대

🔑 ★기어고초★에서 기·어만 저급, 고·초는 고급. C는 시스템에 많이 쓰여도 엄연한 고급 언어(단골 함정).

[기출 6 출제] 개발 언어의 선정 기준에 포함되지 않는 것은? (소거형)

  • ① 효율성(Efficiency)
  • ② 이식성(Portability)
  • ③ 친밀성(Familiarity)
  • ④ 보안성(Security)
정답 및 해설 보기

정답: ④ — 보안성은 선정 기준 X

선정 기준은 ★범적효이친★ — 범용성·적정성·효율성·이식성·친밀성 5가지. 보안성은 포함되지 않는다.

함정 단어 정답
보안성(Security) X
확장성(Scalability) X
생산성(Productivity) X
유지보수성·호환성 X

🔑 ★범적효이친★ 5축 외 어떤 단어도 정답 아님. 영어가 어려워도 한글 5글자만 외우면 끝.

[기출 7 출제] 다음 중 객체지향 언어가 아닌 것은? (소거형)

  • ① C
  • ② C++
  • ③ Java
  • ④ Python
정답 및 해설 보기

정답: ① C — 절차적 언어

C는 절차적 언어(객체지향 X)다. 이름이 비슷한 C++·C#은 객체지향이 맞고, Python은 멀티 패러다임(객체지향 포함)이다.

선지 패러다임 정답?
C 절차적 O
② C++ 객체지향(+절차) X
③ Java 객체지향 X
④ Python 멀티(객체 포함) X

🔑 C ↔ C++ 자리 바꾸기가 매년 단골. C는 절차적·C++/C#이 객체지향 한 줄로 즉답.


한 장 요약

주제 암기·핵심 결정 카드
언어 4세대 ★기어고초★ 기계어·어셈블리어·고급·초고급 / 4세대에 어셈블리어 ❌
저급 언어 기계어·어셈블리어 둘뿐 C·Python은 고급(함정)
사용 목적 6분류 ★범과사인시스★ COBOL=사무 / FORTRAN=과학(자리 바꿈 함정)
스크립트 6종 Perl·PHP·ASP·JSP·JS·Python 아닌 것 = C·C++·Java
3대 번역기 ★컴인어★ 컴파일러·인터프리터·어셈블러
컴파일러 vs 인터프리터 8행 종합표 컴=전체·목적O·실행빠름 / 인=한줄·목적X·실행느림
Java 번역 하이브리드 javac + JVM + JIT + WORA(순수 컴파일러 ❌)
패러다임 4대장 ★절객함논★ 절차·객체지향·함수형·논리형
구조적 3구조 ★순반선★ 순차·반복·선택 / GOTO 금지
객체지향 4특성 ★캡상다추★ 캡슐화·상속·다형성·추상화 / C는 절차적
선정 5기준 ★범적효이친★ 범용·적정·효율·이식·친밀 / 보안성 ❌
단골 함정 5쌍 정답
C = 객체지향 C = 절차적 (C++·C#이 객체지향)
컴파일러 = 목적 프로그램 X 생성 O (인터프리터가 안 만듦)
Java = 순수 컴파일러 하이브리드(javac + JVM + JIT)
Python = 정적 타입 동적 타입 (정적은 C·Java)
선정 기준에 보안성 ★범적효이친★ 5가지만

🎯 합격 한 끗: 38강은 ★기어고초★ · ★컴인어★ · ★범적효이친★ 핵심 두음 3개에 스크립트 6종과 컴파일러 vs 인터프리터 8행 표만 얹으면 출제 범위 절반이 즉답으로 풀린다. 깊이 파는 단원이 아니라 키워드 매칭·함정 소거의 효자 영역 — 저급은 기계어·어셈블리어 둘뿐, C는 절차적, Java는 하이브리드, 선정 기준에 보안성 NO 네 함정만 외워두면 1~2문항을 안정적으로 가져온다. 37강까지 운영체제(33~37강)를 마쳤고, 38강이 4과목의 또 다른 축인 프로그래밍 언어로 들어선 첫 강이다. 여기서 잡은 ★순반선★(순차·반복·선택)은 39강 C언어의 if·for·while로, ★캡상다추★(객체지향 4특성)는 42강 Java OOP로 실제 코드에서 다시 만난다.

전체 목록 필기 이론

합격까지

정처기, 혼자 막막하다면

초개인화 학습앱 Klue와 에듀윌 온라인강의로 합격까지 이어가세요.