오늘은 함수형 프로그래밍에 대해 알아보겠습니다. 보다 구체적으로 선언적 프로그래밍과 명령적 프로그래밍의 차이점을 살펴보겠습니다.

먼저 용어를 빠르게 살펴보겠습니다. 그런 다음 이러한 프로그래밍 스타일을 비교하고 Java에서 어떻게 나타나는지, 언어가 행복한 공존을 지원하는지 여부를 확인합니다.

함수형 프로그래밍은 함수가 절차적 프로그래밍 에서와 같이 서브루틴이 아닌 수학적 함수로 이해되는 패러다임입니다 . 즉, 이 두 패러다임에서 "기능"이라는 단어를 다르게 해석합니다. 이것을 기억하고 혼동하지 마십시오. Java는 하위 프로그램을 "메소드"라고 하는 반면 함수는 수학 함수(람다 함수 또는 메서드 참조)를 나타내므로 혼동하지 않습니다.

실제로 절차적 프로그래밍에서 함수는 입력 변수뿐만 아니라 외부 요인(예: 함수 외부의 다른 변수 또는 시스템 상태)에도 의존합니다. 이는 동일한 인수를 사용하여 동일한 함수를 호출하지만 다른 컨텍스트에서 다른 결과를 생성할 수 있음을 의미합니다. 함수형 프로그래밍에서 함수가 동일한 인수로 호출되면 함수는 입력 데이터에만 의존하기 때문에 항상 동일한 결과를 생성합니다.

함수형 프로그래밍의 장점

  • 향상된 코드 신뢰성
  • 편리한 단위 테스트
  • 컴파일 중 코드 최적화 기회
  • 동시성 기회

함수형 프로그래밍의 단점

함수형 프로그래밍의 단점은 다음과 같은 모든 동일한 기능에서 비롯됩니다.

  • 할당문이 없습니다. 대신 새 값이 새 변수에 저장되므로 지속적으로 메모리를 할당하고 자동으로 해제해야 합니다. 결과적으로 매우 효율적인 가비지 수집은 기능적 프로그램을 실행하는 모든 시스템의 필수 부분입니다.

  • 엄격하지 않은 평가는 함수 호출 순서를 예측할 수 없다는 것을 의미하며, 이는 연산 순서가 중요한 경우 I/O 문제를 일으킵니다.

이것으로 함수형 프로그래밍에 대한 간단한 검토를 마칩니다. 이제 프로그래밍 스타일로 넘어 갑시다.

명령형 프로그래밍은 다음 기능을 특징으로 하는 프로그래밍 패러다임입니다.

  • 프로그램의 소스 코드는 명령어(명령문)로 구성됩니다.

  • 지침을 순차적으로 따라야 합니다.

  • 이전 명령을 실행하여 생성된 데이터는 후속 명령으로 메모리에서 읽을 수 있습니다.

  • 명령을 실행하여 얻은 데이터를 메모리에 쓸 수 있습니다.

명령형 언어의 주요 기능은 다음과 같습니다.

  • 부울 변수 사용.
  • 대입 연산자 사용.
  • 복합 표현의 사용.
  • 서브루틴 사용.

명령형 프로그램은 자연어에서 명령형으로 표현되는 명령과 같습니다. 즉, 명령형 프로그램은 일련의 명령입니다.

명령형 프로그래밍 언어에는 C 및 C++가 포함됩니다.

선언적 프로그래밍은 문제에 대한 솔루션이 지정되는 프로그래밍 패러다임입니다. 즉, 결과를 달성하는 방법이 아니라 최종 결과가 설명됩니다. HTML은 선언적 언어의 예입니다. 이 언어로 태그를 작성할 때 요소가 페이지에 그려지는 방법에 대해서는 생각하지 않습니다. 우리는 단지 페이지가 어떻게 보여야 하는지를 설명할 뿐입니다.

또 다른 선언적 프로그래밍 언어는 SQL입니다.

실제 사례를 고려하여 두 가지 프로그래밍 스타일을 비교해 봅시다 . 특정 장소에 도달하는 방법을 사람에게 어떻게 설명합니까?

이 상황을 상상해 보십시오. 거리에서 한 남자가 우리에게 다가와서 "박물관에 어떻게 가나요?"라고 묻습니다.

명령형 접근 방식을 사용하면 걸어서 거기에 도착하는 방법에 대한 알고리즘을 그에게 제공할 수 있습니다.

  • 여기서 우회전
  • 직선으로 2블록 걷기
  • 오른쪽으로 돌리세요

선언적 접근 방식을 사용하면 단순히 주소를 제공한 다음 사용자가 스스로 올바른 장소로 이동할 수 있습니다.

Java는 현재 다중 패러다임 프로그래밍 언어 입니다 . 다중 패러다임은 언어가 여러 패러다임을 지원함을 의미합니다.

오랜 발전 과정에서 언어는 객체 지향 모델을 확장하여 사용자가 다양한 도구를 사용하고 특정 작업에 가장 적합한 도구를 선택할 수 있습니다.

결과적으로 Java는 현재 명령형 접근 방식(예: 메서드 호출을 위한 코드 작성)과 선언적 접근 방식(예: 런타임 시 사용 가능한 주석)을 모두 지원합니다.

요약하자면:

  • 다양한 프로그래밍 패러다임이 있습니다.

  • 선언적 접근 방식과 명령적 접근 방식이 있습니다.

  • 당면한 작업에 가장 적합한 것을 선택해야 합니다.

  • Java는 두 가지 접근 방식을 모두 지원하는 다중 패러다임 언어입니다.