2006年09月
看看indeed.com的数据:
1.做什么语言收入最高?
http://www.indeed.com/salary?q1=lisp&l1=&q2=c%2B%2B&l2=&q3=java&l3=&q4=c%23&l4=&q5=python&l5=&q6=ruby&l6=&q7=smalltalk&l7=&q8=cobol&l8=&q9=Perl&l9=&q10=Erlang&l10=&q11=Prolog&l11=&q12=C&l12=&q13=Ada&l13=&tm=1
每次最多比较13种语言。于是我把没有数据的Erlang换成OCaml,军方才用的Ada换成Haskell,和不知道中国有谁用的Prolog换成Assembly,把C换成Visual Basic, 把Cobol换成Delphi:
http://www.indeed.com/salary?q1=lisp&l1=&q2=c%2B%2B&l2=&q3=java&l3=&q4=c%23&l4=&q5=python&l5=&q6=ruby&l6=&q7=smalltalk&l7=&q8=Delphi&l8=阅读全文>
发表于 @ 2006年09月29日 00:04:00|评论(loading...)|编辑
这几天读程序分析的书非常郁闷。 无数次怀疑自己是不是真在读关于编程的书。感觉搞程序语言(包括搞软件工程)的人和搞算法的人不是一个世界的,虽然都在八卦算法和数据结构。看那些算法书里的概念多直观啊。再困难的概念都是从无数具体实在的例子中浮现出来的,基本不用费脑子去理解和记忆。再看程序分析的书,符号满天飞。不把54个希腊字母用完誓不罢休。有限的几个例子也是用来支持作者讨论的模型的,而不是用来引出概念。比如像数据流分析那么直观的东西,一来就是一组集合方程,然后说找到了定点就找到了最小解。嗯,虽然不太理解,但还能接受。然后作者就开始扯什么偏序集,格点,最小定点,最大定点了。然后以后的各式各样的数据流分析就变成对一个格点加一堆函数集合找定点了。然后俺就彻底迷茫了。该不是那帮写书的银为了程序分析而程序分析吧?Y们写过程序没有啊(嗯,俺知道,自己很幼稚)?其实自学理论最大的障碍之一就是缺乏动力:这个理论从哪里来?到哪里去?我为什么要学?可惜很多书都不考虑这些问题。有的甚至连非标准符号系统都不解释。看来当年Knuth在《Mathematical Writing》里强调的“为普通人而写,你的作品专家能看阅读全文>
发表于 @ 2006年09月27日 11:53:00|评论(loading...)|编辑
Lambda算子5b:How of Y
其实是这篇文章的意译。有些东西省了。添了点私货。就有了下面的帖子。
虽然Y相当神奇。对它的推导也不完全是天外飞仙般无迹可寻。基本上我们为了解决让没有名字的函数能自我引用,一步一步抽象出了Y。所以知道Y的推导过程对我们程序员还是很有意义的:毕竟编程的过程也是抽象的过程。看看当年的老大们怎么从纷繁的表象里抽象出一般规律,对我们日后的思考应该大有好处。为了老大们能够试验,我就用JavaScript了。整个推导的过程非常像编程时的重构。我们提出一个粗略的解决方案,然后仔细观察,找出可以抽象的地方,进行抽象。得到一个更普适的结果后,继续重复重构的步骤,直到得到最优解。估计看这篇帖子的人都知道怎么玩儿小小JavaScript吧?再说有个浏览器就有了测试环境。废话少说,看代码。我们还是以阶乘函数为例。先看通常的写法:
1: function fact(n){2: if(n == 0){3: return 1;4: }5: 6: if(n > 0){7: 阅读全文>
发表于 @ 2006年09月24日 14:28:00|评论(loading...)|编辑
Lambda算子5a:Why oh why Y?
鄙视理论的老大们可以跳到下一篇文章,lambda算子5b。那里用JavaScript推导出Y。
原作在这里。我顺便参考了Richard Gabriel2001年写就的小文章The Why of Y。Gabriel也是个牛人。在Lisp的发展史里举足轻重。写了无数重量级的LISP系统不说,还领导了Common LISP下面的标准OO系统,CLOS,的标准制订和实现。他提出的Lisp性能基准测试方法至今有用。G老大除了技术牛以外,还有很强的政治手腕。当年曾在山头林立的LISP组织间斡旋,促成了Common LISP标准的问世。不愧是当过公司老总的人。G老大的文章也写得相当有煽动力。他的Worse Is Better已经是网上引用率最高的文章之一。有兴趣的还可以去读他的自传。 里面有趣的故事不少,有些还非常激动人心。比如当年他被一个心胸狭隘的小人老师诬陷,没有进入MIT和哈佛,而后是怎么发奋的。现在G老大好像把兴趣转到写诗上面去了,从2000年开始就每日一诗。比赵丽华还勤奋。嗯,说远了。还是聊让人目眩的Y Combinator阅读全文>
发表于 @ 2006年09月24日 14:13:00|评论(loading...)|编辑
这周读到三篇博客帖子。把它们串在一块儿读,对我们的职业发展非常有教育意义。
一篇是Thoughtworks前员工Ravi Mohan写的,《但是马老大,商业编程就是无聊》。Martin Fowler在一篇帖子里说,编写企业软件不光是捣腾数据。并不是只有解决算法问题,操纵硬件,和应用大量数学才有意思。关心顾客(马丁所谓的客户亲和力),全力让自己的软件为客户带来商业利益也是挑战所在,趣味所存。Ravi在帖子里不以为然,认为不管Martin Fowler怎么辩白,商业编程无趣是不争的事实。不信可以看看人心所向。从来只见有天赋的程序员屁颠屁颠地去开发编译器,操作系统,TCP/IP stack, 大规模并行系统,高性能服务器,游戏引擎等系统级软件。哪怕优秀的商业软件程序员也无限渴望去开发系统软件。相反,从来没见那个能靠系统开发软件挣钱的牛程无限向往开发商业软件。这好比柏林墙没倒前,只见东德人拼死冲到西德去,没见有什么西德人拼死要到东德去的(愤青们就不用和我争论东德怎么好了哈。Ravi自己的例子而已。东德好不好关我P事)。Ravi还说,哪怕Thoughtworks内部员工也无限向往系阅读全文>
发表于 @ 2006年09月18日 11:36:00|评论(loading...)|编辑
普林斯顿两个教授把一本关于计算复杂性理论的教材初稿放到网上了。很多人学习复杂度理论时用伯克力牛人Papadimitriou的那本经典教材。P老大那本教材写于1993年。13年过去,复杂性理论的进展还是非常显著的。显著到我这个外行都知道一些。从目录看。这本新书和P老大的经典覆盖的基础部分都差不多,但新书的讨论了一些相对较新的东西。比如说代数复杂度,伪随机,密码学方面的进展,交互式证明,通讯复杂度,下界证明等等。//sigh...不知道什么时候才可以看到这本书头上。阅读全文>
发表于 @ 2006年09月18日 07:59:00|评论(loading...)|编辑
今天效率还比较高。在学校旁边的星巴克里坐了几小时,喝了两杯咖啡,吃了一片南瓜籽蛋糕,上了一趟洗手间,打望了各色美女几次后,看完了这本书的第一章和第二章的一半。不觉感慨,虽然毕业才5年,俺的注意力已经远远不及本科的时候。没想到未老先衰的势头如此之快。俺也开始“想当年”了:想当年不到两天就读完南京大学出的那本《结构化学》,并完成所有习题。想当年熬夜背完天杀的中国革命史考完试后,还能再读完《鲁滨逊》才睡觉。想当年一个通宵就从对计算复杂性理论一窍不通到弄懂怎么用多项式化简(polynomial reduction)证明NPC,并做完一堆证明题。想当年读书总是兴致盎然,从来不需要停下来一边向后翻页一边嘀咕怎么什么时候才能看完。现在不同了,看书不到三个小时就开始嘀咕到底还有多久才能看完,再也不能翻开书便不闻窗外事,抬头方知东方既白。现在的干扰也远远多过当年。看《结构化学》的年代,WWW还是《镜花缘》里的西洋故事。最大的干扰是书报亭里买的杂志和报纸。证明NPC的年代,我们还在用Sun Sparc工作站,用Yahoo+Altavista+Google搜索,最大的干扰是Slashdot和有限的几个中文网阅读全文>
发表于 @ 2006年09月18日 07:25:00|评论(loading...)|编辑
最近Joel Spolsky 批评了Ruby ,说Ruby不值得信赖。接着Joel介绍他的公司开发的Wasabi。博客圈很多大佬当然觉得Joel很不靠谱。Ruby的邮件列表上也展开了讨论。然后Ruby的作者Matz就出来发言(黑体部分)了。谦虚得一塌糊涂啊。Matz也就30来岁吧,说话跟80岁隐士一样,真不容易。
Hi,
In message "Re: Joel Spolsky on languages for web programming"
on Fri, 1 Sep 2006 23:28:09 +0900, James Edward Gray II writes:
|On Sep 1, 2006, at 9:20 AM, Rob Sanheim wrote:
|
|> I find it amusing that he says Rails is too risky and new, yadda
|> yadda, but then he goes on to talk about their in-house language,
|> "W阅读全文>
发表于 @ 2006年09月18日 06:04:00|评论(loading...)|编辑
链接在这里。连StrongTalk的卖点,一个性能卓越的虚拟机,都被开源了。StrongTalk是SmallTalk的变种,允许静态类型(所以才叫"Strong"而不是small哈。当然,静态类型可用可不用,随喜),支持类型推断。这些还不是主要卖点。StrongTalk的最大卖点还在于速度。他的虚拟机运用所谓的“类型反馈”技术(下面会讲),动态地编译和优化代码,把常用的代码内联,极大地提高了运行速度。StrongTalk的类型系统独立于编译器。也就是说,纯粹动态类型的Smalltalk代码也能在StrongTalk上运行,而且速度和用了静态类型的代码一样快。Sun怎么做到的嗫?关键还是在这个类型反馈机制上:StrongTalk在语言运行时收集性能相关的统计(runtime profiling)。前几百次按通常的方式动态分配函数调用,但数据收集够了后,虚拟机就可以把最常用的函数调用内联到系统里,把常用函数的调用翻译成一个JMP, 跳到最有可能的函数实现那里,然后再来一个CMP,看是不是跳对了地方。只有当CMP失败的时候,系统才执行通常的动态分配,也就是在Hashtable上找来找去。嗯,阅读全文>
发表于 @ 2006年09月13日 11:37:00|评论(loading...)|编辑
老文章了,但每次看都要发笑。干脆转过来,独乐乐不如众乐乐嘛。原文在这里。由头是有人抱怨SB面试问题,叫人写出一个文件拷贝函数。作者说,如果他被面试同样的问题,他会利用这个机会好好娱乐一把(下面Q是应试人,A是面试官):
A:请写一个文件拷贝函数。
Q:你说的“拷贝”是什么意思?
A:嗯。。。。就是把一个文件的内容拷贝到新的文件
Q:考不考虑日期/时间?
A:不用,那些不用被拷贝。
Q:目标文件可以和源文件同名么?
A:嗯。。。不行
Q:那我不用担心假名攻击(name spoofing)?比如说土耳其语的I。(注意哈,土耳其语的I有四种写法,和英语的I相似而不同)。
A:不用担心。
Q:文件属性呢?
A:新文件和老文件的属性一样
Q:那我应该修改老文件的属性么?如果这个拷贝操作时备份或者存档操作的一部分,那可能不应该保留’Archive’这个属性。
A:不用,保持原样就行了。
Q:那万一源文件的’Archive’属性被关掉了呢?如果新文件的这个属性也被我关掉,可能会搞坏用户的备份软件。
A:就让它们一样。我不在乎用户的备份软件。
Q:这样为用户设计软件好阅读全文>
发表于 @ 2006年09月13日 05:05:00|评论(loading...)|编辑
从SmallTalk Tidbits看来的。Erlang的作者Joe Armstrong到欧洲Smalltalk用户组做了个报告。James Robertson记录了报告的要点,顺便八卦了一下Erlang的历史。当年Armstrong在爱立信逍遥快活,做电话网络方面的开发(多半是交换机了)。他当时用过Smalltalk,可惜那个时候Smalltalk忒慢,不能满足电话网络的高性能要求。但阿伯伯实在喜欢Smalltalk,于是定购了一台Tektronix Smalltak机器(那个时代的牛人们不容易啊。硬件跟不上。为了心爱的语言,只好发展自己的专用机器。有兴趣的可以去读LISP机器的手册。可算是郁闷人生,精彩项目)。机器订要两个月才到。A老大等待中百无聊赖,就开始玩儿起Prolog来了。结果等Tektronix到的时候,他已经对Prolog更感兴趣,于是把死贵死贵的Tektronix送人。接手人呢,好像(找不到出处了)就是现在OO程序员们景仰的Ivar Jacobson。艾老大当年也在爱立信电话交换机部门工作,顺手发明了Use Case和Sequence Diagram。后来他出走爱立信阅读全文>
发表于 @ 2006年09月12日 09:01:00|评论(loading...)|编辑
对于常用IE6的老大们来说,IE的搜索大概是最恶心的功能之一吧?不过现在不用再恶心了。到这里下载IE Inline Search工具条就行了。装上后,就可以和龌龊的对话框说再见了。嗯嗯,我知道IE外的浏览器基本都支持内联搜索。问题是,这年头做网页开发的,能绕开占市场份额83%左右的浏览器么?
阅读全文>
发表于 @ 2006年09月11日 09:14:00|评论(loading...)|编辑
我承认,我是墙头草,随着牛人口风倒。SD Times上登了Allen Holub颇有争议的文章,说不知道怎么写编译器的程序员不过是叶公好龙式的票友。我也不知道怎么写一个编译器。 学校学的编译原理除了一些基本理论外其它早就还给老师了。当年用作教材的Crafting A Compiler With C从来没有读完过。惭愧啊,惭愧。自己原来还在叶公好龙的层次上。嗯,羞愧之下,退而结网。前两天订的龙书第二版还没到。再说我学的理论够多了。现下需要会写编译器,不是会吹。公司图书馆里的Crafting A Compiler With C烂得要死,也不知道被哪些变态翻过。想了想,屁颠屁颠地到图书馆把Allen自己的Compiler Design In C借了出来。这本书依照龙书的体例,但弱化理论而强调编译器的具体实现。书中讲解了完整的lex和yacc的实现代码,以及一个不带浮点计算的ANSI C编译器的实现。Allen在前言里提及代码能帮助人理解理论,而且实现具体的代码也能帮助人深刻地理解理论。我刚好也是这种人:非得先感性再理性。 计划一边读这本书,一边翻新到的龙书作为补充。书很厚,900来页。一天1阅读全文>
发表于 @ 2006年09月09日 12:34:00|评论(loading...)|编辑
人见人耐的澳洲“鳄鱼邓
笛”,Steve Irwin,在海底录制一个电视节目时被一只魟鱼(stingray, 网上的翻译稀奇古怪,我找了个家常点的)叮了一口,中毒去世。Steve向来喜欢和猛兽打交道,看到毒物大虫就high得不行。据说全世界每年死于魟鱼的人也就一两个。魟鱼只有在受到惊吓时才会用尾巴给你一下子。而且魟毒通常不致命,只会让人剧痛难忍。据一个海洋学家说,这头魟鱼多半一下子刺进了Steve的心脏,是非常罕见的事故。当真应了俗语“淹死会水人”。当初Steve环抱婴儿(他自己的)挑逗巨鳄,被人骂死。这次不知道他玩儿了什么花样,让魟鱼老大使出灵魂的绝杀。这有些像Long-Term Capital Management当年玩儿对冲基金,一众天才万万没有想到自己会被一个小概率事件毁灭,短短几个月玩儿丢了46亿美金。风险管理啊,风险管理。我们怎么才能把胜券在握和过度自信区分开呢?
阅读全文>
发表于 @ 2006年09月06日 02:13:00|评论(loading...)|编辑
在看孟岩博客上的文章时想到的 。有些评论跟说相声一样。老大们借口满天飞,文字还特委屈,特义愤,特有同情心。我靠,无非就是说老子其实特机灵一人,只不过不懂hash,不懂数据库事务处理。你就把俺毙了,真是天理不容,玛勒格彼得。我看评论的老大们就连孟岩文章的用意都没明白,更别说知道面试官要考查什么了(我们假设面试官都是理性的)。其实很简单,面试官考查的,也就是一个老大您作为大学生应该做好的一件事:证明你过去四年没有白费。而证明这点的唯一途径就是展示你过去的成果。以孟老大帖子里的学生为例。既然他说了“比较了解数据库,数据结构”,孟老大问点基本的数据结构有什么离谱的地方呢?ThoughtWorks的Chad Fowler面试Java程序员时,让应试人给自己的的Java功底按1到10打分。如果面试人打分在9以上,Chad Fowler就会问“你能不能谈谈怎么让JVM当掉”。原因很简单,打分在9以上,面试人显然是个Java专家,那自然得展示点Java专家的道行。好比马戏团招杂耍演员。一个候选人说,我会同时抛5个球,一边抛一边还可以空翻360度攀爬红绿灯追公车(朋友语)。面试官难道当场录用这个候选人?阅读全文>
发表于 @ 2006年09月05日 12:56:00|评论(loading...)|编辑
RAD者,Rational Application Developer也。2G内存的机器啊。用了几个小时,重起了几次应用服务器而已,就把内存吃光了。光任务管理器就显示IDE本身占用350M内存,应用服务器占用450M内存。当然SharpReader和FireFox也牛皮轰轰,一人吃进去两百来兆内存。靠!
*** panic: JVMCL052: Cannot allocate memory in initializeHeap for heap segment
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
JVMDG217: Dump Handler is Processing Signal 22 - Please Wait.
JVMDBG001: malloc failed to allocate 2621440 bytes,阅读全文>
发表于 @ 2006年09月05日 11:29:00|评论(loading...)|编辑
这里有卖。每个写过编译器的老大都知道这本书吧?不要告诉我你的龙书没有翻起毛边。 好消息是,龙书第二版两天前正式上架!去年10月我预告了一下,转眼一年就过去了。不得不感叹岁月无情。这两天业界牛人Joel Spolsky推出一篇帖子Language Wars, 批评Ruby 和 Ruby On Rails,顺便吹嘘他自己公司开发的语言Wasabi。引得博客圈回帖无数。各路神仙纷纷出手。Joel在他的文章里提到Wasabi不过是一个有天赋的程序员两个月内参考“龙书”写出来的。Larry O'Brien由是评论说书架上一本翻烂了的“龙书”最容易表明你编程厉害。 一般来说,Joel提到什么工具,什么工具的知名度就指数级升高。比如他有次提到Lisp In a Box,Lisp In a Box的下载量几天内狂增。这次龙书2ed和Joel的文章几乎同步推出,也算有益的巧合。
刚订了三本。自己一本。朋友一本。公司的图书馆一本。
阅读全文>
发表于 @ 2006年09月04日 01:34:00|评论(loading...)|编辑
PDF链接。从这里看到的。 Todd Veldhuizen搞笑了一把编程语言的短命时尚。怎么看怎么像在讽刺形式化方法。阅读全文>
发表于 @ 2006年09月02日 00:15:00|评论(loading...)|编辑