函数式的声明式编程与面向对象的命令式编程及它们的世界观

函数式采用一种声明式编程的方法实现任务。这种方法可以实现更好的安全性。

事实上,它把任何攻击企图都通过一种“计算”式的抽象阻挡在系统之外。

因为在函数式的解释器或编译器看来,一切都只是计算。所有的用户程序都将被解释成一次或多次计算,它们不再跟也不需要跟内存地址直接相关。

因此所有的代码都是引用透明的!这意味着任何程序都不能直接访问或修改任何数据。

因为编译器已经不再提供传统编程环境中万恶之源---“引用”这个语义。

I mean, Java indeed has completely eliminated the type "pointer" to avoid direct memory access. But it still has the concept of "status" inside it. status is no good at all because it can't be a hazard to the system.

但是将一切都抽象成计算将用户程序与系统核心完全隔离开来了。

这让很多程序员的美“梦”不敢相信地成“真”了。

因为从此以后,所有程序不管其倾向是什么,能做的除了把“计算”所需要的参数以及计算过程即表达式告诉编译器以外,再也没有别的可以做了。因为编译器只提供这么多语义。

这就是函数式编程的语义环境。它只有参数与表达式(或函数)。。。。。这里暂时不讨论I/O。

因为所有与机器相关的信息都被因认为与计算无关而被隐藏起来。

无心插柳柳成荫,计算机安全在这里得到了彻底解决。。。。。暂时还是不讨论I/O。

一个用户程序,除了“计算”结果再也不能从“计算机”中得到任何东西。计算机成了名符其实的“计算”机,从而与病毒彻底Bye-Bye。

面向对象的工作哲学完全相反。面向对象假设并不知道要干什么。就象公司使用人力资源外包与进行项目外包的区别一样,面向对象就是人力资源外包。

人力资源外包的特点是,我对于具体要做的事情并不清楚或至少没有很清晰的计划。但是我知道我需要人。而只要我有了人,我就能或才能完成可能的任务。

对应的,函数式编程的逻辑与项目外包则类似:我不知道你要怎么完成项目,那是你的事情。我只会告诉你我的参数与算法。其余的你去完成。你只是我的计算器而已!。。。它是一种计算器逻辑。而面向对象是一种仿真逻辑。

计算器逻辑?那不是退步吗?计算机早被用来做各式各样的工作,但是函数式编程却仍然把它当成一种计算器?

懒求值?无副作用?

这是什么逻辑? 计算机什么时候由程序员决定它的用途了?

这就是缩在象牙塔内的结果:他们把计算机当成了全部的世界。殊不知,计算机只是人类社会的一个小点。它要怎么发展,取决于的是社会对他的需求。

计算机发展的哲学是这样的:人们买什么,我就卖什么。而不是我卖什么,人家就买什么。

懒求值对应到最终的价值系统是什么?无副作用对应到最终的价值系统是什么?

“计算”只是计算领域中很小的一小块。 

转载于:https://my.oschina.net/digerl/blog/34458

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值