파이크 (프로그래밍 언어)
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
파이크(Pike)는 MUD 게임을 위해 개발된 LPC 언어에서 파생된 프로그래밍 언어이다. 1994년 LPC의 상업적 사용 제한으로 인해 GPL 라이선스를 가진 μLPC가 개발되었고, 1996년 상업적 확대를 위해 파이크로 이름이 변경되었다. 파이크는 린셰핑 대학교의 프로그래머들에 의해 개발되었으며, Roxen Internet Software에서 웹 서버 개발에 활용되었다. 오페라 미니 애플리케이션의 서버/게이트웨이 부분에서도 사용되었다. 파이크는 정적 형 지정 언어이며, 다양한 데이터 형과 유연한 형 시스템을 제공한다.
더 읽어볼만한 페이지
- 모질라 라이선스 소프트웨어 - 모질라 파이어폭스
모질라 파이어폭스는 모질라 재단에서 개발한 무료 오픈 소스 웹 브라우저로, 탭 브라우징, 팝업 차단, 확장 기능 등을 지원하며 웹 표준 준수 및 개인 정보 보호 기능을 강화했다. - 모질라 라이선스 소프트웨어 - 시몽키
시몽키는 웹 브라우저, 이메일 클라이언트, HTML 편집기, IRC 클라이언트를 통합한 오픈 소스 인터넷 스위트이며, 모질라 애플리케이션 스위트의 개발 중단 후 시몽키 위원회가 이어받아 개발하고 파이어폭스와 동일한 게코 엔진을 사용한다. - LGPL 라이선스 소프트웨어 - Qt (소프트웨어)
Qt는 C++로 작성된 크로스 플랫폼 애플리케이션 개발 프레임워크로, GUI, 멀티미디어, 네트워크 등 다양한 기능을 제공하며, 시그널과 슬롯 메커니즘과 Qt Creator 등의 개발 도구를 통해 데스크톱, 임베디드, 모바일 UI 개발에 널리 사용된다. - LGPL 라이선스 소프트웨어 - GTK
GTK는 GIMP를 위해 개발된 크로스 플랫폼 GUI 툴킷으로, 다양한 운영체제와 프로그래밍 언어를 지원하며 여러 데스크톱 환경 및 애플리케이션에서 활용된다. - 객체 지향 프로그래밍 언어 - 터보 파스칼
필립 칸이 개발하고 안데르스 헤일스베르그가 기반을 다진 터보 파스칼은 저렴한 가격, 빠른 컴파일, 사용하기 쉬운 IDE를 특징으로 1980년대 PC 프로그래밍에 혁신을 가져왔으며, 여러 기능 추가를 거쳐 델파이 등장 후 레거시 기술이 되었고 일부 버전은 프리웨어로 배포된다. - 객체 지향 프로그래밍 언어 - 펄
펄은 래리 월이 개발한 텍스트 조작에 강점을 가진 다목적 프로그래밍 언어이며, 1987년 펄 1.0이 처음 공개된 이후 여러 버전 업데이트를 거쳐 객체 지향 프로그래밍과 유니코드 지원 기능을 추가했고, 현재 펄 5가 널리 사용되며 CPAN을 통해 방대한 모듈 생태계를 제공한다.
파이크 (프로그래밍 언어) - [IT 관련 정보]에 관한 문서 | |
---|---|
기본 정보 | |
![]() | |
이름 | 파이크 |
종류 | 멀티 패러다임 프로그래밍 언어 |
개발 시작 시기 | 1994년 |
설계자 | Fredrik Hübinette |
개발자 | 파이크 개발팀 (린셰핑 대학교 컴퓨터 정보 과학과 지원) |
최신 안정화 버전 | 8.0.1738 |
최신 안정화 버전 출시일 | 2022년 1월 30일 |
최신 미리보기 버전 | 9.0.9 |
최신 미리보기 버전 출시일 | 2024년 9월 19일 |
자료형 | 정적 타이핑 동적 타이핑 명시적 타이핑 |
구현체 | 파이크 |
영향을 받은 언어 | LPC C C++ |
라이선스 | GPL LGPL MPL |
웹사이트 | 공식 웹사이트 |
운영체제 | 유닉스 계열, 윈도우 |
상태 | 활발함 |
2. 역사
파이크는 MUD용으로 개발된 LPC에 뿌리를 두고 있다. 스웨덴 린셰핑 Lysator의 프로그래머들, 특히 프레드릭 휘비네트와 페르 헤드보르는[6] MUD 드라이버에서 언어와 가상 머신을 분리하여 LPC4라는 다양한 응용 프로그램의 빠른 프로토타이핑 언어로 사용하였다. LPC 라이선스는 상업적 사용을 허용하지 않아 1994년에 GPL 구현인 μLPC (micro LPC)가 작성되었다. 1996년 μLPC는 상업적으로 더 나은 이름을 위해 파이크로 변경되었다. 현재 Roxen Internet Software로 알려진 회사는 많은 파이크 개발자를 고용하고 개발 자원을 제공했다. Roxen은 이 회사가 파이크로 개발한 웹 서버의 이름이기도 하다. 2002년 린셰핑 대학교 프로그래밍 환경 연구실이 Roxen으로부터 파이크 유지 관리를 인수했다. 여러 파이크 프로그래머가 오페라 소프트웨어 린셰핑 지사로 옮겨가 오페라 미니 애플리케이션 서버/게이트웨이 부분에서 이 언어가 중요한 역할을 한다.[2][3]
2. 1. 기원과 초기 개발
파이크는 MUD용으로 개발된 언어였던 LPC에 그 뿌리를 두고 있다. 스웨덴 린셰핑 Lysator의 프로그래머들, 그 중 특히 프레드릭 휘비네트(Fredrik Hübinette)와 페르 헤드보르(Per Hedbor)는[6] MUD 드라이버의 나머지 부분으로부터 언어와 가상 머신을 분리하였고 LPC4로 불리는 다양한 응용 프로그램의 빠른 프로토타이핑 언어로서 이를 사용하였다.LPC의 라이선스는 상업적 사용을 허용하지 않았고, 1994년에 새로운 GPL 구현이 작성되었으며, 이를 μLPC (micro LPC)라고 불렀다.
1996년에 μLPC는 보다 상업적으로 실행 가능한 이름을 제공하기 위해 파이크로 이름이 변경되었다. 회사의 이름은 여러 해 동안 변경되었지만, 현재 Roxen Internet Software로 알려진 회사는 많은 파이크 개발자를 고용했으며, 파이크 개발에 대한 자원을 제공했다. Roxen은 또한 회사가 파이크로 개발한 웹 서버의 이름이기도 하다. 2002년, 린셰핑 대학교의 프로그래밍 환경 연구실은 Roxen으로부터 파이크의 유지 관리를 인수했다. 여러 파이크 프로그래머들이 오페라 소프트웨어의 린셰핑 지사로 옮겨갔으며, 이곳에서 이 언어는 오페라 미니 애플리케이션의 서버/게이트웨이 부분에서 중요한 역할을 한다.[2][3]
2. 2. μLPC와 파이크로의 개칭
LPC의 라이선스는 상업적 사용을 허용하지 않았기 때문에, 1994년에 새로운 GPL 구현이 작성되었으며, 이를 μLPC (micro LPC)라고 불렀다.[6][1]1996년에 μLPC는 보다 상업적으로 실행 가능한 이름을 제공하기 위해 파이크로 이름이 변경되었다. 회사의 이름은 여러 해 동안 변경되었지만, 현재 Roxen Internet Software로 알려진 회사는 많은 파이크 개발자를 고용했으며, 파이크 개발에 대한 자원을 제공했다. Roxen은 회사가 파이크로 개발한 웹 서버의 이름이기도 하다. 2002년, 린셰핑 대학교의 프로그래밍 환경 연구실은 Roxen으로부터 파이크의 유지 관리를 인수했다. 여러 파이크 프로그래머들이 Opera Software의 린셰핑 지사로 옮겨갔으며, 이곳에서 이 언어는 오페라 미니 애플리케이션의 서버/게이트웨이 부분에서 중요한 역할을 한다.[2][3]
2. 3. Roxen과 린셰핑 대학교
LPC에서 유래된 파이크는 원래 MUD를 위해 개발된 언어였다. 스웨덴 린셰핑의 Lysator 프로그래머들, 특히 프레드릭 휘비네트와 페르 헤드보르가[1] 이 언어와 가상 머신을 나머지 MUD 드라이버로부터 분리하여 다양한 응용 프로그램에 대한 신속한 프로토타입 제작 언어로 사용했으며, LPC4라고 불렀다.LPC의 라이선스는 상업적 사용을 허용하지 않았기 때문에, 1994년에 새로운 GPL 구현이 작성되었으며, 이를 μLPC (micro LPC)라고 불렀다.
1996년에 μLPC는 보다 상업적으로 실행 가능한 이름을 제공하기 위해 파이크로 이름이 변경되었다. 회사의 이름은 여러 해 동안 변경되었지만, 현재 Roxen Internet Software로 알려진 회사는 많은 파이크 개발자를 고용했으며, 파이크 개발에 대한 자원을 제공했다. Roxen은 회사가 파이크로 개발한 웹 서버의 이름이기도 하다. 2002년, 린셰핑 대학교의 프로그래밍 환경 연구실은 Roxen으로부터 파이크의 유지 관리를 인수했다. 여러 파이크 프로그래머들이 Opera Software의 린셰핑 지사로 옮겨갔으며, 이곳에서 이 언어는 오페라 미니 애플리케이션의 서버/게이트웨이 부분에서 중요한 역할을 한다.[2][3]
2. 4. 오페라 소프트웨어
여러 파이크 프로그래머가 오페라 소프트웨어의 린셰핑 지사로 옮겨갔으며, 이곳에서 이 언어는 오페라 미니 애플리케이션의 서버/게이트웨이 부분에서 중요한 역할을 한다.[2][3]3. 문법
pike
write("안녕! 이름이 뭐에요?\n");
string name = Stdio.stdin->gets();
write("만나서 반가워요, " + name + "!\n");
```
위 코드는 사용자로부터 이름을 입력받아 인사하는 예제이다. `write` 함수는 문자열을 출력하고, `Stdio.stdin->gets()`는 사용자 입력을 받는다.
파이크는 정적 형 지정 언어이지만, C, C++, Java와 달리 유연한 형 시스템(태그된 공용체)을 가지고 있다. `int|float` 형 변수는 정수나 부동 소수점 수를 모두 저장할 수 있다.
```pike
int|float number;
number = 5; // 옳다.
number = 5.5; // 옳다.
```
`intp`, `floatp`, `stringp` 등의 함수를 사용하여 변수의 현재 데이터 형을 확인할 수 있다. `mixed` 형은 어떤 데이터 형이든 저장할 수 있다.
```pike
mixed anything;
anything = 5; // 정수값 5
anything = "5"; // 문자열 "5"
```
명시적 형 변환(cast)을 통해 값의 형을 변환할 수 있다.
```pike
mixed anything;
anything = (int)5.5; // 정수값 5
3. 1. Hello World
pikeint main() {
write("Hello world!\n");
return 0;
}
```
위 프로그램에 대한 설명은 다음과 같다.
- 첫 번째 행은 main 함수의 시작 부분으로, 인터프리터에게 프로그램 실행을 시작할 위치를 알린다.
- `write` 함수는 대부분 명령줄 인터페이스가 되는 표준 출력 버퍼에 문자열 리터럴을 보낸다.
- 세 번째 행은 `main` 함수를 빠져나갈 때의 상태를 지정한다.
- 마지막 행은 인터프리터에게 `main` 함수의 마지막에 도달했음을 알린다.
3. 2. 데이터 형
파이크는 다음과 같은 표준 데이터형을 제공한다. 더 고차원적인 데이터형(시퀀스, 큐, 힙, 스택 등)은 ADT(Advanced Data Types) 모듈에 있으며, 파이크에 표준으로 포함되어 있다.분류 | 데이터형 | 설명 |
---|---|---|
기본 데이터형 | `int` | 정수 |
`float` | 부동 소수점 수 | |
`string` | 문자열 | |
컨테이너형 | `array` | 배열 |
`mapping` | 매핑 | |
`multiset` | 멀티셋 | |
기타 형 | `program` | 클래스를 컴파일한 것 |
`object` | 클래스 인스턴스 | |
`function` | 함수 |
파이크는 모든 변수에 명시적인 형 선언을 필요로 하는 정적 형 지정 언어이며, 컴파일 시 형 오류를 감지한다. 다음 코드에서 "number"라는 변수는 정수형으로 선언되었으므로, 부동 소수점 수나 문자열을 할당하려 하면 컴파일 시 오류가 발생한다.
```pike
int number; // 정수 변수이므로, 정수만 할당할 수 있다.
number = 5.5; // 5.5는 부동 소수점이므로, 오류가 발생한다.
number = "5"; // "5"는 문자열이므로, 오류가 발생한다.
```
이는 동적 프로그래밍 언어로서 제약이 너무 강하다고 여겨지는 경우가 많다. 그러나 C, C++, Java 등과 달리 파이크는 더 유연한 형 시스템(태그된 공용체)을 채택하고 있다. 이 시스템에서는 여러 형을 저장할 수 있는 변수를 선언할 수 있으며, C 언어 계열에서는 공용체의 경계를 무시하지 않으면 같은 것을 실현할 수 없다.
다음 예는 정수 또는 부동 소수점 수를 가질 수 있는 변수를 나타낸 것이다.
```pike
int|float number; // 정수 또는 부동 소수점 수 변수
number = 5; // 이것은 옳다.
number = 5.5; // 이것도 옳다.
```
이처럼 변수가 여러 데이터형의 값을 가질 수 있기 때문에, 변수가 그 시점에 가지고 있는 데이터형을 알 수 있는 함수들이 있다. 이 함수들은 데이터형 이름에 p를 붙인 `intp`, `floatp`, `stringp` 등이다.
```pike
int|float number;
number = 5;
intp(number); // number에 int가 할당되어 있으므로 true를 반환한다.
floatp(number); // false를 반환한다.
number = 5.5;
floatp(number); // number는 새롭게 float가 할당되었으므로 true를 반환한다.
```
특별한 데이터형 "mixed"는 임의의 데이터형을 변수에 할당할 수 있게 한다.
```pike
mixed anything;
anything = 5; // anything의 값은 정수값 5가 된다.
anything = 5.5; // anything의 값은 부동 소수점 수치 5.5가 된다.
anything = "5"; // anything의 값은 문자열 "5"가 된다.
```
파이크에서는 값의 형을 변환하는 수단으로 명시적인 cast도 사용할 수 있다.
```pike
mixed anything;
anything = (int)5.5; // anything의 값은 정수값 5가 된다.
anything = (string)anything; // anything의 값은 문자열 "5"가 된다.
3. 3. 특징
파이크는 다음과 같은 표준 데이터형을 제공한다.분류 | 데이터형 | 설명 |
---|---|---|
기본 데이터형 | `int` | 정수 |
`float` | 부동 소수점 수 | |
`string` | 문자열 | |
컨테이너형 | `array` | 배열 |
`mapping` | 매핑(해시 테이블) | |
`multiset` | 멀티셋(중복 집합) | |
기타 형 | `program` | 클래스를 컴파일한 것 |
`object` | 클래스 인스턴스 | |
`function` | 함수 |
보다 고차원적인 데이터형(시퀀스, 큐, 힙, 스택 등)은 ADT(Advanced Data Types) 모듈에 있으며, 파이크에 표준으로 포함되어 있다.
파이크는 모든 변수에 명시적인 형 선언을 필요로 하는 정적 형 지정 언어이며, 컴파일 시 형 오류를 감지한다. 다음은 그 예시이다.
```pike
int number; // 정수 변수이므로, 정수만 할당할 수 있다.
number = 5.5; // 5.5는 부동 소수점이므로, 오류가 발생한다.
number = "5"; // "5"는 문자열이므로, 오류가 발생한다.
```
그러나 파이크는 C, C++, Java 등과 달리 더 유연한 형 시스템(태그된 공용체)을 채택하고 있다. 이 시스템에서는 여러 형을 저장할 수 있는 변수를 선언할 수 있다. 다음은 그 예시이다.
```pike
int|float number; // 정수 또는 부동 소수점 수 변수
number = 5; // 이것은 옳다.
number = 5.5; // 이것도 옳다.
```
변수가 여러 데이터형의 값을 가질 수 있기 때문에, 변수가 그 시점에서 가지고 있는 데이터형을 알 수 있는 함수(`intp`, `floatp`, `stringp` 등)가 있다. 다음은 그 예시이다.
```pike
int|float number;
number = 5;
intp(number); // number에 int가 할당되어 있으므로 true를 반환한다.
floatp(number); // false를 반환한다.
number = 5.5;
floatp(number); // number는 새롭게 float가 할당되었으므로 true를 반환한다.
```
특별한 데이터형 `mixed`는 임의의 데이터형을 변수에 할당할 수 있게 한다. 다음은 그 예시이다.
```pike
mixed anything;
anything = 5; // anything의 값은 정수값 5가 된다.
anything = 5.5; // anything의 값은 부동 소수점 수치 5.5가 된다.
anything = "5"; // anything의 값은 문자열 "5"가 된다.
```
파이크에서는 값의 형을 변환하는 수단으로 명시적인 cast도 사용할 수 있다. 다음은 그 예시이다.
```pike
mixed anything;
anything = (int)5.5; // anything의 값은 정수값 5가 된다.
anything = (string)anything; // anything의 값은 문자열 "5"가 된다.
참조
[1]
웹사이트
The history of pike
http://pike.lysator.[...]
[2]
웹사이트
The Programming Languages Beacon, v10.0
http://www.lextrait.[...]
2010-01
[3]
웹사이트
Hacker News - Pike Programming Language - Discussion - We built the Opera Mini server infrastructure based on Pike, starting back in 20...
https://news.ycombin[...]
2023-08-01
[4]
웹사이트
Pike 8.0.1738 Release notes
https://pike.lysator[...]
2024-09-23
[5]
웹사이트
Release v9.0.9 · pikelang/Pike · GitHub
https://github.com/p[...]
2024-09-23
[6]
웹인용
The history of pike
http://pike.lysator.[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com