728x90
명령형 프로그래밍
프로그램이 어떻게 작업을 수행할지를 명시적으로 정의하는 방식
상태와 상태를 변경하는 명령어들의 연속으로 구성됨
프로그램이 어떤 작업을 수행해야 하느지 단계별로 기술하며, 컴퓨터에게 명령을 내리는 개념
# 리스트에서 짝수를 찾아 제곱한 후 새로운 리스트에 저장하는 명령형 코드
numbers = [1, 2, 3, 4, 5]
squared_evens = []
for num in numbers:
if num % 2 == 0:
squared_evens.append(num ** 2)
print(squared_evens)
- 장점
- 직관성, 가독성 : 일반적으로 작업이 어떻게 수행되는지 명확히 보여줌
- 효율적인 메모리 사용 : 상태를 직접 조작하므로 메모리 효율적 사용에 유리
- 직접적인 제어 : 작업의 세부사항에 대한 직접적인 제어를 제공하므로 세밀한 최적화가 가능
- 단점
- 복잡성 : 코드가 상태를 직접 조작하면서 복잡성이 증가할 수 있음
- 변수 상태 관리 : 변수상태를 올바르게 관리하지 않으면 버그가 발생할 수 있음
- 유지보수 어려움 : 코드가 어떻게 동작할지 이해하기 어려울 수 있어 유지보수가 불리
선언형 프로그래밍
프로그램이 무엇을 수행할지를 명시적으로 정의하는 방식
어떤 작업을 어떻게 수행할지를 명시하지 않고, 목표를 기술하는 방식
더 추상화되고 선언적인 방식으로 문제를 해결하며, 내부적으로 시스템이 어떻게 동작하는지를 숨김
함수형 프로그래밍은 선언형 프로그래밍의 대표적인 예시
# 리스트에서 짝수를 찾아 제곱한 후 새로운 리스트에 저장하는 선언형 코드 (리스트 컴프리헨션 사용)
numbers = [1, 2, 3, 4, 5]
squared_evens = [num ** 2 for num in numbers if num % 2 == 0]
print(squared_evens)
- 장점
- 간결성 : 코드가 더 짧고 간결하며, 목적에 집중할 수 있음
- 추상화와 모듈화 : 작업을 높은 수준에서 추상화하고 모듈화하므로 코드를 이해하고 재사용하기 쉬움
- 병렬처리 용이 : 함수형 프로그래밍의 특징인 불변성과 순수 함수는 병렬처리를 쉽게 만들어줌
- 단점
- 초기 학습이 어려움
- 최적화 어려움 : 목표를 선언하는 것은 좋지만 내부 동작을알기 어려워 최적화가 어려울 수 있음
- 메모리 사용량 증가 가능성 : 함수형 프로그래밍에서 불변성을 유지하려면 새로운 데이터 구조를 계속 생성해야하므로 메모리 사용량이 증가할 수 있음
728x90
'Computer Science' 카테고리의 다른 글
지역 심벌과 전역 심벌 (0) | 2024.07.24 |
---|---|
링커란? (0) | 2024.07.17 |
컴파일 언어와 인터프리터 언어 비교 (0) | 2024.07.10 |
Brute force(브루트 포스)란? (0) | 2024.07.09 |
스택(stack)과 힙(Heap) (0) | 2024.03.27 |