창조유저그룹-커즈닷컴
Window close
ID :     PASS :   
   
  처음으로
  창조
  창조 소개
창조 다운로드
CUGz.com 소개
온라인 도움말
  커뮤니티
  가입인사
자유게시판
Q/A게시판
TIP/TECH
열린강좌
자주하는질문
아이디어게시판
  자료실
  소스자료실
프로그램자료실
기타자료실
명예의 전당
이미지 자료실
  지원/기타
  표준용어재정
구글 웹서치  
관리자 전용


기타자료실
- '창조'로 제작하지 않은 프로그램이나, '창조'와 관련된 프로그램들을 올리는 곳입니다.
- 첨부가능 확장자는 *.zip,*.rar,*.exe,*.jpg,*.gif,*.png 입니다.


LIST ALL
Posted by 김제형2008-11-30 14:37:53, Hit : 5978
난해한 프로그래밍 언어 3
Homepage : http://www.김제형.je.ro
Post URL : http://cugz.sjworks.net/bbs/zboard.php?id=pds_etc&no=859

PATH라는 언어와 BEFUNGE라는 언어를 찾았습니다.
그 중 Befunge-98라는 언어는 프로그램의 크기가 제한되어 있는 데, 제한이 않되어있고 코다가 원환체 처럼 되 있으면 튜링 완전 합니다.
거기에다 둘다 2차원 프로그래밍 언어 입니다.

비펀지(Befunge)는 스택 기반의 난해한 프로그래밍 언어로, 기존의 프로그래밍 언어들과는 다르게 프로그램이 2차원 공간 상에 배열되어 있다. ‘화살표’ 명령들은 명령의 흐름을 왼쪽, 오른쪽, 위, 아래로 향하게 하고, 반복문은 명령의 흐름을 원 모양으로 만들어서 구성된다.


목차 [숨기기]
1 역사
2 예제
3 명령 목록
4 같이 보기
5 바깥 고리
 



[편집] 역사
원래 비펀지는 1993년에 크리스 프레시(Chris Pressey)가 가능한 한 컴파일이 어려운 프로그래밍 언어를 고안하려는 시도로 만든 언어이다. 따라서 비펀지는 자기 수정 프로그램을 만들 수 있도록 설계되었으며, g와 p 명령을 제공한다. 그럼에도 불구하고, 나중에 몇 개의 컴파일러가 만들어졌다. 처음 만들어진 언어를 Befunge-93이라 하며 그 이후에 만들어진 확장도 존재하는데, 여기에는 코드 공간을 다차원으로 확장하고 멀티쓰레딩, 즉 같은 공간 안에서 여러 명령 포인터가 동시에 존재할 수 있는 Funge-98이 포함된다. 비펀지 확장들과 변형들은 Fungeoid 또는 펀지(Funge)라고 보통 불린다.


처음 명세는 올바른 비펀지 프로그램을 가로 80 글자와 세로 25 글자 크기의 공간으로 제한하였다. Befunge-93 프로그램은 단지 하나의 스택만을 가질 수 있고 저장 공간이 제한되어 있기 때문에, 원래 Befunge-93 언어는 튜링 완전하지 않다. Funge-98 확장은 튜링 완전성을 위해, 명령들이 스택을 큐로 사용할 수 있도록 재정의하는 ‘큐 모드’를 비롯한 ‘모드’라는 개념을 추가하였다. 또한 Funge-98 프로그램들은 제한 없이 확장될 수 있다. Befunge-93과 같이 80칸 위치에서 반대편으로 넘어가는 대신, Funge-98 명령 포인터는 코드 공간이 마치 원환체처럼 구성되었으며 여전히 실제로 사용되는 영역은 임의로 확장될 수 있는, 크리스 프레시가 ‘Lahey-space’라고 명명한 규칙을 따른다.



[편집] 예제
아래 난수 생성기 프로그램은 화살표 명령을 사용해서 명령의 흐름을 바꾸는 방법을 보이고 있다. ? 명령은 명령 포인터를 임의의 가로 세로 방향으로 보낸다.


vv  <      <
    2
    ^  v<
 v1<?>3v4
    ^   ^
>  >?>  ?>5^
    v   v
 v9<?>7v6
    v  v<
    8
 .  >  >   ^
^<


[편집] 명령 목록
명령 설명
0-9 해당하는 숫자를 스택에 넣는다.
+  덧셈: a와 b를 순서대로 꺼낸 후, a+b를 넣는다.
- 뺄셈: a와 b를 순서대로 꺼낸 후, b-a를 넣는다.
* 곱셈: a와 b를 순서대로 꺼낸 후, a*b를 넣는다.
/ 정수 나눗셈: a와 b를 순서대로 꺼낸 후, 정수 나눗셈 b/a의 몫을 넣는다. a가 0이라면 사용자에게 연산의 결과를 묻는다.
% 나머지: a와 b를 순서대로 꺼낸 후, 정수 나눗셈 b/a의 나머지를 넣는다. a가 0이라면 사용자에게 연산의 결과를 묻는다.
! 논리 부정: 숫자를 꺼내서 그 값이 0이면 1을 넣고, 아니면 0을 넣는다.
` 비교: a와 b를 순서대로 꺼낸 후, b>a이면 1을 넣고, 아니면 0을 넣는다.
> 명령 포인터를 오른쪽으로 움직이게 한다.
< 명령 포인터를 왼쪽으로 움직이게 한다.
^ 명령 포인터를 윗쪽으로 움직이게 한다.
v 명령 포인터를 아랫쪽으로 움직이게 한다.
? 명령 포인터를 임의의 가로 세로 방향으로 움직이게 한다.
_ 숫자를 꺼낸 후, 그 값이 0이면 명령 포인터가 오른쪽으로, 아니면 왼쪽으로 움직이게 한다.
" 문자열 모드를 시작한다; 다음 "가 나올 때까지 나오는 모든 문자의 ASCII 값을 넣는다.
: 스택의 꼭대기에 있는 값을 복제한다.
\ 스택의 꼭대기에 있는 두 값의 위치를 교환한다.
$ 스택에서 숫자를 꺼낸다.
. 숫자를 꺼낸 후 그 숫자를 문자열로 출력한다.
, 숫자를 꺼낸 후 그 숫자에 해당하는 ASCII 문자를 출력한다.
# 트램폴린(Trampoline): 다음 명령을 무시한다.
g y와 x를 순서대로 꺼낸 후, 프로그램의 (x, y) 위치에 있는 문자의 ASCII 값을 넣는다.
p y와 x, v를 순서대로 꺼낸 후, 프로그램의 (x, y) 위치에 있는 문자를 v에 해당하 는 ASCII 문자로 바꾼다.
& 사용자에게 숫자를 입력받고 그 값을 넣는다.
~ 사용자에게 문자를 입력받고 그 ASCII 값을 넣는다.
@ 프로그램을 종료한다.


PATH 프로그래밍 언어
위키백과 ― 우리 모두의 백과사전.
(PATH (프로그래밍 언어)에서 넘어옴)
이동: 둘러보기, 찾기
PATH는 브레인퍽과 비펀지로부터 유래한 난해한 프로그래밍 언어이다. 프로그램 코드는 비펀지와 유사하게 2차원 격자 안에 배열되며, 각각의 명령은 모두 1글자로 이루어져 있다. 데이터는 브레인퍽과 유사하게 "메모리 셀"이라 불리는 정수의 배열에 저장된다.


목차 [숨기기]
1 예제 코드
2 PATH의 명령어들
3 관련 항목
3.1 외부 고리
 



[편집] 예제 코드
다음 코드는 ASCII 문자 0x07(BEL)을 출력해서 비프음을 발생시킨다.


 /*****\   /*+*\   /!*/*!\  \     #
 !     +  //   \\     *     *     *
 /**$**/  *     *     *     *     .
 *        +-----+     +     +-----+
 *        *     *     *     *     *
 \        /     \     /     \     /


[편집] PATH의 명령어들
명령어 역할
$ 프로그램의 시작점을 가리킨다. 명령 포인터는 오른쪽으로 움직이게 된다.
# 프로그램의 실행을 종료한다.
+ 현재 메모리 셀의 값을 1 증가시킨다.
- 현재 메모리 셀의 값을 1 감소시킨다.
} 다음 메모리 셀로 이동한다.
{ 이전 메모리 셀로 이동한다.
, 문자를 하나 입력받아서 그 문자의 ASCII 값을 현재 메모리 셀에 저장한다.
. 현재 메모리 셀의 값에 해당하는 ASCII 문자를 출력한다.
/ 명령 포인터가 움직이는 방향이 오른쪽이면 포인터를 위로, 아랫쪽이면 왼쪽으로, 왼쪽이면 아랫쪽으로, 윗쪽이면 오른쪽으로 움직인다.
\ 명령 포인터가 움직이는 방향이 오른쪽이면 포인터를 아래로, 아랫쪽이면 오른쪽으로, 왼쪽이면 윗쪽으로, 윗쪽이면 왼쪽으로 움직인다.
^ 만약 현재 메모리 셀의 값이 0이 아니면 명령 포인터를 위로 움직인다.
< 만약 현재 메모리 셀의 값이 0이 아니면 명령 포인터를 왼쪽으로 움직인다.
> 만약 현재 메모리 셀의 값이 0이 아니면 명령 포인터를 오른쪽으로 움직인다.
v 만약 현재 메모리 셀의 값이 0이 아니면 명령 포인터를 아래로 움직인다.
! 다음 명령을 무시하고 건너 뛴다.


브레인퍽과 마찬가지로, 올바른 명령이 아닌 모든 문자는 무시된다.


손상진   2008-11-30 PM 8:13:38  
이건 진짜 난해한데요 ㅎㄷㄷ ㅋ
LIST ALL               GO TO THE TOP


N
Category
   Subject
Posted by
Date
H
기타
   난해한 프로그래밍 언어 3 [1]
김제형 2008/11/30  5978
596 기타
   난해한 프로그래밍 언어 2 [1]
김제형 2008/11/30  5251
595 창조관련
   창조를 편리하게 실행해주는 레지... [2]
한수훈 2008/11/29  5632
594 기타
   쓸만한 배치화일 kill.bat
한수훈 2008/11/23  6376
593 기타
   난해한 프로그래밍 언어 [4]
김제형 2008/11/10  12585
592 기타
   VB그룹박스(밑판_둥글게~ ㅎㅎ) ...
한수훈 2008/11/07  5636
591 기타
   아이콘좀 모아봤습니다. ^^; [1]
한수훈 2008/11/01  5550
590 창조관련
   현재 제작중인 배치화일 제작기. [2]
한수훈 2008/10/05  6046
589 기타
   가짜로 만들어본 cmd ...
한수훈 2008/08/19  6022
588 기타
   스팩트럼을 가능하게 하는 소스..
박재성 2008/08/03  5141
587 창조관련
   블루컴 거희 다 완성! [1]
한수훈 2008/07/29  5733
586 창조관련
   탄성가진 버튼 예제 [1]
성인e 2008/06/14  5000
585 기타
   [한글] Recuva 1.12.291
김동민 2008/03/29  5771
584 창조관련
   창조 온라인 도움말 [4]
김동민 2007/12/31  5938
583 기타
   일명 '문상네토 프로그램'이라는 ... [5]
박종훈 2007/12/17  5921
582 기타
   png그림파일을 ico그림파일로 바... [1]
김제형 2007/11/17  5495
581 기타
   [자료]다중클립보드복사 - 멀티클... [6]
김환욱 2007/08/11  5059
580 창조관련
   CreateCOM (창조에서 COM/ActiveX... [2]
지상현 2007/07/09  5490
579 창조관련
   가짜 창조 2002 -_-; [7]
지상현 2007/06/22  5643
578 기타
   올리는 김에 재미있는 자료 하나 ... [2]
바람 2007/06/20  5209
577 기타
   무거운 포토샾 대신 이거 ... [3]
바람 2007/06/20  5503
576 창조관련
   Flickr open api를 이용한 사진 ... [1]
자수 2007/05/14  5657
575 기타
   CTFMON.exe Killer !! [1]
김동민 2007/05/02  5600
574 기타
   여기다 올릴게요^^* (만우절특집,...
서든어택 2007/04/26  4868
573 창조관련
   건반게임 만드려고하는데 너무 어... [1]
성인e 2007/04/07  5018
LIST ALL   Prev [1][2][3][4] 5 [6][7][8][9][10]..[28] Next
Copyright 1999-2024 Zeroboard / skin by reedyfox in miniwini style
로그인
지우개 Expert 3.0
제작자 : 천호성 님 [LINK]
로그인
대박로또2005
제작자 : 최재일 님 [LINK]
로그인
1박종훈15292 점
2지상현8809 점
3손상진7388 점
4권선중6060 점
5이진백5174 점
로그인
가입일닉네임
05/31김동률
03/31홍형기
09/01o00pp99oo
12/27이재민
11/20이희철
로그인