热门标签 | 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双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
  • 随着网络安全威胁的不断演变,电子邮件系统成为攻击者频繁利用的目标。本文详细探讨了电子邮件系统中的常见漏洞及其潜在风险,并提供了专业的防护建议。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文详细记录了在银河麒麟操作系统和龙芯架构上使用 Qt 5.15.2 进行项目打包时遇到的问题及解决方案,特别关注于 linuxdeployqt 工具的应用。 ... [详细]
  • 5G至4G空闲态移动TAU流程解析
    本文详细解析了用户从5G网络移动到4G网络时,在空闲态下触发的跟踪区更新(TAU)流程。通过N26接口实现无缝迁移,确保用户体验不受影响。 ... [详细]
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社区 版权所有