【外刊IT评论网】编程极端主义

标签: 技术技巧 | 发表时间:2012-12-06 00:06 | 作者:Aqee
出处:http://www.aqee.net

函数的概念太棒了。为什么我们不编写一个全由函数构成的程序呢?

对象的概念太棒了。为什么我们不编写一个所有东西都是对象的程序呢?

延后执行的概念太棒了。为什么我们不编写一个程序让所有的数据类型都是lazy的呢?

编程极端主义 (跟极限编程没有关系)是一种接受某种理论、在所有事情上检验它、在所有地方运用它的行为。一通实验,尘埃落定后,人们通常会回想这次极端行为,认识到“不错,这很有趣,但很明显,在Y上使用X明显不合适。干这个事情我们需要使用合适的技术!”

这样做的收获:有时候我们 应该使用 错误的技术干某种工作——因为它有可能是正确的方法,只是你不知道而已。如果你没有尝试过着任何东西都是函数的编程,你可能不会明白函数的功用,例如把函数当作参数,或方便的 lambdas。如果你没有尝试过在所有地方都使用对象,你也许就不会明白数字或对象的类都可以是对象。如果你没尝试过着任何地方都使用延后执行,你也许就不会明白纯函数可能是一种更重要的语言特征。

所以会有下面两个建议:

  1. 学习一种新理论时,请尝试着在所有地方都使用它。这样一来,你能更快更迅速的知道它适合干什么和不适合干什么,有时甚至你会发现和你最初对它的直觉是错误的。(在这种事情上,这种方法很好,但在另一方面,如果你不知道这种理论方法只适合某些情况,你就错失了更好的认识它的机会)。
  2. 如果你想更清楚的了解某种理论方法,使用一种极端的语言或框架系统是最好的方法。如果你想知道延迟执行的程序究竟是什么样的,你就该使用Haskell语言,而不是其它的把延迟执行作为可选行为的语言。虽然这种比较极端的系统的实用性并不是很强,但它们能让你更快的获取学习目标的真谛。

当然,有很多的情况中极端主义是不适合的,但如果是一些有趣的项目,小项目,研究性的项目,这种方法真的可以让你学到很多东西。我的印象最深刻的事情是发生在去年,和 Adam Chlipala一起工作。当时我们给Coq做一些校验,我采用常见的方法一步一步的测试,当我大概清楚了整个测试的全貌后,我才开始使用Ltac自动化测试。Adam告诉我:“最初你就应该使用自动化测试,而不是手工的探索。”这一句圣言让我醍醐灌顶:我还不够极端!

文件系统很有趣。为什么我们不开发一个操作系统,让里面的所有东西都是文件形式?

Cons cells太棒了。为什么我不做一个所有东西都是cons cells构成的程序呢?

数学太神奇了。为什么我们不编写一个所有东西都是来自数学的程序呢?

数组太有趣了。为什么我们不编写一个所有东西都是数组的程序呢?


本文来自 外刊IT评论网( www.aqee.net),原始地址: 编程极端主义


相关 [it 编程 极端主义] 推荐:

【外刊IT评论网】编程极端主义

- - 外刊IT评论网
为什么我们不编写一个全由函数构成的程序呢. 为什么我们不编写一个所有东西都是对象的程序呢. 为什么我们不编写一个程序让所有的数据类型都是lazy的呢. 编程极端主义 (跟极限编程没有关系)是一种接受某种理论、在所有事情上检验它、在所有地方运用它的行为. 一通实验,尘埃落定后,人们通常会回想这次极端行为,认识到“不错,这很有趣,但很明显,在Y上使用X明显不合适.

Hadoop Streaming 编程

- - 学着站在巨人的肩膀上
Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer,例如:. 采用shell脚本语言中的一些命令作为mapper和reducer(cat作为mapper,wc作为reducer). 本文安排如下,第二节介绍Hadoop Streaming的原理,第三节介绍Hadoop Streaming的使用方法,第四节介绍Hadoop Streaming的程序编写方法,在这一节中,用C++、C、shell脚本 和python实现了WordCount作业,第五节总结了常见的问题.

Shell编程

- - 博客园_首页
本来打算寒假回家好好学习Linux的,为以后学习嵌入式打好基础的. 回家之后的学习效率非常低,之前为了搭建Linux环境,折腾了很长时间,学到现在也就勉强才把Shell编程学完了. 今天就把自己学习的相关知识点总结整理一下. 个人感觉shell程序跟windows下的批处理文件有点像,就是将一些系统命令写进一个可执行文件中,然后执行.

用 AlphaCode 编程

- - 奇客Solidot–传递最新科技情报
至少在部分问题上 AI 程序员能与真正的程序员竞争了. Alphabet 旗下 AI 子公司 DeepMind 宣布了 AI 代码生成系统 AlphaCode(PDF),声称测试显示其水平在编程竞赛中已经具备了竞争力. 计算机科学家 Scott Aaronson 也为 AI 在编程方面的进步 惊叹不已.

编程能力与编程年龄

- - 酷壳 - CoolShell.cn
程序员这个职业究竟可以干多少年,在中国这片神奇的土地上,很多人都说只能干到30岁,然后就需要转型,就像《 程序员技术练级攻略》这篇文章很多人回复到这种玩法会玩死人的一样. 我在很多面试中,问到应聘者未来的规划都能听到好些应聘都说程序员是个青春饭. 因为,大多数程序员都认为,编程这个事只能干到30岁,最多35岁吧.

[译]所有编程皆为Web编程

- - 呦呦鹿鸣
原文作者:Jeff Atwood. Michael Braude对Web编程大受追捧表达了他的不屑:. 大部分人想去做Web编程的原因是,他们不够聪明,因此也做不了别的事. 他们不懂编译器、并发性、3D或类继承. 他们根本不明白我为什么要使用接口或者抽象类. 他们不理解虚函数、指针、引用、垃圾回收、终结器、传引用与传值的区别、C++的虚拟析构函数、或者C#的结构体与类之间的差别.

javascript 编程规范

- 红茶 - 博客园-Ruby's Louvre
为公司起草的javascript编程规范,参考了网上的许多资料,尤其是google的规范. 现在放出来,希望能抛砖引玉,大家多提宝贵意见. 本规范是针对javascript函数式编程风格与公司严重依赖于jQuery进行编码的现实制定出来. 禁止使用eval,with与caller(ecma262 v5 的use strict要求).

Javascript编程风格

- - 阮一峰的网络日志
Douglas Crockford是Javascript权威, Json格式就是他的发明. 去年11月他有一个演讲( Youtube),谈到了好的Javascript编程风格是什么. 我非常推荐这个演讲,它不仅有助于学习Javascript,而且能让你心情舒畅,因为Crockford讲得很幽默,时不时让听众会心一笑.

编程的未来

- - ITeye博客
最近在看一本书,加来道雄(Michio Kaku)的《物理学的未来》,第一、第二章是程序员更加关心的,对于下一个100年计算机和人工智能未来的预测. 想想计算机发展短暂的历史,这些发生了的翻天覆地的变化,似乎都在弹指一挥间. 无论如何,书中对其这样几个猜想令我记忆深刻:. 这是物理学家眼中的世界(另外推荐他的另一本书《平行宇宙》),激动人心;另一方面,我回想起小时候无比痴迷的机器猫,小小四维空间袋,寄托了孩子多少纯真的梦想,有多少神奇的道具已经成为现实…….

MapReduce编程模型

- - CSDN博客云计算推荐文章
MapReduce是一个Google发明的编程模型,也是一个处理和生成超大规模数据集的算法模型的相关实现. 用户首先创建一个Map函数处理一个基于对的数据集合,输出的中间结果基于对的数据集合,然后再创建一个Reduce函数用来合并所有的具有相同中间Key值的中间Value值.