2010年10月16日星期六

阮一峰的网络日志

阮一峰的网络日志


排版六原则

Posted: 16 Oct 2010 01:44 AM PDT

上个月,我贴了《图形化简历》

几天后,就收到了秋叶老师的来信,希望与我探讨一些设计问题。他写过一本畅销书《说服力-让你的PPT会说话》,眼下正在写续集。

我看了新书的样章,觉得很不错,有些内容很值得分享。

====================================

首先,我们先看一个例子。良好的设计如何使得一个平庸的文档脱胎换骨。下面是一张大学生的求职简历,再普通不过了,想要引起招聘经理的注意,恐怕很难。

秋叶老师对它进行了简单的排版,还是一张表格,还是黑白配色,没有使用任何图形元素,效果却完全不一样了。

真是令人眼前一亮,不由自主地想多看几眼。这就是优秀设计的作用:它让你脱颖而出。

====================================

秋叶老师把他的排版心得,总结为六个原则:对齐,聚拢,重复,对比,强调,留白。我是这样理解的:

一、对齐原则

  相关内容必须对齐,次级标题必须缩进,方便读者视线快速移动,一眼看到最重要的信息。

二、聚拢原则

  将内容分成几个区域,相关内容都聚在一个区域中。段间距应该大于段内的行距。

三、留白原则

  千万不要把页面排得密密麻麻,要留出一定的空白,这本身就是对页面的分隔。这样既减少了页面的压迫感,又可以引导读者视线,突出重点内容。

四、降噪原则

  颜色过多、字数过多、图形过繁,都是分散读者注意力的"噪音"。

五、重复原则

  重要信息值得重复出现。

六、对比原则

  加大不同元素的视觉差异。这样既增加了页面的活泼,又方便读者集中注意力阅读某一个子区域。

====================================

下面用一个PPT的例子,演示排版六原则。

上面这张ppt有两个毛病。一是字数太多,抓不住重点;二是右边没有对齐,使得读者的视线只能一行行地从行首到行尾移动,不能直上直下。

现在进行修改。

第一步,根据"聚拢原则",将六点分成六个区域。

第二步,根据"降噪原则",将每一点分成"小标题"和"说明文字"两部分。

第三步,根据"对齐原则",将每一个部分、每一种元素对齐。

第四步,根据"对比原则",加大"小标题"和"说明文字"在字体和颜色上的差异。

第五步,根据"留白原则",留出一定的空白。

页面的可读性大大增加。

(完)


2010年10月14日星期四

阮一峰的网络日志

阮一峰的网络日志


为什么Lisp语言如此先进?(译文)

Posted: 13 Oct 2010 08:40 PM PDT

上周,《黑客与画家》总算翻译完成,已经交给出版社了。

翻译完这本书,累得像生了一场大病。把书稿交出去的时候,心里空荡荡的,也不知道自己得到了什么,失去了什么。

希望这个中译本和我的努力,能得到读者认同和肯定。

下面是此书中非常棒的一篇文章,原文写于八年前,至今仍然具有启发性,作者眼光之超前令人佩服。由于我不懂Lisp语言,所以田春同学帮忙校读了一遍,纠正了一些翻译不当之处,在此表示衷心感谢。

============================

为什么Lisp语言如此先进?

作者:Paul Graham

译者:阮一峰

英文原文:Revenge of the Nerds

(节选自即将出版的《黑客与画家》中译本)


一、

如果我们把流行的编程语言,以这样的顺序排列:Java、Perl、Python、Ruby。你会发现,排在越后面的语言,越像Lisp。

Python模仿Lisp,甚至把许多Lisp黑客认为属于设计错误的功能,也一起模仿了。至于Ruby,如果回到1975年,你声称它是一种Lisp方言,没有人会反对。

编程语言现在的发展,不过刚刚赶上1958年Lisp语言的水平。

二、

1958年,John McCarthy设计了Lisp语言。我认为,当前最新潮的编程语言,只是实现了他在1958年的设想而已。

这怎么可能呢?计算机技术的发展,不是日新月异吗?1958年的技术,怎么可能超过今天的水平呢?

让我告诉你原因。

这是因为John McCarthy本来没打算把Lisp设计成编程语言,至少不是我们现在意义上的编程语言。他的原意只是想做一种理论演算,用更简洁的方式定义图灵机。

所以,为什么上个世纪50年代的编程语言,到现在还没有过时?简单说,因为这种语言本质上不是一种技术,而是数学。数学是不会过时的。你不应该把Lisp语言与50年代的硬件联系在一起,而是应该把它与快速排序(Quicksort)算法进行类比。这种算法是1960年提出的,至今仍然是最快的通用排序方法。

三、

Fortran语言也是上个世纪50年代出现的,并且一直使用至今。它代表了语言设计的一种完全不同的方向。Lisp是无意中从纯理论发展为编程语言,而Fortran从一开始就是作为编程语言设计出来的。但是,今天我们把Lisp看成高级语言,而把Fortran看成一种相当低层次的语言。

1956年,Fortran刚诞生的时候,叫做Fortran I,与今天的Fortran语言差别极大。Fortran I实际上是汇编语言加上数学,在某些方面,还不如今天的汇编语言强大。比如,它不支持子程序,只有分支跳转结构(branch)。

Lisp和Fortran代表了编程语言发展的两大方向。前者的基础是数学,后者的基础是硬件架构。从那时起,这两大方向一直在互相靠拢。Lisp刚设计出来的时候,就很强大,接下来的二十年,它提高了自己的运行速度。而那些所谓的主流语言,把更快的运行速度作为设计的出发点,然后再用超过四十年的时间,一步步变得更强大。

直到今天,最高级的主流语言,也只是刚刚接近Lisp的水平。虽然已经很接近了,但还是没有Lisp那样强大。

四、

Lisp语言诞生的时候,就包含了9种新思想。其中一些我们今天已经习以为常,另一些则刚刚在其他高级语言中出现,至今还有2种是Lisp独有的。按照被大众接受的程度,这9种思想依次是:

  1. 条件结构(即"if-then-else"结构)。现在大家都觉得这是理所当然的,但是Fortran I就没有这个结构,它只有基于底层机器指令的goto结构。

  2. 函数也是一种数据类型。在Lisp语言中,函数与整数或字符串一样,也属于数据类型的一种。它有自己的字面表示形式(literal representation),能够储存在变量中,也能当作参数传递。一种数据类型应该有的功能,它都有。

  3. 递归。Lisp是第一种支持递归函数的高级语言。

  4. 变量的动态类型。在Lisp语言中,所有变量实际上都是指针,所指向的值有类型之分,而变量本身没有。复制变量就相当于复制指针,而不是复制它们指向的数据。

  5. 垃圾回收机制。

  6. 程序由表达式(expression)组成。Lisp程序是一些表达式区块的集合,每个表达式都返回一个值。这与Fortran和大多数后来的语言都截然不同,它们的程序由表达式和语句(statement)组成。

区分表达式和语句,在Fortran I中是很自然的,因为它不支持语句嵌套。所以,如果你需要用数学式子计算一个值,那就只有用表达式返回这个值,没有其他语法结构可用,因为否则就无法处理这个值。

后来,新的编程语言支持区块结构(block),这种限制当然也就不存在了。但是为时已晚,表达式和语句的区分已经根深蒂固。它从Fortran扩散到Algol语言,接着又扩散到它们两者的后继语言。

  7. 符号(symbol)类型。符号实际上是一种指针,指向储存在哈希表中的字符串。所以,比较两个符号是否相等,只要看它们的指针是否一样就行了,不用逐个字符地比较。

  8. 代码使用符号和常量组成的树形表示法(notation)。

  9. 无论什么时候,整个语言都是可用的。Lisp并不真正区分读取期、编译期和运行期。你可以在读取期编译或运行代码;也可以在编译期读取或运行代码;还可以在运行期读取或者编译代码。

在读取期运行代码,使得用户可以重新调整(reprogram)Lisp的语法;在编译期运行代码,则是Lisp宏的工作基础;在运行期编译代码,使得Lisp可以在Emacs这样的程序中,充当扩展语言(extension language);在运行期读取代码,使得程序之间可以用S-表达式(S-expression)通信,近来XML格式的出现使得这个概念被重新"发明"出来了。

五、

Lisp语言刚出现的时候,它的思想与其他编程语言大相径庭。后者的设计思想主要由50年代后期的硬件决定。随着时间流逝,流行的编程语言不断更新换代,语言设计思想逐渐向Lisp靠拢。

思想1到思想5已经被广泛接受,思想6开始在主流编程语言中出现,思想7在Python语言中有所实现,不过似乎没有专用的语法。

思想8可能是最有意思的一点。它与思想9只是由于偶然原因,才成为Lisp语言的一部分,因为它们不属于John McCarthy的原始构想,是由他的学生Steve Russell自行添加的。它们从此使得Lisp看上去很古怪,但也成为了这种语言最独一无二的特点。Lisp古怪的形式,倒不是因为它的语法很古怪,而是因为它根本没有语法,程序直接以解析树(parse tree)的形式表达出来。在其他语言中,这种形式只是经过解析在后台产生,但是Lisp直接采用它作为表达形式。它由列表构成,而列表则是Lisp的基本数据结构。

用一门语言自己的数据结构来表达该语言,这被证明是非常强大的功能。思想8和思想9,意味着你可以写出一种能够自己编程的程序。这可能听起来很怪异,但是对于Lisp语言却是再普通不过。最常用的做法就是使用宏。

术语"宏"在Lisp语言中,与其他语言中的意思不一样。Lisp宏无所不包,它既可能是某样表达式的缩略形式,也可能是一种新语言的编译器。如果你想真正地理解Lisp语言,或者想拓宽你的编程视野,那么你必须学习宏。

就我所知,宏(采用Lisp语言的定义)目前仍然是Lisp独有的。一个原因是为了使用宏,你大概不得不让你的语言看上去像Lisp一样古怪。另一个可能的原因是,如果你想为自己的语言添上这种终极武器,你从此就不能声称自己发明了新语言,只能说发明了一种Lisp的新方言。

我把这件事当作笑话说出来,但是事实就是如此。如果你创造了一种新语言,其中有car、cdr、cons、quote、cond、atom、eq这样的功能,还有一种把函数写成列表的表示方法,那么在它们的基础上,你完全可以推导出Lisp语言的所有其他部分。事实上,Lisp语言就是这样定义的,John McCarthy把语言设计成这个样子,就是为了让这种推导成为可能。

六、

就算Lisp确实代表了目前主流编程语言不断靠近的一个方向,这是否意味着你就应该用它编程呢?

如果使用一种不那么强大的语言,你又会有多少损失呢?有时不采用最尖端的技术,不也是一种明智的选择吗?这么多人使用主流编程语言,这本身不也说明那些语言有可取之处吗?

另一方面,选择哪一种编程语言,许多项目是无所谓的,反正不同的语言都能完成工作。一般来说,条件越苛刻的项目,强大的编程语言就越能发挥作用。但是,无数的项目根本没有苛刻条件的限制。大多数的编程任务,可能只要写一些很小的程序,然后用胶水语言把这些小程序连起来就行了。你可以用自己熟悉的编程语言,或者用对于特定项目来说有着最强大函数库的语言,来写这些小程序。如果你只是需要在Windows应用程序之间传递数据,使用Visual Basic照样能达到目的。

那么,Lisp的编程优势体现在哪里呢?

七、

语言的编程能力越强大,写出来的程序就越短(当然不是指字符数量,而是指独立的语法单位)。

代码的数量很重要,因为开发一个程序耗费的时间,主要取决于程序的长度。如果同一个软件,一种语言写出来的代码比另一种语言长三倍,这意味着你开发它耗费的时间也会多三倍。而且即使你多雇佣人手,也无助于减少开发时间,因为当团队规模超过某个门槛时,再增加人手只会带来净损失。Fred Brooks在他的名著《人月神话》(The Mythical Man-Month)中,描述了这种现象,我的所见所闻印证了他的说法。

如果使用Lisp语言,能让程序变得多短?以Lisp和C的比较为例,我听到的大多数说法是C代码的长度是Lisp的7倍到10倍。但是最近,New Architect杂志上有一篇介绍ITA软件公司的文章,里面说"一行Lisp代码相当于20行C代码",因为此文都是引用ITA总裁的话,所以我想这个数字来自ITA的编程实践。 如果真是这样,那么我们可以相信这句话。ITA的软件,不仅使用Lisp语言,还同时大量使用C和C++,所以这是他们的经验谈。

根据上面的这个数字,如果你与ITA竞争,而且你使用C语言开发软件,那么ITA的开发速度将比你快20倍。如果你需要一年时间实现某个功能,它只需要不到三星期。反过来说,如果某个新功能,它开发了三个月,那么你需要五年才能做出来。

你知道吗?上面的对比,还只是考虑到最好的情况。当我们只比较代码数量的时候,言下之意就是假设使用功能较弱的语言,也能开发出同样的软件。但是事实上,程序员使用某种语言能做到的事情,是有极限的。如果你想用一种低层次的语言,解决一个很难的问题,那么你将会面临各种情况极其复杂、乃至想不清楚的窘境。

所以,当我说假定你与ITA竞争,你用五年时间做出的东西,ITA在Lisp语言的帮助下只用三个月就完成了,我指的五年还是一切顺利、没有犯错误、也没有遇到太大麻烦的五年。事实上,按照大多数公司的实际情况,计划中五年完成的项目,很可能永远都不会完成。

我承认,上面的例子太极端。ITA似乎有一批非常聪明的黑客,而C语言又是一种很低层次的语言。但是,在一个高度竞争的市场中,即使开发速度只相差两三倍,也足以使得你永远处在落后的位置。

附录:编程能力

为了解释我所说的语言编程能力不一样,请考虑下面的问题。我们需要写一个函数,它能够生成累加器,即这个函数接受一个参数n,然后返回另一个函数,后者接受参数i,然后返回n增加(increment)了i后的值。

Common Lisp的写法如下:

  (defun foo (n)
    (lambda (i) (incf n i)))

Ruby的写法几乎完全相同:

  def foo (n)
    lambda {|i| n += i } end

Perl 5的写法则是:

  sub foo {
    my ($n) = @_;
    sub {$n += shift}
  }

这比Lisp和Ruby的版本,有更多的语法元素,因为在Perl语言中,你不得不手工提取参数。

Smalltalk的写法稍微比Lisp和Ruby的长一点:

  foo: n
    |s|
    s := n.
    ^[:i| s := s+i. ]

因为在Smalltalk中,局部变量(lexical variable)是有效的,但是你无法给一个参数赋值,因此不得不设置了一个新变量,接受累加后的值。

Javascript的写法也比Lisp和Ruby稍微长一点,因为Javascript依然区分语句和表达式,所以你需要明确指定return语句,来返回一个值:

  function foo (n) {
    return function (i) {
      return n += i } }

(实事求是地说,Perl也保留了语句和表达式的区别,但是使用了典型的Perl方式处理,使你可以省略return。)

如果想把Lisp/Ruby/Perl/Smalltalk/Javascript的版本改成Python,你会遇到一些限制。因为Python并不完全支持局部变量,你不得不创造一种数据结构,来接受n的值。而且尽管Python确实支持函数数据类型,但是没有一种字面量的表示方式(literal representation)可以生成函数(除非函数体只有一个表达式),所以你需要创造一个命名函数,把它返回。最后的写法如下:

  def foo (n):
    s = [n]
    def bar (i):
      s[0] += i
      return s[0]
    return bar

Python用户完全可以合理地质疑,为什么不能写成下面这样:

  def foo (n):
    return lambda i: return n += i

或者:

  def foo (n):
    lambda i: n += i

我猜想,Python有一天会支持这样的写法。(如果你不想等到Python慢慢进化到更像Lisp,你总是可以直接......)

在面向对象编程的语言中,你能够在有限程度上模拟一个闭包(即一个函数,通过它可以引用由包含这个函数的代码所定义的变量)。你定义一个类(class),里面有一个方法和一个属性,用于替换封闭作用域(enclosing scope)中的所有变量。这有点类似于让程序员自己做代码分析,本来这应该是由支持局部作用域的编译器完成的。如果有多个函数,同时指向相同的变量,那么这种方法就会失效,但是在这个简单的例子中,它已经足够了。

Python高手看来也同意,这是解决这个问题的比较好的方法,写法如下:

  def foo (n):
    class acc:
      def _ _init_ _ (self, s):
        self.s = s
      def inc (self, i):
        self.s += i
        return self.s
    return acc (n).inc

或者

  class foo:
    def _ _init_ _ (self, n):
      self.n = n
    def _ _call_ _ (self, i):
      self.n += i
      return self.n

我添加这一段,原因是想避免Python爱好者说我误解这种语言。但是,在我看来,这两种写法好像都比第一个版本更复杂。你实际上就是在做同样的事,只不过划出了一个独立的区域,保存累加器函数,区别只是保存在对象的一个属性中,而不是保存在列表(list)的头(head)中。使用这些特殊的内部属性名(尤其是__call__),看上去并不像常规的解法,更像是一种破解。

在Perl和Python的较量中,Python黑客的观点似乎是认为Python比Perl更优雅,但是这个例子表明,最终来说,编程能力决定了优雅。Perl的写法更简单(包含更少的语法元素),尽管它的语法有一点丑陋。

其他语言怎么样?前文曾经提到过Fortran、C、C++、Java和Visual Basic,看上去使用它们,根本无法解决这个问题。Ken Anderson说,Java只能写出一个近似的解法:

  public interface Inttoint {
    public int call (int i);
  }

  public static Inttoint foo (final int n) {
    return new Inttoint () {
    int s = n;
    public int call (int i) {
    s = s + i;
    return s;
    }};
  }

这种写法不符合题目要求,因为它只对整数有效。

当然,我说使用其他语言无法解决这个问题,这句话并不完全正确。所有这些语言都是图灵等价的,这意味着严格地说,你能使用它们之中的任何一种语言,写出任何一个程序。那么,怎样才能做到这一点呢?就这个小小的例子而言,你可以使用这些不那么强大的语言,写一个Lisp解释器就行了。

这样做听上去好像开玩笑,但是在大型编程项目中,却不同程度地广泛存在。因此,有人把它总结出来,起名为"格林斯潘第十定律"(Greenspun's Tenth Rule):

"任何C或Fortran程序复杂到一定程度之后,都会包含一个临时开发的、只有一半功能的、不完全符合规格的、到处都是bug的、运行速度很慢的Common Lisp实现。"

如果你想解决一个困难的问题,关键不是你使用的语言是否强大,而是好几个因素同时发挥作用(a)使用一种强大的语言,(b)为这个难题写一个事实上的解释器,或者(c)你自己变成这个难题的人肉编译器。在Python的例子中,这样的处理方法已经开始出现了,我们实际上就是自己写代码,模拟出编译器实现局部变量的功能。

这种实践不仅很普遍,而且已经制度化了。举例来说,在面向对象编程的世界中,我们大量听到"模式"(pattern)这个词,我觉得那些"模式"就是现实中的因素(c),也就是人肉编译器。 当我在自己的程序中,发现用到了模式,我觉得这就表明某个地方出错了。程序的形式,应该仅仅反映它所要解决的问题。代码中其他任何外加的形式,都是一个信号,(至少对我来说)表明我对问题的抽象还不够深,也经常提醒我,自己正在手工完成的事情,本应该写代码,通过宏的扩展自动实现。

(完)


2010年10月11日星期一

阮一峰的网络日志

阮一峰的网络日志


ARM芯片介绍(转贴)

Posted: 10 Oct 2010 07:27 AM PDT

目前,几乎所有的智能手机和MID,使用的都是ARM芯片。

这种芯片相比Intel公司的芯片,指令集较简单,所以功耗低、成本低,特别适用于移动设备。随着性能不断提高,它已经开始装备上网本和平板电脑。

它的名字ARM,指的是英国芯片设计公司ARM Holdings。这家公司自己不制造芯片,专门授权其他公司制造。因此,市场上有多家公司生产多种ARM芯片。再加上,ARM公司目前主要授权三个系列的芯片设计----ARM 9、ARM 11和Cortex,所以就造成普通消费者感到眼花缭乱,不知道如何选择。各种ARM芯片之间到底有什么区别?

今天,我在imp3.net上看到一篇文章,对这个问题做出了最详细的回答,不仅介绍了芯片知识,而且还有助于读者分辨和选择适合自己的移动设备。我把它转贴在下面。

==================================

ARM芯片介绍

作者:nbnb001

原文网址:http://bbs.imp3.net/thread-894970-1-1.html

一、ARM9系列

较小的核心面积带来较低的成本,相对比较省电,但难以冲击更高的频率,总体效能有限。

1. 威盛WM8505/WM8505+

主频:300MHz/400MHz

内存:128M DDR2,16bit

工艺:65nm工艺

Linpack测试:测试:1-1.25MFlops(Android 1.6系统)

视频处理:只有JPEG硬解,视频支持很弱,无3D加速

代表机型:国美飞触1代,山寨VIA平板

【点评】

价格低廉大概是这个方案的唯一优点,不知道国美是怎么忽悠把这个机器卖到999元的......

ARM9 300MHz的主频,自然不用指望有多好的性能,上网都勉勉强强吧。超频的400MHz版本,发热比较大,性能提升又实在有限。

视频能力很弱,也不能当MP4用,最多只能当个Android入门机器玩玩。

淘宝售价低至500-600元,7寸屏。如果不是囊中羞涩到一定程度,实在不推荐这个芯片的机器。真要入门的话,收个二手的智器Q5也比这个好。

性能★☆☆☆☆

视频★☆☆☆☆

2. 瑞芯微RK2808

主频:600MHz

内存:128M SDRAM,32bit

工艺:65nm

Linpack测试: 2-2.5MFlops(Android 1.5系统)

视频处理:Ceva MM2000,基于550MHz的DSP。多格式支持,最高720p,流畅576p。无3D加速。

代表机型:蓝魔W7,爱可视7HT,山寨apad等

【点评】

RK2808算是上市比较早的机器,瑞芯微做了很多宣传。

600MHz的ARM9,性能偏弱,好在瑞芯微的系统优化做得不错,Android 1.5的系统还是比较完善和稳定的,实际速度也不错。

一般的上网,开启网页的速度能让人接受,应付文字为主的网页问题不大,然而对于图片稍多的网页,拖动就会有明显的不流畅。

RK2808带有独立的DSP,因此视频性能获得了明显的提升,支持格式也较为丰富。720p以下的视频均能流畅解码,720p视频中,对RMVB,MPEG4的支持不错,H.264只能到2Mbps的码率。此外VC-1只能保证480p流畅。视频性能足以满足一般用户的需求。但是跟MP4相比,RK2808 Android的视频流畅度稍逊,总有掉帧感。

RK2808的软肋在于采用SDRAM,最大只能支持128MB,对于2.0以上的系统,RAM成为了一个瓶颈。此外缺乏3D加速,也注定了与2.1以上的动态桌面和华丽特效无缘,也无法运行需要使用3D加速的游戏。瑞芯微已经放弃了RK2808 Android 2.1系统的开发。

蓝魔W7是少有采用电容屏的国产MID,触控感受给我留下了深刻的印象,但是没能支持多点触摸。不过,爱可视已经公布了旗下采用RK2808主控的爱可视7HT的Android核心源代码,民间工作者可以跟进,进一步发挥RK2808的余热。

目前7寸的山寨RK28机型,价格低至700元,作为入门机型具有一定的价值。

性能★★☆☆☆

视频★★★☆☆

3. 瑞芯微RK2818

主频:660MHz

内存:256M DDR2,32bit

工艺:65nm

Linpack测试: 3MFlops+(2.1系统)

视频处理:Ceva MM2000,基于600MHz的DSP。多格式支持,最高720p。3D加速,ARM Mali-55。

代表机型:蓝魔W9,W11,原道N6

【点评】

RK2818改进了内存控制器,支持DDR2,最大到512MB,同时增加了3D加速。由于瑞芯微去年授权了ARM的Mali-55图形核心,综合考虑ARM9的架构,不出意外的话集成的图形核心就是Mali-55。

Mali-55作为一颗入门级的图形核心,跑跑一些UI特效问题不大,普通的3D游戏应该也能执行。但是一些需要GLES 2.0的3D大作,特别是Gameloft的一些作品,估计就不能支持了。

视频能力可能会有提升,但预计不会超过720p。此外,RK可能利用视频系统中DSP的可编程性,进一步开发如3D视频,人脸识别等功能,为产品增加卖点。

预计售价会在千元左右,可能会有更低价的普及版。

性能★★★☆☆

视频★★★☆☆

二、ARM11系列

该系列加长的管线可以冲击更高的频率(1GHz),但功耗的增加也比较显著。

4. Telechips TCC8902

主频:540MHz/720MHz

内存:256M DDR2,32bit

工艺:65nm

Linpack测试: 2.3/3.5MFlops(2.1系统)

视频处理:ARM Mali-VE6,基于硬解。多格式支持,1080p流畅。3D加速,ARM Mali-200。

代表机型:智器V系列,一些山寨平板

【点评】

TCC8902的机型,去年年底由智器首先推出。开始该方案的Android不太完善,bug较多,经过大半年的努力,现在已经基本完善,目前已经是MID的主流方案之一。性能也处于主流水平,足以应付绝大部分应用。但ARM11的处理能力对于带有图片的复杂网页依旧不够,拖动并不流畅。

TCC8902带有一颗比较强劲的3D加速器,因此各种动态3D UI也能很好支持。但似乎驱动并不完善,此外使用率也不及PowerVR SGX系列和高通Adreno系列高,因此软件优化不够,实际表现不如前两者。

视频能力很强,支持多格式的1080p,也能真正做到1080p流畅。

智器的产品还带有Linux和CE系统,是玩机一族的好选择。特别V3售价699元,很有性价比。

性能★★★☆☆

视频★★★★★

5. 三星S3C6410

主频:666MHz/800MHz

内存:128M DDR/256M mDDR,32bit

工艺:65nm

Linpack测试:3.5MFlops(Android 2.1系统)

视频处理:三星,硬件解码。支持720×480下的H.264 BP。3D加速,三星自有。

代表机型:智器Q系列,魅族M8,三星i5700

【点评】

第一代MID,智器Q系列采用的芯片,另外三星i5700也采用了该芯片。

Q系列的RAM有点小,不过得益于民间固件,Android从1.5到2.2都能跑,加上Linux和CE,可玩性挺高。二手的价格又便宜,确实是玩机入门的好选择。

性能★★★☆☆

视频★☆☆☆☆

6. 盈方微IMAPX200

主频:1GHz

内存:256M DDR2,32bit

工艺:65nm

Linpack测试: ~9.8MFlops(Android 2.1系统开启JIT,不开估计在4-4.5)

视频处理:On2 Hantro 8190,硬件解码。多格式支持,最高1080p。3D加速, VIVANTE GC600。

代表机型:卓尼斯epad,国美飞触2代

【点评】

频率被拉到了1GHz,有Cortex-A8 500-600MHz的水平了,理论上性能还是不错的。

视频硬解的规格还挺高,不过据说1080p还是有掉帧,估计软件优化的还不够。从芯片的角度说,硬件规格还是挺强大的,不过出来的晚,软件很多都不成熟,没跟上。

另外,据说芯片功耗挺大,所以中小尺寸的不好做。加上卓尼斯的无线网卡用的USB模块(非SDIO),功耗就更大了。

性能★★★☆☆

视频★★★★☆

7. 高通MSM7201

主频:528MHz

内存:128/256M DDR,32bit

工艺:65nm

Linpack测试:2-2.5MFlops(Android 1.6系统)

视频处理:高通QDSP5000。支持720×480以下H.264 BP。3D加速,Adreno 130。

代表机型:HTC G1、G2、G3

【点评】

被HTC用烂了的芯片,性能实在不咋地,不过软件完善,加上低分屏,手机还是很流畅。

其改进版MSM722x,给ARM11增加了256KB的L2缓存,增加了硬件VFP,3D加速改用与QSD8x50相同的Adreno 200,总体性能有一定提升,但是受到ARM11本身的性能限制,与Cortex-A8的主控性能尚有明显差距。

性能★★☆☆☆

视频★☆☆☆☆

三、Cortex-A8系列

该系列普遍带有256KB的L2缓存,加上600MHz-1GHz的高频率,相对ARM9和ARM11有显著的提升。

Cortex-A8标配Neon单元,通过SIMD指令集大大加强浮点性能,可以实现不少DSP的功能。

与此同时,相对高昂的授权费用和较大的核心面积,使得Cortex-A8 SOC的成本相对较高,作为定位中高端的产品出现。

8. 高通QSD8x50

主频:1GHz(Scorpion)

内存:256/512M mDDR,32bit

工艺:65nm

Linpack测试: 7-7.5MFlops(2.1系统)

视频处理:高通QDSP6000。支持720p H.264,但一般只有480p H.264流畅(BP或者MP),通过软件解码能勉强支持480p多格式流畅。3D加速,Adreno 200(AMD Z430)。

代表机型:Google N1,Dell Streak

【点评】

最早的1GHz芯片,性能挺强劲,高端手机标配。

浏览网页自然不用说,系统也很流畅。

3D的Adreno 200不算强,因为高通的占有率挺高,游戏厂商都会做相应的优化,基本不用担心有游戏跑不了。

视频通过DSP解码,高通的DSP虽然强劲,但是也只能到720p,实际也就576p以下能流畅。而且高通只做了H.264的codec,并且大部分厂商只支持baseline profile。有些机型能支持High Profile的解码,以及WMV的解码,不过兼容性有待提升。

得益于Cortex-A8附带的Neon核心,处理器的浮点性能大大加强,可以通过软件解码处理各种编码的视频。不过性能还是有限,在1GHz高主频的CPU上,480p能基本流畅,不过高码率的片段,还是会掉帧甚至卡顿。

此外,该芯片集成了基带,所以拿它做的东西,肯定是可以打电话的,于是价格也不会太便宜。

性能★★★★★

视频★★☆☆☆

9. 德州仪器OMAP3430/3530

主频:550/720MHz

内存:256M mDDR,32bit

工艺:65nm

Linpack测试: 4.5(550MHz)/5.9(800MHz)(Android 2.1系统)

视频处理:IVA2+,基于C64x+ DSP,430MHz。多格式支持,但除去爱可视,很多厂商都没做硬解码。通过软件解码,配合超频,能勉强支持480p多格式流畅。3D加速,PowerVR SGX530。

代表机型:MOTO Milestone,爱可视5,维智A81

【点评】

一款比较经典的芯片,Cortex-A8的性能自然不用多少,虽然频率不如高通Snapdragon,但同频率下效能更高(800MHz的TI测试得分与1GHz的Snapdragon接近),当然同频下比Snapdragon要耗电(1GHz的Snapdragon的Scorpion核心耗电与600MHz的TI Cortex-A8接近)。

3D部分使用非常主流的PowerVR SGX530,性能不错。由于SGX系列被苹果采用,软件的支持非常好,大量从ios平台上移植的游戏和应用都能充分发挥这颗芯片的性能,实际表现比高通的Adreno200更加出色。

视频部分,TI集成了一个相当强劲的DSP C64x+。还记得蓝魔T10 MP4吗?采用TI出品的DM6441主控,使用514MHz的C64x+ DSP可以实现大部分720p的流畅解码,和480p 各种规格H.264的解码。遗憾的是,似乎除了爱可视,大部分厂商没有进一步的开发这颗DSP(或者没有向TI购买codec),导致此芯片的视频能力停留在比较低级的水平,仅支持H.264 BP MP4播放。

于是,就只能像QSD8x50一样,通过软件进行解码,适当超频后,同样能勉强支持480p多格式的解码。不过高码率的片段,掉帧和卡顿是必然的。

性能★★★★☆

视频★★☆☆☆

10. 三星S5PC100

主频:667/800MHz

内存:256M DDR,32bit

工艺:65nm

视频处理:PowerVR VXD370。多格式支持,H.264,VC-1,MPEG4最高1080p。3D加速,PowerVR SGX535。

代表机型:iPod Touch3,iPhone 3GS

【点评】

它恐怕是大家最早接触的A8芯片之一,被苹果采用,大量使用在iPhone 3GS和iPod touch 3上。不过在A8的芯片当中,性能比较一般,目前已被新一代的45nm S5PC110取代。虽然,之前也听说有方案商要推出基于S5PC100的Android平板,但预计难以成为主流。

性能★★★★☆

视频★★☆☆☆

11. 飞思卡尔i.MX515

主频:800MHz/1GHz

内存:256/512M DDR2,32bit

工艺:65nm

视频处理:硬解。多格式支持,最高720p,通过软件解码能勉强支持480p多格式流畅。3D加速,Adreno 200(AMD Z430)。

代表机型:viliv P3

【点评】

炒得很火的一款芯片,呼声很高,但迟迟不出机器。不过据最新消息,10月底国内方案商搭载Android 2.2的i.MX515的平板终于能上市了。

同样基于Cortex-A8,具有与高通Snapdragon类似的性能,网络浏览,文档阅读等日常应用自然不在话下。

3D部分和QSD8x50一样,但频率有提升,此外采用DDR2内存,获得更大的带宽,3D加速性能会有进一步的提升。

视频部分据说是通过一个流处理器实现的,支持多格式的720p解码,甚至支持WMV7、WMV8等冷门格式,值得期待。

据称售价会在1300元左右,相当具有吸引力的一款产品。

性能★★★★★

视频★★★★☆

12. 三星S5PC110/S5PV210

主频:800MHz/1GHz,512K L2

内存:512M mDDR2,32bit

工艺:45nm

Linpack测试:8-8.5(1GHz)(Android 2.1系统)

视频处理:PowerVR VXD370。多格式支持,最高1080p,通过软件解码能勉强支持480p流畅。3D加速,PowerVR SGX540。

代表机型:三星i9000,Galaxy Tab。采用类似的A4芯片的有iPad、iPod touch4、iPhone 4

【点评】

毫无疑问,S5PC110(代号HammingBird)是目前最强的Cortex-A8芯片,没有之一。S5PV210和S5PC110只是封装上的区别,本质上并没有多少的变化。前者封装尺寸较大,适用于平板和上网本,后者的小尺寸封装适用于手机。其变种Apple A4芯片,只是将其中的PowerVR SGX540改成了SGX535,3D性能稍有降低。此外,负责视频硬解的VXD370被改成了VXD375,具体的区别尚不明确。

Hummingbird的Cortex-A8经过了三星的改进,同频率下具有更高的效能(+10%-20%),同时配置了512K的L2缓存,是其他Cortex-A8的两倍(Apple A4更是配备了640KB的L2缓存)

3D部分配置了主流而强劲的SGX540,实测性能领先其他Cortex-A8产品1倍以上,基本不用担心有游戏玩不了。

视频解码部分,苹果比较吝啬,依旧是720p H.264 MP4解码。不过三星的Galaxy S可以支持多种格式多种封装的解码,包括热门的MKV封装。不过并不支持RMVB的硬件解码,只能通过软解实现480p。

这颗芯片的强劲性能显然是定位高端的。三星的Galaxy Tab的具体价格也不得而知。11月或12月,国内方案商的S5PV210产品可能会上市,让我们拭目以待。

性能★★★★★★

视频★★★★☆

13. 德州仪器OMAP3630/3640

主频:800MHz/1GHz

内存:512M DDR2,32bit

工艺:45nm

视频处理:IVA2+,基于C64x+ DSP,430MHz。多格式支持,但除去爱可视,很多厂商都没做解码,通过软件解码能勉强支持480p多格式流畅。

代表机型:MOTO Droidx,Droid2,爱可视新发布的那一串机器

【点评】

基本就是OMAP3430的45nm版本,并没有太多改进。得益于频率的提升,性能进一步加强,同时由于DDR2内存的采用,3D部分的性能也得以完全释放,达到了前作OMAP3430的2倍。

性能★★★★★

视频★★☆☆☆

四、Cortex-A9

新一代的Cortex-A9核心在Cortex-A8的基础上改进,运算速度提高25%。普遍采用对称双核心配置,两个相同的核心共享1MB的L2缓存,总体性能达到了Cortex-A8的2倍以上,性能十分强劲。

不过值得注意的是,在Cortex-A9上,Neon单元不再是标准配置。厂商可以选择传统的VFP单元以换取功耗和核心面积的优化。

14. NVidia Tegra2

主频:1GHz双核 + VFP

内存:512M/1G DDR2,32bit

工艺:40nm(TMSC)

视频处理:硬件解码。多格式支持,最高1080p,软件解码性能未知。3D加速,GeForce ULV。

代表机型:微星Harmony,万利达Zpad、东芝Folio

【点评】

Cortex-A9已经上市在即,几乎2倍于A8的性能,任何Android的应用,在如此强悍的硬件配置前,没有不流畅的理由。

3D加速部分,其实与Tegra1一致,还是2PS+2TMU的配置,基于GeForce6的架构。2倍的提升一方面得益于核心频率的提升,另一方面,DDR2的大内存带宽给了很大帮助。然而效能与Hummingbird的SGX540处于同一水准,并没有太多的超越,这并非内置图形核心的限制,而是32bit DDR2所能提供的内存带宽的限制。尽管如此,Tegra2的3D性能还是处于量产SOC中的顶尖水平。

视频部分支持多格式的1080p硬件解码,但是没有提供对RMVB的支持。有强悍的双核A9,软解视频应该不是问题,但是Tegra2缺少Neon模块SIMD的浮点加速,对软解效能会有多大影响,目前尚不能得知。

此外,Tegra2也集成了专门的音频解码模块,以最大限度的解放ARM,降低功耗。内置一个ARM7用于全芯片的功耗管理。

万利达的zPad本月就能上市,强悍的性能伴随的不便宜的价格(2500+),在乎体验的用户可以尝试一下。另外,Tegra2的产品多为10寸,7寸及以下的并不多,不知道是什么原因。

性能★★★★★★★★★★

视频★★★★☆

15. 德州仪器OMAP4430/4440

主频:1GHz/1.3GHz双核 + Neon

内存:512M/1G+ DDR3,64bit

工艺:45nm

视频处理:IVA3,高清硬件解码单元 + C64x+ Lite DSP。多格式1080p,DSP部分提供可编程性。3D加速,PowerVR SGX540。

代表机型:

【点评】

真正成熟的A9 SOC,64bit的DDR3内存提供4倍于目前顶级SOC(32bit DDR2)的带宽,想必图形性能会有显著的提升。

1080p硬件解码单元,同时和Tegra2一样搭配了专用音频处理单元。此外,TI继续保留了Neon单元用于浮点加速。视频解码已经不需要C64x+ DSP参与,但TI还是将它适当精简后保留了下来,利用它的可编程性加速一些固化硬件单元不能处理的应用。

此外,TI同样配置了2个Cortex-M3处理器,用于整个SOC的任务调度和功耗管理。可以说,这是一款非常值得期待的产品,但是距离上市恐怕还有相当的时日。

性能★★★★★★★★★★★★

视频★★★★☆+

(完)


2010年10月7日星期四

阮一峰的网络日志

阮一峰的网络日志


经济学家Mark Blaug的自传

Posted: 07 Oct 2010 04:42 AM PDT

台湾清华大学的赖建诚教授,在网站上贴出了一篇译文

我觉得很好看,转贴在下面。

原文比较长,我删去了纯学术的部分,只留下了生动的小故事,以及一些很有启发的思想观点。

==============================

不只是经济学家(精简版)

作者:Mark Blaug

高景仲 译

赖建诚 校


【作者简介】

Mark Blaug,1927年生于荷兰,1955年获得哥伦比亚大学经济学博士学位,然后一直从事经济思想史的教学和研究工作,1982年加入英国籍。


【正文】

一、马克思主义

1944年,我17岁,在纽约读高中,选修了一门商业课程。

学期的最后一周,有一场讲座,主题是解释如果地租没有限制地增长,就会造成贫穷、战争、以及其它现代文明的弊病。这正是亨利•詹姆斯的著作《进步与贫穷》(Progress and Poverty,1879)中的观点。

这个讲座引发了我的兴趣,但并未让我完全信服。不久后,我成为纽约大学的一年级新生,结交了几个左翼同学。他们先介绍我看列宁与斯大林的小册子,之后是马克思与恩格斯的大部头。我深深被这些文章折服,几个月内就成为马克思主义者,一心虔诚地追随马克思。

为什么我那么快地就被马克思主义吸引?

首先,马克思主义者的文章中,闪耀着那种掌握绝对真理的氛围,特别是列宁与斯大林以激烈、不容置疑的语调,对付敌营的知识分子。其次,马克思主义有百科全书式的触角,让我感觉这是社会的普世科学。最新的选举结果、法国大革命、古希腊王朝、文艺复兴时期的油画风潮、贝多芬的艺术倾向、《浮世德》的主题等等,都有可能用马克思主义解释。我年轻时喜欢高谈阔论,马克思主义就像为我量身定做,使我可以大言不惭地,对所有题材发表意见。

马克思主义主张"经济决定论",也就是说,经济利益与经济力量,是社会发展与政治斗争的根本原因。进一步推论,所有社会问题最终都可归结为经济问题,因此经济学就成了社会科学之母。所以,我很快决定选择经济学作为自己的专业。

对我来说,马克思主义最引人入胜之处,在于它有一整套概念、工具、专有名词、术语,比如"物质基础"与"上层建筑"、"生产模式"与"生产关系"、"矛盾斗争"与"对立统一"等等。一旦掌握了这套技术性语言,就可以创造出一个自我论述的文化体系。在这个文化体系中,不夸张地说,只有马克思主义者能了解你。这让我第一次了解到,知识界自我哺育的学术文化。

二、再见,共产主义

我并不只是思想上对马克思主义感兴趣,而且还加入了美国共产党,出席政治会议、参与政党示威。但是这个时期很短暂,因为我天生不服从权威,所以很快就被逐出共产党。

事情是这样的,1945年二战接近尾声,为了让美军永久驻在德国,罗斯福总统提出一个建议案,得到了美国共产党主席白劳德(Earl Browder)的支持。斯大林反对罗斯福的这个提案,白劳德的命运顿时急转直下,他的主席职位被革除,并被逐出共产党,瞬间成为"不受欢迎人物"。几个同情他的大学生,征集签名支持白劳德,经过一番考虑后我签署了。结果,我马上就被叫去出席党内的审查会议,由于在会上我没有表示悔意,就被开除党籍。从那时起,许多党内友人与旧识,不仅不跟我讲话,甚至在街上相遇也装作不认识,很难相信党内同志翻脸的速度如此迅速。对当时的我来说,这是对左翼政治现实的痛苦觉醒。

虽然从1945年起,我就不是共产党员了,但却要用至少七、八年的时间,才彻底摆脱了马克思主义对我的影响。1945--1952年间,我头也不回地与共产主义渐行渐远。

经济学念得越多,我就越不相信马克思经济学。马克思的经济预测,绝大部份都错得离谱。他的劳动价值论,以及剩余价值理论,至少在当代西方国家已经很少有经济学家相信了。但是,还是有一部分经济学家,相信马克思的一个主要观点:资本主义的基础是对劳动力的剥削。他们认为,资本主义是不正义的,因为"工人一无所有,资本家不用工作,只靠剥削工人生存。"换言之,他们问的是:我们都要工作维生,而少数人可以不劳而获,这样公平吗?(当然,唯一的答案就是非常不公平)。但他们不问:如果没有不平均且不公平的财富分配,资本主义还会创造出前所未有的经济成长吗?换句话说,我们可以同意,资本主义并非教化人心的体系,它是粗暴、残忍、道德沦丧的,但是我们必须承认,它可以创造出经济成长。

三、麦卡锡主义

1950年,我已经从纽约市立大学皇后学院毕业,在哥伦比亚大学念博士一年级。当时皇后学院经济系主任Arthur Gay因车祸丧生,系里找人接他的课。我曾是他的助教,因此他们问我是否试一试。于是,突然之间我发现自己有无数的课程要教授,个体经济学、消费经济学,以及从没读过的营销学。我还记得第一次上课前,紧张到前一晚把内容全背下来。

正当我开始上课之时,麦卡锡参议员主持的"非美委员会"来到市立大学,调查校内的共产主义分子。他们要求三位知名教授回答:"你现在或曾经是共产党员吗?"三位教授都拒绝与委员会合作。尽管三人都是终身教授,但还是迅速被解雇。

其中一位是皇后学院的劳动经济学教授Vera Shlakman,她是我的老师,也是当时的同事。她的政治态度左倾,这个我是知道的,但是我上过她的课,知道她小心地保持中立,极力避免向学生灌输意识形态。几个学生发动签署请愿书,要求校长让Vera Shlakman复职。根据学院章程,请愿书至少要有一位院内教师签署。学生找遍经济系四十名教授、副教授、助理教授、助教,没有人愿意签署。走投无路之际,他们找到我。出于我对Vera Shlakman教授的尊崇,也因为无法接受自己变得怯懦,我签了名。二十四小时内,我就收到了Thatcher院长(奇怪的是,四十年后竟然还记得他的姓名)的字条,告诉我若不立即主动辞职,将会被免职,并列入未来招聘的黑名单。

接下来一两天,我考虑过发动大规模抗争,并发表强硬的个人声明。但是最终,我还是静静地递出辞呈。

年轻时,我曾天真地相信,知识分子会捍卫自由,对抗当权者。但是经过这次事件,我失去了对知识分子与学者的所有尊敬。只要有足够的压力,他们会向麦卡锡、希特勒、斯大林、萨达姆、或者任何背后有强权支持的人低头。

辞职之后,我陷入绝境,没有了皇后学院的授课薪水,很难维持生活。就在这个时候,我突然接到一通电话,告知我已经得到"社会科学研究会"(the Social Science Research Council)的奖学金,让我到国外撰写博士论文。显然,有人暗中对麦卡锡主义的受害者伸出援手。

四、职业经济学家

于是,我来到了伦敦,生命中最美好的两年从此开始。我选择《李嘉图学派在十九世纪经济观点的变迁》作为博士论文题目,最后取得的丰硕成果超乎想象。我也从此发现,学术研究是自己真正的强项。我在大英博物馆附近找了个房间,过着中世纪僧侣的生活,一周七天,每天阅读、写作长达十八个小时。

1954年夏天,我回到美国,参加耶鲁大学助理教授的面试。日后成为我上司的William Fellner是面试主持人,我觉得有必要解释,辞去皇后学院教职的原因。他打断我,说:"我们是一所私立大学,不在意几年前公立大学发生的事。"这印证了弗里德曼的论点:一个自由的就业市场,比一个被国有机构垄断的体系,更能确保个人自由。

进入耶鲁大学任教还不到一年,我就被要求接替William Fellner的经济思想史课程,理由很简单,系里没有其他老师愿意接。于是我意识到,二十七岁的我,正在一所顶尖学校,教一门研究生必修课。这让我非常紧张,以至于过度准备,在几年内累积了数千页笔记,这些笔记后来成为我唯一知名的书《经济理论的回顾》(Economic Theory in Retrospect,1962)。

可是,我的学生都是典型的美国研究生,只想学现代经济学的工具与方法,完全不在乎经济史和思想史这类学术性的课程。我告诉他们,思想史在学术上的重要性无可匹敌。如果我不知道某个思想的来龙去脉,我怎么可能真正了解这个思想?

经济学和其它学科的伟大理论一样,都是路径依赖(path-dependent)的。也就是说,要解释为什么会产生这些伟大的思想,就必须先理解过去的文献。换句话说,没有经济思想史,新的经济理论怎么可能从天而降。除非你愿意无条件地接受新经济理论,否则你一旦想评论它,就必须问它是从哪来的,而这个问题只有思想史才能回答。

五、回到英国

1962年,我拿到研究资助,从美国到巴黎一年,继续十九世纪的棉业研究。那年年底是耶鲁大学升等的年限。在美国的大学担任助理教授六年后,学校必须提升你为终身职副教授,否则就是让你离开。耶鲁大学不让我升等的原因,是他们不需要专攻经济思想史的资深教授,因此我觉得有必要另寻出路。

现在想到1954年回美国这件事,就让我感到灰心。即使在美国生活了二十年,我始终认为自己是欧洲人。对我来说,美国人太粗线条、太市侩。面对那些粗鄙的美国人,我还有一些身为欧洲人的文化优越感。正如约翰•穆勒所言,在美国"男人全心抢钱,女人全心喂饱男人",或者如王尔德所描述,美国"这个国家,从野蛮直接跳到堕落,缺少中间的文明阶段。"最后,我决定搬回英国。

我申请了几所英国大学的教职,但是1962年的学术就业市场没什么扩张,我很快就了解到,可能再过一年都找不到工作。这时,我幸运地碰到伦敦大学教育学院(University of London Institute of Education)院长Lionel Elvin,他告诉我教育经济学在英国是个新领域,他们有个名额一直找不到合适的人。我从没听过"教育经济学",但是勇敢地写信给Lionel Elvin,坦承是教育经济学的新手,但想知道教育学院能否以一或两年为期聘用我。院方同意了,出乎双方意料的是,这两年的聘期结果变成了23年!我提这些事,只是要强调意外在人生扮演的角色。

伦敦大学教育学院,属于教师进修学院,学生大多是老师。我的授课时数不多,行政工作负担也轻,首度可以全心投入写作与研究。虽然没有经济学家可以对话,但伦敦政经学院(London School of Economics,LSE)就在同一条街上,因此也不以为苦。不久后我就到伦敦政经学院兼课,我的时间就平分在这两个学院。

六、联合国顾问

在教育学院任教这些年,我花了许多休假时间,在亚洲与非洲担任联合国各种组织的教育顾问,为第三世界国家提供咨询。这些组织包括联合国教科文组织、联合国亚洲暨远东经济委员会、国际劳工组织、世界银行。

开始时,我满腔热血,想帮助第三世界的贫穷人民。但随着时间消逝,我愈发觉得对第三世界国家的援助,害处大于益处。联合国的援助代表团,不过是一出超级大戏。那些第三世界国家的部长与政客,利用我这样的经济学家,去得到想要的援助,同时中饱私囊。目睹太多贪污与政治表演之后,终于让我对"联合国顾问"的角色感到厌倦了。

那些国家想要进行现代化,豪言"创业家精神",但是却不接受"彻底的个人主义"。令人啼笑皆非的是,70年代几乎每一份我帮忙撰写的经济顾问报告,都是由独裁者统治的国家委托的。这些独裁者在报告发表时,或发表不久之后就被推翻了,接下来掌权的人常常把前任视为敌人。经济学家对外国政府的经济政策具有影响力,这个观念早就不再成立了。

七、经济学方法论

最后,我想谈谈对经济学的一些看法。

1950年后,经济学变得愈来愈数学化。也就是说,经济学只关心分析的数学基础,而不惜牺牲经济分析的现实相关性。

数学理论能帮助我们增加多少对经济的了解?一点也没有帮助。没有数学家会认为,经济学的一般均衡理论在数学上有什么贡献,但是它可以帮助数学家获得经济系的教职。当代经济学理论,充斥着无结果的数学形式主义(sterile formalism)。

我深信,经济学必须关注现实世界的问题。

(完)


2010年10月5日星期二

阮一峰的网络日志

阮一峰的网络日志


硅谷观光指南

Posted: 05 Oct 2010 02:04 AM PDT

"硅谷"可能是中国人最熟悉的美国地名之一,很多人都以去过那里为荣。

但是,国人有所不知,作为旅游目的地,硅谷其实不好玩,远不如旧金山有意思。

外国游客第一次来到硅谷,可能都不知道应该看哪里。所以,Paul Graham今天写了一篇硅谷景点指南,列出了9个目的地。

===============================

硅谷观光指南

作者:Paul Graham

译者:阮一峰

原文网址:http://www.paulgraham.com/seesv.html


硅谷只是普通的美国郊区,不属于旅游胜地,第一眼你会觉得没有东西可看。但是对于观光客来说,还是有一些与众不同的地方,值得一去。

1. 斯坦福大学(Stanford University)

查看地图

它位于旧金山以南,大概40分钟的车程。大多数时候,校园中都是空空荡荡的。学校的西边有很漂亮的山脉。这里是硅谷的起源,没有斯坦福大学,就没有硅谷。

2. 大学街(University Ave)

查看地图

大学街是Palo Alto市的最热闹大街,有很多咖啡馆和餐馆。硅谷的社交生活大多数都发生在这里。你很可能会在咖啡馆里遇到创业者和投资者。分辨他们的一个诀窍是,创业者的坐姿往往前倾,面露渴求,而投资者的坐姿往往后仰,面色凝重。

3. 最幸运办公楼(The Lucky Office)

查看地图

大学街165号是一幢三层小楼。这幢不起眼的楼房就是Google的第一个办公场所,Google搬走以后,它又成为Paypal的第一个办公场所。直到今天,还有创业公司在里面办公。这里值得注意的是,创业公司不去创业园区,而是待在咖啡馆和人流密集的地方。因为这使得人们在下班后更愿意留下来,而不是马上就想离开。他们可以一起在外面吃饭、过夜生活、讨论创意,一旦想到什么,就立刻走回办公室把它做出来。

4. Palo Alto旧城区(Old Palo Alto)

查看地图

硅谷诞生之前,Palo Alto就是一个典型的美国西海岸郊区小镇,已经有100多年历史了。在旧城区,你可以感受到那种老式的郊区生活,非常宁静安逸,沿街都是漂亮精致的老房子,周围长满了高大的郁郁葱葱的树木。这里的生活环境非常好,但是房价也非常贵。另外,惠普公司起家的那间车库,就在旧城区艾迪生大街(Addison Avenue)367号。

5. 沙丘路(Sand Hill Road)

查看地图

很多风险投资公司的办公室都在这条公路上,所以它也被称为"VC一条街"。这里建筑物的外观几乎都差不多,相当沉闷乏味。如果你不熟悉的话,很容易迷路。

6. 卡斯特罗街(Castro Street)

查看地图

如果你问别人,硅谷的中心在哪里?人们一般会说大学街,但是现在也有人认为是在卡斯特罗街。由于Palo Alto的房价不断上涨,所以越来越多的创业公司搬到了山景城(Mountain View),只在与投资者见面时才去Palo Alto,而卡斯特罗街是山景城最主要的商业街。不过,街上只有一家咖啡店:Red Rock

7. Google总部

查看地图

Google最初搬到山景城的时候,只有一幢楼,后来陆陆续续在旁边又盖了很多楼。这些楼风格各异,但是都很有特点。总的来说,这个地方会让你有点觉得来到了乌托邦。Google内部很值得一看,但是如果你不认识人,就进不去。(顺便说一句,Fackbook总部也值得参观,地址是Palo Alto市的California Ave走到底,不过它的外面没啥可看。)

8. 地平线公路(Skyline Drive)

查看地图

这条公路沿着Santa Cruz山脉,一边是丛山峻岭,另一边是大海,所以气温较低,经常会起雾。沿途是大片壮观的红杉,还有一些橡树。

9. 280洲际公路(Interstate 280)

查看地图

硅谷有两条公路,一条是101公路,没有什么景色,另一条280公路则是世界上最漂亮的公路之一。紧贴公路西边的是,长达1300公里的圣安德鲁斯断层(San Andreas Fault)。这条公路沿途会经过一系列富人区:Woodside、Portola Valley、Los Altos Hills、Saratoga、Los Gatos。

P.S.

如果你想了解硅谷的发展历史,最好的地点是计算机历史博物馆(Computer History Museum)。

此外,Robert ScobleJohn Graham-Cumming《技术爱好者的地球漫游指南》一书的作者)都做了补充,增加了一些有纪念意义的历史地点。

(完)