首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏离别歌 - 信息安全与代码审计

    brainfuck 语言入门

    brainfuck 语言入门     不介绍brainfuck这个语言了,没听说过的相信你也不会找到这篇文章,或者你去google. 图灵机相信大家都听说过(我们导论课讲过),有些人还写过相关的程序。 我觉得brainfuck和图灵机的编程类似,下面转一篇别人写的比较易懂的教程给你们这些好奇的同学学习。 practically impossible to teach functional programming to students that have had a prior exposure to brainfuck

    1.1K21发布于 2020-10-16
  • 来自专栏氧化先生的专栏

    Brainfuck JIT Compiler in Rust

    An interpreter for Brainf*ck ---- 我们将实现一个Brainfuck的解释器,随后再实现一个JIT编译器。 之所以选择Brainfuck,自然是因为它相当简单,完全可以当做中间代码进行处理,省去了词法语法分析、中间代码生成等与编译原理直接相关的部分。 解释器写起来就太简单了。 Brainfuck预设我们有一块无限大的内存,初值均为0。数据指针指向第一个字节。 第二步:生成函数框架 在这里我们将一整个Brainfuck程序编译成一个函数。这个函数接受一个参数,即我们事先申请好的一块内存作为数据区域。 除了上面自己实现的解释器和JIT编译器外,我还找了一个Brainfuck的编译器bfc进行测试。

    1.2K30发布于 2018-08-21
  • 来自专栏追不上乌龟的兔子

    实现一个Brainfuck解释器

    最近用 Python 实现了一个BrainFuck 解释器,简单介绍一下过程。 BrainFuck 介绍 BrainFuck是一门非常简单的图灵完备的编程语言,只有 8 个指令: Brainfuck 包含一个有 30,000 个单元为 0 的数组,和一个数据指针指向当前的单元。 -- more --> 实现 BrainFuck 解释器 我们使用测试驱动设计的方法来实现 Brainfuck 解释器,首先需要约定一下 Brainfuck 解释器的接口: 约定接口 def execute 我们已经起了一个好头,将 Brainfuck 源代码编译成了指令序列,或者说是字节码。 总结 这个 Brainfuck 语言的解释器总体上比较简单,但还是反映了使用虚拟机的方式来实现解释器的主要流程。

    94960编辑于 2023-04-06
  • 来自专栏追不上乌龟的兔子

    实现一个 BrainFuck 解释器

    最近用 Python 实现了一个BrainFuck 解释器,简单介绍一下过程。 BrainFuck 介绍 BrainFuck是一门非常简单的图灵完备的编程语言,只有 8 个指令: Brainfuck 包含一个有 30,000 个单元为 0 的数组,和一个数据指针指向当前的单元。 实现 BrainFuck 解释器 我们使用测试驱动设计的方法来实现 Brainfuck 解释器,首先需要约定一下 Brainfuck 解释器的接口: 约定接口 def execute(code: str 我们已经起了一个好头,将 Brainfuck 源代码编译成了指令序列,或者说是字节码。 总结 这个 Brainfuck 语言的解释器总体上比较简单,但还是反映了使用虚拟机的方式来实现解释器的主要流程。

    1.1K10编辑于 2023-04-13
  • 来自专栏程序猿的大杂烩

    用Rust实现Brainfuck的JIT编译器

    让我们回忆一下第一篇文章的内容,是关于编写 JIT 所需要的 4 个步骤: 申请一段可写和可执行的内存 将源码翻译为机器码(通常经过汇编) 将机器码写入第一步申请的内存 执行这部分内存 首先申请一段内存作为 Brainfuck tape_addr_from = tape.as_mut_ptr(); let tape_addr_to = unsafe { tape_addr_from.add(tape.len()) }; 我们将整个 Brainfuck std::mem::transmute(exec_buffer.ptr(entry_point)) }; fun(tape_addr_from, tape_addr_to); 至此,我们成功将一个 Brainfuck // 对 ops 对象调用 finalize 后才会实际分配内存 let exec_buffer = ops.finalize().unwrap(); // 给 Brainfuck

    1.3K10编辑于 2022-06-06
  • 来自专栏程序猿的大杂烩

    使用Rust实现一个Brainfuck解释器

    brainfuck语法解析 由于 fuck 在英语中是脏话,Brainfuck 有时被称为 Brainfsck,甚至被简称为 BF。 /target/debug/brainfuck W:\WorkSpace\Rust\brainfuck\src\res\hello_world.bf [ADD, ADD, ADD, ADD, ADD, /target/debug/brainfuck W:\WorkSpace\Rust\brainfuck\src\res\hello_world.bf Hello World! PS W:\WorkSpace\Rust\brainfuck> 测试 经过了以上小节的学习,希望你能自己独立编写好完整的 Brainfuck 解释器! /target/debug/brainfuck_ir W:\WorkSpace\Rust\brainfuck\src\res\hello_world.bf Hello World!

    1.4K30编辑于 2022-06-06
  • 来自专栏DotNet NB && CloudNative

    Brainfly: 用 C# 类型系统构建 Brainfuck 编译器

    Brainfuck 简介 Brainfuck 是由 Urban Müller 在 1993 年创造的一门非常精简的图灵完备的编程语言。 那么性能方面放心了之后,我们就可以开始搞 Brainfuck 编译器了。 Brainfuck 编译器 Brainfuck 编译分为两个步骤,一个是解析 Brainfuck 源代码,一个是产生编译结果。 这里我们采用 5 种方案来跑这段代码: C 解释器:C 语言编写的 Brainfuck 解释器直接运行 GCC:用 Brainfuck 翻译器把 Brainfuck 代码翻译到 C 语言后,用 gcc -O3 -march=native 编译出可执行程序后运行 Clang:用 Brainfuck 翻译器把 Brainfuck 代码翻译到 C 语言后,用 clang -O3 -march=native

    27300编辑于 2025-03-18
  • 来自专栏Rust语言学习交流

    C++Rust 元编程之 BrainFuck 编译器(constexpr 过程宏解法)

    原文地址:C++/Rust 元编程之 BrainFuck 编译器(constexpr/ 过程宏解法) 引子 接上一篇C++ 元编程之 BrainFuck 编译器(模板元解法)挖了个坑:用constexpr constexpr size_t size() { return idx_; } private: size_t idx_{}; char data_[N]{}; }; 然后写一个parse函数,解析BrainFuck brain_fuck(const char* input) { Stream<OUTPUT_SIZE> output; return parse(input, output); } 以上就是实现一个BrainFuck

    1.2K40发布于 2020-11-16
  • 来自专栏IT可乐

    一门能让你五分钟学会的语言-Brainfuck

    1、Brainfuck 看到这个小标题,不要误会,我没有骂人。 这就是今天文章的主人公,也就是让你们五分钟能够学会的一门编程语言——BrainfuckBrainfuck,简称BF,是一种极小化的编程语言,由Urban Müller在1993年创造。 目标是创建一种简单的、可以用最小的编译器来实现的、符合图灵完全思想的编程语言。 Brainfuck 编程语言 由 8 个命令组成: 语法 含义 > 指针向右移动一格 < 指针向左移动一格 + 使指针当前格的字节数值加1 - 使指针当前格的字节数值减1 . [ 当指针当前值为 0 时,程序跳转至与之对应的 ] 之后;否则程序正常执行 ] 程序跳转回与之对应的 [ 处 自此,你学完了 Brainfuck 语言的所有语法,我想都用不了五分钟吧。 比如,一门新的语言,我们要证明其是否是图灵完备的,如果用数学证明的方式必然会比较复杂,但是如果你能用这门新语言实现一个 Brainfuck 的解释器,那么就必然证明其是图灵完备的。

    5.1K30编辑于 2022-11-01
  • BUUCTF 神秘龙卷风 1

    .”、“>”三种符号组成,我刚开始认为这是一种密文,经过搜索,确认这是一种名为“Brainfuck”的计算机语言。 Brainfuck 3、结合题目提示的“代码”,我找到一个brainfuck 在线工具可以运行brainfuck代码。将记事本中的代码复制到在线工具中,运行得到flag。 Brainfuck 在线工具 flag: flag{e4bbef8bdf9743f8bf5b727a9f6332a8}

    26621编辑于 2025-08-18
  • 来自专栏Web行业观察

    盘点那些奇形怪状的编程语言

    Brainfuck 脑……操? 没错,这种 esolang 就叫 brainfuck。 看名字就知道不是什么正经的编程语言。 名字虽然不正经,这却是最著名的一种 esolang。 很多地方都可以看到它的身影,比如说 Stack Overflow 的404页面: 这段代码可以在包括 brainfuck 在内的几种不同的语言中运行,输出结果都是404 Brainfuck 的语法非常简单 因此,要证明一种编程语言是图灵完备的,我们只需要用它实现一个 brainfuck,或者证明它的一个子集与 brainfuck 等价。 很多 esolang 的图灵完备性就是通过 brainfuck 来证明的。 有不少 esolang 以极简主义为自己追求的目标, brainfuck 只是其中的一种。 Brainfuck 并没有规定每个存储单元有多大,主流的 brainfuck 实现大多把它定为一个字节(byte)。我们也可以把它改成一个比特(bit);也就是说,每个存储单元只有0和1两种状态。

    2.1K40发布于 2018-11-03
  • 来自专栏深度学习与python

    世界上最难的5种编程语言

    由作者提供—代码在 tio.run 执行 Brainfuck Brainfuck 由 Urban Muller 于 1993 年开发。该语言是为了让程序员消遣娱乐而发明的。 这是在 brainfuck 中打印“Hello,World!”的代码段。 ? 这是输出: ? 在难度级别上,COW 与 Brainfuck 相当。与 Brainfuck 相比,它还多了四个命令,即整个语言中有 12 个命令。 这是在 COW 中打印“Hello,World!”的代码段。 ? /wiki Malbolge: https://esolangs.org/wiki/malbolge INTERCAL: https://en.wikipedia.org/wiki/INTERCAL Brainfuck : https://en.wikipedia.org/wiki/Brainfuck COW: https://esolangs.org/wiki/COW Whitespace: https://esolanga.org

    1.5K10发布于 2020-12-07
  • 来自专栏巴法

    你见过的最难的编程语言是什么?

    3.Brainfuck Brainfuck 是 1993 年由 Urban Muller 引入的一种深奥的编程语言。这种语言配得上“Brainfuck”这个复杂而不寻常的语言名称。 Brainfuck 语言的八个指令是(每个符号是一个命令):< > + – . , [ ]。 下面是用 Brainfuck 语言编写的 Hello World 程序: ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>+

    1.1K10发布于 2019-09-29
  • 来自专栏程序员小灰

    世界上最难的5种编程语言

    #11 <- #24 DO ,1 SUB #12 <- #16 DO ,1 SUB #13 <- #162 PLEASE READ OUT ,1 PLEASE GIVE UP 输出结果如下: Brainfuck Brainfuck是由 Urban Muller 于1993年开发的,这种语言就是程序员无聊发明的。 这是Brainfuck 打印“ Hello World! ”的代码片段。 Cow在难度水平上与 Brainfuck 相似,与 Brainfuck 相比,它又多了4条命令,也就是说,整个语言中有12条命令。 下面是用 COW 打印“ Hello,World! ”的代码片段。

    1.7K20编辑于 2022-07-05
  • 来自专栏Rust语言学习交流

    【Rust 日报】2022-03-27 Google对25名Rust开源贡献者做出奖励

    v=OynJIFEsf3o GitHub:https://github.com/eZanmoto/norpl 使用 Rust 实现 Brainfuck 语言。 Brainfuck 是 Urban Müller 于 1993 年创建的一种极简、深奥的编程语言。该语言以其极简主义著称,仅包含八个简单的命令、一个数据指针和一个指令指针。 ——来自维基百科 Brainfuck 的 Hello World 是这样的: ++++++++++[>+++++++>++++++++++>+++>+<<<<-] >++.>+.+++++++..+++ 小编内心 OS:谁吃饱了撑的没事干搞这个^_^ 地址:https://rtoch.com/posts/brainfuck-interpreter-implementation-part-1/ GitHub :https://github.com/CrazyRoka/brainfuck-interpreter num2words:数字转文本 一个阿拉伯数字转自然语言的小工具。

    69740编辑于 2022-04-18
  • 来自专栏灵魂画师牧码

    世界上最难的5种编程语言

    Brainfuck Brainfuck是由 Urban Muller 于1993年开发的,这种语言就是程序员无聊发明的。中文翻译:真他妈的... ... 这是Brainfuck 打印“ Hello World! ”的代码片段。 Cow在难度水平上与 Brainfuck 相似,与 Brainfuck 相比,它又多了4条命令,也就是说,整个语言中有12条命令。 下面是用 COW 打印“ Hello,World! ”的代码片段。

    1.8K00发布于 2020-11-06
  • 来自专栏小樱的经验随笔

    April Fools Contest 2017 题解&源码(A,数学 B,数学 C,数学 D,字符串 E,数字逻辑 F,排序,卡时间,G,数学)

    (https://en.wikipedia.org/wiki/Brainfuck) calculators. Output a Brainfuck program which, when executed, will print the result of evaluating this expression. We use a fairly standard Brainfuck interpreter for checking the programs: 30000 memory cells. memory 题目链接:http://codeforces.com/contest/784/problem/G 分析: 给定一个表达式求值,输出一份BrainFuck语言写的可以算出答案的代码。 先算出答案,然后按照BrainFuck语言的一套理论,+表示计数器+1,-表示计数器-1,.(点)表示输出计数器的asc码对应的字符。所以+48之后随便输出呗!

    1.6K50发布于 2018-04-08
  • 来自专栏相约机器人

    用于人工代码生成的AI研究环境(元编程)

    https://github.com/gsurma/meta_intelligence 关于 鉴于一种深奥的,简约的,虽然图灵完整的编程语言Brainfuck,目标是人工生成执行特定任务的程序。 Brainfuck只有8个指令,使得它很容易为计算机阅读(检查python解释器brainfuck_interpreter.py),但另一方面,很难理解人类,因此这个名称。 遗传进化 目标是生成一个输出给定目标字符串的brainfuck程序。

    62110发布于 2019-06-21
  • 来自专栏钱塘大数据

    【干货】这5种最难编程语言,是程序员的噩梦

    MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO Moo 3.Brainfuck Brainfuck是1993年由Urban Muller引入的一种深奥的编程语言。 这种语言配得上“Brainfuck”这个复杂而不寻常的语言名称。语言由8个命令组成,程序是这些命令的序列。该语言有一个指令指针,它从第一个命令开始并按顺序执行。 Brainfuck语言的八个指令是(每个符号是一个命令):< > + – . , [ ]。 下面是用 Brainfuck 语言编写的hellow world程序: ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++

    68000发布于 2018-08-08
  • 来自专栏CU技术社区

    你见过的最难的编程语言是什么?

    3.Brainfuck Brainfuck 是 1993 年由 Urban Muller 引入的一种深奥的编程语言。这种语言配得上“Brainfuck”这个复杂而不寻常的语言名称。 Brainfuck 语言的八个指令是(每个符号是一个命令):< > + – . , [ ]。 下面是用 Brainfuck 语言编写的 Hello World 程序: ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>+

    1.3K20发布于 2019-10-25
领券