欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

以图灵的方式编程

发布时间:2025/6/15 编程问答 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 以图灵的方式编程 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
程序的设计模式往往与计算机的体系结构有很大关系,以函数作为协议的主要表现方式,语言具有简单严格的语法结构,应该与冯·诺依曼体系,或者更准确的说与代码线性循序执行的方式不无关系。

  冯·诺依曼体系是图灵机的实现,但从实现之初,两者便无多大交集,图灵机具有理想性质,是不考虑控制和执行成本的,而冯·诺依曼机器,最初的程序设计对计算成本是非常关注的,而且按照图灵机思想设计的程序,转换成通常的程序,会比较复杂而且显得不直观。正如lex与bison生成的程序代码,我们只会认为程序是对的,而很少会去阅读。

  以控制机器的思想设计程序,是图灵机程序设计的主要方式,而对于计算细节(主要是比较运算)和控制细节(主要是条件转移)的实现则基本不予关注。以机器的思想设计程序,以机器的思想而不是以库函数的方式构建系统的结构,其实在编译、业务逻辑表示、流程等很多方面都可以让问题得到简化。而用于执行的程序本身,则如数据一样,可以动态动态组装、动态执行。

  在本质上冯·诺依曼体系与图灵机并无大的区别,但在形式上却有比较大的区别,可以这样说,图灵机侧重规则的描述,而冯·诺依曼体系编程则侧重于规则的执行,在计算机的计算能力受限制的过去,我们关注于执行,关注于算法。而今我们是否是更应关注于我们所要解决的问题,及其这些问题的上下文,以及解决这些问题相关知识的描述。

  现在我们试着以图灵机的方式书写一个程序,掀开面纱,看看她的真容:

/*因为真实的图灵机过于原始,为方便编程,在程序中做了以下约定:1、图灵机有输入的条带,有输出的条带。2、非特别指定,匹配动作只在输入条带上执行。3、非特别指定,打印只在输出条带上执行。4、预定义匹配: =,>,< .。 =,>,< 操作语义,与序列比较的含义一致。. 不匹配条件。 5、预定义状态:s0, e0 ,f0s0 表示开始状态。e0 表示正常结束状态。如未有跟随的动作,则自动在输出条带上打印字符 '1'。f0 表示非正常结束状态。如未有跟随的动作,则自动在输出条带上打印字符 '0'。6、预定义动作: -> <- #-> 表示条带指针右移一格。<- 表示条带指针左移一格。# 表示把输入条带当前指定的内容,打印到输出条带上,同时输出条带的指针右移。? 对整个输出条带的数据,做相应的转换。7、句型:定义: <标志符> <参数> <参数> ... 句子: <当前状态> <匹配表达式> <下一状态> <动作> <动作> ...--: 函数用 '--' 间隔 *///>=操作 !>= x ------------- s0 x e0 s0 >x e0 --------------//<=操作 !<= x -------------------------- s0 x e0 s1 <x e0 -------------------------//范围操作 !.. x y --------------------------- s0 x e0 s0 y e0 s0 >x n1 n1 <y e0 ---------------------------//字母 !letter -------------------------- s0 'a'..'z' e0 s0 'A'..'Z' e0 --------------------------//数字 !digital -------------------------- s0 '0'..'9' e0 --------------------------//字母数字 !letterdigital ---------------------------- s0 letter e0 s0 digital e0 ----------------------------//标志符 !indent ---------------------------- s0 letter n1 -> # n1 letterdigital n1 -> # n1 . e0 <- ?string ----------------------------//数字 !number ---------------------------- s0 digital n1 -> # n1 digital n1 -> # n1 '.' n2 -> # n1 . e0 <- ?int n2 digital n2 -> # n2 'e' n3 -> # n2 'E' n3 -> # n3 digital n3 -> # n2 . e0 <- ?double n3 . e0 <- ?double ----------------------------

  

  上面只是一个伪程序,但可以看出,这样的编程方式比较适合于以规则为主体的各种应用,比如编译、业务规则、业务流程等方面,同时作为自动机的控制输入也是比较合适的。

总结

以上是生活随笔为你收集整理的以图灵的方式编程的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。