브레인퍽

브레인퍽
Brainfuck
패러다임난해한, 명령형, 구조적
설계자우어반 뮐러(Urban Müller)
발표일1993년 9월
자료형 체계typeless
파일 확장자.b, .bf
웹사이트brainfuck.org
영향을 받은 언어
P′′, FALSE

브레인퍽(Brainfuck)은 우어반 뮐러(Urban Müller)가 1993년 경에 만든 최소주의 컴퓨터 프로그래밍 언어이다. 이름에 포함된 fuck이 욕설이기 때문에 Brainf*ck, Brainf***, 혹은 단순히 BF라고 부르기도 한다.

언어의 설계

뮐러는 가장 작은 컴파일러로 구현할 수 있는 간단하면서도 튜링 완전한 프로그래밍 언어를 만드는 것이 목적이었다. 이 언어는 여덟 개의 명령어로 구성되어 있다. 아미가 컴퓨터에서 작동하는 원래 컴파일러의 둘째 판은 크기가 240 바이트 밖에 안 된다. 그는 다른 난해한 프로그래밍 언어이자, 컴파일러 크기가 1024바이트인 False의 영향을 받았다.

이름이 말해 주듯이, 브레인퍽 프로그램은 이해하기 어려운 경향이 있다. 하지만 튜링 기계는 컴퓨터가 할 수 있는 모든 작업을 할 수 있고, 브레인퍽이 튜링 완전하기 때문에 브레인퍽 또한 복잡하기는 해도 컴퓨터가 할 수 있는 모든 작업을 할 수 있다.

이 언어는 프로그램 외에, 0으로 초기화된 바이트 단위의 배열과, 처음에 배열의 맨 첫 바이트를 가리키는 포인터, 그리고 입출력 스트림으로 구성된 간단한 기계 모델에 기반을 두고 있다.

명령어들

여덟 개의 명령어들은 각각 한 개의 문자로 구성되어 있으며 다음과 같다:

문자 의미
> 포인터를 증가시킨다.
< 포인터를 감소시킨다.
+ 포인터가 가리키는 바이트의 값을 증가시킨다.
- 포인터가 가리키는 바이트의 값을 감소시킨다.
. 포인터가 가리키는 바이트의 값을 ASCII 문자로 출력한다.
, 포인터가 가리키는 바이트에 입력받은 문자의 ASCII 값을 넣는다.
[ 포인터가 가리키는 바이트의 값이 0이면 짝이 되는 뒤쪽의 ]로 이동한다.
] 포인터가 가리키는 바이트의 값이 0이 아니면 짝이 되는 앞쪽의 [로 이동한다.

위의 정의 대신에, ]에 ‘짝이 되는 앞쪽의 [로 이동한다’는 의미를 사용할 수 있다. 이는 간단하지만 대칭적이지 못 하고 효율적이지도 않다. 이 두 정의는 모든 브레인퍽 프로그램에 대해서 동일한 행동을 보인다. 거의 사용되지 않지만 동일한 또 다른 정의로는, [가 ‘짝이 되는 뒤쪽의 ]로 이동한다’는 의미를 가지고, ]가 ‘포인터가 가리키는 바이트의 값이 0이 아니면 짝이 되는 앞쪽의 [ 다음 명령어로 이동한다’는 의미를 가지도록 하는 것이 있다.

브레인퍽 프로그램들은 ptrunsigned char* 형이라 가정할 때 다음과 같은 치환을 사용해서 C 언어로 번역할 수 있다:

브레인퍽 C
> ++ptr;
< --ptr;
+ ++*ptr;
- --*ptr;
. putchar(*ptr);
, *ptr = getchar();
[ while (*ptr) {
] }

해설

참고로 여기서는 배열의 각각의 원소들을 바이트로 서술했기 때문에, - 명령은 필요가 없으며 255개의 + 명령으로 고칠 수 있다. 비슷하게, 만약 배열이 유한하고 환형이면, < 명령은 (배열 크기 - 1)개의 > 명령으로 고칠 수 있다. 하지만 이 언어가 튜링 완전하려면 배열의 크기와 각각의 원소들의 크기가 모두 제한이 없어야 한다. (이는 엄밀히 말할 때 현대의 PC가 튜링 완전하지 않은 이유와 동일하다.)

예제

명령어에 쓰이는 8개의 문자(+-<>[],.)만 사용한 코드는 다음과 같다.

++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.

브레인퍽은 이 8개의 문자외에는 모두 무시하므로, 가독성을 위해 공백과 줄바꿈을 넣고 주석을 추가하여 다시 쓴 코드는 다음과 같다.

+++++ +++++ initialize counter (cell #0) to 10
[ use loop to set the next four cells to 70/100/30/10
 > +++++ ++ add 7 to cell #1
 > +++++ +++++ add 10 to cell #2
 > +++ add 3 to cell #3
 > + add 1 to cell #4
 <<<< - decrement counter (cell #0)
]
> ++ . print 'H'
> + . print 'e'
+++++ ++ . print 'l'
. print 'l'
+++ . print 'o'
> ++ . print ' '
<< +++++ +++++ +++++ . print 'W'
> . print 'o'
+++ . print 'r'
----- - . print 'l'
----- --- . print 'd'
> + . print '!'
> . print '\n'
-,+[ Read first character and start outer character reading loop
 -[ Skip forward if character is 0
 >>++++[>++++++++<-] Set up divisor (32) for division loop
 (MEMORY LAYOUT: dividend copy remainder divisor quotient zero zero)
 <+<-[ Set up dividend (x minus 1) and enter division loop
 >+>+>-[>>>] Increase copy and remainder / reduce divisor / Normal case: skip forward
 <[[>+<-]>>+>] Special case: move remainder back to divisor and increase quotient
 <<<<<- Decrement dividend
 ] End division loop
 ]>>>[-]+ End skip loop; zero former divisor and reuse space for a flag
 >--[-[<->+++[-]]]<[ Zero that flag unless quotient was 2 or 3; zero quotient; check flag
 ++++++++++++<[ If flag then set up divisor (13) for second division loop
 (MEMORY LAYOUT: zero copy dividend divisor remainder quotient zero zero)
 >-[>+>>] Reduce divisor; Normal case: increase remainder
 >[+[<+>-]>+>>] Special case: increase remainder / move it back to divisor / increase quotient
 <<<<<- Decrease dividend
 ] End division loop
 >>[<+>-] Add remainder back to divisor to get a useful 13
 >[ Skip forward if quotient was 0
 -[ Decrement quotient and skip forward if quotient was 1
 -<<[-]>> Zero quotient and divisor if quotient was 2
 ]<<[<<->>-]>> Zero divisor and subtract 13 from copy if quotient was 1
 ]<<[<<+>>-] Zero divisor and add 13 to copy if quotient was 0
 ] End outer skip loop (jump to here if ((character minus 1)/32) was not 2 or 3)
 <[-] Clear remainder from first division if second division was skipped
 <.[-] Output ROT13ed character from copy and clear it
 <-,+ Read next character
] End character reading loop

같이 보기

비슷한 언어들의 목록:

  • Doublefuck, 두 개의 배열을 사용하는 브레인퍽의 변형.
  • Brainfork
  • PATH, 브레인퍽과 비펀지를 결합한 언어.
  • SNUSP, 비슷하지만 호출 스택을 가진다.
  • l33t
  • L00P
  • Ook!
  • QUOTE
  • Aura
  • Spoon, 오직 "0"과 "1" 문자로만 이루어진 토큰을 사용함.
  • THRAT, 명령 테이블에 있는 Brainfuck 명령들을 접근하기 위해 오직 두 개의 명령만을 사용함.

외부 링크

Read other articles:

Offenbach pada tahun 1860-an Jacques Offenbach (pengucapan bahasa Prancis: [ʒak ɔfɛnbak]; bahasa Jerman: [ˈɔfn̩bax]; 20 Juni 1819 – 5 Oktober 1880) adalah seorang komposer, pemain cello, dan impresaris dari periode romantis berkebangsaan Prancis kelahiran Jerman. Ia dikenang atas operet-operetnya yang berjumlah hampir 100 buah dari tahun 1850-an hingga 1870-an dan opera yang belum selesai, The Tales of Hoffmann. Ia berpengaruh kuat pada komposer-komposer genre ...

 

Ця стаття про комуну. Про село див. Теркая. комуна ТеркаяTărcaia Країна  Румунія Повіт  Біхор Телефонний код +40 259 (Romtelecom, TR)+40 359 (інші оператори) Координати 46°38′04″ пн. ш. 22°21′55″ сх. д.H G O Висота 192 м.н.р.м. Площа 76,8 км² Населення 2024[1] (2009) Розташування Розташуван

 

Конрад Ялоха Конрад Ялоха Особисті дані Повне ім'я Konrad Jałocha Народження 9 травня 1991(1991-05-09) (32 роки)   Варшава, Польща Зріст 201 см Громадянство  Республіка Польща Позиція Воротар Інформація про клуб Поточний клуб «Лєґія» Номер 91 Професіональні клуби* Роки Клуб І (...

У Вікіпедії є статті про інші населені пункти з такою назвою: Бондарі. село Бондарі Будівля земської школи (1912)Будівля земської школи (1912) Країна  Україна Область Полтавська область Район Лубенський район Громада Чорнухинська селищна громада Облікова картка картка ...

 

English pop band Frazier ChorusBackground informationOriginBrighton, EnglandGenresPop, dream popYears active1986–1996Labels4ADVirginPinkertonPast membersTim FreemanKate HolmesChris TaplinMichéle AllardyceWebsitehttp://frazierchorus.co.uk Frazier Chorus were an English pop group from Brighton, England.[1] They were known for their unconventional instrumentation, including synthesizers, trumpets, flutes and clarinets, as well as frontman Tim Freeman's soft, heavily accented ... talk-...

 

Egyptian film director Niazi MostafaBorn(1911-11-11)11 November 1911Asyut, Asyūṭ Governorate, Khedivate of EgyptDied~19 October 1986 (aged 74)NationalityEgyptianCitizenshipEgyptNotable workThe Most Dangerous Man in the WorldSpouse(s)Kouka (Najia Ibrahim Belal) Neamat Mukhtar (divorced)RelativesHajjah Zainab Mostafa (sister) Niazi Mostafa (Egyptian Arabic: نيازي مصطفى) was an Egyptian film director. Mostafa was born on 11 November 1911 in the city of Asyut, Khedivate of Egypt to a...

Arca BhairawaArca Bhairawa yang diduga perwujudan Adityawarman, salah satu koleksi penting Museum Nasional, JakartaMaterialBatuUkuranTinggi 4,41 meter, berat 4 ton.[1]DibuatKurun 1347–1375, paruh kedua abad ke-14DitemukanKompleks percandian Padang Roco, Dharmasraya, Sumatera Barat (1935)Lokasi saat iniMuseum Nasional, Jakarta Cagar budaya IndonesiaArca Bhairawa Koleksi Museum NasionalPeringkatNasionalKategoriBendaNo. RegnasCB.17LokasikeberadaanJakarta Pusat, JakartaNo. SKSK Menteri ...

 

Poniżej znajduje się lista parków narodowych, zlokalizowanych na terenie Kazachstanu. Nazwa Obwód Powierzchnia (ha) Rok utworzenia Zdjęcie Park Narodowy „Bajanauyl” Obwód pawłodarski 68 453 1985 Park Narodowy „Ałtynemel” Obwód ałmacki 161 153 1996 Park Narodowy Ałatau Zailijskiego Obwód ałmacki 199 703 1996 Park Narodowy „Kokczetaw” Obwód akmolskiObwód północnokazachstański 182 076 1996 Park Narodowy „Karkarały” Obwód karagandyjski 112 120 1998 Park Narodow...

 

South Korean writer (born 1988) This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article is written like a personal reflection, personal essay, or argumentative essay that states a Wikipedia editor's personal feelings or presents an original argument about a topic. Please help improve it by rewriting it in an encyclopedic style. (January 2018) (Learn how and when to remove this templa...

Bagian dari seriGereja Katolik menurut negara Afrika Afrika Selatan Afrika Tengah Aljazair Angola Benin Botswana Burkina Faso Burundi Chad Eritrea Eswatini Etiopia Gabon Gambia Ghana Guinea Guinea-Bissau Guinea Khatulistiwa Jibuti Kamerun Kenya Komoro Lesotho Liberia Libya Madagaskar Malawi Mali Maroko Mauritania Mauritius Mesir Mozambik Namibia Niger Nigeria Pantai Gading Republik Demokratik Kongo Republik Kongo Rwanda Sao Tome dan Principe Senegal Seychelles Sierra Leone Somalia Somaliland ...

 

Orchestral song cycle by Pieter Lieberson The Neruda Songs are a cycle of five songs composed for mezzo-soprano soloist and orchestra by the American composer Peter Lieberson (1946–2011) for his wife, singer Lorraine Hunt Lieberson (1954–2006). The cycle is a setting of poems by twentieth-century Chilean poet and diplomat Pablo Neruda. The Neruda Songs were co-commissioned by the Los Angeles Philharmonic and the Boston Symphony; the world premiere was given on May 20, 2005, by the Los Ang...

 

This article relies excessively on references to primary sources. Please improve this article by adding secondary or tertiary sources. Find sources: Rosa Parks Museum – news · newspapers · books · scholar · JSTOR (May 2017) (Learn how and when to remove this template message) Church in Alabama , United StatesRosa Parks MuseumRosa Parks MuseumLocation252 Montgomery Street, Montgomery, Alabama 36104CountryUnited StatesWebsitehttps://www.troy.edu/student-...

Academic journal This article is about the scholarly journal. For other uses, see Critical Review. Academic journalCritical ReviewDisciplinePolitical theory, political scienceLanguageEnglishEdited byJeffrey FriedmanPublication detailsHistory1986–presentPublisherRoutledge for the Critical Review FoundationFrequencyQuarterlyImpact factor1.091 (2017)Standard abbreviationsISO 4 (alt) · Bluebook (alt1 · alt2)NLM (alt) · MathSciNet (alt )ISO 4Crit. R...

 

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: SpongeBob SquarePants: The Yellow Avenger – news · newspapers · books · scholar · JSTOR (August 2016) (Learn how and when to remove this template message) 2005 video gameSpongeBob SquarePants:The Yellow AvengerEuropean PSP box artDeveloper(s)Tantalus MediaTHQ S...

 

Season of play of professional ice hockey team 2019–20 Detroit Red WingsDivision8th AtlanticConference16th Eastern2019–20 record17–49–5Home record12–23–2Road record5–26–3Goals for145Goals against267Team informationGeneral managerSteve YzermanCoachJeff BlashillCaptainVacantAlternate captainsJustin AbdelkaderLuke GlendeningDylan LarkinFrans NielsenArenaLittle Caesars ArenaAverage attendance18,716[1]Minor league affiliate(s)Grand Rapids Griffins (AHL)Toledo Walleye (ECHL)...

The Mohawk Lacrosse Club, sometimes called Mohawk Club of Troy is the first lacrosse club in the United States.[1][2] History In 1867, Indigenous Americans held an exhibition match in front of 10,000 people in Troy, New York.[3] Following this, the Mohawk Lacrosse Club was formed in Troy in 1868 by several baseball players.[4][5] As a game previously only played by Indigenous Americans, the Mohawk Lacrosse Club introduced lacrosse to people who had neve...

 

Footballer (born 1970) Marcus Gayle Gayle in his Brentford ambassadorial role in 2021Personal informationFull name Marcus Anthony Gayle[1]Date of birth (1970-09-27) 27 September 1970 (age 53)[1]Place of birth Hammersmith, EnglandHeight 6 ft 1 in (1.85 m)[1]Position(s) StrikerTeam informationCurrent team Brentford (club ambassador)Senior career*Years Team Apps (Gls)1988–1994 Brentford 156 (22)1990 → KuPS (loan) 22 (9)1994–2001 Wimbledon 236 (37...

 

1. Division 1965 Competizione Superligaen Sport Calcio Edizione 52ª Organizzatore DBU Luogo  Danimarca Partecipanti 12 Risultati Vincitore  Esbjerg(4º titolo) Retrocessioni  B 93 B 1901 Statistiche Miglior marcatore Per Petersen (18) Incontri disputati 132 Gol segnati 431 (3,27 per incontro) Cronologia della competizione 1964 1966 Manuale La 1. Division 1965 è stata la 52ª edizione della massima serie del campionato danese di calcio conclusa con la vittoria d...

1987 film directed by Picha This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: The Big Bang 1987 film – news · newspapers · books · scholar · JSTOR (October 2022) (Learn how and when to remove this template message) The Big BangFilm posterDirected byPichaWritten byPichaBoris Szulzinger (French version)Tony...

 

2017 St. Louis ProtestsPart of Shooting of Anthony Lamar SmithProtesters in September 2017 in downtown St. LouisDateSeptember 15, 2017– November 24, 2017LocationSt. Louis, Missouri and nearby areas in St. Louis County, MissouriCaused byAcquittal of officer Jason Stockley in the shooting of Anthony Lamar Smith[1]MethodsProtests, civil disobedience,[2][3] vandalism[4]Parties Local protesters Black Lives Matter Metropolitan Police Department, City of St. Louis M...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!