프로그래밍을 수행하는 데 있어 특정한 접근 방식을 나타내는 개념입니다. 패러다임은 프로그램을 설계하고 작성하는 데 사용하는 방법론이나 철학을 정의하며, 각 패러다임은 문제를 해결하는 방식을 다르게 접근합니다. 여러 프로그래밍 언어는 특정 패러다임을 기반으로 설계되거나, 여러 패러다임을 혼합하여 사용할 수 있습니다.
특징:프로그램을 절차 또는 함수의 연속으로 구성하는 방법입니다. 코드가 순차적으로 실행되며, 상태를 변경하는 명령어들의 흐름에 초점을 맞춥니다.
예:C,Pascal
특징적인 요소:변수,루프,조건문,함수
특징:프로그램을 객체(데이터와 그 데이터를 처리하는 메서드의 집합)로 구성하여 상호작용하게 하는 방법입니다. 클래스와 객체, 상속, 다형성, 캡슐화 등의 개념이 중심입니다.
예:java,python,c++
특징적인 요소:클래스,객체,상속,다형성,캡슐화
특징:상태와 가변 데이터를 최소화하고, 함수 호출을 중심으로 구성된 패러다임입니다. 수학적 함수와 비슷한 개념을 사용하여 부작용 없이 값을 반환하는 함수를 중시합니다.
예:Python
특징적인 요소:순수 함수,고차 함수,불변성,재귀
특징:어떻게(how) 할 것인지보다 무엇(what) 을 할 것인지에 집중하여 프로그램을 작성하는 방식입니다. 프로그램이 수행할 작업을 선언적으로 기술하고, 실행은 언어가 처리하게 합니다.
예:SQL(데이터베이스 쿼리),HTML(웹 페이지 구조)
특징적인 요소:선언적 문법,추상화
특징:프로그램의 흐름이 이벤트에 의해 결정되는 방식입니다. 사용자 입력, 타이머 등 외부의 이벤트를 처리하는 루프를 통해 제어합니다.
예:Javascript(웹 개발),C#(GUI 응용 프로그램)
특징적인 요소:이벤트 핸들러, 콜백함수,이벤트 루프
특징:동시에 여러 작업을 수행하도록 설계된 프로그램 작성 방식입니다. 병행 프로그래밍은 여러 작업이 교대로 진행되도록 하며, 병렬 프로그래밍은 여러 작업이 실제로 동시에 실행됩니다.
예:Go,java(스레드)
특징적인요소:스레드,프로세스,동기화,공유 메모리
많은 현대 프로그래밍 언어는 여러 패러다임을 지원합니다. 예를 들어, Python은 객체지향 프로그래밍과 함수형 프로그래밍을 모두 지원하며, JavaScript는 객체지향, 절차적, 이벤트 기반 프로그래밍을 모두 사용할 수 있습니다.