罗塞塔代码RosettaCode-你的代码烹饪书(code cookbook)

奥莱里公司有一个很不错的书籍系列,是以xxx cookbook为名,比如Ruby cookbook、rails cookbook、python cookbook、c# cookbook等等。这些书当然不是让你用Ruby或者Python煮菜,而是对特定比较典型不是很复杂的任务能够快速上手的代码示例。

但是不是每个语言都有类似的出版物,比如F#或者Lua这类语言,不太可能有它们的cookbook出现,毕竟语言有些小众,这时候RosettaCode网站就能帮你大忙了。

罗塞塔代码http://rosettacode.org/是一个程序选集网站(http://en.wikipedia.org/wiki/Program_Chrestomathy),有些类似cookbook这样的菜谱书,可以根据不同编程语言列出一些常用的任务主题。

image

每个主题包含了不同语言的实现,比如http这个功能实际上包含了C、C++、C#、FSharp等等不同的实现方式:

imageimage

我比较感兴趣的Fsharp语言实现就有同步、异步两种模式的代码。

有了这些示例,既可以很快找到自己想了解的方案代码,还可以通过不同语言的实现做一个横向比较。另外,也可以通过这些例子来学习这门语言。一举多得非常有帮助。如果你有好的方案,还可以贡献到网站上,因为这个网站的架构是用wiki实现,用户也可以加入自己觉得好的代码。

除了罗塞塔代码,还有一些类似的网站,我把它们列在下面,大家可以参考使用:

http://www.99-bottles-of-beer.net/

http://www.miranda.org/~jkominek/rot13/

http://progopedia.com/

http://pleac.sourceforge.net/

这不是Bug而是个Feature

image

http://geekwhisperin.wordpress.com/2009/09/24/bug-vs-feature/

某个笑话中程序员经常说到的几句话里面就有这句:

你懂什么?!这不是bug,这是个feature!

当然,这种情况其实不怎么常见,毕竟客户也不是傻子,还是能看出来有没有错误发生的。

但是在这篇博客中

http://blogs.msdn.com/shawnhar/archive/2009/12/29/bug-or-feature.aspx

Shawn给我们分享了个真正的bug变feature、老母鸡变鸭的故事,简单说一下:

Extreme G是一个任天堂64上的赛车游戏,每个赛车都有超级加速(turbo boosts)功能,开过车的应该都知道,在弯道时候不应该加速,直道加速才能获得最好的效果。

Ash(主程序员)编写了一些人工智能(AI)代码让计算机控制的赛车知道什么时候应该加速,算法基本上就是直道加速加上随机选定某些值。

游戏出来以后,程序员们读到了一篇玩后感:

“我们特别喜欢这个具有攻击性的人工智能,它会用尽全力来阻止你超车。如果你超了一辆计算机控制的赛车,甚至是在弯道中间它都会加速,结果就是导致一片混乱人仰马翻,或许这个不是最好的比赛策略,但是这个心态简直是太他妈的爽翻了!”

‘喔!”Ash说“这是什么傻逼玩后感啊!我设计的人工智能系统根本不应该是这样运作的。”

检查了一些代码以后(见原文),Ash发现原来是代码写错了,结果就不是他预想的那种特性。当然,修改一些代码还是可以达到他原来的目的。

改不改呢?评论者说的是对的,尽管有些出乎意料,但是这个bug(或者说feature)产生了比原来更爽的效果,游戏开发者把这段代码继续保留在正式发布版本中,作为游戏的feature出现。

挺有意思的故事吧,嘿嘿!

TIOBE 2010年4月编程语言社区排名

image

4月的主题是C语言的强力反弹,竟然把Java又挤下头名位置。

Go这个新兴语言也是上升的非常快,但是让人怀疑真的有这么流行么?也没看到什么程序拿Go做编码。

ObjC依然在11名的位置,进入前十应该就是这几个月的时间吧。

Lua依然在20名上下徘徊,不过已经算是很不错的成绩了,没有大厂商支持,另外也没有新的类似魔兽这样的游戏吹捧,能到20名,实在不易。