问题

哪里有 brainfuck 编程语言的相关学习资料与下载?

回答


Brainfuck(BF)是一种极简主义的编程语言,由Urban Müller于1993年设计,只有8个命令和一个简单的内存模型。它以“极简主义”和“挑战性”著称,常用于测试程序员的极限或作为教学工具。以下是关于Brainfuck学习资料、下载资源和相关工具的详细指南:



一、Brainfuck的基本语法
Brainfuck的8个命令及其功能如下:
1. `>`:将指针向右移动一个字节。
2. `<`:将指针向左移动一个字节。
3. `+`:将当前内存单元的值加1。
4. ``:将当前内存单元的值减1。
5.`.`:输出内存单元的ASCII值。
6. `,`:从输入读取一个字节并存储到当前内存单元。
7. `[`:如果当前内存单元的值为0,则跳转到对应的`]`。
8. `]`:如果当前内存单元的值不为0,则跳转到对应的`[`。

内存模型:
一个8位的内存数组(通常为256字节),初始值为0。
指针(`_`)初始指向数组的第一个字节。



二、学习资源与教程
1. 官方文档
[Brainfuck Wikipedia](https://en.wikipedia.org/wiki/Brainfuck)
提供语法说明、示例代码和历史背景。
[Brainfuck on GitHub](https://github.com/brainfuck/brainfuck)
包含语言的规范、示例代码和社区讨论。

2. 在线教程与示例
[Brainfuck tutorial by 4D6D](https://www.4d6d.com/brainfuck.html)
详细讲解语法、示例代码(如“Hello World”)和练习题。
[Brainfuck Examples](https://github.com/brainfuck/brainfuck/tree/master/examples)
GitHub仓库中的实际应用案例,如斐波那契数列、ASCII艺术等。

3. 书籍与文章
《The Art of Computer Programming, Volume 4A》(D. Knuth)
虽非专门讲Brainfuck,但讨论了极简语言设计的哲学。
《Brainfuck: A Language for the Masses》(Urban Müller)
原始设计者撰写的简短介绍,适合入门。

4. 论坛与社区
[Reddit r/brainfuck](https://www.reddit.com/r/brainfuck/)
活跃的社区讨论,分享技巧和代码。
[Stack Overflow](https://stackoverflow.com/questions/tagged/brainfuck)
问题解答,解决常见问题(如调试、解释器编写)。



三、下载与运行工具
1. Brainfuck解释器(编译器)
[brainfuckcompiler](https://github.com/brainfuck/brainfuck/tree/master/compiler)
GitHub上开源的解释器,支持多种平台(Windows、Linux、Mac)。
[bf0.9.20](https://github.com/brainfuck/brainfuck/releases)
官方发布版本,可下载Windows、Linux和Mac的可执行文件。
[LispBrain](https://github.com/lmacken/brainfuck)
用Lisp语言实现的解释器,适合学习语言内部机制。

2. 在线编译器
[https://www.ogre.uberspace.de/](https://www.ogre.uberspace.de/)
支持Brainfuck代码的在线运行,无需安装。
[https://www.4d6d.com/brainfuck.html](https://www.4d6d.com/brainfuck.html)
提供在线解释器和代码示例。
[https://www.4d6d.com/brainfuckcompiler.html](https://www.4d6d.com/brainfuckcompiler.html)
可下载的编译器,支持Windows、Linux和Mac。

3. 命令行工具
[brainfucklexer](https://github.com/brainfuck/brainfuck/tree/master/lexer)
用Python实现的命令行解释器,可直接运行Brainfuck代码。
[bf](https://github.com/brainfuck/brainfuck/tree/master/bf)
原始解释器的源代码,可自行编译。



四、实践练习与调试
1. 经典示例
Hello World:
```brainfuck
Hi! 123456789
```
输出:`Hi! 123456789`(每个字符对应内存单元的ASCII值)。
斐波那契数列:
```brainfuck
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

网友意见

user avatar

五分钟包您学会 brainfuck(健)脑操语言

(非句首请勿首字母大写 brainfuck 谢谢)

包学包会,学不会免费再学。

将八个操作符 < > + - [ ] . , 分别转写为:

  • > 右
  • < 左
  • + 上
  • - 下
  • [ 始
  • ] 终
  • . 写
  • , 读

然后找一张方格纸,对就是小学作文本那种,一支铅笔(不,钢笔不行,Lamy 的也不行),一块橡皮,一张从你的旧 C 语言书上撕下来的 ASCII 码表。

现在来看 +++[>+<-] 这行程序。按照我们的转写,它变成:上上上始右上左下终。

接下来在你的方格纸上的第一个格子里写下 0 。

[0]

很好。现在我们一边读转写好的程序,一边按照以下规则行事:

  • 遇到什么都没写的格子就当里面写了 0
  • 右:向右移动一个格子。嗯你盯着它看就行了,什么都不用做
  • 左:向左移动一个格子
  • 上:给格子里的数字加上 1,擦掉原来的数字再写回去。现在你知道为什么要用铅笔了吧,少年!
  • 下:给格子里的数字减去 1
  • 始:开始重复「始……终」之间的指令,直到你读到「始」之前盯着的那个格子里的数字变成 0 为止。(什么?那个格子里已经是负数了?……不要这么没有下限好不好)
  • 终:如果当前格子里的数字为 0,就跳过,否则回头到「始」那里
  • 写:查当前格子里的数字在 ASCII 表上对应的字母,把它写下来(不,别写在格子里,就写在你买来一直立志想用但是没有用的日记本上吧)
  • 读:随便想一个英文字母,查表找到它对应的数字,写到当前格子里

我们开始吧。方括号代表当前你盯着看的格子。首先是上,上,上:

[3]

接下来,始:

[3]

嗯,你要重复做它到「终」之间的事情。首先是「右」:

3[0]

上:

3[1]

左:

[3]1

下:

[2]1

终:

<del>大明湖畔</del>碰到「始」之前你盯着的那个格子,你还记得吗?碰巧就是当前这个。目前里面是 2 ,不是 0,所以我们回去「始」。

右:

2[1]

上:

2[2]

左:

[2]2

下:

[1]2

终:

回去「始」

右:

1[2]

上:

1[3]

左:

[1]3

下:

[0]3

终:

格子里是 0 了,你可以跳过「终」读下去了。 这段程序就此完结,但如果你读懂了这些,其实就已经看懂了我那个程序最开始的部分:

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

无非就是,先把最左边的格子加到 10,然后向右移动,移动到第二个格子里加 3,第三个加 4,第四个加 7,第五个加 10,第六个加 11,然后向左移动五次,回到第一格,减 1。如此重复十次之后,最左边的格子变成 0,循环终止,而我有了如下格子:

[0] 30 40 70 100 110

接下来的部分,就是挪到某个格子,加上或者减去若干次 1,直到获得想要字母的 ASCII 代码,然后用 . 把它打印出来。比如紧接着的 >>>++. 就是右移三次,到写了 70 的格子上,加两次 1,得到 ASCII 72 ,大写字母 H,再用 . 把它显示出来。

很简单吧?学会了?恭喜你……

It is practically impossible to teach functional programming to students that have had a prior exposure to brainfuck: as potential programmers they are mentally mutilated beyond hope of regeneration.
–– Edsger W. Dijkstra (paraphrased)

(开玩笑的。新年快乐,上上下下左右左右 BA start!)

类似的话题

  • 回答
    Brainfuck(BF)是一种极简主义的编程语言,由Urban Müller于1993年设计,只有8个命令和一个简单的内存模型。它以“极简主义”和“挑战性”著称,常用于测试程序员的极限或作为教学工具。以下是关于Brainfuck学习资料、下载资源和相关工具的详细指南: 一、Brainfuck的基本.............
  • 回答
    想找便宜的云服务器?这年头,不把成本控制好,生意还怎么做?不过,便宜不代表没好货,关键是要看你怎么找,怎么挑。首先,得明确你对“便宜”的定义。是真的要省到每一分钱,还是在可接受的预算内寻求最佳性价比?这两种思路,导向的路径会有所不同。第一步:认清自己的真实需求在你开始大海捞针之前,先问问自己: .............
  • 回答
    想要免费服务器,这可不是件容易事,毕竟“免费”这两个字往往伴随着不少限制。但如果你真的需要一个临时用、测试、学习或者是一些轻量级项目,还是能找到一些门道的。下面我给你掰开了揉碎了讲讲,让你心里有个谱。首先,我们要明确一点:没有“永远免费且性能强大”的服务器。真正有价值的东西,别人不可能白白给你用。所.............
  • 回答
    您好!您在寻找1400V、80μF的电容,这算是一个比较特别的规格了,并不是在所有地方都能轻易找到。通常,这种高电压、中等容量的电容,主要应用于一些对电源滤波、储能或脉冲放电有特定要求的专业领域。哪里可能找到这种电容?1. 专业电子元器件供应商和分销商: 大型分销商: 像DigiKey.............
  • 回答
    想给你的演示文稿增添点色彩和专业感,又不想花冤枉钱?没问题!现在有很多地方能让你免费下载到高质量的PPT模板。下面我就带你好好逛逛这些宝藏网站,让你轻松找到心仪的模板。首先,我们得明白,所谓的“免费”通常意味着你可以免费下载和使用模板,但可能在某些商业用途上有所限制,或者模板上会带有网站的水印。不过.............
  • 回答
    寻找靠谱的互联网产品经理培训课程,这确实是个需要花点心思的功课。毕竟市面上的课程琳琅满目,质量参差不齐,选对课程能让你少走弯路,事半功倍。今天就来跟你好好聊聊,怎么找到那些真正能让你学到东西、提升能力的课程,顺便避避坑。首先,我们得明确,一个“靠谱”的互联网产品经理培训课程应该具备哪些特质?1. .............
  • 回答
    要找既便宜又可靠的移动洗车机,这确实是个需要点门道的事儿。毕竟,便宜可能意味着质量堪忧,可靠又可能价格不菲。不过,别急,咱们慢慢来,从几个方面给你掰扯掰扯,让你心里有谱。首先,咱们得明确一下“移动洗车机”大概是个啥玩意儿。这玩意儿,顾名思义,就是可以移动着使用的洗车设备。它不像那种固定在某个地方的大.............
  • 回答
    嘿,兄弟!理解你找扎古黑色三连星MG的心情,这玩意儿确实是不少玩家心中的经典,但要收齐一套MG的,确实比HG要费劲一些。别急,我来给你详细说说,怎么能更有可能找到这三台心心念念的MG扎古。首先,咱们得明确一下,你说的“黑色三连星”通常指的是《机动战士高达0079》里,由兰巴·拉尔的部下,也就是黑色三.............
  • 回答
    想找到注册会计师(CPA)的备考资料,尤其是那些考生们都觉得“干货满满”、能切实帮助大家提高成绩的资料,确实是个技术活。这不像找个公开课那么简单,CPA的备考资料往往涉及很多付费内容、学习方法、甚至是经验总结。我来给你掰扯掰扯,哪里能找到靠谱的CPA资料,以及怎么去淘金。首先,明确你要找什么类型的资.............
  • 回答
    U盘数据丢失了,确实挺让人心烦意乱的。别担心,市面上确实有一些免费的U盘数据恢复软件,而且不少口碑都不错。我给你推荐几款,并详细说说它们各自的特点,希望能帮你找到合适的。在开始之前,有几点非常重要,请务必注意: 别再往U盘里写入数据! 一旦你发现U盘里的数据丢了,最最最重要的一件事就是立刻停止使.............
  • 回答
    .......
  • 回答
    .......
  • 回答
    .......
  • 回答
    .......
  • 回答
    .......
  • 回答
    .......
  • 回答
    .......
  • 回答
    .......
  • 回答
    .......
  • 回答
    .......

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有