Apple 谈论产品 vs Microsoft 谈论技术

看了一下 Jeff 的《李笑来激起千层浪,赵姐夫力拒众强敌》,回顾了一下之前 Twitter 上的讨论。我个人觉得, Apple 观点和 Microsoft 观点是不同的,所以才造成了如此之多的争论。很多人在使用 Microsoft 技术的同时,由于 Microsoft 铺天盖地的宣传信息,自然而然地也接纳了 Microsoft 观点。使用这种观点去跟持有 Apple 观点的人争论是没有意义的,因为大家根本就是站在不同的角度来看到同一个事物。

看看 Jeff 整理的对话记录,里面有多少 Microsoft 技术名词? .NET 、 COM 、 DDE 、 OLE 、 CLR 、MFC ……这就是 Microsoft 观点──我们每天都有众多的技术革新,通过这些技术革新让技术人员感受到震撼( Microsoft 在推 .NET 初期确实很喜欢用 ROCK 这个词)。当然, @virushuo@tinyfool 被震撼多了,就说自己被强奸了。就算是在博客园里,也每天有人抱怨 Microsoft 技术更新太快,没办法跟上技术革新的速度。这就是 Microsoft 观点,满眼都是技术名词,名词刷新速度越快,越 Microsoft 。

再看看对话记录里面有多少 Apple 的技术名词。能看到的也就是 Carbon 和 Cocoa 两个,连 Cocoa Touch 也不提。是因为大家觉得 Cocoa Touch 和 Cocoa 就是足够相似,所以在讨论 iPhone 时没必要提及 Cocoa Touch 吗?显然不是。你看 Microsoft ,除了炒作 .NET ,还炒作 .NET CF 、 .NET MF 。就凭这一点,你就能察觉到 Apple 观点是和 Microsoft 观点不同的。 Apple 观点并不看重技术名词。

那么 Apple 观点看重的是什么?我们可以来对比一下 WWDC 2009 KeynotePDC 2009 Keynote 。在看完 PDC Keynote 之后,我来问你一个问题:这段视频中的哪些信息给你留下了印象?可能你会说,有 Windows Azure ,有 Silverlight 4,等等一堆技术名词。那么我再问你: Silverlight 4 是什么啊?我想你会用更多的名词来解释它比 Silverlight 3 多了什么新增功能。回头来看看 WWDC Keynote ,给你留下印象的是什么。那可能是「 Safari 4 比 IE 8 快7.8倍」,以及 Grand Central Dispatch 。那么 Grand Central Dispatch 又是什么?它可以让应用程序更有效地利用线程,从而提高响应速度,不需要提及更多的技术细节就能把重点说清楚。

Apple 看重的是产品,特别是用户使用产品时的体验。幕后的技术?就跟爱一样,是做出来的,而不是说出来的。最近我读了一篇文章,叫做《 Revolution vs Evolution 》。文章里面说到,用户接触到的人机交互界面应该是 evolution 的,用户原有的使用习惯得到了保持,同时很多细微的地方又有所改进,而这些改进所依赖的正是背后技术的 revolution 。留意 WWDC 中关于 Snow Leopard 内置应用改进的部分,第一个提到的就是 Finder ,其中第一句话就是「我们都爱 Leopard 中的 Finder ,因此我们没有改变 Snow Leopard 中的 Finder ,至少用户界面没有发生变化」。然后才说到, Snow Leopard 中的 Finder 其实是基于 Cocoa 完全重写的,带来的好处包括「更快地绘制图标」、「更快地清空 Trash 」等等。 Finder 背后的技术由 Carbon 转变为 Cocoa ,这是 revolution ,而 Finder 用起来的感觉则只是 evolution 。

既然说到产品,我们再来对比一下 iPad 发布会Windows 7 发布会。在 iPad 发布会上, Steve Jobs 把 iPad 拿出来,然后坐在沙发上摆弄了12分钟。这12分钟里面,他没有介绍任何的新特性,只是把内置的应用逐一打开,使用一下,然后关掉。为什么他不需要介绍新特性?因为这里面根本就没有新特性,任何一个熟悉 Mac 或者 iPhone 的人都能轻易理解 iPad 的用户界面,这正好符合上面所说的「用户界面只能做 evolution 」。当然,这12分钟也不是白白浪费的, Steve Jobs 就是要让所有人看到,作为一个普通用户,使用 iPad 是多么流畅的一件事,常用的功能触手可及,无需进行任何学习。至于 Windows 7 的发布会?请问这里有多少人能够说出 Homegroup 跟一般 Windows 共享有什么区别的?我想没多少人能够说清楚,但 Microsoft 偏要为此创造出一个新名词,以及一种需要重新学习的交互方式。

Microsoft 不仅仅不断地为技术创造新名词,还不断地为产品创造新名词。有很多程序员都抱怨, .NET 3.5 带来一堆诸如 WPF 、 WCF 、 WF 的东西,根本没时间去学。我觉得这没什么好抱怨的,受害的又不仅仅是程序员,最终用户一样面对一堆搞不明白的新概念,例如我就不知道 Homegroup 有什么特别的。最终用户是上帝,犯错的当然不可能是最终用户。类推可得,程序员也没有犯错。在这个问题上,犯错的只可能是 Microsoft 了。

正是这两种观点之间的差异,使得持有 Microsoft 观点的程序员每天都在忙于追逐那些英文里叫做「 buzzword 」的东西,觉得弄懂了某个 buzzword 就是某种进步,而持有 Apple 观点的程序员则在围绕着产品谈论「 how does it look and feel 」。这让我想起了一幅漫画,说的是如何区分科学粉丝与科学家。同样是问「你记得住圆周率的多少位」,科学粉丝会说出一个很大的数字来,而科学家则会说他只记得住1位。或许我们应该思考一下,宣称自己懂得多少种技术,这到底有没有意义。

正所谓「每一个优雅的接口,背后都有一个龌龊的实现」。这个接口( Interface )可能是用户界面( UI )也可能是编程接口( API ),这不重要,重要的是它是否优雅,也就是 @xiaolai 所说的「表面功夫一定要做足」。至于背后的实现是否龌龊,这也不重要,重要的是它必须站在幕后。就算它比接口更优雅,它也不能跑到台前来喧宾夺主。该做的,老老实实地做了,没必要拿出来说;该说的,说到每一个人都心动了,但不一定去做。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


我正在用TitaniumDeveloper编写一个应用程序,它允许我使用Javascript,PHP,Ruby和Python.它为API提供了一些可能需要的标准功能,但缺少的是全局事件.现在我想将全局热键分配给我的应用程序并且几乎没有任何问题.现在我只针对MAC,但无法找到任何Python或Ruby的解决方案.我找到了Coc
我的问题是当我尝试从UIWebView中调用我的AngularJS应用程序中存在的javascript函数时,该函数无法识别.当我在典型的html结构中调用该函数时,该函数被识别为预期的.示例如下:Objective-C的:-(void)viewDidLoad{[superviewDidLoad];//CODEGOESHERE_webView.d
我想获取在我的Mac上运行的所有前台应用程序的应用程序图标.我已经使用ProcessManagerAPI迭代所有应用程序.我已经确定在processMode中设置了没有modeBackgroundOnly标志的任何进程(从GetProcessInformation()中检索)是一个“前台”应用程序,并显示在任务切换器窗口中.我只需要
我是一名PHP开发人员,我使用MVC模式和面向对象的代码.我真的想为iPhone编写应用程序,但要做到这一点我需要了解Cocoa,但要做到这一点我需要了解Objective-C2.0,但要做到这一点我需要知道C,为此我需要了解编译语言(与解释相关).我应该从哪里开始?我真的需要从简单的旧“C”开始,正
OSX中的SetTimer在Windows中是否有任何等效功能?我正在使用C.所以我正在为一些软件编写一个插件,我需要定期调用一个函数.在Windows上,我只是将函数的地址传递给SetTimer(),它将以给定的间隔调用.在OSX上有一个简单的方法吗?它应该尽可能简约.我并没有在网上找到任何不花哨的东西
我不确定引擎盖下到底发生了什么,但这是我的设置,示例代码和问题:建立:>雪豹(10.6.8)>Python2.7.2(由EPD7.1-2提供)>iPython0.11(由EPD7.1-2提供)>matplotlib(由EPD7.1-2提供)示例代码:importnumpyasnpimportpylabasplx=np.random.normal(size=(1000,))pl.plot
我正在使用FoundationFramework在Objective-C(在xCode中)编写命令行工具.我必须使用Objective-C,因为我需要取消归档以前由NSKeyedArchiver归档的对象.我的问题是,我想知道我现在是否可以在我的Linux网络服务器上使用这个编译过的应用程序.我不确定是否会出现运行时问题,或者可
使用cocoapods,我们首先了解一下rvm、gem、ruby。rvm和brew一样,但是rvm是专门管理ruby的版本控制的。rvmlistknown罗列出ruby版本rvminstall版本号   可以指定更新ruby版本而gem是包管理gemsource-l查看ruby源gemsource-rhttps://xxxxxxxx移除ruby源gemsou
我有一个包含WebView的Cocoa应用程序.由于应用程序已安装客户群,我的目标是10.4SDK.(即我不能要求Leopard.)我有两个文件:index.html和data.js.在运行时,为了响应用户输入,我通常会使用应用程序中的当前数据填充data.js文件.(data.js文件由body.html上的index.html文件用于填充
如何禁用NSMenuItem?我点击后尝试禁用NSMenuItem.操作(注销)正确处理单击.我尝试通过以下两种方式将Enabled属性更改为false:partialvoidLogout(AppKit.NSMenuItemsender){sender.Enabled=false;}和partialvoidLogout(AppKit.NSMenuItemsender){LogoutI
我在想,创建一个基本上只是一个带Web视图的界面的Cocoa应用程序是否可行?做这样的事情会有一些严重的限制吗?如果它“可行”,那是否也意味着你可以为Windows应用程序做同样的事情?解决方法:当然可以创建一个只是一个Cocoa窗口的应用程序,里面有一个Web视图.这是否可以被称为“可可应
原文链接:http://www.cnblogs.com/simonshi2012/archive/2012/10/08/2715464.htmlFrom:http://www.idev101.com/code/Cocoa/Notifications.htmlNotificationsareanincrediblyusefulwaytosendmessages(anddata)betweenobjectsthatotherwi
如果不手动编写GNUmake文件,是否存在可以理解Xcode项目的任何工具,并且可以直接针对GNUstep构建它们,从而生成Linux可执行文件,从而简化(略微)保持项目在Cocoa/Mac和GNUstep/Linux下运行所需的工作?基本上,是否有适用于Linux的xcodebuild样式应用程序?几个星期前我看了pbtomake
我正在将页面加载到WebView中.该页面有这个小测试Javascript:<scripttype="text/javascript">functiontest(parametr){$('#testspan').html(parametr);}varbdu=(function(){return{secondtest:function(parametr){$('#testspan&#039
我正在尝试使用NSAppleScript从Objective-C执行一些AppleScript…但是,我正在尝试的代码是Yosemite中用于自动化的新JavaScript.它在运行时似乎没有做任何事情,但是,正常的AppleScript工作正常.[NSAppactivateIgnoringOtherApps:YES];NSAppleScript*scriptObject=[[NSApple
链接:https://pan.baidu.com/s/14_im7AmZ2Kz3qzrqIjLlAg           vjut相关文章Python与Tkinter编程ProgrammingPython(python编程)python基础教程(第二版)深入浅出PythonPython源码剖析Python核心编程(第3版)图书信息作者:Kochan,StephenG.出
我正在实现SWTJava应用程序的OSX版本的视图,并希望在我的SWT树中使用NSOutlineView提供的“源列表”选项.我通过将此代码添加到#createHandle()方法来破解我自己的Tree.class版本来实现这一点:longNSTableViewSelectionHighlightStyleSourceList=1;longhi=OS.sel_regist
我的Cocoa应用程序需要使用easy_install在用户系统上安装Python命令行工具.理想情况下,我想将一个bash文件与我的应用程序捆绑在一起然后运行.但据我所知这是不可能的,因为软件包安装在Python的“site-packages”目录中.有没有办法创建这些文件的“包”?如果没有,我应该如何运行ea
摘要: 文章工具 收藏 投票评分 发表评论 复制链接 Swing 是设计桌面应用程序的一个功能非常强大工具包,但Swing因为曾经的不足常常遭到后人的诟病.常常听到旁人议论纷纷,”Swing 运行太慢了!”,”Swing 界面太丑嘞”,甚至就是说”Swing 简直食之无味”. 从Swing被提出到现在,已是十年光景,Swing早已不是昔日一无是处的Swing了. Chris Adamson 和我写
苹果的开发:   我对于Linux/Unix的开发也是一窍不通,只知道可以用Java.不过接触了苹果过后,确实发现,世界上确实还有那么一帮人,只用苹果,不用PC的.对于苹果的开发,我也一点都不清楚,以下是师兄们整理出来的网站. http://www.chezmark.com/osx/    共享软件精选 http://www.macosxapps.com/    分类明了,更新及时的一个重要Mac