Tag Archives: 函数式编程

37

函数式思维和函数式编程

作为一个对Hashell语言[1]彻头彻尾的新手,当第一次看到一个用这种语言编写的快速排序算法的优雅例子时,我立即对这种语言发生了浓厚的兴趣。

Posted in 心得体会 | 13 Comments
68

为什么说面向对象编程和函数式编程都有问题

我不理解为什么人们会对面向对象编程和函数式编程做无休无止的争论。就好象这类问题已经超越了人类智力极限,所以你可以几个世纪的这样讨论下去。经过这些年对编程语言的研究,我已经清楚的看到了问题的答案

Posted in 批评评论 | 14 Comments
89

声明式编程和命令式编程的比较

先统一一下概念,我们有两种编程方式:命令式和声明式。我们可以像下面这样定义它们之间的不同:命令式编程:命令“机器”如何去做事情(how),这样不管你想要的是什么(what),它都会按照你的命令实现。声明式编程:告诉“机器”你想要的是什么(what),让机器想出如何去做(how)。

Posted in 技术技巧 | 21 Comments
41 函数式编程

Haskell语言为什么值得你去学习

当我向一些新手推荐学习Haskell语言时,得到的反应通常是:“为什么要学Haskell?”,“这是一种实用的语言吗?”或者“这是一种我可以真正用的语言吗?”我的回答是明确的YES。Haskell并不是我工作时的主要语言(我基本上是为嵌入式系统写C程序),但我仍然发现Haskell难以置信的有用。虽然我的工作从来不用Haskell,我仍然认为花时间去学习它是值得的。那么,为什么要学习Haskell语言呢?

Posted in 技术技巧 | 14 Comments
32 函数式编程

对函数式编程的误解

最近,我偶然看到了这样一篇文章:实用的纯函数式编程,里面谈到了函数式编程的优势。然而,作者的某些对函数式编程的思想认识却让我诧异:

Posted in 批评评论 | 16 Comments
33

函数式编程如何才能在我们的常规软件开发中占据一席之地

除非你生活中与世隔绝的深山老林里,否则你应该知道,在众多的所谓顶级编程高手中,函数式编程是十分盛行的。

Posted in 批评评论 | 11 Comments
66 函数式编程

为什么函数式编程很重要:不一样的白板图

一天,我们设计了一个流程,来校对款项的收支平衡。下面这张图就是我们在几年前设计出的结果:

Posted in 批评评论 | 7 Comments

为什么我们要学习Haskell这样的编程语言

最近的几个月,我一直在学习一种叫Haskell的编程语言。由于里面有太多的从未遇到的编程概念,整个过程就像是完全重新学习如何编程。在i.TV网站上,我写了很多JavaScript(node.js和前端代码)。虽然有不少的函数式/haskell式的编程模式不能引用进来,但仍有大量的技术思想让我在使用javascript编程语言时受益不少。

Posted in 技术技巧 | 20 Comments

编程改革

本文的作者Jon Beltran是一个西班牙程序员,作家,企业家,大学时辍学专职做游戏开发,他目前主要经营Symnum Systems公司,开发 ViEmu 和 Codekana 这两个开发工具。 软件编程出问题了。出大问题了。如今的这种编程方式让人如此不堪忍受,以至于让人想吐。数年来我一直在说我痛恨编程。过去的20年,我一直是个全职的软件开发者,目前也是,我没后悔过,我仍然热爱着我可以用编程来做的事情。可仍然,我痛恨编程。

Posted in 心得体会 | 6 Comments

函数式编程很难,这正是你要学习它的原因

很奇怪不是,很少有人每天都使用函数式编程语言。如果你用Scala,Haskell,Erlang,F#或某个Lisp方言来编程,很可能没有公司会花钱聘你。这个行业里的绝大部分人都是使用像Python,Ruby,Java或C#等面向对象的编程语言——它们用起来很顺手。不错,你也许会偶然用到一两个“函数式语言特征”,例如“block”,但人们不会去做函数式编程。

Posted in 心得体会 | 11 Comments

stream.js :一个新的JavaScript数据结构

最近在网上看到了一个新的Javascript小程序——Streams,起初以为是一个普通的Javascript类库,但读了关于它的介绍后,我发现,这不是一个简单的类库,而且作者的重点也不是这个类库的功能,而是——借用文中的一段话: 如果你愿意花10分钟的时间来阅读这篇文章,你对编程的认识有可能会被完全的改变(除非你有函数式编程的经验!)。 还有: Streams 实际上不是一个新的想法。很多的函数式的编程语言都支持这种特征。所谓‘stream’是Scheme语言里的叫法,Scheme是LISP语言的一种方言。Haskell语言也支持无限大列表(list)。这些’take’,’tail’, ‘head’, ‘map’ 和 ‘filter’ 名字都来自于Haskell语言。Python和其它很多中语言中也存在虽然不同但很相似的这种概念,它们都被称作”发生器(generators)”。 这些思想来函数式编程社区里已经流传了很久了。然而,对于大多数的Javascript程序员来说却是一个很新的概念,特别是那些没有函数式编程经验的人。 有兴趣的读者可以查看本站提供的它官方文档的中文翻译。

Posted in 文档手册 | 10 Comments

如何成为Python高手

这篇文章主要是对我收集的一些文章的摘要。因为已经有很多比我有才华的人写出了大量关于如何成为优秀Python程序员的好文章。 我的总结主要集中在四个基本题目上:函数式编程,性能,测试,编码规范。如果一个程序员能将这四个方面的内容知识都吸收消化,那他/她不管怎样都会有巨大的收获。

Posted in 心得体会 | 4 Comments

并行谬论

几乎已经有10年了,科技界的专家们一直谈论着摩耳定律的终结。就在本周,《经济学家(Economist)》发表了一篇文章,讲述程序员们如何开始使用函数式编程语言来驾驭如今已成为标配的多核处理器。事实上,这些新式语言的发明人,例如Rich Hickey (Clojure语言) 和 Martin Odersky (Scala语言),都在勤奋的宣扬这些语言如何给了开发人员们更大的能力来处理复杂的并行性编程,来充分利用多核CPU。本周早些时候,我参加了Scala语言日大会,去听Martin Odersky的讲道,他几乎用了一半的时间来讲这个主题。种种信息一遍又一遍的在向程序员表明:你需要写并行程序,而你不知道如何去做。这是真的吗,还是只是一种政治宣传?

Posted in 批评评论 | 7 Comments

你的编程语言能这样做吗?

一日,你查看你的程序代码,你有两大块代码看起来几乎完全的一样。事实上它们就是完全一样,除了一个代码里说的是“Spaghetti(意大利面条)”,另一个代码里说的是“Chocolate Moose(巧克力慕丝)”。 // 一个小例子: alert(“I’d like some Spaghetti!”); alert(“I’d like some Chocolate Moose!”); 这个例子恰好是用Javascript写的,但即使是你不懂Javascript,你也应该能看懂我说的。

Posted in 批评评论 | 26 Comments

Web编程是函数式编程

任何一位在两个领域里——本地应用程序和Web应用程序——都做过长期开发的人都会告诉你,web应用开发和传统的应用开发有很大的不同。这指的并不是编程语言。同样用Java,或者是Python,甚至C++,你既能开发本地应用,也能开发出web应用。不同之处在于web的载体介质。它体现出的是一种完全不同的部署和运行环境。它实现了一种不同的服务模式。它使用的是一种不同的应用架构。它需要程序员采用一种不同的思维方法,因为web编程所体现出的哲学体系跟我们传统的编程派系都相去甚远。在此,对于web编程范式,我们有一些有趣的事情需要去认识清楚。虽然很明显,很真实,但却被现代强势的编程范式的阴影遮蔽着,被眩目的新技术和工具的光芒淹没了。 “究竟是什么?” – 你会问。

Posted in 心得体会 | 6 Comments