`
zuiyanwangyue
  • 浏览: 167185 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

读动态函数式语言精髓

阅读更多

一、看清语言的本质,而不是试图学会一门语言。

二、关于技巧的思考:技巧究竟是一种语言特性还是仅特定的版本所支持抑或根本就是一个BUG?技巧是否是唯一可行的选择,有没有不需要技巧的实现?技巧是为了实现功能而不是为了表现技巧而出现在代码中的。

三、有关命令式语言:其核心是通过算法改变内存(中的数据),实质是面向存储的编程。其发展迄今为止经历了两个阶段:结构化编程和面向对象编程。

四、结构化编程中的结构体抽象层次过低,由此带来的问题至少包括下述三个方面:(1)结构体与实体直接相关,并且将这种相关性直接呈现在使用者的面前,因此开发人员必须面临数据的具体含义与关系;(2)结构体的抽象更面向于数据存储形式的表达和算法实现的方式,脱离了具体使用环境和算法的结构缺乏通用性;(3)僵化的类型与僵化的逻辑并存,影响了业务逻辑的表达。而面向对象的语言很好地解决了上述三个问题,主要借助于以下手段:(1)提出更加细化的可见性设定,实现更好的数据封装性及数据管理;(2)运用继承来解决结构体的通用性问题;(3)运用多态性解决“强类型”与业务逻辑表达之间的冲突。

五、“对象”无疑是比“结构体”更高层次的数据抽象,但是它也仅是更高层次的数据抽象。它所基于的,依然是对结构的认可,而并不是以对算法的认可为前提的。正是因为它并没有突破“结构影响算法”的边界,所以我们才在面向对象系统中看到一种情况:如果对象基类的抽象不合理,或者继承树设计的不合理,那么在这个对象系统上的应用开发将会束手束脚,接下来对继承体系的重构又会影响到业务逻辑(算法)的实现。而与此相反,接口(Interface)的观点是,只暴露数据体的逻辑行为能力而不暴露这种能力的实现方法和基于的数据特性,它首次从系统中剥离了“数据”的概念,进而把与数据有关的关系也清理了出去(例如对象引用,有人认为对象之间的引用是面向对象体系的灾难之源)。正因为接口突破了“结构影响算法”的边界,所以它变成了现代OOP语言中不可或缺的一部分,就此成为面向对象编程方法的一种突破。

六、原型继承的基本原理与实质。对象系统的继承特性有三种实现方案:基于类(class-based)、基于原型(prototype-based)和基于元类(metaclass-based),其中Javascript是使用原型继承来实现对象系统的。所谓的原型其实也是一个对象实例,原型的含义是指:如果构造器有一个原型对象A,那么由该构造器创建的实例(Instance)都必然复制自A,这里需要认识到:由于实例复制自对象A,所以实例必然继承了A的所有属性、方法和其它性质,由此可见原型继承的实质是复制。

分享到:
评论

相关推荐

    《JavaScript语言精髓与编程实践》精选版--动态函数式语言精粹

    《JavaScript语言精髓与编程实践》这本书,最初的名字是叫《动态函数式语言精髓与编程实践》,这是作者写本书的原意。确切地说,作者并非是想讨论JavaScript作为一种语言工具的用法或特性,更多地是希望用一种简洁的...

    《JavaScript语言精髓与编程实践》精选版

    《JavaScript语言精髓与编程实践》这本书,最初的名字是叫《动态函数式语言精髓与编程实践》,这是作者写本书的原意。确切地说,作者并非是想讨论JavaScript作为一种语言工具的用法或特性,更多地是希望用一种简洁的...

    Seven.Languages.in.Seven.Weeks_7天7语言_

    7. **F#**:F#是.NET框架下的函数式编程语言,它融合了面向对象和函数式编程的特点。F#的类型推断和运算符重载简化了代码编写,而它的异步工作流则方便了并行和并发编程。 这本书籍不仅教授语言本身,更强调了不同...

    七周七语言 理解多种编程范型

    例如,Haskell 和 Lisp 是典型的函数式语言。通过学习函数式编程,我们可以掌握如何利用高阶函数、纯函数和递归等概念来解决问题。 2. **面向对象编程(OOP)**:OOP 强调将数据和操作数据的方法封装在一起,形成...

    Functional_Programming:犹他大学的CS6963函数式编程课程所做的工作

    犹他大学的 CS6963 课程专注于深入理解函数式编程的概念和技术,尤其是通过 Haskell 这种现代函数式语言。课程内容可能包括以下主题: 1. **基础概念**:介绍函数式编程的基本理念,如纯函数、不可变数据、递归和高...

    组合语言敎学

    - **组合语言(汇编语言)**:一种低级语言,将人类可读的指令转换成机器语言,易于理解和调试。 - **指令运算元**:指令的组成部分,指示CPU对哪个数据或地址进行操作。 - **基本指令**:如MOV(移动)、ADD(加法...

    c#精髓davied2004

    C#(读作"C sharp")是微软公司为.NET框架开发的一种面向对象的编程语言,它在软件开发领域广泛应用,尤其在构建Windows桌面应用、Web应用以及游戏开发等方面。 C#的精髓在于它的简洁性、类型安全性和高性能。以下...

    python语言学习教程

    此外,函数式编程的概念,如高阶函数、map()、filter()和reduce(),也是Python中值得探索的领域。 模块和包是Python组织代码的重要方式,允许将相关功能分组到单独的文件中。Python标准库提供了大量预装模块,如os...

    .net精髓

    C#支持函数式、面向对象和声明式编程范式,拥有丰富的语法特性,如Lambda表达式、匿名方法、属性、LINQ(Language Integrated Query)等,使得代码编写更加高效和易读。 ASP.NET是.NET框架中的Web开发组件,它允许...

    《Swift语言》中文版API

    闭包是能够捕获和存储上下文中的常量和变量的匿名函数,它们在函数式编程中扮演着重要角色。 4. **类与结构体**:Swift中的类和结构体用于创建自定义数据类型,它们可以包含属性、方法、初始化器和下标。Swift还...

    汇编语言程序设计教程

    《汇编语言程序设计教程》是一本深入浅出地介绍汇编语言编程的教材,旨在帮助读者理解计算机底层工作原理并...通过《汇编语言程序设计教程》这样的教材,你可以逐步掌握这个领域的精髓,成为一名出色的汇编语言程序员。

    Seven Languages in Seven Weeks.pdf

    - Ruby是一种动态类型的面向对象脚本语言,以其简洁和易读性著称。 - Ruby广泛应用于Web开发,尤其是Rails框架的出现使其成为了构建现代Web应用的强大工具。 2. **Io** - Io是一种小巧的面向对象脚本语言,它的...

    python-3.7.7-docs-pdf-a4.zip

    Python虽然不是纯粹的函数式语言,但它支持许多函数式编程概念,如高阶函数、map()、filter()、reduce()、lambda表达式以及itertools模块。这部分将阐述如何利用这些工具来编写简洁、可读性强且易于测试的代码,以及...

    Learning.Scala.2014.12.pdf

    Scala是一种结合了面向对象编程与函数式编程特性的强大语言,它运行在Java虚拟机(JVM)上,具有强大的类型系统以及简洁、表达力强的语法。本书不仅适合初学者,也适合有一定编程经验的人士学习。 #### 为什么学习...

    C#学习精髓

    《C#学习精髓》是为初学者准备的一份详尽指南,旨在帮助读者快速掌握C#这门强大的编程语言。C#(读作"C Sharp")由微软公司开发,主要用于构建Windows应用程序、游戏以及Web应用。它是一种面向对象的语言,具有高效...

    机器人技术视频讲座(64讲)-机器人技术55-机器人编程要求与语言类型.zip

    5. **Lisp和Scheme**:这些函数式编程语言在早期的机器人研究中常见,它们的灵活性和表达能力有助于快速实现算法。 6. **MATLAB/Simulink**:在仿真和原型验证阶段,MATLAB和Simulink提供可视化编程,简化了复杂系统...

    突破JavaScript编程实例五十讲 JavaScript精髓 JavaScript技巧

    JavaScript,作为全球最广泛使用的脚本语言,是创建交互式网页和网络应用的关键工具。它在Web开发领域占据着核心地位,无论是前端还是后端,都有其身影。本压缩包中的"突破JavaScript编程实例五十讲"旨在深入解析...

    C# 语言规范 3.0 (中英文)

    通过阅读《C# 语言规范 3.0》的中英文版,你可以深入了解这些概念,并掌握C#编程的精髓。文档不仅解释了语言的规则,还包含了许多示例,有助于理解和应用这些知识。无论你选择英文版还是中文版,都将加深你对C#的...

Global site tag (gtag.js) - Google Analytics