다중 패러다임 프로그래밍 언어에는 다음이 포함됩니다. 1. 소프트웨어의 재사용성, 유연성 및 확장성을 향상시키는 객체 지향 프로그래밍 2. 수학 함수를 핵심 프로그래밍 언어 모델링으로 사용하는 프로그래밍 패러다임; 일반 유형 프로그래밍은 더 높은 수준의 추상화를 제공합니다.
이 문서의 운영 환경: Windows 7 시스템, Dell G3 컴퓨터.
다중 패러다임 프로그래밍 언어는 다음과 같습니다.
요약:
이 문서에서는 주로 객체 지향 프로그래밍, 함수형 프로그래밍, 일반 프로그래밍이라는 세 가지 프로그래밍 패러다임의 개념에 대해 설명합니다.
프로그래밍 패러다임
프로그래밍 패러다임은 프로그래밍 언어의 기본 아이디어입니다. 프로그램이 어떻게 구성되고 실행되어야 하는지에 대한 프로그램 디자이너의 관점을 나타냅니다. 일반적인 프로그래밍 패러다임에는 절차적 프로그래밍, 객체 지향적, 기능적 프로그래밍, 일반 프로그래밍 등이 포함됩니다.
일부 프로그래밍 언어는 특정 패러다임을 위해 특별히 설계되었습니다. 예를 들어 C 언어는 절차적 프로그래밍 언어이고, Java는 비교적 순수한 객체 지향 프로그래밍 언어입니다. 또한 일부 프로그래밍 언어와 프로그래밍 패러다임 간의 관계는 일대일이 아닙니다. 예를 들어 Python, Scala 및 Groovy는 모두 객체 지향 및 함수형 프로그래밍을 어느 정도 지원합니다. C++는 다중 패러다임 프로그래밍 언어의 성공적인 예입니다. C++는 C 언어와 동일한 절차적 프로그래밍 패러다임을 지원하며, 객체 지향 프로그래밍 패러다임도 지원합니다. STL(표준 템플릿 라이브러리)을 사용하면 C++에서 일반 프로그래밍 기능을 사용할 수 있습니다. 여러 패러다임을 지원하는 것은 C++가 지금까지 여전히 강력한 활력을 유지하는 이유 중 하나일 수 있습니다.
Swift는 객체 지향 프로그래밍 패러다임, 함수형 프로그래밍 패러다임 및 일반 프로그래밍을 지원하는 일반적인 다중 패러다임 프로그래밍 언어입니다. 다양한 프로그래밍 패러다임에 대한 Swift의 지원은 생성 목표에 따라 결정됩니다. Swift의 원래 의도는 실용적인 산업 언어를 제공하는 것이었습니다. 대학이나 연구기관에서 나오는 하스켈 같은 학술 프로그래밍 언어와는 다릅니다. Apple은 Swift를 출시했을 때 명확한 비즈니스 목적을 가지고 있었습니다. Mac OS 및 iOS 시스템의 주요 프로그래밍 언어인 Objective-C는 더 이상 사용되지 않습니다. 전체 생태계의 발전.
Swift의 디자인과 개발은 모두 "실용적인 산업 언어"라는 목표를 반영합니다. 이는 Swift가 극단적인 언어 실험을 할 수 없다는 것을 결정합니다. 현실을 합리적으로 직시하여 신중하게 돌파구를 모색해야 합니다. 이는 Swift가 역사적 유산을 계승하고 오늘날 대부분의 프로그래머의 실질적인 요구 사항을 처리하는 동시에 미래를 향해 발전해야 한다고 결정합니다.
1. 객체 지향 - 상속
객체 지향 프로그래밍은 객체를 프로그램의 기본 단위로 사용하여 프로그램과 데이터를 캡슐화하여 소프트웨어의 재사용성, 유연성 및 확장성을 향상시킵니다.
객체 지향 프로그래밍의 핵심 개념:
다형성은 상속에 의해 생성된 다양한 관련 클래스를 나타내며, 해당 객체는 동일한 메시지에 다르게 응답합니다.
상속, 특정 상황에서 다음으로 클래스는 " 하위 클래스". 하위 클래스는 원래 클래스(상위 클래스라고 함)보다 더 구체적입니다.
캡슐화, 객체 지향 프로그래밍은 특정 메서드의 특정 실행 단계를 숨기고 대신 메시지 전달 메커니즘을 통해 메시지를 전송합니다.
객체 지향 프로그래밍 언어에서 객체는 프로그램의 기본 단위를 구성하는 데 사용됩니다. 다형성은 더 높은 추상화 기능을 제공하므로 보다 일반적인 프로그램을 설계할 수 있습니다. 상속은 코드를 재사용하는 방법을 제공합니다. 캡슐화는 다른 코드를 사용할 수 있는 보다 편리하고 안전한 메커니즘을 제공합니다.
요즘 대부분의 프로그래머의 작업 언어는 여전히 객체 지향 프로그래밍 언어입니다. 가장 널리 사용되는 최신 프로그래밍 언어를 사용하면 개체를 만들 수 있습니다. 소프트웨어 모델은 객체 지향 프로그래밍 언어를 사용하여 쉽게 구축할 수 있습니다. 객체는 클래스이기 때문에 현실 세계의 모든 사물과 개념과 연관되기 쉽습니다. 그러나 프로그래밍 실습을 통해 모든 것이 객체가 되는 것이 좋은 것은 아니라는 것을 알 수 있습니다. Java에서 형편없는 예를 들자면 Java(물론 기본 유형)에서는 객체만 매개변수로 함수에 전달될 수 있습니다. 따라서 함수를 다른 함수에 전달하려면 일반적으로 익명 클래스를 사용하여 함수를 객체로 래핑해야 합니다. 왜냐하면 이 클래스는 Java의 모든 객체 디자인을 만족시키기 위한 다른 목적이 없기 때문입니다.
Java에는 순수한 객체 지향 개념이 있습니다. 디자인 초기부터 모든 것이 객체인 순수한 객체 모델로 세상을 모델링하고자 했습니다. 하지만 지금은 개발되면서 점점 더 많은 비객체 항목이 Java에 추가되었습니다. 함수형 프로그래밍에서 첫 번째 수준의 함수를 얻기 위해 클로저가 도입되었습니다. 매개변수화된 유형을 얻기 위해 제네릭이 도입되었습니다. 이는 세상이 너무 풍부하고 다양하여 단일 모델을 사용하여 모델링하는 것이 성공하지 못할 것임을 시사할 수 있습니다.
2. 함수형 프로그래밍 - 개발
함수형 프로그래밍은 수학적 함수를 프로그래밍 언어 모델링의 핵심으로 사용하는 프로그래밍 패러다임입니다. 컴퓨터 작업을 수학 함수 계산으로 취급하고 프로그램 상태 및 변경 가능한 개체의 사용을 피합니다.
함수형 프로그래밍에는 두 가지 주요 아이디어가 있습니다.
함수를 프로그래밍 언어 모델링의 핵심으로 사용합니다.
상태와 가변성을 피하세요.
함수는 함수형 프로그래밍의 초석입니다. 함수형 프로그래밍 언어의 코드는 함수로 구성됩니다. 함수형 언어를 작성하는 과정은 함수를 설계하는 것입니다. 대규모 프로그램은 수천 개의 기능으로 구성되며 이러한 기능을 효율적으로 결합해야 합니다. 함수형 프로그래밍 언어는 상태와 변경 가능한 객체를 피하려고 합니다. 가변 상태가 없기 때문에 함수형 언어의 함수는 순수 함수가 됩니다. 순수 함수는 모듈화하기 쉽고, 이해하기 쉽고, 재사용하기 쉽습니다.
함수형 프로그래밍 언어는 또한 몇 가지 유용한 프로그래밍 도구를 생산했습니다:
1차 수준 함수, 클로저
커리 함수;
이 내용은 다음 장에서 언급됩니다. 이러한 프로그래밍 도구는 다른 프로그래밍 언어에도 점점 더 많이 등장하고 있습니다.
함수형 프로그래밍 언어는 장점이 있으며 앞으로 중요한 프로그래밍 패러다임이 될 수 있습니다. 그러나 함수형 프로그래밍 언어의 중요성은 다른 프로그래밍 언어의 개발에 더 많이 반영될 수 있습니다. 앞으로는 함수형 프로그래밍 패러다임을 중심으로 설계된 프로그래밍 언어가 주류 프로그래밍 언어로 자리잡는 것이 어려울 수도 있다. 단일 프로그래밍 패러다임(객체 지향)으로 구축된 Java와 같은 프로그래밍 언어는 주류가 될 가능성이 거의 없습니다. Haskell과 같은 순수 기능형 프로그래밍 언어를 추구하는 것은 학문적 언어 실험에 더 가깝습니다.
이전 섹션에서 언급한 이유를 반복합니다. 세상은 너무 풍부하고 다채롭기 때문에 단일 모델을 사용하여 세상을 모델링하는 것은 성공하지 못할 것입니다.
객체 지향 및 함수형 프로그래밍만약 언어 패러다임에 따라 현재 인기 있는 언어를 분류합니다. 객체 지향 프로그래밍 언어를 지원하는 것은 대기열이 가장 길어야합니다. 널리 사용되는 현대 프로그래밍 언어의 대부분은 객체 지향적이며 모두 객체 생성을 허용합니다. 그러나 동시에 Python, Scala, 심지어 Java와 같은 더 널리 사용되는 프로그래밍 언어 중 일부가 함수형 프로그래밍 언어의 영향을 어느 정도 받는다는 사실을 알게 될 것입니다. 이들은 모두 함수형 프로그래밍 개념을 소개하므로 함수형 스타일 코드를 어느 정도 작성할 수 있습니다. 객체지향 프로그래밍 언어에 익숙해진 후, 함수형 프로그래밍 언어를 접하면 신선함을 느끼는 경우가 많으며, 함수형 언어가 세상을 구하는 좋은 방법이라는 막연하게 느껴지기도 합니다. 그렇다면 함수형 프로그래밍 언어로 완전히 전환해야 할까요? Haskell을 사용하여 세상을 구하세요.
객체 지향 프로그래밍 언어를 대규모로 연습한 후 우리는 그 단점에 대해 더 깊이 이해하게 되었습니다(예: 다중 스레드 환경에서 소프트웨어 응용 프로그램을 작성하기 어렵습니다. 상속은 코드 재사용을 위한 좋은 방법이 아닙니다). ). 함수형 언어에는 많은 장점이 있으며 그 중 일부는 객체 지향 언어의 문제를 해결할 수 있습니다(순수 함수는 멀티 스레드 환경에 매우 적합하고 순수 함수는 본질적으로 모듈식이며 코드 재사용에 매우 친화적입니다). 그러나 함수형 프로그래밍에는 특정 문제가 있을 수도 있습니다. 이러한 문제는 대규모 산업 관행 이후에만 드러날 수 있습니다. 이제 우리는 객체만으로 세계를 모델링하는 것이 어렵다는 것을 확인했습니다. 그렇다면 수학적 모델로 세상을 모델링하는 것이 더 나을 수는 없습니다. 확실한 것은 그들 모두가 자신이 뛰어난 분야와 환경을 가지고 있다는 것입니다. 아직 모든 문제를 해결할 수 있는 프로그래밍 패러다임은 없습니다.
더 큰 현실은 수많은 회사가 객체 지향 프로그래밍 언어에 막대한 투자를 했다는 것입니다. 비록 객체 지향 프로그래밍이 몇 가지 문제를 드러냈음에도 불구하고 함수형 프로그래밍은 신중한 사람이라면 이러한 문제를 해결할 수 없으며 포기할 수도 없습니다. 객체지향 프로그래밍은 즉시 함수형 프로그래밍 언어로 완전히 전환됩니다.
현실적인 선택은 기능 지원을 제공하면서 객체 지향 프로그래밍을 지원하는 것입니다. 이런 방식으로 객체 지향에 익숙한 대부분의 장소에서는 여전히 객체 지향 방법을 사용할 수 있습니다. 그리고 함수형 프로그래밍이 적합하고 함수형 프로그래밍에 대한 사고와 능력이 있는 곳에서는 함수형 프로그래밍 방법을 사용하여 생산성을 향상시킬 수 있습니다.
3. 일반 프로그래밍 - 아름다운 장식일반 프로그래밍은 또 다른 흥미로운 주제입니다. 제네릭은 프로그래밍 언어, 즉 매개변수화된 유형에 대해 더 높은 수준의 추상화를 제공합니다. 즉, 원래 특정 유형에 특정한 알고리즘이나 클래스에서 유형 정보를 추상화하는 것입니다. 이 추상화된 개념은 C++의 STL(표준 템플릿 라이브러리)의 템플릿입니다. STL은 일반 프로그래밍의 위력을 보여주었으며 등장하자마자 C++의 강력한 무기가 되었습니다. C++ 외에도 C#, Java, Haskell과 같은 프로그래밍 언어에서는 제네릭이라는 개념을 도입했습니다.
일반 프로그래밍은 좀 더 지역적인 개념으로, 유형을 좀 더 추상적으로 처리하는 방법, 즉 매개변수화된 유형과 관련이 있습니다. 이는 언어의 핵심 개념을 지원하기에 충분하지 않습니다. 우리는 프로그래밍 언어가 다른 프로그래밍 패러다임이 없는 순전히 일반 프로그래밍이라는 말을 듣지 못합니다. 그러나 제네릭은 프로그래밍 언어의 핵심을 바꾸지 않기 때문에 대부분의 경우 다른 프로그래밍 방법에 잘 통합될 수 있습니다. C++, Scala, Haskell 등 다양한 스타일을 가진 프로그래밍 언어는 모두 제네릭을 지원합니다. 일반 프로그래밍은 더 높은 수준의 추상화를 제공하며 이는 더 큰 표현력을 의미합니다. 이것은 대부분의 프로그래밍 언어에 대한 맛있는 반주입니다.
Swift에서는 제네릭이 널리 사용되며, 많은 Swift 표준 라이브러리가 제네릭 코드로 구축되었습니다. 예를 들어 Swift의 배열 유형과 사전 유형은 모두 일반 세트입니다. 이와 같은 예는 Swift의 모든 곳에서 찾을 수 있습니다.
요약
이 시리즈 기사에서는 주로 Swift를 예로 들어 다중 패러다임 프로그래밍 언어를 설명하겠습니다. 일련의 기사는 Swift에서 지원하는 세 가지 프로그래밍 패러다임을 논의하기 위해 세 부분으로 나누어져 있습니다.
객체 지향 프로그래밍 패러다임
기능적 프로그래밍 패러다임
일반 프로그래밍
더 많은 관련 지식을 보려면, FAQ 칼럼을 방문해 주세요!
위 내용은 다중 패러다임 프로그래밍 언어란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!