热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

为什么会有人喜欢函数式编程?

为什么80%的码农都做不了架构师?函数式编程能过去除变量也即状态将系统看成一个真正的(名符其实)的“计算”机。是一种在现行图灵模型上

为什么80%的码农都做不了架构师?>>>   hot3.png

函数式编程能过去除变量也即状态将系统看成一个真正的(名符其实)的“计算”机。是一种在现行图灵模型上进行邱奇式编程的方法。

图灵模型生机勃勃的原因是它更符合人类认知。但是大部分人显然并没有意识到这一点。从面向过程到面向对象的转向就是证据。面向过程在本质上与面向函数其实一样,它也是一种希望在状态机(图灵机)上实现计算式(邱奇式)编程的方法。单纯的计算语义并不符合真实“世界”的情况,所以它在问题域相对比较简单的情况下还是可行的。因为在这种情况下的语义转换还不是太复杂。一旦问题域本身也变得比较复杂时,它的缺点才开始暴露出来。因为本身已经很复杂的语义转换,再加上复杂的问题域使用这种转换几乎不可能进行。

这可能正是面向对象最终兴起的原因。但是等到人们真正进入面向对象的门槛,才发现如前文所分析的那种结果:面向对象要求很高的编程技巧!除了线程安全以外,更主要的是它还要求很强的“状态管理”能力(很奇怪的是,状态管理竟然从来没有成为软件开发中的一个研究课题,甚至是主要话题------暂时还是先把它列入以后的研究课题吧)。而将系统稳定性指望在程序员身上显然不是一件靠谱的事情。这正是(至少是某些FP者所宣称的那样)某些人最终从面向对象或面向过程转向FP的原因。

因为FP没有状态,只有计算。

而单纯地分析计算模型的能力是没有意义的。因为现实中肯定存在计算型的应用也存在非计算型的应用。至于究竟是后者占了大多数还是前者占了大多数我们并不知道。只有真正的技术采用者自己才知道(也有些不知道的)自己的应用究竟是什么类型的。

这里的计算指的是单纯地以输入输出为工作模式的系统模型。这种模型的问题在对面向过程的分析中已经讨论过。所以它与面向过程拥有同样的问题:在倒洗脚水时把孩子一起倒掉了。不想要状态,却把“对象”也一起倒掉,与不想要洗脚水,却连孩子也一起倒掉是一个道理。

当然,如果洗脚水里面本来就没有孩子的话那就另当别论。但是无论如何,在“倒”以前最好还是看一下会比较好。

 


转:https://my.oschina.net/digerl/blog/34305



推荐阅读
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 自学编程与计算机专业背景者的差异分析
    本文探讨了自学编程者和计算机专业毕业生在技能、知识结构及职业发展上的不同之处,结合实际案例分析两者的优势与劣势。 ... [详细]
  • 解决IIS无法访问映射网络驱动器的问题
    探讨IIS在尝试访问映射的网络驱动器时遇到的问题及其解决方案,包括配置和权限设置等方面的详细分析。 ... [详细]
  • 本文详细介绍了如何在Ubuntu系统中下载适用于Intel处理器的64位版本,涵盖了不同Linux发行版对64位架构的不同命名方式,并提供了具体的下载链接和步骤。 ... [详细]
  • 深入理解Java泛型:JDK 5的新特性
    本文详细介绍了Java泛型的概念及其在JDK 5中的应用,通过具体代码示例解释了泛型的引入、作用和优势。同时,探讨了泛型类、泛型方法和泛型接口的实现,并深入讲解了通配符的使用。 ... [详细]
  • 通过与阿里云的合作,牛客网成功解决了跨国视频面试中的网络卡顿问题,为求职者和面试官提供了更加流畅的沟通体验。 ... [详细]
  • 并发编程:深入理解设计原理与优化
    本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
  • 随着网络安全威胁的不断演变,电子邮件系统成为攻击者频繁利用的目标。本文详细探讨了电子邮件系统中的常见漏洞及其潜在风险,并提供了专业的防护建议。 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
author-avatar
爱心永溢真情永远
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有