공든탑앱 열기

언어의 분류와 예외 처리

정보처리기사 · 프로그래밍 언어 · 약 12분

쉽게 말하면

프로그래밍 언어는 만드는 방식에 따라 나뉘어요. 순서대로 명령을 적는 절차적 언어(C), 객체로 만드는 객체지향 언어(Java), 짧게 써서 바로 실행하는 스크립트 언어(Python, JavaScript)가 있어요. 사람이 쓴 코드를 기계어로 바꾸는 방식도 두 가지예요. 전체를 한 번에 번역하는 컴파일러와 한 줄씩 바로 실행하는 인터프리터예요. 실행 중 생기는 오류는 예외 처리로 대비해요.

시험용 정의

프로그래밍 언어는 절차적 언어(명령을 순서대로, C, ALGOL, COBOL, FORTRAN), 객체지향 언어(객체 단위, Java, C++, C#, Smalltalk), 스크립트 언어(소스를 바로 실행, 서버용 PHP·JSP·Python, 클라이언트용 JavaScript), 선언형 언어(무엇을 할지 기술, 함수형 LISP·Haskell, 논리형 Prolog, HTML, SQL)로 나뉜다. 번역기는 컴파일러, 인터프리터, 어셈블러가 있고 실행 과정은 원시 코드 → 컴파일 → 목적 코드 → 링커(라이브러리 연결) → 로더(메모리 적재) → 실행이다. 변수 이름 표기법은 카멜(myName), 파스칼(MyName), 스네이크(my_name), 헝가리안(접두어로 형 표시, nCount, strName)이다. 예외 처리는 실행 중 오류에 대비하는 것으로 Java·Python은 try(실행), catch / except(예외 처리), finally(항상 실행)를 쓴다.

비유로 이해하기

통역에 비유하면 컴파일러는 책 한 권을 미리 다 번역해 번역본을 주는 번역가, 인터프리터는 연설을 한 문장씩 바로 옮기는 동시통역사다. 번역본은 읽기 빠르지만 만드는 데 시간이 걸리고, 동시통역은 바로 시작하지만 매번 통역해야 한다.

자세히

먼저 알아 둘 말

말뜻
원시 코드사람이 작성한 소스 코드
목적 코드컴파일 결과로 만들어진 기계어 코드
링커목적 코드와 라이브러리를 연결해 실행 파일을 만든다
로더실행 파일을 메모리에 올린다
라이브러리자주 쓰는 기능을 모아 둔 코드 묶음 (표준·외부 라이브러리)
예외프로그램 실행 중 생기는 비정상 상황 (0으로 나누기, 파일 없음)

컴파일러 vs 인터프리터

구분컴파일러인터프리터
번역 단위전체한 줄(문장)씩
목적 프로그램생성생성 안 함
실행 속도빠름느림
번역 속도느림빠름 (바로 실행)
언어 예C, C++, (Java는 바이트코드로 컴파일 후 JVM이 실행)Python, JavaScript, BASIC

예외 처리 (Java)

try {
  int z = 0;
  System.out.println(10 / z);
} catch (ArithmeticException e) {
  System.out.println("E");
} finally {
  System.out.println("F");   // 예외가 있든 없든 실행
}
// 출력: E, F

대표 예외: ArithmeticException(0으로 나눔), ArrayIndexOutOfBoundsException(배열 범위 밖), NullPointerException(null 참조), ClassNotFoundException, IOException. Python은 try / except / else / finally.

변수 이름 표기법

표기법예규칙
카멜userName첫 단어 소문자, 이후 단어 첫 글자 대문자
파스칼UserName모든 단어 첫 글자 대문자 (클래스 이름)
스네이크user_name단어 사이를 밑줄로
헝가리안strUserName, nCount앞에 자료형을 뜻하는 접두어

기출에서 더 나온 것

말뜻
stdlib.h문자열을 수로 바꾸는 atoi·atof, 메모리 할당 malloc 등이 있는 C 표준 헤더
string.hstrlen·strcpy·strcmp 같은 문자열 처리 함수가 있는 헤더
atoi()문자열을 정수로 바꾼다 (atof는 실수로)
PHP 연산자@는 오류 메시지 숨김, ===는 값과 자료형까지 같은지 비교, <>는 같지 않음. #은 연산자가 아니라 주석
IDE통합 개발 환경. 코딩·컴파일(고급 언어를 기계어로)·디버깅·배포를 한 도구에서

시험에 이렇게 나와요

확인 문제

Q1. 원시 프로그램 전체를 한 번에 번역해 목적 프로그램을 만든 뒤 실행하는 번역기는?

  1. 어셈블러
  2. 컴파일러
  3. 링커
  4. 인터프리터
정답 보기

2번 컴파일러

컴파일러는 전체를 번역해 실행 파일을 만든다(실행 빠름). 인터프리터는 한 줄씩 해석해 바로 실행한다(목적 프로그램 없음). 어셈블러는 어셈블리어를 기계어로 바꾼다.

Q2. 스크립트 언어가 아닌 것은?

  1. C
  2. PHP
  3. Python
  4. JavaScript
정답 보기

1번 C

C다. 컴파일해서 실행 파일을 만드는 컴파일 언어다. JavaScript·PHP·Python은 인터프리터가 바로 실행하는 스크립트 언어다.

Q3. 변수 이름 앞에 자료형을 뜻하는 접두어를 붙이는 표기법은?

  1. 스네이크 표기법
  2. 헝가리안 표기법
  3. 파스칼 표기법
  4. 카멜 표기법
정답 보기

2번 헝가리안 표기법

nCount, strName 등.

Q4. 목적 프로그램과 라이브러리를 연결해 실행 가능한 모듈을 만드는 것은?

  1. 로더
  2. 링커
  3. 컴파일러
  4. 인터프리터
정답 보기

2번 링커

링커다. 컴파일러가 만든 목적 프로그램과 라이브러리를 이어 실행 가능한 모듈을 만든다. 로더는 그 모듈을 메모리에 올린다.

Q5. Java 예외 처리에서 예외 발생 여부와 상관없이 항상 실행되는 블록은?

  1. finally
  2. catch
  3. try
  4. throw
정답 보기

1번 finally

finally다. 예외가 나든 안 나든 항상 실행된다. try는 예외가 날 수 있는 코드, catch는 예외를 받아 처리하는 블록이다.

헷갈리기 쉬운 O·X

인터프리터는 목적 프로그램을 만든 뒤 실행한다.

정답 보기

X 목적 프로그램 없이 바로 해석·실행한다.

SQL과 HTML은 선언형 언어로 분류할 수 있다.

정답 보기

O 무엇을 원하는지 기술한다.

파스칼 표기법은 첫 단어를 소문자로 시작한다.

정답 보기

X 그건 카멜. 파스칼은 모든 단어 첫 글자가 대문자.

함께 보면 좋은 개념