新手问题 请问一下无论是任何程序语言,为什么都是 循环,条件这些呢?

redhatping · 2013年10月24日 · 最后由 swachian 回复于 2013年10月25日 · 3380 次阅读

这一些为什么足以支撑这个计算机逻辑呢?求惑

看完下面的评论,觉得自己好渺小。。。。

有很多语言不是啊

计算机帮助做重复工作 过程中要做做判断 走走分支啊

#3 楼 @krazy 但是这一些为什么就足够了呢???

那你觉得应该有哪些呢?

也不是的.. 按数学说的有 lambda 表达式就可以了,, 不过主流语言不这么干, 循环在函数式语言室可以用递归替代的,条件也有模式匹配的写法, 全是数学,我已经晕了,楼主自己去看... λ演算 SKI 组合子演

我怎么觉得是因为计算机靠门电路完成运算,所以像判断、循环这种东西靠逻辑门很容易解决……所以在汇编之初或者说把算法单拎出来研究的时候就留下了这样的印记………然后再高级的语言总得用底层语言去编译于是这类基础的语法就几乎所有语言都拥有了…

#5 楼 @redhatping 其实没有这些也足够啊 有布尔值有 goto 有递归.. 事实上只有 lambda 就可以实现整个编程语言的功能了 you can programm with nothing! 或者只用NOR

更多的可以看 understanding computation 看完可以写编译器,解释器,正则引擎..例子都是用的 ruby

还有,有些东西为什么会变成现在这个样子..

坑已挖好

1996 年,计算机科学家 Bohm 和 Jacopini 证明了这样的事实:任何简单或复杂的算法都可以由顺序结构、选择结构和循环结构这三种基本结构组合而成。所以,这三种结构就被称为程序设计的三种基本结构。也是 结构化程序设计 必须采用的结构。

循环可以用递归代替

你没有用过 prolog 吗?

不管函数式、逻辑式语言炒的多么火,不可改变的一个事实是最终都转变成结构化程序设计运行在计算机上。CPU 基本是只吃结构化指令。所以,无论如何,循环、条件都值得学,因为这样更容易和计算机打交道。

#2 楼 @luikore 赞,貌似 lisp 就不是

#16 楼 @swachian 现在你能见到的 CPU 只会 GOTO 吧

程序语言的用户不是电脑而是人脑 电脑是不看什么程序语言的,只看最后的二进制码就够了

所以决定大多数 general purpose 的语言 的结构都很像人脑思考和对工序的描述,把复杂的问题分步骤加上条件循环什么的。可以找一个菜谱研究下

但是,在很多的特殊领域内,不用说解决问题。描述问题的本身往往需要更强大的语言,所以越是特定领域内的程序语言,往往越贴近问题域而不见得是人脑。这个时候就要程序员主动编程自己的人脑(或者叫学习一种不友好的语言),来优化问题的解决

#18 楼 @bhuztez 任何语言当然不是只有这些,不过任何语言最终执行的基本就是这几种。goto 似乎还高级了些。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号