读函数式编程思维笔记04_语言与范式_模式与重用

Firebase Studio 战略解剖:MCP、NixOS 与 Gemini 驱动的 AI 原生开发范式 AI 原生开发正从‘模型调用’迈向‘智能体协同’新阶段。其核心在于构建可编程、可验证、可协作的确定性环境——NixOS 实现环境即代码的数学一致性,MCP 协议定义大模型与工具间的标准化通信契约,Gemini 则作为调度中枢执行意图驱动的闭环任务。这一技术组合已超越 Firebase Studio 本身,成为 Cloud Workstations、Google AI Studio 及 VS Code 插件生态的底层范式。开发者无需再纠结 IDE 形态,而应掌握如何通过声明式配置(flake.nix)定义环境 阅读详情

1. 语言的分类

1.1. 静态类型

1.1.1. 要求我们事先指定变量和函数的类型

1.2. 动态类型

1.2.1. 允许推迟指定类型

1.3. 强类型

1.3.1. 变量“知道”自己的类型

1.3.1.1. 允许反射和对实例作类型测试,且一直保有自身的类型信息

1.4. 弱类型

1.4.1. 语言相对不了解变量所指向的内容

2. 多范式

2.1. 面向对象

2.2. 元编程

2.2.1. 可用于在语言及其核心库上添加额外的特性

2.3. 函数式

2.3.1. 函数式编程不喜欢把结构耦合在一起,它依靠零件之间的复合来组织抽象,以达到减少不确定因素的目的

2.3.2. 通过复合(composition)而不是耦合(coupling)来达到代码重用的目的

2.4. 命令式

3. 多范式语言的后顾之忧

3.1. 要求开发者更注重纪律,才能驾驭好大型的项目

3.1.1. 依靠工程纪律来保证所有的开发者都朝着同一个方向努力,是解决协调问题的一种途径

3.2. 单元测试为开发者精确地理解经元编程实现的复杂扩展提供了方便

3.3. 消费者驱动的契约(consumer-driven contract)

3.3.1. 由一项集成工作的实施方与各组件供应方共同商定的一组测试

4. 正交(orthogonality)

4.1. 数学上把两个互相垂直的向量称作正交的,也就是说这两个量不相关

4.2. 在计算机科学里,两个组件如果互相没有任何影响(或副作用),就可以称作是正交的

5. Groovy语言

5.1. 函数式编程和元编程是正交的

5.2. 使用元编程并不妨碍我们使用函数式编程的语言构造

5.2.1. 可以获得更充分地实践函数式的代码风格

5.2.2. 可以用来增强第三方的函数式库

5.2.2.1. 拥有了无缝添加新方法的能力

5.3. 利用元编程在数据类型之间建立映射

5.3.1. 开发者们一般只会考虑使用元编程来编写自己的代码,很少会想到用它来改造别人的代码

6. 复合型(composable)抽象

6.1. Unix shell

6.1.1. 在shell命令行里,各种互相独立、五花八门的行为可以串联在一起创造出新的事物

6.2. Rake专用构建语言,可以用在各种公私项目上(几乎不受项目本身技术选型的限制)。它是简洁与力量的奇妙结合

6.3. Gradle

6.3.1. Groovy语言的一种内部DSL,复合能力好于插件式设计的Maven

6.4. 不约而同地选择了DSL的形式

6.5. 倾向于使用一些细粒度的部件来组成整体,且这些部件都已准备好以特定方式相连接

6.6. 较少隐性的行为,较容易上手,但倾向于提供细粒度的构造单元,需经过一定过程才能发挥真正的实力

6.6.1. 设计得当的复合型系统应当在封装的模块内提供窄范围的、局部的上下文

7. 上下文型(contextual)抽象

7.1. Maven是典型的上下文型工具

7.2. 基于插件的架构可以作为上下文型抽象的代表

7.2.1. 提供了更多扶持性的“脚手架”设施,更完善的预设行为,以及“脚手架”上承载的上下文智能

7.3. Dietzler的Access定律

7.3.1. 所有Access项目最后都会失败,原因是,在用户想要的功能里,有80%实现起来既迅速又简单,还有10%能实现但较困难,而最后的10%是办不到的,因为不可能足够深地突破内建抽象去访问底层。可是,用户总想100%地满足需求。

7.3.1.1. 4GL语言最终丢掉了市场

8. 在函数式编程中传统设计模式的三种归宿

8.1. 模式已被吸收成为语言的一部分

8.2. 模式中描述的解决办法在函数式范式下依然成立,但实现细节有所变化

8.3. 由于在新的语言或范式下获得了原本没有的能力,产生了新的解决方案

8.3.1. 很多问题都可以用元编程干净利落地解决,但Java没有元编程能力可用

8.4. 设计模式的存在意义就是弥补语言功能上的弱点

9. 函数级别的重用

9.1. 复合(composition)

9.1.1. 通过参数来传递作为第一等语言成分的函数

9.2. 函数式语言的重用发生于较粗的粒度级别上,着眼于提取一些共通的运作机制,并参数化地调整其行为

9.2.1. 定义各类型“物件”之间“态射”(morphism)关系的数学分支——范畴论为基础,希望从代码中抽取另一种粗粒度的脉络而加以重用

9.2.2. 不追求复现结构之间经典的(耦合)关系

9.2.3. 建立在列表的概念,以及可以连同执行上下文一起传递的代码块的概念之上

9.3. 以模式为载体的重用是细粒度的:一种解答方案(如Flyweight模式)与另一种解答方案(如Memento模式)之间,是井水不犯河水的“正交”关系

9.3.1. 模式和问题之间这种狭窄的对应关系又限制了它的适用面

10. Command模式

10.1. 当语言拥有了闭包特性,就不需要了

11. Factory模式

11.1. 柯里化相当于产出函数的工厂

11.2. 柯里化可以把通用的函数改造成专用的函数

12. Strategy模式

12.1. 定义一个算法族,并将每一种算法都在相同的接口下封装起来,令同一族的算法能够互换使用

12.2. 好处是算法的变化不影响使用方,也不受使用方的影响

13. Singleton模式

13.1. 模式被运行时吸收掉的典型案例

14. Template Method模式

14.1. 一个方法里面定义好算法的骨架,但留下一部分未实现的步骤,强迫子类按照规定好的算法结构来补全缺失的步骤定义

14.2. 抽象方法的定义相当于一种特殊形式的文档,提醒子类将指定的方法纳入考虑

15. 被语言或运行时吸收掉的模式

16. Flyweight模式

16.1. 种在大量的细粒度对象引用之间共享数据的优化技巧。我们维护一个对象池,然后引用池中的对象来构成需要的视图

16.2. 非常简单的函数式实现

16.3. 记忆

16.4. 模式保留了原来的语义,但实现发生了变化

 

.NET技术博客的深度写作范式与静态基建实践 技术博客本质上是知识结晶的静态载体,其核心价值在于可信、可验证、可复现。从.NET生态出发,理解编译器原理与运行时机制是构建深度技术内容的基础;而将C#语言本质、Roslyn编译器、JIT优化等底层原理转化为可调试、可测量、可交互的文档形态,则体现了工程化写作的技术价值。这种范式超越了API教程与碎片化笔记,服务于中高级开发者对‘为什么这样设计’的系统性追问,广泛应用于性能调优、源码阅读、跨平台迁移等真实工程场景。老赵点滴正是这一理念的长期实践样本。 阅读详情

相关推荐

R语言构建神经网络:从tidymodels预处理到torch部署的全链路实践

神经网络作为现代机器学习的核心范式,其本质是通过可微分函数逼近复杂非线性关系。理解张量运算、反向传播与模型泛化原理,是跨越统计建模与深度学习鸿沟的关键。在数据科学工程实践中,R语言凭借tidymodels统一接口、torch原生张量支持及shiny/plumber轻量部署能力,已形成区别于Python的高效神经网络落地路径。尤其适合熟悉dplyr、ggplot2和基础建模(如lm)的数据分析师、生物信息研究者与社会科学量化工作者,无需CUDA底层知识即可完成LSTM时序预测、图像分类与合同文本异常检测等任务

357

函数式编程思维读后总结与感想

语言设计者可以无视他们给语言定的规矩,拥有的优化手段和空间是“凡人”无法企及的,大部分情况下他们设计的东西更加高效,但是君不见蓬勃发展的第三方库,语言自身不断版本迭代更新、兼容并蓄取百家之长,以及那些。语言设计者可以无视他们给语言定的规矩,开发者无法触碰的底层设施,不过是语言设计者手中的玩物,他们拥有的优化手段和空间是“凡人”无法企及的。放弃对繁琐细节的掌控,关注问题域,而非关注问题域的实现在,这是交出控制权的观点。尽信书,不如无书,不过,还是要多读书,多思考,多方位,多角度相互印证。

lyingSeven的博客 183

从2017年十大技术文件看工程师成长:Vue、微服务与工程化实践

在软件工程领域,技术选型、架构设计与工程化实践是决定项目成败与团队效能的核心。理解技术原理,如前后端分离架构、微服务范式,能帮助团队在复杂系统中做出明智决策。其技术价值在于提升开发效率、保障系统可维护性与可扩展性。这些理念广泛应用于现代Web开发、云原生应用构建等场景。本文通过回顾2017年的关键文件,探讨了在Vue.js崛起、微服务概念火热、前端工程化工具链成熟的背景下,团队如何应对技术选型挑战、进行架构探索,并落地ESLint、Webpack优化、Jenkins Pipeline等提升协作效率与代码质量

weixin_33857230的博客 417

[学习笔记] 架构整洁之道

从计算机出现开始到今天,软件的本质都是一样的,都是由if语句、赋值语句以及while循环组成的。不管任何编程语言,最终产生的代码任然只是顺序结构、分支结构、循环结构的组合,这与计算机刚出现时的程序是一模一样的。成绩算计出现开始到今天,计算机的本质基本没有什么大变化。编程语言稍微进步了一点,工具质量大大提升,但是计算机程序基本构造没有什么变化。软件架构的规则就是排列组合代码块的规则。由于代码块的本质没有变化,因此排列组合他们的规则也就不会变化。

cxsydzn的博客 1098

PyCon 2012:Python工程化奠基之年技术考古

Python工程化并非始于今日,其核心工具链与安全范式早在2012年PyCon就已萌芽。从pip的--require-hashes哈希校验机制,到PyPI强制HTTPS迁移所驱动的TLS协议适配,再到virtualenv对Windows中文路径的编码攻坚,这些‘脏活累活’共同构成了现代Python可复现、可审计、可分发的基础设施底座。它们不是语法糖或新特性,而是解决真实部署冲突、供应链信任与跨平台兼容等基础问题的技术沉淀。理解PyCon 2012,就是理解pip install为何默认校验、venv为何能隔

weixin_30251829的博客 317

Pikachu靶场环境搭建(Windows环境下安装详细教程)

Pikachu靶场是一个漏洞测试练习平台。其中包含了常见的web安全漏洞,如果你是一个渗透测试学习者没有靶场的练手,那么pikachu是一个很好的测试平台。

weixin_42857656的博客 1825

AI视频生成新范式:Luma Scenes逐场景精修技术解析与应用

在AI视频生成领域,扩散模型等主流技术通过全局优化实现时序一致性,但常面临局部细节失真与闪烁问题。其原理在于模型对视频序列进行统一处理,虽保障了整体流畅度,却在复杂场景下牺牲了局部精度。为解决这一矛盾,Luma AI推出的逐场景精修技术借鉴了传统3D动画的分层渲染思路,将视频按语义或时间单元拆解,允许对特定片段独立调整提示词与参数,实现局部重生成与边界融合。该技术价值在于将工作流从“一次成型”转向“可迭代合成”,显著提升了复杂叙事视频的细节可控性。应用场景涵盖影视预演、广告制作等需多镜头语言的专业领域,为A

diaoju3333的博客 453

Ollama模型路径迁移实战:Windows/Mac/Linux三平台保姆级教程(附常见问题排查)

本文提供了一份详细的Ollama模型路径迁移教程,涵盖Windows、macOS和Linux三大平台。通过设置OLLAMA_MODELS环境变量或创建符号链接,指导用户将模型从默认路径安全迁移至新位置,以释放系统盘空间或提升性能。教程包含迁移前的准备、分平台步骤、迁移后的验证以及常见问题排查,确保迁移过程平滑可靠。

js777的博客 1184

旅行行程规划APP基于HarmonyOS API 24实战解析“下标到字符串的映射 + 函数式过滤“的组合,实现了响应式的列表筛选——用户点击状态Tab时

在移动互联网与智能穿戴设备高度普及的今天,"习惯养成"已经从一个模糊的自我管理理念,演变为一个可量化、可追踪、可视化的数字化产品赛道。越来越多的人希望借助手中的智能终端,把"早起、冥想、阅读、运动"这些抽象的自律行为,转化为一条条清晰的数据曲线和一张张可触摸的打卡卡片。而鸿蒙生态(HarmonyOS)凭借其跨设备协同、分布式软总线以及声明式 UI 开发框架 ArkUI,为这类注重"轻量化交互 + 即时反馈"的生活方式类应用提供了极为理想的生长土壤。本应用正是一款面向"晨间场景"深度打磨的习惯追踪工具。它聚焦

2301_79516720的博客 179

树莓派编译程序时遇到卡死的问题

使用树莓派编译程序的时候,我遇到了程序比较大,编译到某个文件的时候树莓派会死机,关机之后重启可以继续使用,但是编译到同一个地方树莓派又死机的问题。 这个问题出现的主要原因是我给树莓派安装的Ubuntu mate 16.04 系统默认设置的swap交换空间不够,而编译某些文件的时候需要较大的交换空间,树莓派的交换空间被用满所以树莓派看起来好像是死机了的样子。 解决方法,扩展Ubuntu的交换空间。 解决方法,扩展Ubu

一杯二锅头 1万+

细聊Oracle通过ODBC数据源连接SQL Server数据库

    类似文章搜索引擎上有很多,内容大致相同,今天所谓细聊是因为我在借鉴这些文章时候走了些弯路,所以写此文,为自己备忘,同时如果能为初涉此处知识点的小伙伴提供些帮助就更好了,废话不多说。    我的应用场景:    项目系统使用oracle数据库,与客户的第三方系统供应商实现资源共享,对方为sql server数据库;    我的测试开发环境为64bitwin7PC机,本机上装有64位Oracl...

xueren_83的博客 1万+

HarmonyOS ArkTS AP读书笔记应用BookModel 采用了经典的贫血模型(Anemic Model)设计,在 ArkTS 中配合 new BookModel(...) 调用时具有极好的

健身管理类应用与之前分析的外卖、招聘等应用有本质差异——它的核心数据不是"交易"或"任务",而是"时间序列的身体状态数据":每次训练有时长、卡路里、组数、重量;每次饮食有热量、蛋白质、碳水、脂肪;每周有运动时长趋势图。这些数据的共同特征是"随时间积累,用户需要横向对比和趋势分析"。这导致健身App的数据层设计必须从第一天就考虑"历史数据查询"和"多维度聚合"的需求,而非仅关注当前单条记录的增删改查。健身应用的用户行为模式也有独特之处:用户使用健身App的目标是"坚持",而不是"一次性完成任务"。这意味着激励

2302_79499487的博客 109

华为OD机试 - 文件存储系统的排序 - 深度优先搜索dfs(Java 双机位C卷 200分)

华为OD机试 双机位C卷题库疯狂收录中,刷题。

学Java,找哪吒 719

云课堂 · 在线教育平台基于HarmonyOS ArkTS API 24提供 subjectColor() 和 badgeColor()辅助函数,根据业务标签动态返回对应颜色,实现数据与视觉的映射解耦

健身管理类应用与之前分析的外卖、招聘等应用有本质差异——它的核心数据不是"交易"或"任务",而是"时间序列的身体状态数据":每次训练有时长、卡路里、组数、重量;每次饮食有热量、蛋白质、碳水、脂肪;每周有运动时长趋势图。这些数据的共同特征是"随时间积累,用户需要横向对比和趋势分析"。这导致健身App的数据层设计必须从第一天就考虑"历史数据查询"和"多维度聚合"的需求,而非仅关注当前单条记录的增删改查。健身应用的用户行为模式也有独特之处:用户使用健身App的目标是"坚持",而不是"一次性完成任务"。这意味着激励

jin123322的博客 991

【LangChain编程:从入门到实践】实现多模态代理

【LangChain编程:从入门到实践】实现多模态代理 关键词:LangChain, 多模态代理, 自然语言处理, 机器学习, 知识图谱, 对话系统, 代码生成, AI代理 1. 背景介绍 随着人工智

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 581

【K210+STM32项目】基于K210与STM32协同工作的智能垃圾分类系统设计与实现(更新3.0版本)(完整工程资料源码)

STM32F407STM32F407_2(含有app功能)

嵌入式技术开发 2495

基于HarmonyOS API 24电子书阅读管理应用通过 toFixed(0) 保证返回的是整数百分比字符串,可直接用于 ArkUI 的 .width() 属性

在 HarmonyOS NEXT 正式商用的背景下,ArkTS 作为鸿蒙生态的官方应用开发语言,正在从传统的命令式 UI 开发范式向声明式 UI 范式全面迁移。ArkUI 框架以组件化、声明式、状态驱动为核心特征,要求开发者以"描述 UI 应该是什么样"而非"一步步操作 UI 怎么变"的思维方式构建界面。

2401_86031952的博客 91

9、硬件工程师笔试面试知识器件篇——三极管(2025版本)

本文全面介绍了三极管的基础知识与应用,包括其结构、类型、工作原理、工作状态、功能、应用场景及特性参数。详细探讨了三极管在信号放大、无线通信、音频设备及医疗设备中的具体应用,并深入分析了设计放大电路时如何平衡增益与噪声、优化偏置电路以提高稳定性、使用负反馈改善性能等关键问题。此外,文章还涵盖了高频电路设计、温度补偿策略、电磁干扰防护等实用内容,为硬件工程师提供了全面的技术参考和设计指导。

XU157303764的博客 7314

Ai-Agent学习历程—— 阶段3——RAG 与记忆机制

基于学习大纲我们有了一个简单的地图,从官网的资料进行对应,主要是以下三部分过程中可以进行参考官方文档,但有一些可能会基于目前最新的资料进行适当的更改,让我们愉快的开始吧!这里为您梳理第一节:ETL 数据智能清洗与高阶分块的学习地图。本节将带您攻克数据进入向量数据库之前的“清洗、结构化解析、智能切分与父子文档关联”全流程,彻底打牢 RAG 的数据地基。以现在大模型的发展来说,200K的上下文甚至接近300K的都有,几本书是不成问题的,那切片的意义又在哪?核心原因有三个:在 RAG 系统中,用户提问后,我们不能

蓝桉 861

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

潮流运动夜滑轮滑平台基于HarmonyOS ArkTS API 24当数组元素的属性被修改时(例如在 doEdit 方法中修改夜滑计划的路线名称和时间),相关的列表项会自动更新,无需手动调用刷新方法

在移动互联网与智能穿戴设备高度普及的今天,"习惯养成"已经从一个模糊的自我管理理念,演变为一个可量化、可追踪、可视化的数字化产品赛道。越来越多的人希望借助手中的智能终端,把"早起、冥想、阅读、运动"这些抽象的自律行为,转化为一条条清晰的数据曲线和一张张可触摸的打卡卡片。而鸿蒙生态(HarmonyOS)凭借其跨设备协同、分布式软总线以及声明式 UI 开发框架 ArkUI,为这类注重"轻量化交互 + 即时反馈"的生活方式类应用提供了极为理想的生长土壤。本应用正是一款面向"晨间场景"深度打磨的习惯追踪工具。它聚焦

jin421352的博客 197

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【数据结构-5】单链表的实现

单链表,具体来说是单向的、不带头的、不循环的链表。链表由一个一个节点组成,每个节点分为数据域和指针域,数据域存放数据,指针域存放下一节点的地址。这样,就可以根据指针域中的地址找到下一个节点,节点就串起来了构成了单链表。

a bit 204

【数据结构】基于比较的排序算法 - 交换排序

本文介绍交换排序中的冒泡排序与快速排序。冒泡排序通过相邻元素比较交换,实现升序,时间复杂度最坏为O(N²),空间复杂度O(1),稳定且适合小规模有序数据。快速排序采用分治思想,以基准值划分区间,平均时间复杂度O(N log N),空间复杂度O(log N),但不稳定,实际应用中性能优异,可通过随机基准、小区间优化等提升效率。

careathers的博客 367

pandas 深度入门:从数据结构到一份真实销售报表

本文系统讲解Pandas核心应用,从三分钟安装到完整月度报表生成,涵盖数据读取、清洗、筛选、分组聚合、表连接、透视表与时间序列等13个关键环节。强调“先看数据再动手”,掌握Series/DataFrame/Index结构本质,熟练运用loc/iloc、merge校验、agg/transform区别,通过真实案例实现高效报表自动化,告别手动Excel操作。最后提供性能优化与高频报错解决方案,助力读者快速上手,真正实现“写二十行代码,跑三秒出结果”。

信息安全领域优质创作者|操作系统领域专家 304

C# 数据结构和特殊类型

.NET Core(现称.NET)提供丰富数据结构,优化性能与开发效率。日常开发首选List<T>和Dictionary<TKey,TValue>;高性能场景推荐Span<T>与Memory<T>减少内存分配;并发环境使用ConcurrentDictionary等线程安全集合;避免非泛型集合如ArrayList。

cccloveforever的博客 703

【数据结构】堆(Heap):堆的实现、建堆与堆排序

堆是一种特殊的完全二叉树,分为大堆(父节点≥孩子)和小堆(父节点≤孩子),可快速获取最值。堆通常用数组存储,通过下标计算父子关系。核心操作为向上调整(插入时)和向下调整(删除或建堆时),时间复杂度均为O(log N)。建堆可采用从后往前的向下调整法,整体复杂度为O(N)。基于堆的堆排序通过反复提取最大值实现升序排列,总时间复杂度为O(N log N),空间复杂度O(1),是高效稳定的排序算法。

2501_93577780的博客 356

C++ 数据结构与面向对象:二叉搜索树实现与多态虚函数详解

本文系统讲解二叉搜索树(BST)的迭代实现与C++多态及虚函数底层原理。BST通过非递归方式实现插入、查找、删除,核心在于维护有序性,删除分三种情况处理,替换法为关键技巧。多态基于虚函数表(vtable)与虚函数指针(vfptr),通过基类指针调用重写函数实现运行时动态绑定,需满足继承与虚函数重写条件。抽象类强制接口规范,虚函数表存储函数地址,子类继承或覆盖对应项。二者分别体现数据结构高效性与面向对象灵活性,是C++核心知识点。

2603_95129722的博客 82
上一篇: 读函数式编程思维笔记03_权责让渡
下一篇: 读函数式编程思维笔记05_现实应用
躺柒
博客等级 码龄4年 7004粉丝 1322原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值