창조유저그룹-커즈닷컴
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 : 5973
난해한 프로그래밍 언어 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
622 창조관련
   WordBook 2.0 RC1 [1]
정성우 2006/12/10  6141
621 창조관련
   filetr32.dll 업그레이드 버전 [3]
지상현 2006/05/28  6133
620 창조관련
   장종호 님과 초딩지망생 님보세요 [1]
하루짱 2009/12/16  6120
619 기타
   도움말제작기 - HelpScribble 3.2.0 [3]
최재일[20JI] 2004/06/17  6097
618 기타
   [젬젬 V5.0] 순수...한..한글..~.... [14]
지나가는이 2003/02/04  6097
617 기타
   창조인들에게 필요할 것 같은 프... [4]
신용주 2006/02/03  6083
616 창조관련
   0.76, 0.9b, DB베타, DB베타2가 ...
김대명 2010/11/18  6073
615 창조관련
   창조 0.76 + 0.9b
Mettok`s 2002/12/16  6061
614 창조관련
   현재 제작중인 배치화일 제작기. [2]
한수훈 2008/10/05  6044
613 기타
   저도 면상을;; [2]
수아 2004/05/05  6037
612 창조관련
   프로그램 제작기 [2]
박창조 2006/02/09  6036
611 기타
   그냥 심심해서 만들어봤습니다..^... [5]
김환욱 2002/10/06  6034
610 기타
   크레이지 아케이드 ad.exe 귀찮을... [5]
박종훈 2006/08/27  6020
609 기타
   가짜로 만들어본 cmd ...
한수훈 2008/08/19  6016
608 기타
   프로세스 제대로 종료하는 프로그... [2]
지상현 2006/09/30  6011
607 창조관련
   소스 코드 최적화 유틸리티 (czmi... [3]
지상현 2011/02/02  5997
606 기타
   Nexusfile 4.2 // 파일관리 프로...
qkrwhdgns 2005/06/19  5974
605 창조관련
   객체페이지 스크롤하기.. [4]
손상진 2004/03/30  5974
기타
   난해한 프로그래밍 언어 3 [1]
김제형 2008/11/30  5973
603 창조관련
   VB 상수값을 창조에 맞게 변환ㅋ [4]
박종훈 2006/11/11  5973
602 창조관련
   filetr32.dll 두 번째 버전 [3]
지상현 2006/06/05  5966
601 기타
   제가 직접 제작한 아이콘입니다. [2]
웃음맨 2002/09/28  5963
600 기타
   부팅CD 제작법 & 각 OS별 boot 파일 [6]
최재일 2006/02/18  5960
599 창조관련
   파일 읽고 쓰기를 쉽게 해주는 함수
김대명 2011/05/02  5953
598 기타
   한글2002 CD-Key 추출기... [1]
위자드 2004/01/11  5949
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이희철
로그인