对九个超级程序员的采访

原文出处:酷壳 – CoolShell.cn

原文:《Q&A With Nine Great Programmers》时间有限,我只能粗译,难免错误。

这篇访谈源自2006年,最先发布在波兰程序员 Jaroslaw “sztywny” Rzeszótko (AKA “Stiff”) 的博客上。但是这篇博文现在找不到了。非常感谢他能授权我重新发布这个博文。

在一个炎热无聊的下午,我突发奇想。我想通过电子邮件的方式对那些我非常感兴趣 和非常敬重的程序员问10个问题。准备这10个问题我只花了5分钟,这些都是我个人想问他们的问题,所以,我基本上没想太多要问他们什么。最后两个问题和 编程没有什么关系,我就是想问题这些人的一些兴趣爱好。另外,不是每一个人都想回答我的,这是我第一次做“访谈”,所以,我犯了一些错误,让一些问题没有 回答。不管怎么样,我得到了很多很有意思的内容,所以,这对我绝对是一次很有意义的经历。
 

并不是没一个人都回了我的邮件,也并不是每一个人都同意回答我的这些问题,也许在我发布这篇文章后我会得到那些回答,但是我已经迫不及待想把这些东西发布了,所以,我可能会更新这篇文章(更新:2006年3月8日,我收到了Bjarne Stroustrup的回信

– Jaroslaw

介绍

  • Dave Thomas – “Pragmatic Programmer”(注:douban) 和 “Programming Ruby”(注:douban) 以及其它一些优秀书籍的作者。 你可以在 这里 读读他对编程的一些想法。
  • Steve Yegge – 他可能并不那么知名,但是他给了很多有意思的回答。他有一个很火的关于编程的 blog,他也是游戏 ”Wyvern” 的作者。(陈皓注:他最火的是去年在google+上对google和amazon的吐槽,06年他应该在google了)

Q 1: 你是怎么学编程的?是从学校里学的吗?或者你没有上过学:) ?

Steve Yegge

在我17岁的时候,我在HP的计算器中用他们的RPN 栈语言自学编程的。在这之前,我尝试过学习编程一两次,但都没有学成。HP 28c 和 48g 的科学计算器是一个很牛的东西,而且还有不错的文档。我搞了一本3D图形的书,并很费力地把其中的Pascal语言转成RPN栈语言,并用48g画了一个 3D的线框架图。运行的还不错,在我买了PC和Turbo Pascal之后,我开始认真地学习编程。在我进入大学计算机科学专业之前,我已经是一个不错的程序员了。

我在华盛顿大学拿到了计算机科学学位,这绝对是有价值的,所以,我建议所有的程序员都应该得到计算机科学专业的学位。

Linus Torvalds

我没有在学校里学过编程,我在主要是读我自己想读的书,或是就直接去编程 (一开始在 Commodore VIC-20 学编程, 然后是 Sinclair QL上编程)。

当然,我觉得上大学非常有用。我没有去一个工科大学,我上了赫尔辛基大学,这是一个比较偏理论的大学,所以,那里的教育并没有那么多的编程的东西 (编程只是很少一部分),这里大多数的课程都倾向于教一些基础概念的东西,如:复杂性分析。看上去很无聊,甚至有点浪费时间,但是我还是觉得这些课有用, 我对大多数课都还比较enjoy。所以,我觉得我可能在这些方面是一个比较好的程序员。

David Heinemeier Hansson

我学编程是从用HTML做我的第一个网页开始的。那时,我想当我的网页能动态地显示一些内容,所以,我选择了ASP和PHP。在做完这个网页后,我知道了怎么去编程,于是我开始我的计算机科学和商业管理学位的学习。

Peter Norvig

我是从高中和大学课程中学编程的,但是我还是觉得我自己学得更多。

Dave Thomas

我是在高中学编程的。我完全地迷住了,我对编程爱得无法自拔,然后,我开始挑选那些提供软件开发课程的大学。最终,我去了伦敦大学的帝国学院。第二 年我就开始学习软件开发的课程了,那绝对是非凡的,学生和教员在一起工作把教材做得更好,每一个人都可以从中学到很多。这些课程给了我难以置信和非常雄厚 的软件开发背景。我在那里读到了博士,最后去创业了。

关于“我是怎么学编程的”这个问题,我的回答是“我现在还在学编程”。我认为好的程序员一生都在学编程。这并不是去学一门语言或是一个代码库,好的程序员会对他们的编程技艺一年又一年地精益求精。

Guido Van Rossum

我去的那个大学有一个大型主机和很多不同的计算机课程。这对我很重要。

James Gosling

起初,我是自学的。在我去上大学之前,我就找到了一份程序员的工作。但是我很高兴我去了大学,在那里有很多乐趣,最终我学到了博士。

Bjarne Stroustrup

我先上的是Aarhus大学, 然后是 剑桥大学(Cambridge),这两个大学教了我很多很有用的东西,这些东西为了以后的工作打下了基础。另外,我对编程和钱的关系学得非常好——知道了真实世界的问题,正确性,维护性,准时交付,等等,这些比教育可能更重要。

Tim Bray

我本来想去做一个数学老师的。但是,那个学数学的大学要我去学几个计算机的课。

Q 2: 你们觉得对程序员最重要的事是什么?

Steve Yegge

沟通能力(写和说)。除非你可以让你的想法更有效率地传递出去,否则你不可能做得比编程更多的事。程序员应该疯狂地阅读,锻炼写作能力,参加一些写作培训课程,甚至锻炼在公开场合演讲的能力。

Linus Torvalds

It’s a thing I call “taste”. 有一件事,我把它叫做“品味”。

我倾向于不从熟练程度来评判那些和我工作过的人。这些人能非常艰苦地写出很多代码,但是我想从他们对别人的代码的反应做出评判,这样我们就可以明白 他们自己写的代码怎么样,知道他们使用的方法怎么样。他们对别人的评判还告诉我,他们是不是有好的“品味”。是这样的,如果一个人没有“好的品味”,那么 他一般不会很好的评判他人的代码,他自己写的代码通常也不会很好。

哦,这并不只是唯一的事。还有一件事,尤其在开源项目里,那是他是否有能力能和别人进行简单的沟通,告诉别人他要干什么,怎么干。这个能力可以告诉别人为什么你干的事是非常重要的,并不是所有的人都有这个能力。

也就是说,有一些人可以写出很不错的代码,但他们并不一定能解释这些代码,他们也并不一定有好的品味,但是代码可以运行得不错。有时,你需要另一个 人(有那种不错的品味的人)把他的代码转成更好的形式。也就是说,任何一个程序员都需要那种可以用清晰的代码来解决复杂问题的基础能力。

David Heinemeier Hansson

很强的对有价值的事的感觉。你可以问问自己这个问题你有没有这种能力:我现在做的这个事值不值得做?很多程序员浪费了如大海一样的时间去做一些无意义的事。

Peter Norvig

我不觉得只有一个,如果要我说一个的话,我说是“专注”。

Dave Thomas

热情。

Guido Van Rossum

你的问题很难回答啊:-) 我猜,如果程序员会在早晨煎个鸡蛋做早餐,那真是无价的能力。

James Gosling

自我激发。你需要全身心地投入到你要做的事中。

Bjarne Stroustrup

把事想清楚的能力:程序必需要能清楚地理解问题并能清楚地表述解决方案。

Tim Bray

能为自己的直觉提供证据的能力。

Q 3: 你是否认为数学和/或物理是一种很重要的编程技能?为什么?

Steve Yegge

数学有很多的分支和程序员相关,他们是“离散数学”和“具体数学”。这些分支包括的学科有,概率论,组合数学,图论,归纳证明,和其它有用的东西。我会鼓励所有的程序员都去学习离散数学,无论能学多少,因为这总比什么都不懂强。

对于传统的数学,我也不经常用,但是我需要的时候这些数据知识会很管用。例如,在我之前的工作中我就用到了微积分。我需要估计每个小时中某服务的高 峰时间的流量负载,所以,他的负载是跟着太阳走的就像一个正弦曲线一样。最简单的方式就是把每个小时的负载曲线给整合起来。如果我不知道微积分,我就不知 道怎么更为准确地估计。

当年我在开发我的Wyvern游戏的时候,我的平面几何的知识对我非常有帮助。而且经常使用代数和线性代数的知识。但我很少在工作中使用三角学或微分方程,微积分同样也很少。

我想说,简单的数学基础让我的技能比一般程序员好过5%到10%。如果我了解更多的数学,我确信我会比今天做得更好,所以,我每周都会花几个小时学习数学。

我喜欢物理,我还在学习物理,我会花我一生去理解量子力学。但是我个却没有发现物理对我的程序员工作有多有用。当然,如果我从事一些和物理相关的工作,可能会有用,例如:3D游戏编程,或是某种物理特性仿真。

Linus Torvalds

我个人认为有很强的数学背景是一件好事。但我不确信物理是不是这样的,但是我深信懂数学的人会让你成为一个更好的程序员。这些智力模型都是相通的。

David Heinemeier Hansson

根本没用。至少对业务编程和Web应用来说没用。但是数学可能对一个人的写作有很重要的帮助。

Peter Norvig

是的。很多相法都是从数学来的:归纳,递归,逻辑,等等。

Dave Thomas

也许吧。但老实说,我没见到过懂这些学科和好的程序员有很大的相关性。

然而,我见过有音乐背景和好的编程技能有很强的相关性。我不知道这为什么,但是我怀疑大脑中的某个区域可以让人即可以写出好的音乐,也可以写出好的代码。(陈皓注:@Sir阿怪 貌似就是这个例子)

Guido Van Rossum

数学,当然(对于一些学科是很重要的,我不关心微分方程,但是代数和逻辑学是很重要的),物理,我不觉得对编程技能有关,当然物理在其它很多地方很有意思。

James Gosling

当然!数学教会了我逻辑和推导……让我有了一双懂分析的眼睛。当我们分析算法的时候,数学是无法被取代的。

Bjarne Stroustrup

这要看程序员自己和项目性质了。以前的数据很有用,物理一般,但是学好物理是是学习应用数据最好的一条路。

Tim Bray

对我来说,在我的编程生涯中我从来都没有用过大学里教的数学。

Q 4: 关于编程,你们认为接下来的大事是什么?X-Oriented编程,Y语言,量子电脑 ?

Steve Yegge

我认为Web编程会逐渐变成最最重要的客户端编程。而对于原来传统的客端端编程都会被废弃,如: GTK, Java Swing/SWT, Qt, 当然,所有的和平台有关的东西,例如 Cocoa 和 Win32/MFC/等。

当然,这不会一晚上就发生了。这会在第一个十年内缓慢地发生,而在第二个十年内,Web Apps最终会胜利。工具,语言,协议,和浏览器技术都会进步得非常快,并会完全超出你今天能干的事。每一年都会向前进一步,而从今天开始,我会最终决定 把我所有的应用开发全部切换到基于浏览器的应用。(陈皓注:我也是这么认为的,参看《来信,创业,移动互联网》)

微软和苹果最终不愿意这个事发生,所以,触发这个事的第一步会是一个开源的浏览器(如:Firefox)开始到了支配市场的地位,然后会出现某种Firefox的杀手级应用(这种杀手级应用可能会像iTunes一样,所有的人都会用它,只需要下载Firefox)

Linus Torvalds

我并不认为我们会看到一个“大的跳跃”。我们只会看到很多的工作帮助我们把那些沉闷辛苦的工作变得更简单——会有一个更高级别的语言,也许把简单的数据库集成到语言中来会是其中最主要一个。

例如,我个人相信“Visual Basic”在编程方面比“面向对象”做得更多。当然,人们都在取笑VB是一个很烂的编程语言,并且人们在谈论OO语言都十多年了。但我还觉得不是这样 的,Visual Basic 不是一个好的语言,但是我觉得VB那简单的数据库接口比OO更重要。

所以,我认为会语言有很多的改进,并且,硬件的改进会让编程更容易,但我并不期望会有巨大的生产力或是革命性的改进。

至少,你不会开始搞真正的AI的东西,我也不认为真的AI会变成某种你不需要编程的东西。

David Heinemeier Hansson

我从不试图预测未来。我也不相信命运一说。最好预测未来的方式就是去实现未来。

Peter Norvig

大规模的分布式处理

Dave Thomas

下一个最牛的事会被再下一个最牛的事所掩盖,然后再被再再下一个所掩盖,再再再下一个所掩盖……。这是一件没完没了的事,所以,我并不会试图去找最 牛的事,因为这会让人们忘了那些最真实的问题:把基本的东西做对。我们要让用户更满意,专注于交付有价值的东西,自豪于我们做的事。一个程序员可以使用很 多工具把这些事做得更好,而不是去追逐时尚和流行。

Guido Van Rossum

对不起,我没有那么多水晶球。我CGI被发明了5年后预测过它 🙂

James Gosling

有两个事是我现在最关心的,那就是要对付并行和复杂。

Bjarne Stroustrup

我不知道,我也不愿猜。

Tim Bray

不知道。

Q 5: 如果你有3个月学一个相对较新的技术,你会学什么?

Steve Yegge

我的确有3个月的业余时间,我准备学一下 Dojo (http://dojotoolkit.org) 和高级 AJAX 及 DHTML。我会通过开发一个相当牛的Web应用来学习他们。Dojo 真的酷,并且我确信它会越来越好。

Linus Torvalds

嗯,我真的很爱做 FPGA(可编程芯片),但我部是太忙了而不是坐来来开始学习。我喜爱和硬件打交道:很明显这个原因是因为我最终在做操作系统,因为操作系统(除了编译器)基本上都是在和硬件打交道,但我没有真正地自己去设计和做一个硬件。

David Heinemeier Hansson

Mac 的 Cocoa 编程

Peter Norvig

我想把 Javascript 学得更好,然也也想学 flash.

Dave Thomas

如果“新”是对于我来说,那么我会去学钢琴课。

如果“新”是说技术,我猜 我会选择学习某种和为残疾人服务的有关的技术。

Guido Van Rossum

单板滑雪。

James Gosling

搞点有乐趣的东西,我会学习最新的3D渲染技术。我可能会写一个光子映射渲染器。

Bjarne Stroustrup

3个月只有很少的东西你可以学,我觉得你只能参加某个成熟领域的培训。

Tim Bray

安全,加密,数字签名,身份标识,等等。对我来说,从没学过这些东西对我来说是个很大的问题。

Q 6: 你们觉得如何让一些程序员可能有超过其它程序员10倍或100倍的生产力?

Steve Yegge

我想你应该考虑一下为什么不是让所有的程序员都一样牛。托马斯爱迪生有一句关于天才的名言也许会给你一些启示。

Linus Torvalds

我真的不知道,我想,一些人之所以更牛是因为他们可以专注于那些重要的事,而更多的只不过是在应付。那些我所知道的真的很牛的程序员从很年轻的时候就在做事了。

David Heinemeier Hansson

把难题变简单的能力。

Peter Norvig

把整体问题一次性放入大脑的能力。

Dave Thomas

他们关心他们做的事。

Guido Van Rossum

大脑结构基因不同。

James Gosling

他们知道他们要做什么,他们不并不急于仓促行事。他们有他们要做的事的整个蓝图。

Bjarne Stroustrup

首先,缺少足够的职业培训,或基础不够。其次,这些人要即聪明(那种可以把事情想清楚,直达核心的能力),又有经验,并有使用工具的知识。编程需要把理论和实践结合起来 – 并不是使用没有实际业务的知识。

Tim Bray

令人惊讶的思维改变。

Q 7: 什么工具是你的最爱(操作系统,编程/脚本语言,文本编辑器,版本管理,shell,数据库,或其它没它你活不了的工具),为什么不是别的?

Steve Yegge

操作系统: Unix! 我用Linux,cygwin,和 darwin。你无法打败那些高效的工具。每一个程序员都应该学习使用/bin和/usr/bin下的所有命令。

脚本语言:Ruby。我几乎对所有的重要的脚本语言都很熟悉: Perl, Python, Tcl, Lua, Awk, Bash, 和一些我忘了的。但是我太懒了,而Ruby是目前所有脚本语言中最简单的,它应该是天堂制造的。

编程语言:没有一个我喜欢的,我觉得所有的编程语言都很扯。我倾向于Java,因为它很强,可跨平台,有多不错的工具和类库。但是Java未来会进化或是灭亡,Java还没有好到可以永远保持其领先地位。

文本编辑器:Emacs,因为这是迄今最好的编辑器。

版本管理:SVN,Perforce更好一些,但是也很贵。

Shell脚本: Bash, 因为我太懒了去学一个更好的。

数据库: 当然是MySQL,没有之一。

其它:我发现GIMP是无价的,但也是令人恼炎的。我用这个东西好几年了,但什么也没干,但是我没它活不了。很讽刺吧。Firefox 越来越是我最重要的工具。如果让我去用IE和Safari,我会有严重的窒息感。

注:所有的这些工具 (Unix, Emacs, Firefox, GIMP, MySQL, Bash, SVN, Perforce) 都有一个共同点:他们是可扩展的。例如:他们都有可编程的API。伟大的程序员知道怎么编写他们的工具,而不只是去使用。

Linus Torvalds

实际上,我最终也没有用过几个工具,而我却花了一些时间让这些工具为我工作。最大的事是我自己写了个操作系统,我也自己写了个版本管理系统(git),我用的文本编辑器是 micro-emacs – 最终我也定制和扩展了它。

除了上面三个,其它的东西,我深度关心我的邮件阅读软件,我使用“pine”,并不是因为它是史上最好的邮件阅读软件,因为我习惯了,用它我会有最低限度的大惊小怪。

David Heinemeier Hansson

OS X, TextMate, Ruby, Subversion, MySQL. 这些组合让我很快乐。我希望那些有好的品味的专注于重要的事的工具。

Peter Norvig

我不喜欢那三大操作系统 – Windows, Mac, Linux。我喜欢 Python 和 Lisp. Emacs.

Dave Thomas

在使用Linux10年后我转到Mac平台有两年多了。Mac并不见得有多好,但是它不需要很牛的技术,也不需要经常维护,这让我可以让我更专心得使用它。

我并不是一个单一工具的信仰者,我喜欢换来换去的,这样可以让我有更多的经骊。现在,我使用 OSX, Emacs, TextMate, Rails, Ruby, SVN, CVS, Rake, make, xsltproc, TeX, MySQL, Postgres, 还有一堆高效的小工具。没人知道我明年会用什么。

Guido Van Rossum

Unix/Linux, Python, vi+emacs, Firefox.

James Gosling

这些天,我在用 NetBeans. 用它可以干我想干的所有的事,清洁,简单和高效。这是最好的我永远要生活在其中的环境了。

Bjarne Stroustrup

Unix, sam (一个非常简单的文本编辑器), 当然,一个好的C++编译器。

Tim Bray

我喜欢 Unix-like 的操作系统,像 Python 和 Ruby 的动态语言,像Java的静态语言(具体说来是Java API) Emacs, 还有, bash, whatever, NetBeans.
Q 8: 你最喜欢的编程书是什么?

Steve Yegge

大哥,这个问题太难了。也许是”Gödel, Escher, Bach: an Eternal Golden Braid” (作者Hofstadter)?虽然这不是严格意义上的编程的书,如果你要明确意义上的编程书,那么可能是 SICP (mitpress.mit.edu).

Linus Torvalds

嗨。这两天我在读一些小说,或是非计算机读物(老的但是有用的 “The Selfish Gene” 作者 Richard Dawkins)。

如果要问我编程的书,我脑子里只出现了唯 一一本真正的经典的编程的书 Kernighan & Ritchie 的 “The C Programming Language”,因为这本书太牛了,可读性强并且很短。考虚一下你想学到这世上一门最重要编程语言,并且它很要很薄,而且还有可读性,这真是一个奇 迹。

也就是说,其它我很喜欢的书并不是编程的,而是关于计算机结构和硬件的。那显然是 Patterson & Hennessy 的计算机结构的书,但是我个人也许更喜欢 Crawford & Gelsinger 的 “Programming the 80386?,这是我在开始写Linux时用的书。

相似的原因,我还喜欢 Andrew Tanenbaum 的 “Operating Systems: Design and Implementation”.

David Heinemeier Hansson

我喜欢 Extreme Programming Explained 其摒弃了一般的编程实践,我还喜欢 Patterns of Enterprise Application Architecture 其出众地说明了抽象和具现的平衡。

Peter Norvig

Structure and Interpretation of Computer Programs

Dave Thomas

这关系到你所谓的“喜欢”,也许我最喜欢的是IBM的 “IBM/360 Principles of Operation.”

Guido Van Rossum

Neil Stephenson的 Quicksilver.

James Gosling

Programming Pearls 作者Jon Bentley.

Bjarne Stroustrup

K&R.

Tim Bray

Bentley的 Programming Pearls

Q 9: 你最喜欢的和编程无关的一本书是什么?

Steve Yegge

只能是一本吗?这不可能。有太多太多我喜欢的书了。

我这个月读过最喜欢的书是 “Stardust” (Neil Gaiman) 和 “The Mind’s I” (Hofstadter/Dennet).

我最喜欢的作者是 Kurt Vonnegut, Jr. 和 Jack Vance.

Linus Torvalds

我在前面说过 Dawkins的 Selfish Gene。在小说方面,有很多很多我enjoy的,但是几乎没有我特别喜欢的一本。我一般不会重读一本书,我的选择总是会变。我可能更喜欢科幻小说, 如:”Stranger in a Strange Land” 作者 Heinlein,这是我青少年时期最喜欢的书,但现在并不是我喜欢的了。

David Heinemeier Hansson

1984, George Orwell.

Guido Van Rossum

Neil Stephenson 的 Quicksilver.

James Gosling

Guns, Germs & Steel 作者 Jared Diamond

Bjarne Stroustrup

我没有固定喜欢的书。目前是 O’Brian 的 Aubrey/Maturin 系列。

Tim Bray

One Day in the Life of Ivan Denisovich
Q 10: 你最喜欢的乐队/演奏家/作曲家?

Steve Yegge

喜欢的风格:古典音乐,动漫原声音乐,电脑游戏音乐

喜欢的作曲家:Rachmaninoff, Chopin, Bach

喜欢的演奏者:David Russell (古典吉它), Sviatoslav Richter (钢琴)

喜欢的动漫音乐: Last Exile, Haibane Renmei

Linus Torvalds

实际上我并不太喜欢音乐,但是当我听音乐的时候,我一般听经典摇滚乐,如: Pink Floyd ,Beatles ,Queen 和 The Who 乐队。

David Heinemeier Hansson

我喜欢很多风格。 Beth Orton, Aimee Mann, Jewel, Lauryn Hill. Actually, 所有的这些都可以归到 Girls with Guitars ;).

Guido Van Rossum

Philip Glass.

James Gosling

我喜欢听民歌: Christine Lavin, Woody Guthrie, Pete Seeger…

Bjarne Stroustrup

乐队: The Dixie Chicks. 作曲家: Beethoven.

Tim Bray

看我的博客吧。

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

 补充说明

我之所以发现这篇文章,是因为我读到了 Jeff Atwood 的这篇名为 “Linus Torvalds, Visual Basic Fan” 的文章,这篇文章指向了 “STIFF ASKS, GREAT PROGRAMMERS ANSWER” 这篇文章,但是链接已坏了,然后,我搜了一下也没有搜到这篇文章。然后我去了 archive.org 搜了一下,并找到了这篇由 Jaroslaw Rzeszótko 写的博客。

因为这篇博文现在找不到了,所以,我想我应该重新把它贴出来,这样其它人可以读一下这篇有意思的文章。所以,我向原作者取得了授权,再次感谢 Jaroslaw!

(全文完)

iPhone 5 让苹果粉丝失望的 10 个理由

据eWeek网站发表的一篇分析文章称,苹果iPhone 5现在正式发布了。尽管有奢华与魅力,iPhone 5不过是一种追赶Android设备的产品。苹果9月12日星期三在旧金山向一群特殊的客人和记者发布了iPhone 5。正如传言所说,iPhone 5有许多改进功能,包括更大尺寸的视网膜显示屏、新的设计和4G LTE服务。

在许多情况下,它是用户目前需要的设备。但是,从更广泛的方面看,它也是一款让希望得到更特别的和更占优势的产品的人们感到失望的智能手机。

苹果毫无疑问是值得尊重的公司。多年以来,它发现了市场从未见过的创新的方法。竞争对手一直落在后面,仅仅希望赶上来。这是我们到目前为止还没有见过的伟大成绩。这与已故的史蒂夫·乔布斯及其执行团队的天才有关。

但是,由于这些成功,人们以更高的标准衡量苹果。用户把苹果有名无实的升级看作是令人失望的事情,尽管这个升级很好。虽然其它公司每年都会庆祝推出新的设计更新,但是,苹果只能完全改变一个产品外观的时候才能进行这种庆祝。

作为一个单独的产品,iPhone 5是很好的并且是值得购买的。但是,在市场和竞争对手的环境中考虑这个产品的时候,一个公司用这么多时间谈论这个产品是多么创新是无趣的。下面是iPhone 5让苹果粉丝失望的10个理由。

1. 4英寸显示屏太小

虽 然每一个都抱怨iPhone 4S的3.5英寸显示屏与竞争对手相比有点小,但是,iPhone 5很快会出现同样的情况。iPhone 5的显示屏只有4英寸。它的确好于以前的iPhone,但是,与市场上数不清的4.3英寸显示屏的手机相比会怎样呢?更糟糕的是,苹果应对三星4.8英寸 Galaxy S III智能手机的产品是什么呢?

2. 设计几乎没变

iPhone 5有一点新设计,但是,不是一个重大的升级。苹果只是把这款手机做的更薄、更轻和更高并且在背面做了一点修改。正如苹果设计专家乔纳森·伊夫(Jonathan Ive)所说,苹果不想太多地改变iPhone的设计。iPhone 5正是如此。这令人失望。

3. NFC技术在哪?

苹果在演示中没有提到NFC(近距离通讯)技术。这是令人遗憾的。NFC能够提供产品之间的通讯,提供移动支付和许多功能。无数Android设备上都有这个功能。苹果为什么不在iPhone 5中提供这个功能呢?

4. 800万像素照相机并不是一个重大升级

苹 果在iPhone 5背面的照相机扮演了追赶的角色。这个组件配置一个800万像素传感器、一些低光线拍摄的改进功能和更好的镜头。但是,谁在意它呢?诺基亚最近发布了在其 Lumia 920手机中的PureView相机。这款相机优于iPhone的相机。甚至Galaxy S III的相机也能够达到苹果的选择。苹果的选择有什么好处呢?

5. iOS很好,但不是一次重大升级

苹果的iPhone 5将配置iOS 6操作系统。这个操作系统有200多项升级的功能,包括改进了调用屏幕,更好的勿打扰功能和一些改进的邮件功能。尽管如此,iOS 6不是在iOS 5基础上的重要升级。对于苹果用户来说,这很可能不是一个重要的卖点。

6. 新的闪电接口令人讨厌

苹果努力为其新的闪电接口(Lightning port)提供新的面貌,取代以前iPhone中的30针连接器。然而,这个接口有点让人讨厌。这个接口需要一个配件把iPhone 5连接到现有的机座设备,并且将迫使用户更早地升级到这个新设备。更快地同步是很好的。但是,老实说,苹果正在设法淘汰老产品。

7. 四核处理器并非新东西

苹果终于推出了A6四核处理器。这是iPhone 5增加的一个好功能。但是,四核处理器绝不是新东西。许多Android手机都配置了四核处理器,包括苹果最大的竞争对手的产品。苹果需要提供更好的东西。但是,苹果没有做到。

8. 请提供更多的存储

有人对苹果没有在iPhone 5中提供更多的存储感到失望吗?随着观看视频在全球更加流行,苹果向用户提供更多的存储空间允许用户在自己的手机中存储这些内容是有意义的。相反,iPhone 5的最大存储容量是64GB。

9. 开发者需要多长时间赶上来?

新的显示屏尺寸对于苹果开发者伙伴来说是一个新的头疼的问题。在开发人员做出修改之前,为3.5英寸显示屏编写的应用程序不适合4英寸显示屏。当有更多4英寸显示屏的时候,这会成为一个问题。在iPhone 5推出之后,应用程序看起来会很奇怪。

10.不要忘记隐性成本

虽然iPhone 5与以前的产品价格相同,但是,用户应该知道有一些隐性成本。主要的隐性成本是什么?上面提到的闪电接口的适配器。想知道它的价格吗?29美元!现在,想想所有的需要30针连接器的产品,问问自己是否想为所有的产品携带那个连接器?是不是感到心烦?

Android并非免费午餐!谷歌对阿里云下重拳

[导读]尽管宏碁和谷歌暂时并未作出回应,不过仍引发国内互联网行业轩然大波。在这背后,谷歌和国际硬件厂商签订的Android系统反分裂协议也开始浮出水面。

腾讯科技 雷建平 9月14日报道

Android并非免费午餐!在静观中国Android市场多年后,谷歌首次针对中国手机操作系统展开狙击,并直接指向国内互联网巨头阿里巴巴。

原定于昨日发布的阿里云手机发布会因故取消,阿里云在声明中指出,宏碁方面被告知,如果在其新产品上搭载阿里云操作系统,谷歌将会解除与其Android产品的合作和相关技术授权。

目前尽管谷歌暂时并未作出回应,宏碁方面表示仍在与谷歌沟通,一直以敢言著称的阿里云CEO王坚罕见选择沉默,这一事件仍在国内引发轩然大波。在这背后,谷歌和国际硬件厂商签订Android系统反分裂协议浮出水面。

被淡忘的Android系统反分裂协议

尽管Android是一个开放平台,但谷歌依然对Android系统拥有很强的控制能力。点心COO黄庄表示,谷歌和所有硬件大厂商都签订了Android系统反分裂协议,防止其他厂商对Android系统进行修改、控制,让谷歌自身软件不能运行。

据 黄庄介绍,硬件企业要运行Android系统须通过谷歌“Android Compatibility Test Suite(CTS)”的工具兼容性认证试验,否则不能享受谷歌移动服务(GMS)。而GMS旨在让用户利用他移动设备使用谷歌搜索、谷歌地图、 Gmail、YouTube等谷歌服务产品。

资料显示,谷歌将GMS内嵌到 Android手机系统中,对Android手机生产商给予不同程度授权:1.非授权认证:免费使用Android操作系统,但不能内嵌GMS;2.部分 授权认证:内嵌部分GMS服务,但手机不能打上谷歌商标;3.完全授权认证:内嵌所有GMS服务。

要想获得谷歌认证并不是想象的那么容易,谷歌要根据厂商的实力和地区因素来考虑认证等级。对于厂商来说,GMS除可获得更多谷歌服务权限外,还是拉开品牌区隔度的有效手段。目前在市面上只有少数手机厂商通过完全授权认证。

这 也是为何此次宏碁阿里云手机发布会取消。据一位知情人士透露,这与阿里云大举修改Android操作系统有关,不仅捆绑了太多阿里巴巴旗下软件,还可能无 法运行谷歌软件,谷歌不想因此造成Android系统反分裂。这一事件也与阿里云过于高调有关。此前,阿里云密集宣传中,挑衅谷歌成最主要主题,“动安卓 的奶酪”、“阿里云的目标是打败谷歌”、“谷歌没有好好做该做的生态系统”等话语在海外媒体大为流传。

在发布会前夕,《华尔街日报》曾撰文指出,由于苹果同搭载谷歌Android系统三星之间专利大战影响,业内正在广泛讨论有关Android系统替代者的问题。因此,宏基选择在这一时间段进军移动领域可谓恰逢其时。这也直接刺激了谷歌的敏感神经。

此 外,宏碁是国际大厂商,此前一直与谷歌Android合作,宏碁曾透露2013年将推出的6款智能手机中,5款将会采用Android系统,同时宏碁现阶 段推出的平板电脑多数也配置Android系统。权衡利弊,宏碁最终或将阿里云手机重新换装原生Android系统后再单独推向市场。

一 位谷歌匿名人士则指出,阿里云系统是直接将谷歌的dalvik虚拟机替换掉然后自己实现一个Java虚拟机,再去兼容开放的apk,这就是它说的完全自己 研发的系统。如果说完全是从linux内核做起做一个全新系统,再去像黑莓那样只是兼容apk使用安卓的应用,那没问题。

上述人士指出,从时间和成本来看,更大可能性是直接用Android开源代码,而且动了底层虚拟机,不太可能从linux内核重做。“如新闻稿文中最后一段说的,阿里真这么牛的话,国产的OS不是梦了,完成了几代人的未完成的梦,绝对要获最高科技奖项。”

实际上,与全球其他市场不一样,谷歌已退出中国市场,故行货Android机器都屏蔽了谷歌服务,如需要增加谷歌服务,一般都需要刷GMS包才能实现,因此国内一般不需要CTS认证,阿里云此前与天宇朗通和海尔合作,并未受到谷歌阻力。

但 这并不意味着谷歌放弃了对Android产业链的控制权。此前,点心曾与一国际厂商合作,为对方定制一套基于Android 2.1版本的操作系统,谷歌要求安装一款电子罗盘软件,否则不能出售,谷歌给出的解决方案是基于Android 2.2版本修改,最终导致点心这一合作被放弃。

国内手机操作系统研发被指落后10年

此次谷歌对阿里云实施重拳,也让其他基于Android的手机操作系统又有一番滋味。目前国内做手机OS的主要有小米旗下MIUI、点心OS、阿里云、盛大ROM、百度云操作系统等,不过均是基于Android系统的二次修改,缺少核心知识产权。

实际上,国内手机OS行业也在悄然改变。点心COO黄庄称,OS是一个相当复杂的体系,必须跟硬件跟生态环境做很好的生态链整合,对创业公司来说,有太多不可控因素。黄庄透露,点心OS依然有上海团队在做,但已将主要精力从OS转向Web APP。

MIUI仍然精耕手机操作系统市场,不仅小米手机内置,而且向所有手机厂商开放。小米总裁林斌指出,MIUI是很开放的开发,用户只要觉得不好用就可刷掉。从目前看,Android系统仍有很多不完善的地方,基于Android系统MIUI还有很多可改善的空间。

作 为前谷歌员工,林斌与谷歌安卓操作系统负责人Andy Rubin有过交流,Rubin坚持开放。“只有一种情况Android走向封闭,那就是Rubin的离开。”MIUI有近200万用户,并涉足20多个 海外市场。林斌称,万一Android走向封闭,MIUI将继续开源开发,走一条自己的道路。

百 度希望在兼容Android平台的基础上走出不一样的路。百度副总裁王劲此前表示:百度的移动云战略分三步走:第一步是把百度移动软件打包整合放到手机 上;第二步的核心是做云生态系统;第三步就是百度云操作系统。王劲认为,百度云操作系统和Anroid都是基于Linux研发,初期基于Android兼 容。随着越来越多开发者在百度平台上推出APP,百度手机操作系统生态形成,就可能不会兼容Android。

实际上,遭遇谷歌打击的阿里巴巴开发阿里云的部分动机来自用户注意力逐渐从PC转移到移动平台的需求所致。阿里巴巴集团首席战略官曾鸣也有一个雄心:希望阿里云操作系统像Android系统一样强大。这背后也隐含着与Android系统抗衡的决心。

不过,这被认为是中国互联网圈常见的自欺欺人的故事,在谷歌没有发现阿里云的小动作之前,阿里云可以快乐扮演挑战者的角色,但当肆无忌惮的在海外媒体上挑衅谷歌时,故事的发展就已经超出了王坚们的想象,最终走向不可控制的局面。

互联网分析人士谢文建议国内有实力的企业更扎实做平台研发。谢文认为,与现有三大手机操作系统平台直接抗衡,需要花费5到10年时间才能赶上。如果仅仅做基于Android手机操作系统的研发,只能是急功近利,最终事倍功半,沦为谷歌的打工仔。

Javascript MVC 架构之旅

Javascript MVC架构之旅

本文摘自smashingmagazine的Journey Through The JavaScript MVC Jungle部分内容,因为个人对于框架的应用总结和特点比较感兴趣,这里翻译了部分的内容,希望对于大家有帮助,如果你觉得不过瘾,请阅读原文,谢谢!

什么时候你需要使用Javascript的MVC框架?

如果你开发的程序可能需要和API或者服务通讯,而且要求大量的视图操作或者数据操作,你将发现使用一个成熟的框架非常有帮助。

典型的例子就是Gmail和Google Docs。

如果你的应用只是依赖于服务器来生成web页面和视图,并且只需要使用一些简单的javascript或者jQuery来使得应用更加的具有互动性,使用框架就不是很有必要。

选择框架的标准

如果你需要选择框架的话,你需要问问自己这些问题:

  • 这个框架究竟可以带来什么?
  • 这个框架是不是有实际的成功案例?
  • 这个框架是不是成熟?
  • 这个框架是不是足够灵活或者相对比较死板?
  • 你有没有应用过相关的框架?
  • 这个框架是不是有很好的文档支持?
  • 这个框架的大小,包括依赖的类库,是不是很大?
  • 支持这个框架的社区是不是不错?

如何选择框架? 什么时候该用什么?

为了更好的帮助大家选择框架,这里我们做了一个high-level的总结,希望能够帮助大家选择框架:

Backbone.js

如 果你需要灵活的方式来解决应用中层次分离问题,并且支持持久层和REST同步服务,models,views,事件驱动,模板和定位等这个框架是个不错的 选择。它允许model修改后View能够自动更新。而且很多大的公司都使用它来构建应用,并且拥有非常好的社区来支持。

Ember.js

如 果你需要桌面级别的应用开发,并且拥有模块化,标准的界面,并且支持MVC的特性,不需要我自己处理所有的东西。要求支持持久化,计算相关属性并且自动更 新模板。支持正确的状态管理而非手动的控制管理。Ember.js是不错的选择,同时它拥有非常详细的文档,及其模板说明。并且拥有丰富的工具。

CanJS

轻量级的试试模板绑定,定向,整合主流类库(jQuery或者Dojo)以优化性能。支持MVC。可能在大型的应用中使用不多,但是适合于有复杂应用开发经验的人,针对这种情况,canjs是个不错选择。

AngularJS

如果你需要使用宣示的方法来定义View的行为。主要通过自定义的HTML标签和组件来达到目的。支持快速测试,URL管理和分离的MVC。和其它的框架不 一样,它提供HTML编译器来创建自己的HTML中的DSL。灵感来自于即将来到的web platform特性,例如web组件,同时也拥有自己的工具。如果想了解相关特性,请参考:AngularJS的五个超酷特性

Dojo

提供非常棒的基础用来开发大型的应用。支持成熟的组件架构,模块支持lazy加载并且支持异步,简单整合CDNs,拥有广泛的模块(图形,图表,Grid等等),支持国际化本地化。支持OOP,MVC并且支持创建单元来解决复杂的架构。

YUI

需要利用YUI的扩展架构。支持Model,view和router,简化书写多视图的应用支持routing,视图变化等等。 拥有完整的解决方案包括组件/控件及其相关工具,帮助你创建一个有组织的应用架构。拥有底层工具(yuiproject)。

Spine

帮助你简单的实现异步界面并且不需要任何依赖。可以非常固定但是对于创建应用比较灵活。家头提供了必须要的骨架,例如,model,view,controller,事件和routing。但是仍旧比较小。针对CoffeeScript做了优化,拥有非常清楚的文档。

KnockoutJS

可以方便的使用清楚的底层数据模型和宣告性绑定构建复杂动态的UI 。Model变化后能够自动更新UI,使用双向的绑定,支持依赖来跟踪model数据。可以使用任何你想使用的框架。或者一个已存在的应用。支持内建模板,并且很容易扩展。

jQuery

搭建简答的网站和web应用。不需要很多代码,并且组织代码不是个问题。主要专注于浏览器的区别,我们专心于开发本身。很容易的绑定事件,和远程服务互动,支持扩展,拥有大量的插件。

希望这些简单的内容对于你的框架选择有所帮助,如果你有问题,请给我们留言!