모든 프로그래머가 각 유형의 언어 중 하나를 배워야한다는 이야기를 여러 번 들었습니다. 이제 이것이 반드시 사실은 아니지만 좋은 생각이라고 생각합니다.
나는 절차 언어 (펄)을 배운,하지만 있는 다른 유형은?
그들 사이의 차이점은 무엇이며 각각의 예는 무엇입니까?
모든 프로그래머가 각 유형의 언어 중 하나를 배워야한다는 이야기를 여러 번 들었습니다. 이제 이것이 반드시 사실은 아니지만 좋은 생각이라고 생각합니다.
나는 절차 언어 (펄)을 배운,하지만 있는 다른 유형은?
그들 사이의 차이점은 무엇이며 각각의 예는 무엇입니까?
답변:
용어가 표준화되지는 않았지만 주요 프로그래밍 패러다임을 분류하는 일반적인 방법은
절차 적 프로그래밍이 무엇인지 이미 알고있는 것 같습니다.
에서 기능적인 언어 기능은 퍼스트 클래스 개체로 처리됩니다. 즉, 함수를 다른 함수의 인수로 전달하거나 함수가 다른 함수를 반환 할 수 있습니다. 기능적 패러다임은 람다 미적분학을 기반으로하며 기능적 언어의 예는 LISP, Scheme 및 Haskel입니다. 흥미롭게도 JavaScript는 함수형 프로그래밍도 지원합니다.
에서 논리적 인 프로그래밍 당신과 같은 엔티티 사이의 관계에 대해 설명 술어 정의 president(Obama, USA)
또는 president(Medvedev, Russia)
. 이 술어는 리터럴 값뿐만 아니라 매우 복잡하고 변수를 포함 할 수 있습니다. 모든 술어를 지정한 후에는 시스템에 대한 질문을하고 논리적으로 일관된 답변을 얻을 수 있습니다.
논리적 프로그래밍의 큰 아이디어는 컴퓨터에 물건을 계산 하는 방법 을 알려주는 대신 물건이 무엇인지 알려주 는 것입니다. 예 : PROLOG.
객체 지향 패러다임은 어떤면에서 절차 적 프로그래밍의 확장입니다. 절차 적 프로그래밍에는 정수 및 부동 소수점과 같은 기본 유형, 배열 또는 목록과 같은 복합 유형 및 구조와 같은 사용자 정의 유형이 될 수있는 데이터가 있습니다. 또한 데이터에서 작동하는 절차가 있습니다. 반대로 OO에는 데이터와 절차가 모두 포함 된 개체가 있습니다. 이를 통해 캡슐화, 상속 및 다형성과 같은 멋진 기능을 사용할 수 있습니다. 예 : 스몰 토크, C ++, 자바, C #
일반 프로그래밍은 1983 년 Ada에서 처음 소개되었으며 C ++로 템플릿을 도입 한 이후 널리 퍼졌습니다. 이것이 작동하는 실제 데이터 유형을 지정하지 않고 코드를 작성하고 컴파일러가 알아낼 수 있도록하는 아이디어입니다. 예를 들어 쓰는 대신
void swap(int, int);
void swap(float, float);
....
당신은 쓸 것입니다
void swap(T, T);
코드에서 실제로 사용될 T
때 컴파일러가 특정 코드를 생성 swap()
하도록합니다.
일반적인 프로그래밍은 C ++, Java 및 C #에 의해 다양한 수준으로 지원됩니다.
C ++와 같은 많은 언어가 여러 패러다임을 지원한다는 점에 유의해야합니다. 언어가 특정 패러다임을 지원한다고하더라도 모든 패러다임의 기능을 지원하지는 않을 수도 있습니다. 특정 패러다임에 어떤 기능이 필요한지에 대해서는 많은 의견이 일치하지 않습니다.
프로그래밍 언어에는 주로 직교 기능이 많이 있습니다. 가장 두드러진 것은 그들이지지하는 패러다임 또는 패러다임에 있습니다. 위키 피 디아 기사는 철저하게 패러다임을 커버; 가장 중요한 패러다임은 아마도 다음과 같습니다.
그러나 언어도 다른 방식으로 다릅니다.
현재 유행하고있는 여러 가지 프로그래밍 패러다임이 있습니다.
대부분의 주류 언어는 명령형, 기능적 및 선언적 프로그래밍 측면을 혼합합니다. 틈새 언어는 좀 더 이국적인 경향이 있거나 어떤 이유로 든 범용 프로그래밍에 적합하지 않은 흥미로운 새로운 아이디어를 소개합니다. 일부는 결코 철저하지 않은 예입니다.
(+/ % #)&.:*:
배열의 RMS를 계산합니다. 간결한 것으로 유명하며 읽을 수없는 것으로 유명합니다.