티스토리 뷰
Go로 Brainf**k(이하 bf) 인터프리터를 만들어 보았습니다.
bf는 난해한 프로그래밍 언어로 고작 8개의 코드로 코딩을 해야합니다.
하지만 고작 8개의 코드로 정말 많은 것을 만들 수 있습니다. (물론 썩은물 한정)
이름에 비속어가 들어간 이유가 다 있습니다.
bf와 난해한 프로그래밍 언어에 대해서 자세히 알아보고 싶다면 아래 링크를 참고하세요.
https://esolangs.org/wiki/Brainfuck
제가 만든 인터프리터는 다음의 단계를 거칩니다.
1. 변환
소스코드를 한글자 씩 읽으면서 각 코드와 코드에 대한 정보를 담은 프로그램으로 변환합니다.
코드의 대한 정보는 반복문에만 해당하는데 점프할 코드 위치를 담습니다.
2. 실행
변환한 프로그램을 다시 읽으면서 실행합니다.
이때는 코드를 제외한 다른 문자(주석)들이 제외되어 실행하므로 쓸모없는 시간낭비를 하지 않을 수 있습니다.
코드 최적화라는걸 하면 더 빨리 실행할 수도 있는데 아직까지 최적화는 거치지 않도록 만들었습니다.
조만간 업데이트로 조금씩 최적화를 시켜보도록 하죠!
처음에 파이썬으로도 만들었었는데
파이썬으로 만든 인터프리터는 애초에 파이썬 속도가 느리기도 하고
주석까지 하나하나 읽어서 정말 쓰레기같은 성능을 냈습니다.
하지만 go는 파이썬보다 훨신 빠르고 변환하는 과정도 거쳐 더 빠른 속도를 낼 수 있었습니다.
제가 만든 인터프리터를 사용하는 방법은 깃허브 저장소 README.md에 잘 나와있으니 참고해주세요!
https://github.com/sunwoo1524/go-bf
저장소 안에 이곳저곳에서 가져온 bf 예제들도 있습니다.
코드 내에 출처들이 있을겁니다. 더 많은 bf 프로그램을 원한다면 아래 링크를 참고해보세요.
실행 영상으로 글 마칩니다.
감사합니다!
- Total
- Today
- Yesterday
- HTML
- 앱 인벤터
- 2x2 배열
- p5.js
- 맵 생성기
- 코딩
- 브레인퍽
- 난해한 프로그래밍 언어
- ActivityPub
- 운석 충돌 시뮬레이션
- 안드로이드
- 연합우주
- 리디렉션광고
- 소스코드 뷰어
- Go 언어
- 게임 개발
- 태극기 그리기
- vercel
- CSS
- godot
- 자바스크립트
- golang
- WSL
- brainfuck
- Firebase
- Preact
- 미스키
- 이상한 사이트
- 매트릭스 생성기
- 콜라츠 추측
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |