展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > 函数式编程java要学好函数吗_开始学习函数式编程后对编程的一些新感受

函数式编程java要学好函数吗_开始学习函数式编程后对编程的一些新感受

函数式编程基于Lambda演算,强调无副作用与纯函数,与命令式编程基于图灵机不同。编程本质是理解、抽象与实现,面向对象通过封装控制复杂性。各种编程范式皆为工具,最终目的是解决问题,而非争论优劣。

本文目录

    最近开始学习函数式编程,打算深入进去,掌握这套不一样的思路。说实话,我们绝大多数程序员都是用命令式编程出身的——学校教的C、Ja va等等,基本都是这个路子。但函数式编程和命令式编程其实不是一个层面上的东西。理论层面,函数式编程的根基是Lambda演算,指令式编程则基于图灵机。说得直白点,函数式编程不允许赋值操作,一个函数执行完就返回一个值,没有任何副作用,整个函数就是一个大表达式。这种感觉,真的很不一样。

    函数式编程ja va要学好函数吗_开始学习函数式编程后对编程的一些新感受

    这里先不深入展开。下面聊聊我最近梳理的一些思考。

    1. 编程到底是什么?

    编程,或者说程序设计,其实就是对现实世界中的事物进行抽象,然后用计算机语言把这个抽象实现出来。整个过程的核心步骤只有三个:理解、抽象、实现。

    有意思的是,不同的理解思路,会导出完全不同的抽象结果;反过来,不同的抽象结果,又会加深或改变我们对问题的理解。最后,依据这套理解和抽象,用特定的语言去落地实现。但要注意,如果你想完全搞懂最终的实现结果,前面两步才是真正的钥匙。

    这有点像盖房子:先得想清楚“房子是什么”,再去做设计,最后才动手盖。顺序乱了,房子就歪了。

    2. 编程的发展过程到底经历了哪些阶段?

    从历史脉络来看,程序设计大致可以分成几个关键阶段:

    前计算机程序设计阶段。主要是纸带、存储器这些原始方式,离我们太远了。

    计算机语言初级阶段。以汇编语言为主,面向的核心内容就是“数据存储 + 指令集”。那时候写程序,就像直接跟硬件对话。

    计算机广泛工业语言设计阶段。C语言大面积应用,开始朝着更面向人的方向进化。同时,操作系统、编译器、数据库软件也开始起步。这一时期的主流思路是“程序 = 算法 + 数据结构”,设计方法主要还是“面向过程”。

    计算机语言高级发展阶段。面向对象语言开始登场,典型代表是C++。核心思想变成了“应用 = 对象 + 通信”,甚至很多语言开始喊出“一切皆对象”。面向对象设计在这个阶段被大力推崇。后来,由于C++实在太复杂,Ja va的出现既降低了门槛,又充分发挥了面向对象的优势,让面向对象在企业级应用开发中彻底铺开了。

    各类语言频繁出现的繁荣阶段。面向Web的、函数式的、面向并发的、终端设备的……各种编程语言百花齐放。这个阶段太热闹了,反而不好简单评价。

    3. 编程的过程解决了哪些问题?

    换个角度,看看不同语言具体解决了什么问题:

    汇编语言——解决了CPU指令集和存储系统的交互问题,赋予了人类“可编程”的能力。

    面向过程语言——提供了小规模问题的解决思路。代码量不大时,把系统拆成多个过程(多个函数加各种数据结构),就能搞定初级规模的系统设计。

    面向对象语言——随着系统越来越复杂,如何“更好地理解和抽象”问题,变得比编码本身更重要。面向对象语言通过“封装、继承、多态”三大特性,让程序分析和设计能够容纳更大的系统和更复杂的业务,也让程序员能更高效地理解和抽象世界。

    面向XXXX语言——面向Web、面向高并发、面向切面、函数式语言、终端开发……这些都是在现有语言基础上,针对特定领域的特定问题不断演化出来的衍生品。

    4. 面向对象编程思想的重要性体现在哪里?

    面向对象的三大特性是“封装、继承、多态”,但深入一步看,“封装”才是面向对象最核心的灵魂。

    为什么这么说?因为“封装”让一个人能理解的系统范围大大拓宽,它让我们真正做到了“更好地理解和抽象”看到的世界。之前有位老师讲面向对象时,提到了一个词——“间接”,我觉得这个词很精准,它可以说是“封装”的升级版。面向对象带来的“可维护性、可扩展性、可理解性”,才是让我们在效率和水平上持续进化的关键。

    5. 编程,就是控制复杂性

    且慢!

    面向对象固然有这么多好处,C++和Ja va也因此遍地开花。但一味追求可维护性,反而容易忽略一件事:编程,本质上就是在控制复杂性。

    回过头来看,编程发展史最初级的阶段——“数据存储 + 指令集”、“程序 = 算法 + 数据结构”——其实就道出了真相。函数式编程语言的出现,正是为了让编程更纯粹,更直接地面对问题的本质。它不绕弯子,不让你在继承和封装中迷失。

    6. 总结一句话

    无论是面向过程、面向对象,还是函数式编程,说到底都是编程范式,是编程的方法论。而具体用什么语言,只是工具。

    我们的终极目的是解决具体问题,而不是纠结于工具和方法的优劣。好比你要砍一棵树,用斧子横着砍能砍倒,用锯子斜着锯也能锯断,非要比斧子和锯子谁更好,其实意义不大。横着砍还是斜着锯,也没那么重要。我们真正想要的,是那根木材——这才是编程最本质的目标。

    当然,多掌握几个工具、多学会几种方法,总是没错的。如果你现在只会PHP(好比只有一把斧子)和命令式编程(只会一种砍法),那不管遇到什么树,你都只能用斧子去砍。但如果你还会Python(相当于有了锯子)和函数式编程(学会了锯的办法),那处理某些类型的树,效率就会高得多。

    这个比喻不算严谨,但道理基本在。供参考。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 编程
    上一篇: 曜耀的编程梦想
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    Aperty macOS版
    Aperty macOS版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw macOS版
    AionClaw macOS版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy macOS版
    Loomy macOS版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirBuddy 3 macOS版
    AirBuddy 3 macOS版

    AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。

    AirServer macOS版
    AirServer macOS版

    AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。

    AnyDesk macOS版
    AnyDesk macOS版

    AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。

    WINDOWS 更多
    讯飞绘文 网页版
    讯飞绘文 网页版

    讯飞绘文网页版是科大讯飞推出的AI图文创作与内容运营工具,覆盖热点选题、文章生成、稿件校对、智能配图、排版发布和数据复盘等环节,适合自媒体创作者及内容团队在线使用。

    Maya(Autodesk Maya) Windows版
    Maya(Autodesk Maya) Windows版

    Autodesk Maya 是面向影视、电视、动画和游戏行业的专业三维制作软件,集多边形与 NURBS 建模、角色绑定、关键帧和动作捕捉动画、Bifrost 特效模拟、材质开发及 Arnold 渲染于一体,

    Aperty Windows版
    Aperty Windows版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw Windows版
    AionClaw Windows版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy Windows版
    Loomy Windows版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirServer Windows版
    AirServer Windows版

    AirServer Windows版可把电脑变成AirPlay、Google Cast和Miracast无线投屏接收端,适合会议演示、课堂教学及家庭大屏分享。发送设备通常无需另装客户端,并可同时接收和智能排列多个镜像会话。