星期六, 十月 24, 2009

[Geekland]Proud to Be a Programmer(翻译)

via here

ppt作者Tatu Ylönen是芬兰大牛,ssh的发明人,毕业于赫尔辛基理工学学,创立过好几家公司,按照ppt中的说法,从来没有真正给其他人打过工,角色也在programmer,cto,ceo之间换来换去。上面的那个原始link中也有一些他的轶事,不能略人之美,自己去看吧

虽然不能说是雄文盖世,但是不管是paul graham还是Peter Norvig,Marc Adreessen还有我所看过的startup经验谈,所传达出来的信息都是一样的,而且好像北欧人跟实诚,说的都是大实话?

----------------------------------start now----------------------------------

不是每页都翻译,而且也不是完全翻译。

一开始ppt自报家门,ssh的发明人,从没有为其他人打工,blabla

(page 8)

  • 两种startup途径,第一种是有个idea,找人投资,实现。第二种是从技术改良革新开始,做出来,再找到赢利模式,找投资,再商业化。
  • 而且指出两种方式联合最好,(是不是和meebo的创始人说得有点像?meebo是第一种?)不过也指出第二种往往是big deal。
    (page 9)
  • 这一页这句话足矣:good implementations of old ideas
  • 伟大的产品往往是新品装旧酒
    (page 10)
  • 程序员的效率,百倍,而且还不止如此,正如paul graham说得,有些问题只有great hacker才能解决,而在问题甚至都没有的时候呢?
    (page 11)
  • 产品的核心部件是由1~5个人搞定的
  • 成熟产品要求的技能是完全不同的,大团队,面对更苛刻的用户还有更严格的流程
    (page 12)
    成为顶尖程序员的必须条件
  • 良好的(技术)基础:算法,语言,os,硬件,网络
  • 雄心和完美主义,再加上审慎的自我评估(haha)
  • 练习和经验
  • 不同的经验(十年如一日的经验不行,)
  • 搭建全新的复杂系统的能力
  • 在顶尖团队工作的经验和如何相处
  • 理解客户需求,创造完美产品
  • 看到周期,艰难时刻,失败,好时光,成功
    (page 13)
    充分条件:
  • 对技术感兴趣并且有能力快速学习
  • 学习新事物,构造新事物,programming
  • 面对未知未来,有系统的工作框架
  • 在压力下工作,不被压垮
  • 可以多线程工作,不仅仅指编程,甚至包含市场,销售等等
  • 10-20年经验(想到了什么?outlier)
  • Programmer,那些在大的组织中,也叫programmer,不过,这截然不同
    (page 14)
    技术能力:
  • 编程能力:三种类型语言,C,高阶语言(垃圾回收,一阶函数,闭包...),OO(java/c++/c#/...);数据机构和算法
  • DB(sql),网络编程(tcp/ip),安全,本地化(unicode),内核
  • OS:*nix,widonws,kernel,最好加上嵌入式和微控制器(bsp?)
  • 硬件:(内存架构,现代多处理器架构,通讯,DSP,线程,汇编,编译器)
  • 处理抽象层,硬件
    (page 15)
    其他
  • 工作技能:于人为善,尽心尽力,不畏艰难
                               提出意见,接受决定
                             不要违章,特别是公司的决定
  • 每周一天学习新技能,长久关怀(太难罗)
  • 热爱技术和学习
  • 面对压力
    (page 16)
    技术路线和管理路线(甚或是市场路线):
    (类似于公司的H型发展路线了,所不同的是在公司内在两者上的回报是完全不同的。)
  • 不过记住,从技术-〉管理易,管理-〉技术难(或者说不可能:)
    呵呵,humor附送一个:
  • 管理路线:为那些像成为经理的,并最终失去技术的感觉人准备
  • 技术路线:为那些持续作技术,包括亲手写code,准备做20~40年的人准备
    (page 17)
    三种程序员向往的角色之CTO
  • 只考虑startup快速发展企业中的CTO
  • 角色可以偏向技术也可偏向管理
  • 需要深厚的技术能力和经验,通常是10到20年经验,不过有多年轻的创业者干的很不多
  • 对公司的领域有全方位的,透彻的了解,技术,标准,知识产权,产品,客户,竞争对手等等
  • 人际关系,领导力,组织卓越团队的能力等等
  • 与成熟公司的cto角色很不同
  • 工作时间可能非常长,压力巨大,身心健康很重要

    (page 18)

    产品经理:

  • 这个角色很难找到,市场背景的不能很好的理解产品,一些最好的产品经理都是很优秀的工程师
  • 不过不鼓励工程师在很年轻的时候就转去做产品经理,不过一两门市场课程很好,产品经理这个领域人才短缺

    (page 19)

    项目经理:

  • 今天每个cs学生都梦想的职业,为什么?钱多人傻
  • 甚至一些HUT的教授也认为编程应该让阿三和中国人去做,芬兰人只需要做让人兴奋的设计,规范和项目管理就OK了
  • 那些比你更聪明,工作更努力的阿三和中国人,若干年后也比你更有经验。他们巴不得把那些设计,规范,还有项目管理的重担交掉呢,更别提还有市场啊,销售啊,制造啊,管理啊,所有权啊等等(啊,是的,也许那些以前的项目管理者转换了角色,变成了本地客户的采购者-如果那时这些客户还有钱的话)
  • 那些顶尖的项目管理者应该有很多年的实际工作经验
  • 软件项目里,称职的项目经理非常重要
    (刚好前几天有人问为什么他不太乐意,更愿意自己亲手做,我想page 19,项目经理这一页也许是这个问题答案的一个很好的脚注: )
    (page 20)
    洗净浮华
  • 看透喧闹是重要的
  • 大公司和很好资金支持的startup画大饼的能力是惊人的
  • 不需要认识所有的缩写。(OMG,你认得几个)
  • 大多数技术对于适当基础的人不难掌握
  • 独立思考最重要,不要随大流
    (page 21)
    喊口号:
  • 技术专家需要经验,自由,构想,灵感,激励和财政支持
  • 营销专家和最高管理者努力把这些变成生意
  • 环境应该鼓励成功和承当风险,并回报成功
  • 比任何时候,成功都取决于在合理时间内在技术上实现绝妙构想的专家(快速原型的能力)
  • 每一年我们都需要几十个芬兰人成为顶尖程序员(是的,他说的是几十个,self-esteemed,呵呵)
  • 拍马屁
    (page 22)
    其他人:
  • 仍然需要研发工程师
  • 锻炼多种技能,管理,市场,销售,项目管理等等
    (page 23)
    未来:
  • TB级别的机器成为寻常事,甚至PB机器
    (page 24)
    个人观点:
  • AI的回归
    (这丫的太乐观了,仅仅是速度的提高应该不能改变现状,凡事的转变)
    (不知道算不算创业方向指导,随便列一下吧)
  • 可用的自然语言借口
  • 知识表示和自然语言
  • 智能代理
  • 思维机器(??)
    (OMG,完了,最好自己看原文吧)

     

     

  • 星期一, 九月 14, 2009

    [Geekland]C60之个人往事

    话说兄弟是1997的高考,算起来,十年有奇,早已经是尘封的往事了,不过记忆就是这般奇妙,往往在你不经意间就悄悄的溜了回来。

    1996年的高考化学试题当中就有这样一道让我记忆深刻:

    C60的发现者是当年Nobel化学奖(1996)获得者,而在1996年高考试题中就出现了两道和C60有关的考题。之所以说印象深刻是因为Noble奖,多么深奥的东西,在那些当年还没有经过社会的大染缸的脑袋中,科学仍然是一个终极梦想吧,不过他居然能够让你,一个初窥门径的能够触摸的到。fantasy!

    其次,这个试题反复被老师来说明,C60并没有在高中化学的任何材料中出现过,为了证明高考的素质教育性,还是需要你有一些猜想推理的能力的。

    -----------time passed----------------

    突然有一天,纳米这个词忽然就充斥了你的生活,作为一个被社会大众传播的被毒害者和一个伪科学青年,我知道,就是物质在纳米层次变化会很不同。有什么作用?没有灰尘,不油腻的新型材料,或者是纳米机器人,可以进行微创手术。Am I right?

    可是纳米到底是什么呢?怎么就出来了呢?

    --------------完美的对称----------------

    陆陆续续地在朋友和图书馆看到了这样一套丛书,哲人石丛书,感觉很是不错,就把能买到手的、比较感兴趣的全都买了下来。大约有十几本吧。

    其中的一本是完美的对称-富勒烯的意外发现,差不多连续花了三个下午读完了,依靠着可怜高中化学知识居然读了下来,说句实话,一点也不比情节紧凑,剧情悬疑的科恩兄弟的片子差。

    再一次在细节之中我知道了什么叫做顶尖的科学研究,(上一次是在坎德尔老大的书,追寻记忆的痕迹),听着娓娓道来的历史,你才体验到bagua的快感,原来凡事都有来由,科学家也和国内一样,要争取科研经费,也不知道问题的答案,学生也都在老板的压迫下水深火热,老板们之间也有合作和竞争…大家都是人,传奇原来都是传说来的。

    -----------------C60-----------------

    说了半天了,富勒烯到底是什么呢?原来就是C60,这个完美的球形结构分子。12个五边形和15个六边形构成的足球。当然,如果说纳米科技不全是富勒烯的话,至少可以说纳米科技的引爆点是从纳米碳管开始的,这个碳管,当然也是富勒烯家族的成员了。via wikipedia

    对于纳米或者说化学,我只能勉强理解分子的键价力,化学家的本领是制造有用的东西外,就不能在前进了。不过我对几位科学家角色趣味盎然。

    1996年的Nobe Prize是颁给三个人的,SmalleyKroto,Curl。毫无疑问,Smalley精力充沛,想象力和理论基础都具备,类似与一个Leader的角色。正是他用纸板搭出了Buck ball的足球结构,虽然他一开始认为实验没有必要,同时也不十分热心,不过正是那台他的机器才使得一切成为可能。Kroto是,按照书中的说法,最先并且一直受到富勒宏伟的建筑的影响的,正是他的坚持,才给出了方向,同时也是他的五边形提醒给了Smalley关键的提示,睿智,但是有那么一点优柔,可以看作是导师的角色,他喜爱休斯度的旧书店,并且和Smalley的学生们关系非常好,而Smalley自己,那当然是以严厉著称。Curl虽然不那么突出,但是理论扎实,一直提醒可能的错误。而Smalley的几个学生,据说Smalley一直为Nobel只能颁给三个人而耿耿于怀。

    不过,结果是Smalley和Kroto不欢而散,但是Smalley后来一直致力推广纳米科技,Rice大学也有个以他的名字命名的学院,Smalley Institue,应该是纳米科技的重镇。

    -------------------------------------------

    科学研究的手段很重要,仪器的力量

    灵感来的很快,只需要一周的brain storm就可以了

    团队也很重要

    美丽的事物总是那么简单而又相通

    星期三, 六月 10, 2009

    [Geekland]Reflection之名词害人

    刚刚说了调控Gene的调控Gene,就看到了徐宥老大的这篇讲Smalltalk bagua的文章,其实也就是讲Reflection了。

    ----------------------释义-----------------------------------

    Reflection,现在约定俗成的翻译是反射,怎么都觉着别扭。还不如翻成“镜像大法”呢。当然,想取个有文化的名字,我觉得桑林志老大blog以前的那段注解就是现成的

    桑弧蓬矢

    haha,开个玩笑了。

    我个人觉得这个reflection呢,是带着点揭示的意思,所以要是我的话应该会翻译成揭示,当然也很不好,只有期望那位老大能给出眼前一亮的说法了。

    ---------------------------------------------------------------

    徐宥大大的bagua固然说的好,可惜我等资质鲁顿,我对他下面这段话产生了点疑问:

    关于反射的基本概念在脚本语言里面是屡见不鲜的了. 大家都知道, LISP 里面的 eval 后面可以加任何的字符串, 构造出一个运行时对象. 脚本语言实现反射也很简单: 本来就是解释执行的语言, 多一个 eval 等价于多调用一次解释器而已. 而编译型语言就麻烦了, 因为解释器已经在编译期用过了, 运行的时候解释器是不存在的. 这样, 就造成了编译型语言没有运行时信息这个本质困难.

    疑问来自于我不理解,因为我还没有达到这个层次,幸好徐老大在底下放出了wikipedia的link,研究了半天,先抄一段如下:

    Programming sequences can be classified in one of two ways, atomic or compound. Atomic operations are those that can be viewed as completing in a single, logical step, such as the addition of two numbers. Compound operations are those that require a series of multiple atomic operations.
    A compound statement, in classic procedural or object-oriented programming, can lose its structure once it is compiled. The reflective programming paradigm introduces the concept of meta-information, which keeps knowledge of program structure. Meta-information stores information such as the name of the contained methods, the name of the class, the name of parent classes, and/or what the compound statement is supposed to do. Using this stored information, as an object is consumed (processed), it can be reflected upon to find out the operations that it supports. The operation that issues in the required state via the desired state transition can be chosen at run-time without hard-coding it.

    那么好了,回到开头,这些和调控Gene有什么关系?

    ---------------------------------------------------------------

    上次我说:

    但是且慢,前面我也一再强调了调控Gene也就是类似于程序的东东,准确地说,是程序段。那么合成蛋白质的Gene就是,是的,数据段。

    不过我也说:

    Aha,那是因为还有调控Gene的调控Gene(Wooo递归,My best favorite:)

    调控Gene的调控Gene显然也是程序,那么它是什么呢?也许你已经猜到了,是的,它就是Reflection

    因为从冯·诺伊曼体系角度来说,计算机是程序段和数据段混杂,程序段消费数据段。不过这里程序和数据都是相对的,当程序段消费是另一端程序的时候,这是OK的。

    也许你会说c语言函数指针,不过在Reflection中,那一段作为数据的程序段,它包含的数据信息是它本身(当然,它不仅仅包含这些)元信息,也就是mate-information.

    为虾米徐老大说解释型的语言好实现Reflection,而编译型语言麻烦呢?

    meta-information要想起作用,显然是需要一个context的,不过很不幸,编译型的语言在编译的过程中把这些所谓的meta-infomation消除了,在它运行当中不再需要这些context了,而解释型的语言的解释器无疑就是这种context,这也就是SICP里面所说的environment。这个应该也就是诸如lisp,scheme所谓自解释编译器。

    当然也许你会说在c语言里面我们不是还可以有debug信息,只要没有strip掉,我们不是知道函数的入口地址在什么地方吗?我想这个问题理论可以实现,虽然说不至于象破解人类基因组那么费力,不过这个工作量是巨大的。

    星期二, 六月 02, 2009

    [无题]9875321

    What this? 9875321

    首先,它是一个质数。
    第二,它的各位数字是依次递减的。
    第三,把它的数字逆转过来,变成各位数字递增的1235789,仍然得到一个质数。
    第四,它是满足以上三条性质的数字中最大的一个。via dd
    第五,它是一个在天朝完全合法的数字。
    第六,在数字键盘上输入这个数字,既是用手画出了佐罗记号。

    6+4 = 20

    不得不跳一下了,发现GFW有越来越强的趋势,以前通过proxy还能搞定,不行了

    以前的google阅读器里面还能读到,现在click –> down

    我更新上一篇的时候,不得不通过所谓的在线代理http://www.sneakme.net去更新。

    God demn it.

    *** it.

    星期一, 五月 25, 2009

    [Geekland]Kandel Gene 细胞自动机

    在看Kandel老大的这本,其中说到生物学的一些发展历史。有点意思。


    我们知道克隆技术的依据是每个体细胞都包含完整的DNA序列,每一个。但是长久以来困惑我的是为什么有些细胞的组合就变成了手,而有些就变成了肝呢?而在这本书里我找到了答案,DNA序列可以分成很多段,其中一些包含了合成比如手指表皮细胞所需的蛋白质的信息,当然也包含了合成肝细胞所需的蛋白质的信息。但是为什么有些细胞变成了手指的一部分,另一些则变成了肝细胞呢?原因在于DNA序列里另一段,称为调控Gene,调控Gene的含义就是控制了那些合成蛋白质的DNA段要不要起作用,什么时候起作用。


    怎么,觉得不太明白?简单点说,就是说手指表皮细胞在DNA序列里就指示他要合成为表皮细胞!#$%是不是好像有点循环论证的味道。表皮细胞怎么知道他的细胞核当中DNA那一段关于合成为表皮细胞的序列要被激活呢?OK,调控Gene。但是这段调控Gene怎么知道DNA中我这段要起作用呢?Aha,那是因为还有调控Gene的调控Gene(Wooo递归,My best favorite:)而且这种调控Gene不仅包含结构方面的信息,还包含了时间序列的信息。想想吧,生殖细胞(也就是一个卵子+一个精子)都是单细胞,变成一个所谓的生物,不知道需要多少的细胞分裂。也就是DNA里信息包含了一个完整的生长过程。包括每个时序和结构。Alas多么完美的程序段啊。


    ------------6+4 20-----------------------------


    这几天公司里用到了twiki,做了一次persentation,为了说明格式良好,不小心说了小bagua,古埃及的纸草文字是由语言天才商博良破译的,其中的故事就是埃及文字中一些是表意的符号,一些是表音的符号,两种符号放在一起组成了完整的语言。


    wiki的语法,乃至emacs的org mode,还有html,xml,当然还有TeX,这其中的逻辑关系不言而喻。附送小bagua一个



    1
    1; 1
    2 1
    1  1  1  2
    3  1  1  2
    2  1  1  2  1  3
    what the next sequecne of the number?


    --------------- 5.35 -------------------------------------


    为什么每一个体细胞当中都包含了完整的DNA信息呢?那些不光是合成蛋白质的元数据,还包含了控制这些元数据是否生效,什么时候生效的调控信息呢?OK,因为生殖细胞是单细胞。那么又是为什么进化论会选择单细胞生殖的方式呢?那些异常复杂的,冗长的调控表达DNA序列,在复制过程显然非常容易出错。可以想象,为了达到现今的程度,进化在其中付出的艰苦卓绝的努力。也许Kandel老大在书中一再强调的进化是保守的,或者说“路径依赖”。也或者是遗传需要变异,不过这是缘起还是结果很难说。一起期待生物学家的答案吧。


    ------------------------------------------------------


    不过,令我个人最感兴趣和兴奋的是,CS科学和这一大摞子有什么关联?


    从前面描述的DNA序列的复杂程度上,我还是觉得AI的暂时无前景。但是且慢,前面我也一再强调了调控Gene也就是类似于程序的东东,准确地说,是程序段。那么合成蛋白质的Gene就是,是的,数据段。想想冯·诺伊曼的计算机体系吧:


    (1)把计算机要执行的指令和要处理的数据都采用二进制表示
    (2)把要执行的指令和要处理的数据按照顺序编成程序存储到计算机内部让它自动执行


    DNA的双螺旋结构,四种碱基配对,4进制,DNA序列就是要让细胞自动机执行的程序段+数据段,我们称只为程序的东西。当然这里有点区别,就是细胞自动机只是一个单片机,上面只有一个硕大无比的程序。只有一个main函数,在精子和卵子刚刚结合的时候调用。


    还有什么?别急,随便说一条。DNA序列的metadata,在合成蛋白质的时候发生了什么作用?恩,把运送来的物质合成它要合成的蛋白质。也就是,这些metadata在这里又变成了程序段,


    搞不定的时候,就给他加上一个层。


    -------------------------------------------------------


    正像我以前说的,硅晶文明和炭晶文明是不同的文明,我从来不认为他们之间应该存在什么必然的联系,特别是硅晶应该模仿炭晶的方式,但是。诺伊曼在思考的计算机体系架构的时候,DNA的双螺旋结构甚至都还没有发现呢!


    最近一段时间的阅读体验,让我的观念有所改变,生物学和CS的结合,特别是对于AI的启示,不能肯定的说是一条最优路径,至少是同时也是非常有吸引力的路径。


    -------------------bagua时间 && 此非彼也---------------------------


    当然最近很火的wolframalpha的发布,号称理论依据就是细胞自动机。据称


    “这个产品,就好像针对人类知识所展开的“基因组计划”。而其野心,则有过之而无不及。”


    对细胞自动机理论感兴趣的同学可以看这里( ).