위키프로젝트:컴퓨터 과학/프로그래밍 언어: 두 판 사이의 차이

내용 삭제됨 내용 추가됨
편집 요약 없음
위키프로젝트:컴퓨터 과학 문서로 넘겨주기
1번째 줄:
{{병합#넘겨주기 필요|[[위키프로젝트:컴퓨터 과학|컴퓨터 과학#병합 토론}}]]
 
현재 한국어 위키백과에 절대적으로 부족한 프로그래밍 개념과 언어 관련 페이지들에 대한 기준을 마련하고 채워 나가는 작업을 하려 합니다. --[[사용자:토끼군|토끼군]]
 
== 프로그래밍 언어 ==
 
=== 페이지 이름 ===
기본적인 원칙은 이렇습니다.
* "(프로그래밍 언어)"라는 접미사를 붙여서 페이지를 만드는 경우:
** 실존하는 사람의 이름에서 따 온 프로그래밍 언어는 항상 붙입니다. (Eiffel 등)
** 음역이 거의 불가능한 세 글자 이하의 두문자어들은 거의 대부분 붙입니다. (ABC, C, D 등)
** 해당 언어의 영문 페이지가 동음이의 페이지로 연결되어 있을 경우 거의 대부분 붙입니다. (Forth 등)
** 한국어에서 잘 알려진 이름(위성 이름이라든지……)과 겹칠 가능성이 매우 큰 이름도 붙입니다. (Io, Prolog, Perl 등)
* 세 글자 이하의 두문자어를 제외한 모든 페이지 이름은 기호까지 최대한 음역합니다. (COBOL, FORTRAN 등)
** "#"은 항상 "샤프"로 적습니다.
** ".NET"은 항상 "닷넷"으로 적습니다.
* 둘 이상의 단어가 CamelCase로 연결된 페이지 이름은 최대한 붙여 씁니다. (QBasic, ActionScript 등)
 
{| class="wikitable"
! 실제 이름 || 영문 이름 || 페이지 이름
|-
| '''ABAP''' || [[:en:ABAP|ABAP]] || [[ABAP]]
|-
| '''ABC''' || [[:en:ABC programming language|ABC programming language]] || [[ABC (프로그래밍 언어)]]
|-
| '''Ada''' || [[:en:Ada programming language|Ada programming language]] || [[에이다 (프로그래밍 언어)]]
|-
| '''ALGOL''' || [[:en:ALGOL|ALGOL]] || [[알골 (프로그래밍 언어)]]
|-
| '''APL''' || [[:en:APL programming language|APL programming language]] || [[APL (프로그래밍 언어)]]
|-
|   J || [[:en:J programming language|J programming language]] || [[J (프로그래밍 언어)]]
|-
|   K || [[:en:K programming language|K programming language]] || [[K (프로그래밍 언어)]]
|-
| '''AppleScript''' || [[:en:AppleScript|AppleScript]] || [[애플스크립트]]
|-
| '''Assembly''' || [[:en:Assembly language|Assembly language]] || [[어셈블리어]]
|-
|   x86 Assembly || [[:en:X86 assembly language|X86 assembly language]] || [[x86 어셈블리 언어]]
|-
| '''AWK''' || [[:en:AWK programming language|AWK programming language]] || [[AWK]]
|-
| '''BASIC''' || [[:en:BASIC programming language|BASIC programming language]] || [[베이직]]
|-
|   GW-BASIC || [[:en:GW-BASIC|GW-BASIC]] || [[GW-BASIC]]
|-
|   QBasic || [[:en:QBasic|QBasic]] || [[큐베이직]]
|-
|   Quick BASIC || [[:en:QuickBASIC|QuickBASIC]] || [[퀵베이직]]
|-
|   Visual Basic || [[:en:Visual Basic|Visual Basic]] || [[비주얼 베이직]]
|-
|   Visual Basic .NET || [[:en:Visual Basic .NET|Visual Basic .NET]] || [[비주얼 베이직 닷넷]]
|-
|   Applesoft BASIC || [[:en:Applesoft BASIC]] || [[애플소프트 베이직]]
|-
|   MSX BASIC || [[:en:MSX BASIC]] || [[MSX 베이직]]
|-
|   Turbo BASIC || [[:en:Turbo Basic]] || [[터보 베이직]]
|-
| '''BCPL''' || [[:en:BCPL|BCPL]] || [[BCPL]]
|-
| '''C''' || [[:en:C programming language|C programming language]] || [[C (프로그래밍 언어)]]
|-
| '''C++''' || [[:en:C plus plus|C plus plus]] || [[C++]]
|-
| '''C#''' || [[:en:C Sharp|C Sharp]] || [[C 샤프]]
|-
| '''Clipper''' || [[:en:Clipper programming language|Clipper programming language]] || [[클리퍼]]
|-
| '''COBOL''' || [[:en:COBOL|COBOL]] || [[코볼]]
|-
| '''ColdFusion''' || [[:en:ColdFusion|ColdFusion]] || [[콜드퓨전]]
|-
| '''CPL''' || [[:en:Combined Programming Language|Combined Programming Language]] || [[CPL (프로그래밍 언어)]]?
|-
| '''D''' || [[:en:D programming language|D programming language]] || [[D (프로그래밍 언어)]]
|-
| '''Dylan''' || [[:en:Dylan programming language|Dylan programming language]] || [[딜런 (프로그래밍 언어)]]
|-
| '''ECMAScript''' || [[:en:ECMAScript|ECMAScript]] || [[ECMA스크립트]]
|-
|   ActionScript || [[:en:ActionScript|ActionScript]] || [[액션스크립트]]
|-
|   JavaScript''' || [[:en:JavaScript|JavaScript]] || [[자바스크립트]]
|-
|   JScript || [[:en:JScript|JScript]] || [[J스크립트]]
|-
| '''Eiffel''' || [[:en:Eiffel programming language|Eiffel programming language]] || [[에펠 (프로그래밍 언어)]]
|-
| '''Erlang''' || [[:en:Erlang programming language|Erlang programming language]] || [[얼랑 (프로그래밍 언어)]]
|-
| '''Euphoria''' || [[:en:Euphoria programming language|Euphoria programming language]] || [[유포리아 (프로그래밍 언어)]]
|-
| '''FORTRAN''' || [[:en:Fortran|Fortran]] || [[포트란]]
|-
| '''Forth''' || [[:en:Forth programming language|Forth programming language]] || [[포스 (프로그래밍 언어)]]
|-
|   PostScript || [[:en:PostScript|PostScript]] || [[포스트스크립트]]
|-
| '''Haskell''' || [[:en:Haskell programming language|Haskell programming language]] || [[하스켈]]<ref group="*">예외적으로 [[하스켈]]은 Haskell Curry를 [[해스켈 커리]]라 부르기 때문에 붙이지 않습니다.</ref>
|-
| '''Java''' || [[:en:Java programming language|Java programming language]] || [[자바 (프로그래밍 언어)]]
|-
| &nbsp; Groovy || [[:en:Groovy|Groovy]] || [[그루비]]
|-
| '''io''' || [[:en:Io programming language|Io programming language]] || [[아이오 (프로그래밍 언어)]]
|-
| '''Lisp''' || [[:en:Lisp programming language|Lisp programming language]] || [[리스프]]
|-
| &nbsp; Common Lisp (CL) || [[:en:Common Lisp|Common Lisp]] || [[커먼 리스프]]
|-
| &nbsp; Scheme || [[:en:Scheme programming language|Scheme programming language]] || [[스킴 (프로그래밍 언어)]]
|-
| '''Logo''' || [[:en:Logo programming language|Logo programming language]] || [[로고 (프로그래밍 언어)]]
|-
| '''Lua''' || [[:en:Lua programming language|Lua programming language]] || [[루아 (프로그래밍 언어)]]
|-
| '''ML''' || [[:en:ML programming language|ML programming language]] || [[ML (프로그래밍 언어)]]
|-
| &nbsp; Standard ML (SML) || [[:en:Standard ML|Standard ML]] || -
|-
| &nbsp; Ocaml || [[:en:Ocaml|Ocaml]] || -
|-
| &nbsp; F# || [[:en:F sharp programming language|F sharp programming language]] || [[F 샤프 (프로그래밍 언어)]]
|-
| '''Modula-2''' || [[:en:Modula-2|Modula-2]] || [[모듈라-2]]
|-
| '''Modula-3''' || [[:en:Modula-3|Modula-3]] || [[모듈라-3]]
|-
| '''Object Pascal''' || [[:en:Object Pascal|Object Pascal]] || [[오브젝트 파스칼]]
|-
| &nbsp; Delphi || [[:en:Delphi programming language|Delphi programming language]] || [[델파이 (프로그래밍 언어)]]
|-
| '''Objective-C''' || [[:en:Objective-C|Objective-C]] || [[오브젝티브-C]]
|-
| '''Oz''' || [[:en:Oz programming language|Oz programming language]] || [[오즈 (프로그래밍 언어)]]
|-
| '''Pascal''' || [[:en:Pascal programming language|Pascal programming language]] || [[파스칼 (프로그래밍 언어)]]
|-
| '''Perl''' || [[:en:Perl|Perl]] || [[펄]]
|-
| '''PHP''' || [[:en:PHP|PHP]] || [[PHP]]
|-
| '''PL/I''' || [[:en:PL/I|PL/I]] || [[PL/I]]
|-
| '''Prolog''' || [[:en:Prolog|Prolog]] || [[프롤로그]]
|-
| '''PowerBuilder''' || [[:en:PowerBuilder|PowerBuilder]] || [[파워빌더]]
|-
| '''Python''' || [[:en:Python programming language|Python programming language]] || [[파이썬]]
|-
| &nbsp; Boo || [[:en:Boo programming language|Boo programming language]] || [[부 (프로그래밍 언어)]]
|-
| '''Ruby''' || [[:en:Ruby programming language|Ruby programming language]] || [[루비 (프로그래밍 언어)]]
|-
| '''Self''' || [[:en:Self programming language|Self programming language]] || [[셀프 (프로그래밍 언어)]]
|-
| '''Simula''' || [[:en:Simula|Simula]] || [[시뮬라]]
|-
| '''Smalltalk''' || [[:en:Smalltalk|Smalltalk]] || [[스몰토크]]
|-
| '''SQL''' || [[:en:SQL|SQL]] || [[SQL]]?
|-
| '''Tcl''' || [[:en:Tcl|Tcl]] || [[Tcl]]?
|-
| '''XSL''' || [[:en:Extensible Stylesheet Language|Extensible Stylesheet Language]] || [[XSL]]
|}
<references group="*" />
 
=== 틀 ===
 
==== {{틀|주요 프로그래밍 언어}} ====
가장 참고가 될 만한 템플릿은 [[:fr:Modèle:SérieLangagesInfo|프랑스어 위키백과]]로, 객체지향/명령형/함수형/정의형/concurrent 식으로 분리해 놓고 있습니다.
 
==== {{틀|프로그래밍 언어 정보}} ====
프로그래밍 언어에 대한 일반적인 정보를 담는 데 사용합니다. 주의할 점은:
* 프로그래밍 언어와 구현체가 밀접하게 결합된 경우도 있지만 (예를 들어 [[파이썬]]) 아닌 경우도 많습니다. (예를 들어 [[C++]]) 따라서 프로그래밍 언어 자체의 발전은 구현체의 발전과 별도로 서술해야 할 수도 있습니다.
* 프로그래밍 언어의 버전은 표준 문서가 존재할 경우 그 문서의 버전을 기준으로 해 주세요. (예를 들어서 ISO/IEC C++ 2003)
 
=== 예제코드 ===
가급적 예제코드를 넣어주세요.
 
== 프로그래밍 패러다임 ==
아래는 [[사용자:토끼군]]이 일단 대략적으로 만든 패러다임 및 언어의 분류입니다. 고칠 점은 토론을 쓰시거나 직접 고쳐 주세요.
 
* [[명령형 프로그래밍]]: 프로그램의 상태를 변화시키는 명령으로 이루어진 언어.
* [[선언형 프로그래밍]]: (일반적으로) 프로그램이 결과적으로 어떤 행동을 해야 할지 정하는 ‘선언’으로 이루어진 언어.
* [[순차적 프로그래밍]]: 실행의 흐름이 순차적으로 이루어지는 언어.
* [[절차적 프로그래밍]]: 프로그램이 연속적으로 어떤 일을 하는 프로시저 또는 함수들로 구성된 언어.
** [[구조적 프로그래밍]]: 프로그램이 서로 구별되는 일을 하는 여러 부분으로 구조화된 언어.
* [[객체지향 프로그래밍]]: 프로그램이 객체와 그 객체에 대해 적용되는 속성 및 행동으로 구성되는 언어.
** 클래스 기반 프로그래밍: 클래스와 인스턴스의 구분이 뚜렷한 언어.
** [[프로토타입 기반 프로그래밍]]: 클래스와 인스턴스의 구분이 없는 언어.
* [[관점 지향 프로그래밍]]: 일반적인 책임 구분을 넘어서는 문제를 관점(aspect)으로 추가적으로 모델링한 언어.
* [[일반적 프로그래밍]]: 자료형에 구애를 받지 않는 일반화된 프로그래밍이 가능한 언어.
* [[함수형 프로그래밍]]: 함수가 일반적인 값들과 동등하게 취급되는 언어. [[람다 대수]]에 기반합니다.
* [[논리형 프로그래밍]]: 프로그램이 단언(assertion)과 목표(goal)로 구성되는 언어.
* [[제한형 프로그래밍]]: 변수 사이의 관계를 제한(constraint)을 통해 정의하는 언어.
* 데이터 구조와 연관을 맺는 언어
** [[벡터 프로그래밍]]: 스칼라와 벡터, 행렬 등을 투명하게 접근하고 연산할 수 있는 언어.
** 리스트 기반 프로그래밍 언어: 리스트 데이터 구조를 기반으로 하는 언어.
** [[스택 기반 프로그래밍 언어]]: 스택 데이터 구조를 기반으로 하는 언어.
* [[규칙 기반 프로그래밍]]: 어떤 특정한 조건(condition)이 일어 났을 때 수행할 특정한 동작, 즉 규칙(rule)으로 구성된 언어.
** [[사건 기반 프로그래밍]]: 비동기적으로 발생하는 사건(event)과 그 사건을 처리하는 처리자(handler)로 구성된 언어.
* [[병행 프로그래밍]]: 여러 프로그램의 흐름이 동시에 일어 나는 것을 지원하며 그 흐름을 제어할 방법을 지원하는 언어.
** [[분산 컴퓨팅|분산 프로그래밍]]: 여러 프로그램의 흐름이 서로 독립적인 여러 개의 주체에 의해 일어나는 언어.
* [[파이프라인 프로그래밍 언어]]: 데이터를 순차적으로 변형시키는 여러 부분으로 이루어진 언어.
* [[투영적 프로그래밍]](reflexive programming. 다른 번역어 있으면 알려 주세요): 실행 시간에 프로그램 자신의 고수준 구조를 접근할 수 있는 언어.
* [[문학적 프로그래밍]]: 소스 코드와 그 문서화가 유기적으로 결합된 언어.
* [[시각적 프로그래밍]]: 일차원적인 텍스트가 아닌 이차원 이상의 시각적인 방법으로 프로그래밍이 가능한 언어.
* [[매크로 프로그래밍 언어]]: 일반적인 텍스트 안에 삽입되어 동작하는 프로그래밍 언어. 전처리기도 여기에 속합니다.
* [[어셈블리어]]: 기계어와 직접적인 대응이 가능한 저수준 언어. 저급언어로 분류되는 언어들은 사실상 모두 여기에 해당합니다.
** [[기계어]]: CPU와 같은 특정한 기계 장치(또는 그를 흉내내는 simulator)가 바로 해석할 수 있는 언어.
* [[전문 영역 언어]]: 특정한 영역(domain)만을 대상으로 하는 언어.
* [[메타프로그래밍]]: 또 다른 프로그램을 만드는 프로그램으로 문제를 해결하는 언어.
** [[템플릿 메타프로그래밍]]: C++의 템플릿을 통해 컴파일 시간에 실제 코드를 만들어 내는 메타프로그래밍 기법.
* [[난해한 프로그래밍 언어]]: 실용적인 목적이 아니라 장난, 실험 등을 위해 의도적으로 만들어진 언어.
 
[[분류:위키프로젝트|프로그래밍]]
 
[[en:Wikipedia:WikiProject Programming languages]]