각 유형의 프로그래밍 언어 학습


24

모든 프로그래머가 각 유형의 언어 중 하나를 배워야한다는 이야기를 여러 번 들었습니다. 이제 이것이 반드시 사실은 아니지만 좋은 생각이라고 생각합니다.

나는 절차 언어 (펄)을 배운,하지만 있는 다른 유형은?

그들 사이의 차이점은 무엇이며 각각의 예는 무엇입니까?


8
언어를 분류하는 수많은 중복 방법이 있음을 알고 있어야합니다. 가장 일반적인 것은 패러다임을 프로그래밍하는 것이지만, 주요한 사소한 차이가 있고, 완전히 분리 된 축이 많으며, 많은 언어가 여러 패러다임에 속합니다.

1
언어를 배우는 데 관심이 있다면 Lisp와 Scala를 제안합니다. 둘을 다룰 수 있다면 많은 부분을 다뤘습니다.
Bill K

3
Peter Norvig의 조언 : 최소한 6 개의 프로그래밍 언어를 배우십시오. 클래스 추상화 (예 : Java 또는 C ++)를 지원하는 언어, Lisp 또는 ML과 같은 기능적 추상화를 지원하는 언어, Lisp와 같은 구문 추상화를 지원하는 언어, 선언적 사양 (Prolog 또는 C ++ 템플릿과 같은)을 지원하는 언어, 하나 아이콘 또는 구성표와 같은 코 루틴과 Sisal과 같은 병렬 처리를 지원하는 코 루틴을 지원합니다.
legends2k

답변:


34

용어가 표준화되지는 않았지만 주요 프로그래밍 패러다임을 분류하는 일반적인 방법은

  • 절차 적
  • 기능의
  • 논리
  • 객체 지향
  • 일반적인

절차 적 프로그래밍이 무엇인지 이미 알고있는 것 같습니다.

에서 기능적인 언어 기능은 퍼스트 클래스 개체로 처리됩니다. 즉, 함수를 다른 함수의 인수로 전달하거나 함수가 다른 함수를 반환 할 수 있습니다. 기능적 패러다임은 람다 미적분학을 기반으로하며 기능적 언어의 예는 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 ++와 같은 많은 언어가 여러 패러다임을 지원한다는 점에 유의해야합니다. 언어가 특정 패러다임을 지원한다고하더라도 모든 패러다임의 기능을 지원하지는 않을 수도 있습니다. 특정 패러다임에 어떤 기능이 필요한지에 대해서는 많은 의견이 일치하지 않습니다.


2
SQL은 어떤 범주에 속합니까?
Kirk Kuykendall

@KirkKuykendall SQL은 전문가이거나 "작은"언어입니다.
Kevin Lacquement

17
SQL은 선언적 언어입니다. 당신이 원하는 것을 말하면 그것을 얻는 방법을 알아냅니다. (Prolog와 같은 "논리적"언어는 선언적 언어의 다른 부분 집합입니다)
Izkata

3
답변을보다 완전하게하기 위해 절차에 대한 설명을 할 수 있습니까?
deworde

3
@Dima 니스 요약. 그러나 "일반 프로그래밍 (generic programming)"은 상대적으로 작은 편이다. "++"는 C ++에서 템플릿을 사용함으로써 나온 것이 아니며 Haskell과 같은 기능적 언어 에서도 매우 자주 사용된다.
Andres F.

11

프로그래밍 언어에는 주로 직교 기능이 많이 있습니다. 가장 두드러진 것은 그들이지지하는 패러다임 또는 패러다임에 있습니다. 위키 피 디아 기사는 철저하게 패러다임을 커버; 가장 중요한 패러다임은 아마도 다음과 같습니다.

  • 절차 / 구조
  • 기능의
  • 객체 지향
  • 이벤트 중심 및 측면 지향
  • 일반적인
  • 논리

그러나 언어도 다른 방식으로 다릅니다.

  • 타이핑 시스템 (동적 vs. 정적 타이핑, 강력 vs. 약한 유형)
  • 빌드 프로세스 및 런타임 환경 (해석, 바이트 코드 컴파일, 완전 컴파일)
  • 메모리 관리 (C / C ++와 같은 수동, Java와 같은 필수 자동 가비지 수집, D와 같은 선택적 GC 등)
  • 평가 훈련 (열심히하는 게으른; 대부분의 언어는 기본적으로 열성적이지만 많은 게으른 구문을 제공합니다)
  • 범위 지정 규칙 (구문 측면에서 상당히 유사한 세 가지 언어 인 PHP, Javascript 및 C에서 범위 작동 방식 비교)

2

현재 유행하고있는 여러 가지 프로그래밍 패러다임이 있습니다.

  • 객체 지향-VB.NET, C #, Java가이 범주에 속합니다. 코드는 동작 및 관련 데이터가 있고 메시지를 전달하여 서로 통신하는 객체를 중심으로 배열됩니다.
  • 기능-Haskel, Scheme, Lisp 및 F #이이 범주에 속합니다. 부작용이없는 순수한 기능. 수학과 같은 기능을 생각하십시오. 종종 구조를 통해 언어 자체를 확장 할 수 있습니다.

이것 만이 다른 유형입니까?
다이내믹

@ perl.j-아니요, 요즘 널리 사용되는 주요 항목입니다. Wikipedia- Programming paradigm을 참조하십시오 .
Oded

@ perl.j는 스택 기반 (Forth 및 Postscript)도 있습니다. 논리 : 프롤로그와 같은.
Jetti

2
그리고 0 번째 유형은 C입니다.)
yati sagade

실제 문제는 개발자가 대부분의 프로그래밍 문제를 효과적으로 코딩하기 위해 얼마나 많은 것들이 필요한지입니다.
JeffO

0

Prolog논리 프로그래밍 언어 이며 시작하기가 비교적 쉽습니다. 절차 적 프로그래밍과 완전히 다른 사고가 필요하므로 뇌를 스트레칭하려고 할 때 탐색하는 것이 좋습니다.

대학에 진학 할 경우 다른 유형의 프로그래밍 언어와 가장 적합한 언어를 소개하는 프로그래밍 언어 과정을 수강해야 합니다.


0

대부분의 주류 언어는 명령형, 기능적 및 선언적 프로그래밍 측면을 혼합합니다. 틈새 언어는 좀 더 이국적인 경향이 있거나 어떤 이유로 든 범용 프로그래밍에 적합하지 않은 흥미로운 새로운 아이디어를 소개합니다. 일부는 결코 철저하지 않은 예입니다.

  • 스프레드 시트 언어 (Excel, Google Forms) : 테이블 형식 데이터를 처리하도록 설계되었습니다.
  • 배열 언어 (APL, J) : 다차원 배열을 빠르게 처리하도록 설계되었습니다. J에서는 (+/ % #)&.:*:배열의 RMS를 계산합니다. 간결한 것으로 유명하며 읽을 수없는 것으로 유명합니다.
  • 자동화 언어 (AutoHotkey, Bash) : 양식 작성, 파일 업로드 등과 같은 일반적인 작업을 간소화하도록 설계되었습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.