
真理与美
文章平均质量分 72
ccat
Python Tutorial 2.3,2.4,2.5, 2.6, 2.7, 3.1 译者,《微型LISP解释器的构造与实现》作者。Jaskell系列Java/Scala组合子算法库作者。
展开
-
个人版 AI 辅助系统的尝试
"The Old Dwarf Forged A New Toy In His Mountain Workshop"原创 2023-12-17 01:26:22 · 1225 阅读 · 0 评论 -
为 Java 编写的 Try 和 Tuple 类型
Java 设计了一套久经考验的异常处理机制,为开发高质量的程序提供了可靠保障。但是随着现在软件日趋复杂,特别是异步编程的发展,语法级的异常处理机制已经不足使用。我模仿 Scala 的 Try 类型,为 Java 编写了一组 Try 和 Tuple 方法,用于简化复杂应用逻辑中的异常管理和数据传递。根据最新的 Java 21 和目前仍在广泛使用的 Java 8,分别在 jaskell-rocks 和 jaskell-java8 工具库中实现。原创 2023-12-03 14:28:57 · 1230 阅读 · 0 评论 -
随机、优先与权重(续)
Python 版本的 Croupier原创 2023-04-01 14:26:40 · 705 阅读 · 2 评论 -
随机、优先与权重——非平均概率的选择工具
除了汇编语言这样的另类,常规的编程语言几乎都提供了按平均概率生成整数或者浮点数的标准库。这也是应用开发中非常基本的功能。不过,有时候我们需要一些关于随机性的更复杂的功能。原创 2023-03-31 00:54:20 · 3221 阅读 · 16 评论 -
《通向实在之路》
近一段时间,我的各个开源项目都没有什么提交。在这段时间,我读完了《通向实在之路——宇宙法则的完全指南》。原创 2022-11-13 21:18:46 · 714 阅读 · 0 评论 -
《微型Lisp解释器的构造与解释》的写作风格
今天看到有读者抱怨我那本书是把源代码打印出来卖。这个感受我能理解,但是其实这个写作风格是反复尝试的结果,而不是偷懒。书里附带的源码,有很多是用 Scala 来注解 Java 。例如昨天我的好友问我Java版 Env 类型的 get 方法为何用了一个 try catch,这个其实在下一页的 Scala 版本中就是非常干净的。Java 的实现,只是为了尽可能接近 Scala 的 Try[T] ,这里更接近是一个getOrElse而不是错误处理。这种不同语言的对比,在我开发和写作的过程中,带来了很多启原创 2022-06-18 10:38:48 · 372 阅读 · 1 评论 -
旧译重贴:如何阅读数学
This article is part of the book Rediscovering Mathematics, which is due out in early 2011. - Rediscovering Mathematics: Patriot LedgerHow to Read Mathematics 如何阅读数学Mathematics is “a language that can翻译 2013-01-06 16:57:01 · 10501 阅读 · 1 评论 -
正确的答案都是错误的
正确的答案都是错误的从业逾12年,我找过工作,写过简历,经历过很多企业的面试;也招聘过, 面试过,收过简历,做过面试官。有成功的经验,也有失败的经历。 然而有学生和朋友问题我写简历和面试的技巧时,我只能说,没有技巧。我们在网上或书店,都会见到很多“攻略”、“秘籍”,教你记忆各种急智问题的回答方式。 从“你如何看待加班”这样比较正常问题,到“井盖为什么是圆的”这种比较文艺的问题, 以及“面试官和你妈原创 2012-09-29 16:57:20 · 10985 阅读 · 1 评论 -
《编程ING》——打开神秘魔法世界的大门
从 2000 年毕业,我做这行已经超过十二年了。最初接触计算机程序,还是 DOS 下的 QBASIC ,那已经离现在有接近二十年了。最初,我只是会照猫画虎,按照老师的程序抄个素数数列,或者打印个三角形什么的。初步理解程序的结构和意义,要等到读大学以后了。那个时候在老师的鼓励下,自己买书学习 Delphi ,才开始慢慢了解一些程序语言的知识。能够自己设计和开发出有点用途的程序,则要等到工作以后,在实原创 2012-08-25 23:18:15 · 7837 阅读 · 2 评论 -
《Ruby 元编程》——十年来读到的最好的编程技术书籍
远超预期的惊喜在出行前的一天拿到这本书,翻了几页,感觉不错,心里很有些纠结。要出远门的原因,衣物和工作设备之外的东西要尽量精简。 书籍方面反复挑拣,正在读和很想读的几本书,也都只好先放下,最后带上了这本新书和一本工作用书。在飞机上拿起这本书后,一边读,一边用笔勾划记录,三小时的班程,一气读完了半本。 然后在大巴、城铁和地铁上,一直到放下行李,阅读到半夜,翻到附录C结束,才满足的放下。原创 2012-02-18 11:02:57 · 29953 阅读 · 12 评论 -
How to Read Mathematics 如何阅读数学[节选]——数学阅读时应该自省的几个问题
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 bett翻译 2010-10-26 21:26:00 · 2644 阅读 · 0 评论 -
动态语言会导致开发质量下降吗?
<br />离开CPUG以后,我的邮箱清静了很多,果断退掉一些现在已经不太关注的邮件组后,只有haskell-cafe和python社区的邮件还比较热闹。不过这几天几位朋友都在问我这个事儿:<br />https://groups.google.com/forum/#!topic/python-cn/yT3FvzgFLAs/discussion<br /><br />codebase 中 merge 了别人的代码以后。即便双方都没有改动同一个文件,也可能出现这种情况:<br />A 只改动了 a.py 的一原创 2010-12-29 23:53:00 · 17051 阅读 · 37 评论 -
三值逻辑讨论
习惯上我们在应用系统中一直使用两值逻辑:非True即False。两值逻辑的运算体系已经相当成熟,与、或、非以及衍生的异或、与非等等。但是在实际应用中,我们会有机会遇到三值逻辑。三值逻辑通常包含可选的True、False、NULL。如何在完备的两值逻辑运算体系中加入这个NULL,使之满足我们的需要,并且不会引发逻辑矛盾,就是我们要在这里讨论的。NULL参与逻辑运算时,实际上存在着不同的算法。原创 2004-09-15 02:06:00 · 4701 阅读 · 0 评论 -
三值逻辑的一种实现
以前的文章中,我们讨论了三值逻辑可能的运算体系和可能的代码实现。这里,我们给出一种完全的实现方式。以下代码利用枚举,在每一个三值逻辑对象中标识出其认可的算法,如果两个对象认可的与/或算法不一致,则抛出异常。出于程序结构上的完整性限制,逻辑对象具有默认算法——Arithmetics.Mathemetic。但是,我们可以在运行期修改它这个标识,也可以通过工厂方法方便的得到指定算法的对象原创 2004-10-17 04:50:00 · 2050 阅读 · 0 评论 -
异常处理的几个语言无关的建议
1、异常影响效率,应该尽量避免? 确实,经充分优化的无异常程序,正常情况下应该会比使用异常处理的程序更为高效,但是随着编译器和虚拟机技术的发展,这种差距越来越小。特别是对于比较复杂的应用系统,反而会出现使用异常的程序更为高效的情况。因为可以把“异常情况”统一进行管理,避免了为每一次的错误都进行设定和约束。真正值得我们在无异常状态下编程的,是底层的系统开发和嵌入式系统,在可以预见的未原创 2004-12-05 22:13:00 · 2940 阅读 · 6 评论 -
该如何管理我们的知识?
信息是什么?我们这些IT业的从业者,每天都在于其打交道,我们的工作就是整理或生产信息。但是,我们是否真的理解了信息,或者信息的价值?甚至包括我们自己对工作的态度,就是反信息化的。 作为一个程序员,读到这里时不该有任何异议,你真的喜欢写文档吗?你真的认真写过文档吗?你认真地阅读过别人的文档吗?等等等等,关于文档的是是非非,已经太多了。然而,文档只是知识和项目管理的第一步。 纸上原创 2005-07-19 10:47:00 · 2585 阅读 · 0 评论 -
March Library中的Multiboolean——多值逻辑实现
(附前文)习惯上我们在应用系统中一直使用两值逻辑:非True即False。两值逻辑的运算体系已经相当成熟,与、或、非以及衍生的异或、与非等等。但是在实际应用中,我们会有机会遇到三值逻辑。三值逻辑通常包含可选的True、False、NULL。如何在完备的两值逻辑运算体系中加入这个NULL,使之满足我们的需要,并且不会引发逻辑矛盾,就是我们要在这里讨论的。NULL参与逻辑运算时,实际上存在着不同的算法原创 2005-03-20 03:00:00 · 4106 阅读 · 3 评论 -
[推介]比艺术更惊悚的真实
这样的故事已经超出了我所能评价的范围。疯牛病,这一世纪瘟疫从人们眼中逐渐淡出的时刻,回望它的来路。有太多太多的感慨。为那些陌生病人奉献了毕生精力的医生,在电视镜头前给女儿吃牛肉的农业部长。以及魔幻一般的致病因子。未来的漫长岁月,人类仍然要面对它的威胁。终极巫术。http://www.oursci.org/magazine/200209/020906.htmhttp://www.oursci.org原创 2005-11-29 22:49:00 · 2087 阅读 · 1 评论 -
CLISP Tutorial 中英对照版(一)
Common LISP Hints Geoffrey J. Gordon ggordon@cs.cmu.edu> Friday, February 5, 1993翻译 2006-03-31 00:08:00 · 6800 阅读 · 1 评论 -
CLIST Tutorial中英对照版(二)
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 calle翻译 2006-04-02 21:43:00 · 3311 阅读 · 0 评论 -
数组移动算法
ASH前段时间贴出了一个问题: 对于有K个元素的数组 int a[K]={....};写一个高效算法将数组内容循环左移m位 比如: int a[6] ={1,2,3,4,5,6} ,循环左移3位得到结果{456123}, 要求: 1不允许另外申请数组空间,但可以申请少许变量 2不允许采用每次左移 这是一个有趣的问题,当时ASH给出了一个很简单的解法: 1、将整个数组倒排; 2、将前k原创 2006-04-25 17:16:00 · 4165 阅读 · 9 评论 -
Python为什么不需要swap(a, b)
致谢:这是一篇译稿,原作者是一位NASA的程序员,非常感谢他在Python社区及时、详细的为我解答了问题,并在讲解中解说了一些Python的相关知识,还宽容的对待我蹩脚的英语。感谢他同意我将他的来信介绍给大家。这是一位谦和有礼又博学多才的朋友。他帮我理解Python之美,也让我看到人性之美。问:Python中为什么没有swap(a, b)方法?我们在Python中如何交换对象?Python 不原创 2003-04-30 11:14:00 · 17649 阅读 · 0 评论