창조유저그룹-커즈닷컴
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 : 6931
난해한 프로그래밍 언어 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
notice 기타   소스를 제외한 자료를 올리는곳입... nylon 2002/09/07  9111
697 기타
   (업데이트)바이너리 파일 다뤄야... [1]
박재성 2025/01/11  257
696 창조관련
   창조사이트 온라인 도움말 업데이...
박재성 2019/03/13  3075
695 기타
   MS Access없이 MDB/ACCDB 파일을 ...
바람 2018/02/05  11870
694 기타
   윈도우 '모든권한얻기' 레지스트리
바람 2018/01/07  4277
693 기타
   실행파일 아이콘 교체 프로그램.
바람 2018/01/05  3206
692 기타
   CSIDL 상수 모음
바람 2017/10/19  3391
691 창조관련
   우리어 인터프리터 v0.1
성인e 2015/07/23  5292
690 창조관련
     우리어 인터프리터 v0.2
성인e 2015/07/24  4503
689 창조관련
       우리어 인터프리터 v0.3
성인e 2015/07/26  4645
688 기타
   이미지 필터
성인e 2014/10/12  4775
687 기타
   [안드로이드] 도트찍는앱 dotty ...
나라뜨 2014/06/24  7057
686 창조관련
   이미지 양자화
성인e 2012/12/14  5713
685 창조관련
   외곽선 추출?
성인e 2012/12/11  5461
684 창조관련
     [re] 외곽선 추출?
성인e 2013/02/20  7417
683 창조관련
   어안렌즈
성인e 2012/09/23  6077
682 창조관련
   Rope
성인e 2012/03/14  5935
681 창조관련
   자전거 바퀴 궤적
성인e 2011/10/09  6690
680 창조관련
   불법 복제 방지(CD에서만 실행 가능)
김대명 2011/09/17  6328
679 창조관련
   자기가 만든 프로그램으로 연결프...
김대명 2011/05/31  6953
678 기타
   버튼 디자인하기
김대명 2011/05/08  9228
677 창조관련
   파일 읽고 쓰기를 쉽게 해주는 함수
김대명 2011/05/02  6816
676 창조관련
   ReleaseCapture 대리 호출 DLL
김대명 2011/04/21  6574
675 창조관련
   대화창보여를 편하게 쓰려고 만든... [1]
김대명 2011/03/28  6473
674 기타
   거꾸로 재생하면 일본어가
김대명 2011/03/19  6954
LIST ALL   1 [2][3][4][5][6][7][8][9][10]..[28] Next
Copyright 1999-2025 Zeroboard / skin by reedyfox in miniwini style
로그인
지우개 Expert 3.0
제작자 : 천호성 님 [LINK]
로그인
대박로또2005
제작자 : 최재일 님 [LINK]
로그인
1박종훈15292 점
2지상현8809 점
3손상진7389 점
4권선중6077 점
5이진백5174 점
로그인
가입일닉네임
05/31김동률
03/31홍형기
09/01o00pp99oo
12/27이재민
11/20이희철
로그인