티스토리 뷰

Go

Go로 만든 Brainf**k 인터프리터

개발하는 맹꽁이 2023. 5. 25. 18:20

Go로 Brainf**k(이하 bf) 인터프리터를 만들어 보았습니다.

bf는 난해한 프로그래밍 언어로 고작 8개의 코드로 코딩을 해야합니다.

하지만 고작 8개의 코드로 정말 많은 것을 만들 수 있습니다. (물론 썩은물 한정)

이름에 비속어가 들어간 이유가 다 있습니다.

bf와 난해한 프로그래밍 언어에 대해서 자세히 알아보고 싶다면 아래 링크를 참고하세요.

https://esolangs.org/wiki/Brainfuck

 

brainfuck - Esolang

Note that brainfuck is typically lowercased except, often, at the start of a sentence. Brainfuck is one of the most famous esoteric programming languages, and has inspired the creation of a host of other languages. Due to the fact that the last half of its

esolangs.org

 

제가 만든 인터프리터는 다음의 단계를 거칩니다.

1. 변환

소스코드를 한글자 씩 읽으면서 각 코드와 코드에 대한 정보를 담은 프로그램으로 변환합니다.

코드의 대한 정보는 반복문에만 해당하는데 점프할 코드 위치를 담습니다.

 

2. 실행

변환한 프로그램을 다시 읽으면서 실행합니다.

이때는 코드를 제외한 다른 문자(주석)들이 제외되어 실행하므로 쓸모없는 시간낭비를 하지 않을 수 있습니다.

코드 최적화라는걸 하면 더 빨리 실행할 수도 있는데 아직까지 최적화는 거치지 않도록 만들었습니다.

조만간 업데이트로 조금씩 최적화를 시켜보도록 하죠!

 

처음에 파이썬으로도 만들었었는데

파이썬으로 만든 인터프리터는 애초에 파이썬 속도가 느리기도 하고

주석까지 하나하나 읽어서 정말 쓰레기같은 성능을 냈습니다.

하지만 go는 파이썬보다 훨신 빠르고 변환하는 과정도 거쳐 더 빠른 속도를 낼 수 있었습니다.

제가 만든 인터프리터를 사용하는 방법은 깃허브 저장소 README.md에 잘 나와있으니 참고해주세요!

 

https://github.com/sunwoo1524/go-bf

 

GitHub - sunwoo1524/go-bf: a brainfuck interpreter made with Golang

a brainfuck interpreter made with Golang. Contribute to sunwoo1524/go-bf development by creating an account on GitHub.

github.com

저장소 안에 이곳저곳에서 가져온 bf 예제들도 있습니다.

코드 내에 출처들이 있을겁니다. 더 많은 bf 프로그램을 원한다면 아래 링크를 참고해보세요.

http://brainfuck.org/

 

some brainfuck fluff

Reference to the brainfuck language. Please read the Epistle to the Implementors before implementing brainfuck,and use these tests (or the equivalent) after. Suggestions for intermediate brainfuck programmers. My brainfuck programs: (Note: I'm licensing al

brainfuck.org

실행 영상으로 글 마칩니다.

감사합니다!

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함