Tiny Star

📚 CS [ComputerScience]

Computer Science - 프로그래밍 패러다임

청크 2023. 11. 9. 13:28

프로그램을 설계하고 구현하는 방식을 나타내는 체계 또는 철학으로

다양한 프로그래밍 패러다임이 존재하며, 이러한 패러다임은 언어 및 도구의 선택과 코드 구조/스타일에 영향을 줌

 

프로그래밍 패러다임의 종류

1. 선언형 프로그래밍 패러다임

선언형 프로그래밍은 "무엇을" 수행할 것인지를 명시하고 "어떻게" 수행할 것인지에 대한 세부 사항은 숨기는 방식
예시: SQL, HTML, CSS
목표가 무엇이어야 하는지를 선언하며, 어떻게 달성할지에 대한 구체적인 단계는 나타내지 않음

 

2. 함수형 프로그래밍 패러다임
함수형 프로그래밍은 함수를 일급 객체로 다루며, 상태 변경을 피하려는 패러다임
예시: Haskell, Lisp, JavaScript (함수형 프로그래밍 지원)
함수 조합, 불변성, 순수 함수 등의 개념을 강조

 

3. 객체지향 프로그래밍 패러다임
객체지향 프로그래밍은 프로그램을 객체의 집합으로 모델링하고 객체 간 상호 작용을 중심으로 설계
예시: Java, C++, Python
클래스와 객체, 상속, 다형성, 캡슐화와 같은 개념을 사용


4. 절차지향 프로그래밍 패러다임

절차지향 프로그래밍은 프로그램을 절차 또는 프로시저의 연속으로 구성하는 방식
예시: C, Pascal
명령어의 순서가 중요하며, 함수나 서브루틴을 사용하여 코드를 모듈화


5. 다중 패러다임
많은 프로그래밍 언어는 하나 이상의 패러다임을 지원하며, 

다중 패러다임 프로그래밍이 가능합니다. 이러한 언어는 프로그래머에게 다양한 스타일로 프로그램을 작성할 수 있는 유연성을 제공
예시: Python, C#, C++
프로그래밍 패러다임은 문제 해결과 소프트웨어 개발에 접근하는 방식을 형성하고 영향을 미치며,

프로젝트의 요구 사항 및 목표에 따라 적절한 패러다임을 선택하는 것이 중요

 

-----------------------------------------------------------

함수형 프로그래밍

정의 : 프로그램을 함수와 함수 간의 조합을 사용하여 구성하는 프로그래밍

 

특징 1. 함수는 일급 객체 : 함수를 변수에 할당하고, 함수를 다른 함수의 인자로 전달하거나 반환할 수 있어야 함

특징 2. 불변성 : 데이터는 변경 가능하지 않아야 하며, 상태의 변경보다는 새로운 상태를 만드는 것을 강조

 

함수형 프로그래밍 종류

[순수 함수]

- 정의 : 동일한 입력에 대해 항상 동일한 출력을 반환하며 부작용을 가지지 않는 함수

- 입출력 관계

입력 값에만 의존하고, 외부 상태나 환경을 변경하지 않기 때문에 함수 호출이 프로그램 상태에 아무런 영향을 미치지 않음

 

    ✅  예측 가능성 : 예측 가능하며, 같은 입력에 대한 결과는 항상 동일

    ✅  테스트가 용이 : 주어진 입력에 대한 출력을 예상하고 테스트 케이스를 작성하기 용이

    ✅  병렬 처리 : 병렬 처리에 용이하며, 여러 스레드나 프로세스에서 안전하게 사용이 가능

 

[고차 함수]

- 정의 : 고차 함수는 다른 함수를 인자로 받거나 함수를 반환하는 함수

 

    ✅  함수를 데이터처럼 다룸 : 함수를 데이터처럼 다루며, 함수를 인자로 받아 다른 함수에 전달하거나 함수를 반환이 가능

    ✅  추상화 : 고차 함수를 사용하면 코드를 추상화하고 일반화할 수 있으며, 반복적인 패턴을 추상화하여 재사용성을 높힘

    ✅  모듈화 : 코드를 모듈화하고 함수의 역할을 분리

    ✅  유연성 : 동적으로 함수를 조합하거나 변형할 수 있어, 프로그램의 유연성을 높힘