🧀 프로그래밍 언어
1. 유형 분류
(1) 개발 편의성에 따른 분류
- 저급 언어 : 기계가 이해할 수 있도록 만들어진 언어
ex. 기계어, 어셈블리어
- 고급 언어 : 개발자가 소스 코드를 작성할 때 쉽게 이해할 수 있도록 작성된 언어
ex. C, C++, JAVA, Python
(2) 실행 방식에 따른 분류
-
절차형 언어 : 컴퓨터에 저장된 명령어들이 순차적으로 실행되는 방식
ex. C, FORTRAN, COBOL, PASCAL
-
객체지향 언어 : 객체 간의 메시지 통신을 이용하는 방식
ex. JAVA, C++
-
함수형 언어 : 함수들로 프로그램을 구성하여 호출하는 방식
ex. LISP
-
논리형 언어 : 논리 문장을 이용하여 프로그램을 표현하고 계산을 수행하는 개념에 기반한 방식
ex. Prolog
(3) 구현 기법에 따른 분류
-
컴파일 방식 언어 : 고급 언어를 기계어로 번영하는 방식
ex. FORTRAN, PASCAL, C, C++
-
인터프리터 방식 언어 : 고급 언어 명령문을 하나씩 번역하고 실행하는 방식
ex. BASIC, LISP, Prolog
-
혼합형 방식 언어 : 고급 언어를 컴파일하여 중간 언어로 변환한 후, 인터프리터에 의해 번역을 실행하는 방식
ex. JAVA
2. 언어별 특성
(1) 절차적 언어
- ALGOL : 알고리즘 연구개발을 위해 개발
- C : 유닉스 운영체제에서 사용하기 위해 개발
- BASIC : 교육용으로 개발
- FORTRAN : 과학 기술 전문 언어
(2) 객체지향 언어
- C++ : C 문법에 객체지향 프로그래밍 개념과 일반화 프로그래밍을 위한 템플릿 기능을 추가
- C# : 불안전 코드와 같은 기술을 통해 플랫폼 간 상호 운용성 확보
- JAVA : 자바 컴파일러에 의해 바이트 코드라는 특수한 바이너리 형태로 변환
- Delphi : PASCAL 문법에 여러 기능을 추가
(3) 스크립트 언어
- PHP : 동적 웹 페이지를 만드는 데 사용
- Perl : 강력한 문자열 처리 기능 제공
- Python : 다양한 플랫폼에서 사용 가능하고 라이브러리가 풍부함
- Javascript : 웹 브라우저 내에서 주로 사용
(4) 선언형 언어
- 함수형 언어
- Haskell : 재귀 함수나 대수적 자료형 지원
- LISP : 수학 표기법을 나타내기 위한 목적
- 논리형 언어
- Prolog : 논리식을 기반으로 객체 간 관계에 관한 문제를 해결하기 위해 사용
- 특수 분야 언어
- SQL : 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 사용
3. 객체지향 프로그래밍
(1) 구성요소
- 객체(Object) : 클래스의 인스턴스
- 개체(Entity) : 현실 세계에 보이는 본질
- 속성(Attribute) : 자료 저장소, 절차 지향 프로그래밍의 변수와 대응
- 메서드(Method) : 호출 단위, 절차 지향 프로그래밍의 함수와 대응
- 클래스(Class) : 객체를 표현하는 추상 데이터 타입으로 객체를 생성하는 틀
- 메시지(Message) : 객체 간 통신
(2) 오버로딩과 오버라이딩
(3) 인터페이스와 추상 클래스
- 공통점
- 선언만 있고 구현 내용은 없는 클래스
- 자식 클래스만이 객체를 생성할 수 있음
- 차이점
- 인터페이스는
implements
라고 쓰며, 추상 클래스는 extends
라고 씀
🧀 라이브러리
1. 개념
효율적인 프로그램 개발을 위해 필요한 프로그램을 모아 놓은 집합체로 모듈화되어 제공되는 프로그램
2. 구성
- 도움말 : 라이브러리를 이해하기 쉽도록 설명해 놓은 문서
- 실행 파일 : 라이브러리를 적용하기 위해 제공되는 파일
- 샘플 코드 : 라이브러리를 이해하고 적용하기 위해 제공되는 소스 코드
3. 종류
- 표준 라이브러리 : 프로그래밍 언어가 기본적으로 가지고 있는 라이브러리
- 외부 라이브러리 : 별도의 파일을 설치해 사용하는 라이브러리
4. 기능
- 문자열 연산 기능
- 문자열 탐색 및 치환 기능
- 수치 계산 기능
- 난수 생성 기능
- 파일 경로 조작 기능
- 날짜 조작 기능
- 로그 출력 기능
5. 모듈과 패키지
- 모듈(Module) : 전역변수, 함수 등을 모아 둔 파일
- 패키지(Package) : 모듈을 디렉터리 형식으로 구조화한 라이브러리
🐭 참고문헌
- NCS 정보처리기술사 연구회. (2020). 수제비 정보처리기사 실기 (2판). 건기원.