《由》续——关于BrainFK的应用(上)

通过引入操作计数器和改进语法,提升BrainFK语言的可读性和实用性。EBrainFK作为一个辅助工具,允许将BrainFK代码嵌入到C/C++程序中,实现简洁高效的开发。

/*本文中所有代码未经编译,若有错误,欢迎指正*/


首先感谢来自清华大学的牟瞳指出上一篇文章中的疏漏:

    BrainFk中']'的作用应当是在*p不为零时跳转到前一个(而非后一个)'['之后。

    BrainFK中','的作用是逗号是从终端输入ASCII到指针所指地址。


前一篇文章里我们提到了关于如何使用BrainFK实现动态定位指针的问题,就有人问,为何会对这样一门晦涩的语言产生兴趣

    当初接触BrainFK完全是抱着拾趣的态度,然而当我读懂了一些BrainFK代码之后,我突然强烈的感觉到,BrainFK这种极小化的语言,是有着自身优势所在的

    这种想法并未获得广泛的认可,而对于BrainFk语言较为深入的探讨也更是寥寥无几。

    昨天和小光探讨了一些关于BrainFK语言实际应用方面的问题,在探讨的过程中,我们达成了一个共识:

        在适当的使用下,BrainFK是一种简洁、方便、灵活、高效的语言。

        

    这是我所得到的第一种对于BrainFK明确认可的态度    

    我对嵌入式开发并不很了解,不敢斗胆对小光提出的将BrainFK应用于单片机开发的想法作出评论。

        所以我们的讨论范围依旧围绕PC程序的开发。如果读者里面有精通嵌入式的,欢迎前来讨论。

        

    不,我并不是说单纯的使用BrainFK开发应用程序,那种事情只有闲的DT的人才会去做。

        我的意思是,配合经过改进的BrainFK,进行高效的敏捷开发。

        

    下面我们就来谈谈对于BrainFK便捷性和可读性的改进:

        首先我们看一个例子,用BrainFK输出"Brain FK/n"的代码为:

            +++ +++ +++ + [

                > +++ +++ +

                > +++ +++ +++ +

                > +++

                > +

                <<<< -

            ]

            >   -----

            >>  ---

            >>> ++

            <<<

            

            +.- > +++++++++++++++++.-----------------.++++++++.+++++.-------------

            > .

            <<

            +++++.+++++.----------

            >>>.

            <<<<

        在这里,我们发现,所有的操作符都经过了大量的复用,浪费时间并降低了可读性。

        于是我们引入一个操作计数器的概念,这个概念的灵感来源于vim。

            用过vim的人都知道,vim中大多数命令是可以前置计数器的,比如 9af 将在光标后置入9个'f'

        同样地,我们将这一概念引入BrainFK,不过为了阅读习惯考虑,我们将计数器后置,那么输出"Brain FK/n"的代码为:

            > +65 

            > +97 

            > +32 

            > +10

            

            <<< + .    - 

            >   +17 . -17 . +8 . +5 . -13 

            >   .

            <<  +5 . +5 . -10 

            >>> .

            <4

        这样就大大的缩短了代码的长度,而且增加了灵活性,比如你可以使用+10[>++++<-]++来完成*[1]+42

        

        我们发现,由于'.'的大小关系,这个符号非常影响排版,于是我斗胆作出如下更改:

            使用'!'代替'.'

            '?'代替','

        那么代码变为:

            > +65 

            > +97 

            > +32 

            > +10

            

            <<< +! - 

            >   +17! -17! +8! +5! -13 >!

            <<  +5! +5! -10 >>>!

            <4

        

        但是这样的语言依旧不适合开发,昨晚想了一下,要让BrainFK变得实用,她必须作为配角存在,也就是说,她将成为一个辅助工具

        我们将这个工具命名为EBRAINFUCK,全称为"Externed brainFK recalling anchor in note for uneasy C Kicking"

        这个工具引入了一个C/C++函数

            brainfk(<type>*bfpointer, string bfcode)

        于是我们可以将BrainFK代码嵌入到C/C++中。

        当然如果你足够NB还可以写cBrainFK类,可以实现多个BrainFK对象互相计算神马的~

        

        作为示例,我们举一个最最简单的例子:

            我们要写一个非常简单的古典加密算法,将字符串str中所有字符的ASCII加三(A变成C,B变成D,等等),然后倒叙输出

            那么我们可以调用如下函数

                brainfk(str, "

                    [>+3] < [

                        !

                        <

                    ]

                ");

                

            在C++中,'!'可看作“加入到outstream”    

            转换大写为小写的算法更加简单:

                brainfk(str,"[>+32]");

            

        对于cBrainFK类,我们可以写下面的二叉树查找算法:

            cBrainFK.search(varToSearch,BSTree,"[[[!>]<>2]<<<]")

        这里'!'表示将*bfpointer的值传递给cBrainFK.search(),与其中的varToSearch进行比较。

    至此,我们看到,EBrainFK辅助编写的代码简洁、精致,又不失可读性,如果该库写得好的话,执行也会非常高效。

    

    以上便是对于BrainFk语言实际应用中可行性探讨的上半部分,下半部分中,我们将进行更加深入的探讨。

    

            

            

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值