随笔分类 -  真理与美

摘要:远超预期的惊喜在出行前的一天拿到这本书,翻了几页,感觉不错,心里很有些纠结。要出远门的原因,衣物和工作设备之外的东西要尽量精简。 书籍方面反复挑拣,正在读和很想读的几本书,也都只好先放下,最后带上了这本新书和一本工作用书。在飞机上拿起这本书后,一边读,一边用笔勾划记录,三小时的班程,一气读完了半本。 然后在大巴、城铁和地铁上,一直到放下行李,阅读到半夜,翻到附录C结束,才满足的放下。这么多年来,只有三本书给过我这样的体验:编码的奥秘、《设计模式》(GOF),和这本 Ruby元编程。 如果考虑编码的奥秘不算技术书籍(科普或教育类),那么本书和《设计模式》是仅有的两本。动态语言的《设计模式》事实上 阅读全文
posted @ 2012-02-18 11:02 计算机技术 阅读(330) 评论(0) 推荐(0)
摘要:离开CPUG以后,我的邮箱清静了很多,果断退掉一些现在已经不太关注的邮件组后,只有haskell-cafe和python社区的邮件还比较热闹。不过这几天几位朋友都在问我这个事儿:https://groups.google.com/forum/#!topic/python-cn/yT3FvzgFLAs/discussioncodebase 中 merge 了别人的代码以后。即便双方都没有改动同一个文件,也可能出现这种情况:A 只改动了 a.py 的一个方法的传参个数。B 改动了 b.py, 并且 b.py 中调用了 a.py 中的那个方法改动前的版本。merge 了两个文件以后, 程序员基本都不 阅读全文
posted @ 2010-12-29 23:53 计算机技术 阅读(156) 评论(0) 推荐(0)
摘要:Why is this idea true?为什么这个想法是对的?Do I really believe it?我是否确信它?Could I convince someone else that it is true?我能说服别人也信服它吗?Why didn't the author use a different argument?为什么作者没有用一个不同的论据?Do I have a better argument or method of explaining the idea?我有没有一个更好的论据或方法来说明这个思想?Why didn't the author exp 阅读全文
posted @ 2010-10-26 21:26 计算机技术 阅读(182) 评论(0) 推荐(0)
摘要:ASH前段时间贴出了一个问题: 对于有K个元素的数组 int a[K]={....};写一个高效算法将数组内容循环左移m位 比如: int a[6] ={1,2,3,4,5,6} ,循环左移3位得到结果{456123}, 要求: 1不允许另外申请数组空间,但可以申请少许变量 2不允许采用每次左移 这是一个有趣的问题,当时ASH给出了一个很简单的解法: 1、将整个数组倒排; 2、将前k-m个元素和剩下的m个元素分别倒排。 这个算法需要对每个数组元素做两次写操作,所以我当时在考虑,有没有一种方法,只对数组元素进行一次写操作就完成移动? 最直观的想法,就是从第一个元素开始,把它一步移动到最终的目的位 阅读全文
posted @ 2006-04-25 17:16 计算机技术 阅读(1177) 评论(0) 推荐(1)
摘要:Forms and the Top-Level LoopThe things which you type to the LISP interpreter are called forms; theLISP interpreter repeatedly reads a form, evaluates it, and prints theresult. This procedure is called the read-eval-print loop. 我们输入到LISP解释器的东西被称为语句;LISP解释器逐条循环读取每条语句,进行解析,将结果打印出来。这个过程被称为读取-解析-打印循环。So 阅读全文
posted @ 2006-04-02 21:43 计算机技术 阅读(239) 评论(0) 推荐(0)
摘要:Common LISP Hints Geoffrey J. Gordon <ggordon@cs.cmu.edu> Friday, February 5, 1993 Modified by Bruno Haible <haible@ma2s2.mathematik.uni-karlsruhe.de> 简体中文版翻译: 刘鑫 <March.Liu@gmail.com>Note: This tutorial introduction to Common Lisp was written for theCMU environment, so some of the 阅读全文
posted @ 2006-03-31 00:08 计算机技术 阅读(350) 评论(0) 推荐(0)
摘要:这样的故事已经超出了我所能评价的范围。疯牛病,这一世纪瘟疫从人们眼中逐渐淡出的时刻,回望它的来路。有太多太多的感慨。为那些陌生病人奉献了毕生精力的医生,在电视镜头前给女儿吃牛肉的农业部长。以及魔幻一般的致病因子。未来的漫长岁月,人类仍然要面对它的威胁。终极巫术。http://www.oursci.org/magazine/200209/020906.htmhttp://www.oursci.org/magazine/200210/021012.htmhttp://www.oursci.org/magazine/200211/021104.htmhttp://www.oursci.org/mag 阅读全文
posted @ 2005-11-29 22:49 计算机技术 阅读(121) 评论(0) 推荐(0)
摘要:信息是什么?我们这些IT业的从业者,每天都在于其打交道,我们的工作就是整理或生产信息。但是,我们是否真的理解了信息,或者信息的价值?甚至包括我们自己对工作的态度,就是反信息化的。 作为一个程序员,读到这里时不该有任何异议,你真的喜欢写文档吗?你真的认真写过文档吗?你认真地阅读过别人的文档吗?等等等等,关于文档的是是非非,已经太多了。然而,文档只是知识和项目管理的第一步。 纸上的不算,这么多年,我用键盘写出的文字,稳超10万字,但是,它们都在哪里?很多时候,想找早年的某篇文章,我自己都找不到了。除了文档格式不统一,还有一个问题就是检索困难。存储、分类、检索,成了文档管理的大问题。这依赖于文档所. 阅读全文
posted @ 2005-07-19 10:47 计算机技术 阅读(228) 评论(0) 推荐(0)
摘要:(附前文)习惯上我们在应用系统中一直使用两值逻辑:非True即False。两值逻辑的运算体系已经相当成熟,与、或、非以及衍生的异或、与非等等。但是在实际应用中,我们会有机会遇到三值逻辑。三值逻辑通常包含可选的True、False、NULL。如何在完备的两值逻辑运算体系中加入这个NULL,使之满足我们的需要,并且不会引发逻辑矛盾,就是我们要在这里讨论的。NULL参与逻辑运算时,实际上存在着不同的算法。按NULL值在运算中的“优先级”分为三种。通常我们在数据库中使用的三值逻辑,遵循NULL最优的原则。有NULL值参与二值运算时,返回结果为NULL,其它与二值逻辑相同。这一原则基于关系型数据库将NU 阅读全文
posted @ 2005-03-20 03:00 计算机技术 阅读(230) 评论(0) 推荐(0)
摘要:1、异常影响效率,应该尽量避免? 确实,经充分优化的无异常程序,正常情况下应该会比使用异常处理的程序更为高效,但是随着编译器和虚拟机技术的发展,这种差距越来越小。特别是对于比较复杂的应用系统,反而会出现使用异常的程序更为高效的情况。因为可以把“异常情况”统一进行管理,避免了为每一次的错误都进行设定和约束。真正值得我们在无异常状态下编程的,是底层的系统开发和嵌入式系统,在可以预见的未来,它们仍然是各种编译技巧和微观技术争霸的舞台。这也是为什么C++标准中允许开发者设定编译器是否打开异常支持的原因。2、在所有的操作步骤中都加入异常处理。 这是另一个极端。经验告诉我们,极端往往是错误的。这一次没有. 阅读全文
posted @ 2004-12-05 22:13 计算机技术 阅读(169) 评论(0) 推荐(0)
摘要:以前的文章中,我们讨论了三值逻辑可能的运算体系和可能的代码实现。这里,我们给出一种完全的实现方式。以下代码利用枚举,在每一个三值逻辑对象中标识出其认可的算法,如果两个对象认可的与/或算法不一致,则抛出异常。出于程序结构上的完整性限制,逻辑对象具有默认算法——Arithmetics.Mathemetic。但是,我们可以在运行期修改它这个标识,也可以通过工厂方法方便的得到指定算法的对象。以下为算法标识枚举Arithmetics的定义:public enum Arithmetics {Mathematic, Database, Verify};以下为三值逻辑结构的代码,从不同的与/或运算静态方法的名 阅读全文
posted @ 2004-10-17 04:50 计算机技术 阅读(273) 评论(0) 推荐(0)
摘要:习惯上我们在应用系统中一直使用两值逻辑:非True即False。两值逻辑的运算体系已经相当成熟,与、或、非以及衍生的异或、与非等等。但是在实际应用中,我们会有机会遇到三值逻辑。三值逻辑通常包含可选的True、False、NULL。如何在完备的两值逻辑运算体系中加入这个NULL,使之满足我们的需要,并且不会引发逻辑矛盾,就是我们要在这里讨论的。NULL参与逻辑运算时,实际上存在着不同的算法。按NULL值在运算中的“优先级”分为三种。通常我们在数据库中使用的三值逻辑,遵循NULL最优的原则。有NULL值参与二值运算时,返回结果为NULL,其它与二值逻辑相同。这一原则基于关系型数据库将NULL视为“ 阅读全文
posted @ 2004-09-15 02:06 计算机技术 阅读(249) 评论(0) 推荐(0)
摘要:致谢:这是一篇译稿,原作者是一位NASA的程序员,非常感谢他在Python社区及时、详细的为我解答了问题,并在讲解中解说了一些Python的相关知识,还宽容的对待我蹩脚的英语。感谢他同意我将他的来信介绍给大家。这是一位谦和有礼又博学多才的朋友。他帮我理解Python之美,也让我看到人性之美。问:Python中为什么没有swap(a, b)方法?我们在Python中如何交换对象?Python 不使用这种方式(swap(a, b))。Python以引用方式管理对象,你可以交换引用,但通常不能交换内存中的对象值。当然你也不需要这样做。在C++中这种函数用来交换“a和b的值”。在Python中,a和b 阅读全文
posted @ 2003-04-30 11:14 计算机技术 阅读(231) 评论(0) 推荐(0)