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

+ Recent posts