1.3.3 了解程序的运行
在通常的命令式风格中,程序由对象组成,对象有内部状态,既可以经直接更改,也可以通过调用对象的方法更改。这意味着当我们调用一个方法时,很难知道这个操作影响了哪个状态。例如,在清单 1.1 的C# 代码片段中,我们创建了一个椭圆,获取它的边框,在返回的矩形上调用方法,最后,返回这个椭圆给调用者。
Listing 1.1 Working with ellips...
分类:
其他好文 时间:
2014-07-22 22:34:16
阅读次数:
211
使用ReactiveCocoa实现iOS平台响应式编程 ReactiveCocoa和响应式编程 在说ReactiveCocoa之前,先要介绍一下FRP(Functional Reactive Programming,响应式编程),在维基百科中有这样一个例子介绍: 在命令式编程...
分类:
移动开发 时间:
2014-07-22 08:16:34
阅读次数:
404
1.1 什么是函数式编程?
想给函数式编程下个明确的定义,是困难的。因为,存在不同的函数语言,但是,并没有明确的、每种函数语言必须具有的特征集。尽管如此,函数语言仍有一些共同的属性,只是表达解决编程问题的风格稍微有点不同。最容易地描述函数式编程,就是把它与最常见的编程风格:命令式编程(imperative programming),进行比较。
[函数语言]
函数式编程的编程风格是...
分类:
其他好文 时间:
2014-07-19 08:18:52
阅读次数:
212
很多程序员认为SQL是一头难以驯服的野兽。它是为数不多的声明性语言之一,也因为这样,其展示了完全不同于其他的表现形式、命令式语言、面向对象语言甚至函数式编程语言(虽然有些人觉得SQL还是有些类似功能)。 我每天都写SQL,我的开源软件JOOQ中也包含SQL。因此我觉得有必要为还在为此苦苦挣扎的...
分类:
数据库 时间:
2014-07-14 15:06:02
阅读次数:
488
完美的计划相对于Java而言Erlang的优势或有意思的地方:命令式语言 V.S. 函数式语言,线程抽象和体系结构,分布式编程支持度
分类:
其他好文 时间:
2014-07-08 21:54:57
阅读次数:
269
C版本(来自最短路径算法—Dijkstra(迪杰斯特拉)算法分析与实现(C/C++)) 1 /*************************************** 2 * About: 有向图的Dijkstra算法实现 3 * Author: Tanky Woo 4 * ...
分类:
其他好文 时间:
2014-06-28 10:13:49
阅读次数:
175
使用ReactiveCocoa实现iOS平台响应式编程
ReactiveCocoa和响应式编程
在说ReactiveCocoa之前,先要介绍一下FRP(Functional Reactive Programming,响应式编程),在维基百科中有这样一个例子介绍:
在命令式编程环境中,a = b + c 表示将表达式的结果赋给a,而之后改变b或c的值不会影响a。但在响应式编程中...
分类:
移动开发 时间:
2014-06-14 09:15:08
阅读次数:
514
我们已经说明了 Haskell
是一个纯粹函数式语言。虽说在命令式语言中我们习惯给电脑执行一连串指令,在函数式语言中我们是用定义东西的方式进行。在 Haskell
中,一个函数不能改变状态,像是改变一个变量的内容。(当一个函数会改变状态,我们说这函数是有副作用的。)在 Haskell 中函数唯一可以...
分类:
其他好文 时间:
2014-06-07 00:59:58
阅读次数:
241
maximum函数取一组可排序的 List(属于 Ord Typeclass)
做参数,并回传其中的最大值。想想,在命令式风格中这一函数该怎么实现。很可能你会设一个变量来存储当前的最大值,然后用循环遍历该
List,若存在比这个值更大的元素,则修改变量为这一元素的值。到最后,变量的值就是运算结果。唔...
分类:
其他好文 时间:
2014-06-02 00:11:06
阅读次数:
412
递归是编程中一个相对难以理解但是却又很重要的概念.
对于从命令式语言开始学习编程的程序员天生对此有理解缺陷, 而对于从类似C++这种对函数式编程范式不友好的语言开始学习编程的程序员就更加如此了.(比如我自己)
碰巧(其实不巧)最近在读这本书(这本书国内没有引进, 网上只有巨贵的亚马逊卖的原版, 我读...
分类:
其他好文 时间:
2014-05-26 16:17:15
阅读次数:
401