<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
		<id>https://tcatmon.com/w/index.php?action=history&amp;feed=atom&amp;title=Malbolge</id>
		<title>Malbolge - 편집 역사</title>
		<link rel="self" type="application/atom+xml" href="https://tcatmon.com/w/index.php?action=history&amp;feed=atom&amp;title=Malbolge"/>
		<link rel="alternate" type="text/html" href="https://tcatmon.com/w/index.php?title=Malbolge&amp;action=history"/>
		<updated>2026-07-24T00:04:04Z</updated>
		<subtitle>이 문서의 편집 역사</subtitle>
		<generator>MediaWiki 1.28.0</generator>

	<entry>
		<id>https://tcatmon.com/w/index.php?title=Malbolge&amp;diff=16789&amp;oldid=prev</id>
		<title>2017년 1월 19일 (목) 09:21에 Maintenance script님의 편집</title>
		<link rel="alternate" type="text/html" href="https://tcatmon.com/w/index.php?title=Malbolge&amp;diff=16789&amp;oldid=prev"/>
				<updated>2017-01-19T09:21:29Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[목차]&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
벤 올름스테드(Ben Olemstead)가 1998년에 만든 [[난해한 프로그래밍 언어]]. 이름은 [[단테]]의 [[신곡]]에 나오는 [[지옥]] 중 제 8옥인 말레볼제(Malebolge)에서 왔다.&lt;br /&gt;
&lt;br /&gt;
이름부터가 개념인 이 언어의 가장 큰 특징은, 현존하는 모든 언어중 가장 ~~미친 지랄 발광맞은~~ '''최악의 [[프로그래밍 언어]]'''라는 것이다. ~~이 인간은 [[변태]]가 틀림없어.~~ 실제로 벤 올름스테드는 Malbolge외에도 Gis라는 난해한 프로그래밍 언어를 만들거나, Esoteric Awards이라는 난해한 프로그래밍 언어 대회 따위를 만들거나 했다. ~~'''변태.'''~~&lt;br /&gt;
&lt;br /&gt;
기본적으로 정말 더럽고 어렵고 복잡스럽기 때문에, 첫 Malbolge 프로그램이 만들어지기까지 장장 2년이라는 세월이 걸렸다. 그것도 사람의 손으로 쓰여진 것이 아니라, LISP로 구현된 빔 탐색 알고리즘을 통해서 만들어진 것. [[http://acooke.org/malbolge.html|#]]&lt;br /&gt;
그 후에도 프로그램이 매우 간간히 제작되었는데, 예를 들자면 Malbolge를 통한 민감한 루프의 구현은 Malbolge가 나온지 7년만에 구현되었다(사실 이것도 처음에는 구현이 가능한지 논란이 있었다).&lt;br /&gt;
&lt;br /&gt;
== 상세 ==&lt;br /&gt;
Malbolge는 3진법 가상 머신인 Malbolge 인터프리터의 [[기계어]]이다. a, c, d의 세 레지스터를 사용하는데, 그 중 c 레지스터는 현재 실행되는 명령을 가리키는 특수한 용도로 사용된다. 기본적으로 메모리는 삼진수 숫자로 저장되며, 메모리 공간은 3^^10^^개인 59049개이다. 이 각각의 공간에는 0부터 59048까지의 주소가 붙어있고, 0부터 59048까지의 값을 저장할 수 있다. 이 Malbolge 프로그램이 시작되기 전에, 메모리의 앞부분이 프로그램으로 채워진다. 프로그램에 들어있는 모든 공백문자는 사라지고, 더욱더 사용자들을 엿먹이기 위해 공백 문자를 제외한 프로그램은 특정한 명령 중 하나로 시작되어야 한다. 나머지 메모리 공간은 Crazy 연산이라는, 이름부터 간지가 넘치는 연산으로 계산한 값으로 채워진다. 이 Crazy 연산의 식은 {{{[m]=crz[m-2], [m-1]}}}으로 나타내어지는데, 두 숫자의 각각의 3진법 자리마다 다음의 표를 적용해서 결과를 얻는다. 예를 들자면 crz 0001112220, 0120120120의 결과는 1001022211이 되는 식. 한번 계산해보자.&lt;br /&gt;
&lt;br /&gt;
||||&amp;lt;|2&amp;gt;&amp;lt;#FFAAFF&amp;gt; '''crz''' ||||||||&amp;lt;#FFAAFF&amp;gt; '''Input 2''' ||&lt;br /&gt;
||&amp;lt;#FFAAFF&amp;gt; '''0''' ||&amp;lt;#FFAAFF&amp;gt; '''1''' ||&amp;lt;#FFAAFF&amp;gt; '''2''' ||&lt;br /&gt;
||&amp;lt;|3&amp;gt;&amp;lt;#FFAAFF&amp;gt; '''input 1''' ||&amp;lt;#FFAAFF&amp;gt; '''0''' || 1 || 0 || 0 ||&lt;br /&gt;
||&amp;lt;#FFAAFF&amp;gt; '''1''' || 1 || 0 || 2 ||&lt;br /&gt;
||&amp;lt;#FFAAFF&amp;gt; '''2''' || 2 || 2 || 1 ||&lt;br /&gt;
&lt;br /&gt;
명령도 골때리는데, Malbolge에 존재하는 여덞 개의 명령은 {{{[c]}}}값에 c를 더하고, 그 값을 94로 나눈 나머지에 따라 어떤 명령을 실행할 지 결정한다. 이때 c는 레지스터 값의 메모리 주소, {{{[c]}}}는 그 주소에 저장된 값이다. 여덟 개의 명령에 속하지 않는 모든 값은 그냥 아무것도 하지 않는다.&lt;br /&gt;
&lt;br /&gt;
명령이 실행된 후에, 해당 명령은 또 '''암호화'''가 되어서, 이동 명령이 실행되지 않으면 다음에 실행되었을 때 같은 역할을 하지 않는다! 이동 명령이 실행되면 이동된 위치 바로 앞에 있는 명령이 암호화된다. 암호화 과정도 황당한데, 일단 {{{[c]}}}의 값이 94보다 작을 때까지 94를 빼고, 특수한 표에서 결과값을 찾은 후 그 값을 {{{[c]}}}에 저장하는 방식. 그런 다음에는 c와 d의 값이 1씩 증가하고 다음 명령이 실행된다. &lt;br /&gt;
&lt;br /&gt;
하여튼 개같기로는 이루 말할 수 없는 언어이므로, 변태가 아니면 관심을 가지지 않는게 상책.&lt;br /&gt;
&lt;br /&gt;
== Malbolge로 작성된 프로그램 ==&lt;br /&gt;
=== 실행기 ===&lt;br /&gt;
Malbolge 코드를 실행하기 위한 [[인터프리터]]는 다음 주소에서 구할 수 있다:&lt;br /&gt;
[[http://www.lscheffer.com/malbolge_interp.html|인터프리터]]&lt;br /&gt;
벤 올름스테드가 [[C(프로그래밍 언어)|C언어]]로 구현한 버전이다.&lt;br /&gt;
&lt;br /&gt;
=== 예제 ===&lt;br /&gt;
다음은 Malbolge의 [[Hello, world!]] 프로그램이다.&lt;br /&gt;
&lt;br /&gt;
{{{Hello, world.}}}를 출력하는 버전. 출처: 위키피디아 [[http://ko.wikipedia.org/wiki/%EB%A7%90%EB%A0%88%EB%B3%BC%EC%A0%9C|#]]&lt;br /&gt;
{{{&lt;br /&gt;
(=&amp;lt;`:9876Z4321UT.-Q+*)M'&amp;amp;%$H&amp;quot;!~}|Bzy?=|{z]KwZY44Eq0/{mlk**&lt;br /&gt;
hKs_dG5[m_BA{?-Y;;Vb'rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O&amp;lt;&lt;br /&gt;
}}}&lt;br /&gt;
&lt;br /&gt;
{{{HEllO WORld}}}를 출력하는 버전. 출처: http://acooke.org/malbolge.html [* 위에서 소개한 Lisp으로 빔 탐색 알고리즘을 구현하여 만들어낸 버전.]&lt;br /&gt;
{{{&lt;br /&gt;
(=&amp;lt;`$9]7&amp;lt;5YXz7wT.3,+O/o'K%$H&amp;quot;'~D|#z@b=`{^Lx8%$Xmrkpohm-kNi;gsedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?&amp;gt;=&amp;lt;;:9876543s+O&amp;lt;oLm&lt;br /&gt;
}}}&lt;br /&gt;
&lt;br /&gt;
[[브레인퍽]] 이나 [[Ook!]], [[비펀지]], [[화이트스페이스]]와 같은 언어들의 경우 그래도 일단 기호가 어떤 역할을 하는지 익히고, 머리좀 싸맬 자신만 있다면 Hello,World! 출력과 같은 간단한 프로그램 정도는 어떻게 동작하는지 프로그램을 분석할 수 있지만.. 이놈은... 진짜 자신이 [[뇌]] [[새디스트]]가 아닌 이상은 위 코드가 어떻게 Hello,World!란 문장을 출력하는지 알아보려 하지 않는게 좋다. 정말로.~~만악의 근원 [[암]]~~&lt;br /&gt;
&lt;br /&gt;
Malbolge로 작성된 [[99병의 맥주]] 소스 코드.[[http://www.99-bottles-of-beer.net/language-malbolge-995.html|#]] ~~핸드폰으로 보지 마라~~ ~~[[스압]]~~&lt;br /&gt;
&lt;br /&gt;
[각주]&lt;br /&gt;
&lt;br /&gt;
[[분류:프로그래밍 언어]][[분류:난해한 프로그래밍 언어]]&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>	</entry>

	</feed>