프로그래밍 언어 패러다임
프로그래밍 패러다임은 소프트웨어를 구성하는 사고방식과 방법론을 의미합니다. 정보처리기사에서는 각 패러다임의 특징과 대표 언어, OOP 원칙이 자주 출제됩니다.
절차적 프로그래밍 (Procedural Programming)
- 명령을 순서대로 실행하는 방식. 함수로 기능 분리
- 대표 언어: C, Pascal, FORTRAN
- 특징: 순차 실행, 재사용을 위한 함수/프로시저
- 단점: 대규모 프로그램에서 코드 관리 어려움
객체지향 프로그래밍 (OOP)
OOP 4대 특성
- 캡슐화(Encapsulation): 데이터와 메서드를 하나의 클래스로 묶고 내부 구현을 숨김. 정보 은닉
- 상속(Inheritance): 부모 클래스의 속성과 메서드를 자식 클래스가 물려받음. 재사용성 향상
- 다형성(Polymorphism): 같은 인터페이스로 다른 구현. 오버라이딩(런타임), 오버로딩(컴파일타임)
- 추상화(Abstraction): 복잡한 내부 구현을 숨기고 필요한 인터페이스만 노출
SOLID 원칙
- S – 단일 책임(SRP): 클래스는 하나의 책임만
- O – 개방·폐쇄(OCP): 확장에는 열려있고 수정에는 닫혀있음
- L – 리스코프 치환(LSP): 자식 클래스는 부모 클래스로 대체 가능해야 함
- I – 인터페이스 분리(ISP): 클라이언트가 사용하지 않는 인터페이스에 의존하지 않음
- D – 의존성 역전(DIP): 상위 모듈이 하위 모듈에 의존하지 않고 추상화에 의존
대표 언어
Java, C++, Python, C#, Kotlin, Swift
함수형 프로그래밍 (Functional Programming)
- 함수를 일급 객체(First-class citizen)로 취급
- 순수 함수: 동일 입력 → 항상 동일 출력, 부작용(Side Effect) 없음
- 불변성(Immutability): 데이터를 변경하지 않고 새 데이터 생성
- 고차 함수: 함수를 인자로 받거나 반환하는 함수 (map, filter, reduce)
- 대표 언어: Haskell, Erlang, Scala, F#. Python/Java도 함수형 지원
기타 패러다임
- 선언형(Declarative): 어떻게(How)가 아닌 무엇(What)을 명시. SQL, HTML
- 논리형(Logic): 규칙과 사실을 정의하고 추론. Prolog
- 반응형(Reactive): 데이터 스트림과 변화 전파. RxJava
주요 언어 특징 비교
- 정적 타입: Java, C, C++, Go – 컴파일 시 타입 검사
- 동적 타입: Python, JavaScript, Ruby – 런타임 타입 검사
- 강한 타입: Java, Python – 암묵적 타입 변환 제한
- 약한 타입: C, JavaScript – 암묵적 타입 변환 허용
시험 핵심 포인트
- OOP 다형성: 오버라이딩(런타임, 상속) vs 오버로딩(컴파일타임, 같은 이름 다른 매개변수)
- 캡슐화 목적: 정보 은닉, 외부에서 직접 접근 차단
- SOLID: 객체지향 설계 5원칙 (SRP, OCP, LSP, ISP, DIP)
- 함수형: 순수 함수 + 불변성 + 고차 함수
마무리
프로그래밍 언어 파트는 개념 정의 문제와 코드 추적 문제가 함께 출제됩니다. OOP 4대 특성과 SOLID 원칙은 암기 필수 항목입니다.