思立's profile我不是柠檬BlogListsGuestbookMore Tools Help

Blog


    May 24

    Programmer Competency Matrix(zt)

    http://www.indiangeek.net/wp-content/uploads/Programmer%20competency%20matrix.htm

    Programmer Competency Matrix

    Note that the knowledge for each level is cumulative; being at level n implies that you also know everything from the levels lower than n.
    Computer Science
     2n (Level 0)n2 (Level 1)n (Level 2)log(n) (Level 3)Comments
    data structuresDoesn't know the difference between Array and LinkedList Able to explain and use Arrays, LinkedLists, Dictionaries etc in practical programming tasks Knows space and time tradeoffs of the basic data structures, Arrays vs LinkedLists, Able to explain how hashtables can be implemented and can handle collisions, Priority queues and ways to implement them etc. Knowledge of advanced data structures like B-trees, binomial and fibonacci heaps, AVL/Red Black trees, Splay Trees, Skip Lists, tries etc.
    algorithmsUnable to find the average of numbers in an array (It's hard to believe but I've interviewed such candidates) Basic sorting, searching and data structure traversal and retrieval algorithms Tree, Graph, simple greedy and divide and conquer algorithms, is able to understand the relevance of the levels of this matrix. Able to recognize and code dynamic programming solutions, good knowledge of graph algorithms, good knowledge of numerical computation algorithms, able to identify NP problems etc. Working with someone who has a good topcoder ranking would be an unbelievable piece of luck!
    systems programmingDoesn't know what a compiler, linker or interpreter is Basic understanding of compilers, linker and interpreters. Understands what assembly code is and how things work at the hardware level. Some knowledge of virtual memory and paging. Understands kernel mode vs. user mode, multi-threading, synchronization primitives and how they're implemented, able to read assembly code. Understands how networks work, understanding of network protocols and socket level programming. Understands the entire programming stack, hardware (CPU + Memory + Cache + Interrupts + microcode), binary code, assembly, static and dynamic linking, compilation, interpretation, JIT compilation, garbage collection, heap, stack, memory addressing...
    Software Engineering
     2n (Level 0)n2 (Level 1)n (Level 2)log(n) (Level 3)Comments
    source code version controlFolder backups by date VSS and beginning CVS/SVN user Proficient in using CVS and SVN features. Knows how to branch and merge, use patches setup repository properties etc. Knowledge of distributed VCS systems. Has tried out Bzr/Mercurial/Darcs/Git
    build automationOnly knows how to build from IDE Knows how to build the system from the command line Can setup a script to build the basic system Can setup a script to build the system and also documentation, installers, generate release notes and tag the code in source control
    automated testingThinks that all testing is the job of the tester Has written automated unit tests and comes up with good unit test cases for the code that is being written Has written code in TDD manner Understands and is able to setup automated functional, load/performance and UI tests
    Programming
     2n (Level 0)n2 (Level 1)n (Level 2)log(n) (Level 3)Comments
    problem decompositionOnly straight line code with copy paste for reuse Able to break up problem into multiple functions Able to come up with reusable functions/objects that solve the overall problem Use of appropriate data structures and algorithms and comes up with generic/object-oriented code that encapsulate aspects of the problem that are subject to change.
    systems decompositionNot able to think above the level of a single file/class Able to break up problem space and design solution as long as it is within the same platform/technology Able to design systems that span multiple technologies/platforms. Able to visualize and design complex systems with multiple product lines and integrations with external systems. Also should be able to design operations support systems like monitoring, reporting, fail overs etc.
    communicationCannot express thoughts/ideas to peers. Poor spelling and grammar. Peers can understand what is being said. Good spelling and grammar. Is able to effectively communicate with peers Able to understand and communicate thoughts/design/ideas/specs in a unambiguous manner and adjusts communication as per the context This is an often under rated but very critical criteria for judging a programmer. With the increase in outsourcing of programming tasks to places where English is not the native tongue this issue has become more prominent. I know of several projects that failed because the programmers could not understand what the intent of the communication was.
    code organization within a fileno evidence of organization within a file Methods are grouped logically or by accessibility Code is grouped into regions and well commented with references to other source files File has license header, summary, well commented, consistent white space usage. The file should look beautiful.
     2n (Level 0)n2 (Level 1)n (Level 2)log(n) (Level 3)Comments
    code organization across filesNo thought given to organizing code across files Related files are grouped into a folder Each physical file has a unique purpose, for e.g. one class definition, one feature implementation etc. Code organization at a physical level closely matches design and looking at file names and folder distribution provides insights into design
    source tree organizationEverything in one folder Basic separation of code into logical folders. No circular dependencies, binaries, libs, docs, builds, third-party code all organized into appropriate folders Physical layout of source tree matches logical hierarchy and organization. The directory names and organization provide insights into the design of the system. The difference between this and the previous item is in the scale of organization, source tree organization relates to the entire set of artifacts that define the system.
    code readabilityMono-syllable names Good names for files, variables classes, methods etc. No long functions, comments explaining unusual code, bug fixes, code assumptions Code assumptions are verified using asserts, code flows naturally - no deep nesting of conditionals or methods
    defensive codingDoesn't understand the concept Checks all arguments and asserts critical assumptions in code Makes sure to check return values and check for exceptions around code that can fail. Has his own library to help with defensive coding, writes unit tests that simulate faults
     2n (Level 0)n2 (Level 1)n (Level 2)log(n) (Level 3)Comments
    error handlingOnly codes the happy case Basic error handling around code that can throw exceptions/generate errors Ensures that error/exceptions leave program in good state, resources, connections and memory is all cleaned up properly Codes to detect possible exception before, maintain consistent exception handling strategy in all layers of code, come up with guidelines on exception handling for entire system.
    IDEMostly uses IDE for text editing Knows their way around the interface, able to effectively use the IDE using menus. Knows keyboard shortcuts for most used operations. Has written custom macros
    APINeeds to look up the documentation frequently Has the most frequently used APIs in memory Vast and In-depth knowledge of the API Has written libraries that sit on top of the API to simplify frequently used tasks and to fill in gaps in the API E.g. of API can be Java library, .net framework or the custom API for the application
    frameworksHas not used any framework outside of the core platform Has heard about but not used the popular frameworks available for the platform. Has used more than one framework in a professional capacity and is well-versed with the idioms of the frameworks. Author of framework
     2n (Level 0)n2 (Level 1)n (Level 2)log(n) (Level 3)Comments
    requirementsTakes the given requirements and codes to spec Come up with questions regarding missed cases in the spec Understand complete picture and come up with entire areas that need to be speced Able to suggest better alternatives and flows to given requirements based on experience
    scriptingNo knowledge of scripting tools Batch files/shell scripts Perl/Python/Ruby/VBScript/Powershell Has written and published reusable code
    databaseThinks that Excel is a database Knows basic database concepts, normalization, ACID, transactions and can write simple selects Able to design good and normalized database schemas keeping in mind the queries that'll have to be run, proficient in use of views, stored procedures, triggers and user defined types. Knows difference between clustered and non-clustered indexes. Proficient in use of ORM tools. Can do basic database administration, performance optimization, index optimization, write advanced select queries, able to replace cursor usage with relational sql, understands how data is stored internally, understands how indexes are stored internally, understands how databases can be mirrored, replicated etc. Understands how the two phase commit works.
    Experience
     2n (Level 0)n2 (Level 1)n (Level 2)log(n) (Level 3)Comments
    languages with professional experienceImperative or Object Oriented Imperative, Object-Oriented and declarative (SQL), added bonus if they understand static vs dynamic typing, weak vs strong typing and static inferred types Functional, added bonus if they understand lazy evaluation, currying, continuations Concurrent (Erlang, Oz) and Logic (Prolog)
    platforms with professional experience1 2-3 4-5 6+
    years of professional experience1 2-5 6-9 10+
    domain knowledgeNo knowledge of the domain Has worked on at least one product in the domain. Has worked on multiple products in the same domain. Domain expert. Has designed and implemented several products/solutions in the domain. Well versed with standard terms, protocols used in the domain.
    Knowledge
     2n (Level 0)n2 (Level 1)n (Level 2)log(n) (Level 3)Comments
    tool knowledgeLimited to primary IDE (VS.Net, Eclipse etc.) Knows about some alternatives to popular and standard tools. Good knowledge of editors, debuggers, IDEs, open source alternatives etc. etc. For e.g. someone who knows most of the tools from Scott Hanselman's power tools list. Has used ORM tools. Has actually written tools and scripts, added bonus if they've been published.
    languages exposed toImperative or Object Oriented Imperative, Object-Oriented and declarative (SQL), added bonus if they understand static vs dynamic typing, weak vs strong typing and static inferred types Functional, added bonus if they understand lazy evaluation, currying, continuations Concurrent (Erlang, Oz) and Logic (Prolog)
    codebase knowledgeHas never looked at the codebase Basic knowledge of the code layout and how to build the system Good working knowledge of code base, has implemented several bug fixes and maybe some small features. Has implemented multiple big features in the codebase and can easily visualize the changes required for most features or bug fixes.
    knowledge of upcoming technologiesHas not heard of the upcoming technologies Has heard of upcoming technologies in the field Has downloaded the alpha preview/CTP/beta and read some articles/manuals Has played with the previews and has actually built something with it and as a bonus shared that with everyone else
     2n (Level 0)n2 (Level 1)n (Level 2)log(n) (Level 3)Comments
    platform internalsZero knowledge of platform internals Has basic knowledge of how the platform works internally Deep knowledge of platform internals and can visualize how the platform takes the program and converts it into executable code. Has written tools to enhance or provide information on platform internals. For e.g. disassemblers, decompilers, debuggers etc.
    booksUnleashed series, 21 days series, 24 hour series, dummies series... Code Complete, Don't Make me Think, Mastering Regular Expressions Design Patterns, Peopleware, Programming Pearls, Algorithm Design Manual, Pragmatic Programmer, Mythical Man month Structure and Interpretation of Computer Programs, Concepts Techniques, Models of Computer Programming, Art of Computer Programming, Database systems , by C. J Date, Thinking Forth, Little Schemer
    blogsHas heard of them but never got the time. Reads tech/programming/software engineering blogs and listens to podcasts regularly. Maintains a link blog with some collection of useful articles and tools that he/she has collected Maintains a blog in which personal insights and thoughts on programming are shared
    Thanks to John Haugeland for a reformatting of it that works much more nicely on the web.

    April 17

    我是叫兽饭

    最近项目很无常,三天一小便,五天一大便,心情也比较纠结. 上帝啊,给我指条明路吧,我成功之后一定会每年供奉一只鸡来孝敬你老的.    



    March 25

    人生无常

    无论我看什么情节曲折的戏剧,都不会吃惊。因为人生本身,比任何戏剧,都要曲折,都要讽刺。
    March 03

    我知道你们都没有听宝宝的话

    温家宝:因此,我非常希望提倡全民读书。我愿意看到人们在坐地铁的时候能够手里拿上一本书,因为我一直认为,知识不仅给人力量,还给人安全,给人幸福。多读书吧,这就是我的希望。
    链接
    PS:关于没文化真可怕的案例,请见今年奥斯卡大热电影<朗读者>。

    February 21

    The Curious Case of Benjamin Button里一段喜欢的台词

    Benjamin写给他女儿的信
     
    For what it's worth: it's never too late or, in my case, too early to be whoever you want to be. There's no time limit, stop whenever you want. You can change or stay the same, there are no rules to this thing. We can make the best or the worst of it. I hope you make the best of it. And I hope you see things that startle you. I hope you feel things you never felt before. I hope you meet people with a different point of view. I hope you live a life you're proud of. If you find that you're not, I hope you have the strength to start all over again.
     
    一件事无论太晚,或者对我来说太早,都不会阻拦你成为你想成为的那个人。这个过程没有时间的期限,只要你想,随时都可以开始。要改变或者保留原状都无所谓,做事本不应该有所束缚。我们可以办好这件事却也可以把它搞砸,但我希望最终你能成为你想成为的那个人。我希望你有时候能驻足于这个令你感到惊叹的世界,体会你从未有过的感觉,我希望你能见到其他与你观点不同的人们,我希望你能有一个值得自豪的一生。如果和你想象的生活不一样,我希望你能有勇气,重新启程。
    January 25

    牛年快乐

    祝自己,和我家领导,和所有的朋友,Happy 牛 year!!!
    January 21

    人为什么会抑郁?

    可能答案与此相关--越舒适 越抑郁
    January 16

    昨天年会

    居然有人弹唱<梵高先生>,不过只唱了一小段,还把“父亲”改成“爱情”了,一下子就成了格调低下的低俗歌曲。

    梵高先生  来自   李志 

    谁的父亲死了
    请你告诉我如何悲伤
    谁的爱人走了
    请你告诉我如何遗忘

    我们生来就是孤独
    我们生来就是孤单
    不管你拥有什么
    我们生来就是孤独

    让我再看你一眼
    星空和黑夜
    西去而旋转的飞鸟

    我们生来就是孤独(反复)

    January 05

    我身上这个死毛病太严重了

     Procrastination的形成
            
      1. 一个人认为自己5天之内可以做完一件事情,所以在离deadline还有15天的时候一点不着急,直到最后只剩5天了才开始。
            
      2. 这种紧迫感和焦虑往往促发人的斗志,会让自己觉得,自己只有在压力状态下才有做事情的状态。
            
      3. 最后拿到成绩的时候,成绩往往不是很差,这样子就强化了自己最适合在deadline之前短期高压的状态下工作的心态,并且对以后的行为不断进行自我暗示。
            
      这一个部分写得非常符合大部分有拖沓习惯的中国学生的经历。因为中国学生往往非常聪明,所以哪怕最后只剩一点点时间了,也会完成得不错;从而自认为自己最适合这样子的工作状态。周而复始,反复循环。
      
      
      Procrastination的其他特点
            
      1. 没有自信。因为每次完成任务都达不到自己最高的能力,对自我能力的评估会越来越低。
      2. 我太忙。我一直拖着没做因为我一直很忙。
      3. 顽固。你催我也没有用。我准备好了自然会开始做。
      4. 操控别人。他们着急也没用,一切都要等我到了才能开始。
      
      5. 对抗压力。因为每天压力很大,所以要做的事情一直被拖下来。
      
      6. 受害者心态。我也知道自己怎么会这样,别人能做得自己做不到。
      
      
      
      Procrastination的浅层原因
            
      
      1. 太难
      
      2. 太耗时间
      
      3. 没有相关知识技能
      
      4. 害怕别人知道自己做不好
      
      
      Procrastination深层原因,以及解决方法
            
      
      1. 完美主义。所有事情都要达到一个很高的境界,要一次做好,所以不愿意匆匆忙忙开始,要万事俱备才行。解决方法:对自己说现在的状态就已经很好,可以开始 了。每有一点进展都鼓励自己。意识到一点错误都不犯是不可能的。伟大的作家,诗人,艺术家都是断断续续完成他们的杰作的,自己也可以如此。
      
      
      
      2. 抵制与敌意。这个老师对我态度太差了,所以我不高兴作他布置的作业。解决办法:要意识到,不完成作业受害的是自己。不能仅仅因为一个老师的态度而影响到自己的前途。
      
      
      
      3. 容易颓废。任务太难了,或者别人都不需要做我干吗要做,不能忍受持续做这件事情,等明天再做吧。但是往往明天到了,心里还是不高兴做,又继续往后推。解决 办法:寻找一切可以找到的帮助,设法降低事情的难度,取得进展;暂时推迟自己想要放弃的心态,每天能多做一点就多做一点。这一点也很符合很多中国学生的现 状。因为不是人人都对自己的课题感兴趣的,所以容易产生厌倦感,所以不容易定下心来完成相关任务。解决的办法如上所说,向别人寻求帮助,听取建议,同时可 以把任务分成比较容易的小块,化整为零,告诉自己其实每一个小部分都很容易就能完成。
      
      
      
      4. 自我贬低。如果常常不能很好地完成任务,自己对自己的能力的估计会越来越低,即使以后完成好了,也认为是运气。解决办法:接受别人对自己工作的赞扬;自己对自己进行勉励。
      
      
      
      治疗的步骤:
      
      1. 意识到自己的拖沓是完全没有必要的。
      
      2. 把拖沓的原因一条条写出来
      
      3. 一条条克服这些原因
      
      4. 开始做事
      
      本文译自 Procrastination: Ten Things To Know 。
      
      
      
      拖拉是阻碍个人成功的绊脚石,却时常出现在我们左右。
      
      作者是两位对拖拉 (Procrastination) 进行研究的心理学教授,希望大家能从中有所收获,
      译者MetalDudu@Blog
      
      
      
      1. 百分之二十的人认为自己是长期拖拉的人。对他们来说拖拉是一种生活方式,虽然并不适应它。这种状态充满了他们的生活。他们不能按时付帐单,他们忘了买音乐会的门票,他们直到圣诞前一天才去买礼物……
      
      
      
      2. 拖拉并非不重要,虽然通常我们不把它当作一个严重问题。它其实是一个自我调节的深奥问题。通常我们都宽容别人拖拉的借口,这也是问题的根源。
      
      
      
      3. 拖拉并不是时间管理或者计划方面的问题。拖拉并不因个人对时间的估计能力而不同,虽然这些人会更乐观一些。Ferrari 博士强调说:“要一个拖拉的人做一个有计划的人,就像让一个长期消沉的人马上振奋起来一样。”
      
      
      
      4. 拖拉不是天生的。它是从周围的人学来的,但并不直接。它可能来自强权的家教,拖拉甚至可能是一种反抗的形式。这种家庭环境下,朋友对拖拉者的宽容会助长这种习惯。
      
      
      
      5. 拖拉的饮酒者会有更高的酒精需求量。拖拉的人会喝的更多,这是自我调节有问题的表现。
      
      
      
      6. 拖拉的人对自己撒谎。比如“我更想明天做这件事”,或者“有压力我才能做好”,但实际上并非如此。拖拉者的另一个谎言是时间压力会让他们更有创造力,其实这只是他们的感觉而已,他们是在挥霍时间。
      
      
      
      7. 拖拉的人不断找消遣的事儿,特别是自己不需要承诺什么。查看电子邮件就是绝佳的目标,这样的事情成为他们调节情绪(比如害怕失败)的一个途径。
      
      
      
      8. 拖拉并非一模一样。拖拉的人有不同的原因,Ferrari 博士定义了三种基本的拖拉者:
      
      * 鼓励型,或者说找刺激型,他们盼着最后几分钟忙碌带来的快感
      
      * 逃避型,他们回避失败的恐惧,甚至害怕成功,但实际上他们非常关心别人怎么看自己,他们更希望别人觉得他不够努力而不是能力不足。
      
      * 决心型,他们没法下决心。不下决心就可以回避对应对事情的拖拉。
      
      
      
      9. 拖拉带来的损失巨大。健康是其中之一,研究表明拖拉的人更容易患病。拖拉也影响人的情绪,也会破坏团队协作和人际关系。
      
      
      
      10. 拖拉会改变人的行为,但不会耗费多少精神力量。这并不意味着一个念头就能马上改变。这个问题可以通过高度规范的认知行为治疗来解决。
      对行事拖拉的人进行劝诫就如同让抑郁症患者高兴起来那么困难。”法拉利教授认为,劝导对拖拉症患者来说作用微乎其微,关键还是要靠自己下定摆 脱拖拉惯性的决心,这需要很大的精神动力才能完成。试着结合以下10个窍门,可能会更容易一些。记住,每达到其中一项,你就离成功进了一步。
      
      
      
      
      
      明日复明日 “拖延病”的处方
      
      
      
      case 1:我经常担心事做的不够完美。但尽力做了完美主义者,可做事的效率不是很高。经常接到任务以后,心里想的是尽快完成,可总是一拖再拖。为什么?
      
      →病名:担心引起的拖延病。
      
      →处方:总想把事情做的完美一些,但压力越大就越担心做不好事迟迟不敢付出行动。总是把万事的结果定为,不是成功就是失败、只要作错了一点,做的再好也都是错的。出了事就算不是自己的责任也会揽到自己身上。
      
      首先得醒悟“自找担心”是多么消极的事情。
      
      假如,在准备报告时,最初就能写出完美的报告是不可能的。一定会有一些偏差也有理论上说服力较小的地方。所以,完美是不存在的。追寻一下到现在为止你所做过是事有多少事是完美的,一定没有特别完美的事。但一定也没耽误什么事。
      
      
      
      case 2:一旦接到什么任务总会担心“我一定能做好吗?做错了教授会不会责备我?”在想这些的时候时间已悄悄溜走了。
      
      →病名:自我指责的拖延病
      
      →处方:对过去一些失败的记忆会变成一种压力。想治好自我指责的病,可以把责任都推托到别人身上。不要因为善良的自卑感而把一切问题都自己 扛。这样只会让你的自信心下降。轻视自己之前先把责任都推到别人身上吧!然后,用另一种方式解释自己的失败。比如:在小组功课中有了一个好的创意。但因为 没有时间,结果在报告中露掉了。在这种情况发生的时候,如果是自我指责的人就会想:“哎!因为没有发表这个创意,以后教授知道了会不会扣我的学分呢?”取 代上面想法的应该是“我真了不起,能有这么好的创意。”或“下次写报告时用就可以了。那一定比这次轻松多了。”
      
      
      
      case 3:我特别的执着,一旦问题袭来的时候就感到不安和急躁。问题解决之前做不好任何事情。
      
      →病名:执着引起的拖延病
      
      →处方:“怎么会这样?”“到底那时候为什么那么做?”即使在过去的事情里找原因也不会有什么改变。澄清一件事也解决不了问题。因为事情是由 几种因素合成的。什么时候才能把事情一一都弄清楚呢?在公司写企划案的时候写不好的原因也有很多种。期限太短或过去写过一次结果被上司责骂了一顿,留下了 创伤。还有就是还没找到资料等等。澄清问题对以后没有任何帮助。所以,要往可以解决问题的方向行动。做企划案时应该想:“这次应该跟其他公司比较着做看看 了。”如果这样想着行动的话一定有效。
      
      
      
      case 4:我总是没有自信,怎么努力也改不了。为了从苦海中摆脱出来看过不少有关的书籍但都徒劳无功。因为没有自信做起事也不顺利。不知道能不能改变一下这样的我。
      
      →病名:封闭自我印象引起的拖延病
      
      →处方:在苦恼的边缘走不出来的人是因为被自己错误的想法封锁住了。一定要从误区的牢笼里走出来。为了打破错误的想法扪心自问一下自己“假 如,我是能做到○○事的人,应该先想些什么?先做些什么?”假如,做报告的时候,因为忙于某些事迟迟没做出来。这时,应该想“如果我是个做报告的能手,应 该先做什么事呢?”考试成绩不好,但还得向父母交代的时候应该想“假如,我是个成绩不好,但能向父母主动表白的人,应该先做什么事?” 想这些问题的时候,不能用太长的时间。第一个想到的就是正确答案。所以直接实第一个想法就可以了。
      
      
      
      case 5:我在所有决定中没有自信。当决定了做某件事的时候,往往因为不确定是对的还是错的而烦恼。这样一来事就一拖再拖。不是因为我懒,而是因为每次都不能付出行动。所以人们都说我办事的效率不高。
      
      →病名:不安感或懒惰引起的拖延病
      
      →处方:你在想自己的想法对不对那是因为“为了想这个办法用了那么长时间,付出了那么大的努力,但要是失败了怎么办?就不就功亏于溃了吗?” 因为这些不安感一直浮现在脑海里。所以不想做任何事情。假如,要学习但桌子很乱找书都很不容易。明知道应该收拾一下,但怕麻烦迟迟不行动。这时候,父母要 唠叨个不停,就有了叛逆的心理更是不收拾。这时你应该冷静下来好好想一想。是打扫一下好还是睁一只眼闭一只眼过的好。然后再决定。把最初的想法扭转过来很 难,但一旦习惯了就觉得行动比拖延更轻松。
    December 31

    2008年马上过去了

    2008年到来之前,总觉得这一年会很惊天动地,但是当它结束之时,觉得虽然很多事,但是于自己的影响有限。希望2009里,自己和身边每一个人都可以过得幸福,而不是被越来越可怕的大环境所影响。
    希望自己过上一种平静而专注的生活,不像现在这么浮躁。完成自己的梦想,而不是畏缩不前。
    December 12

    金图

     

    来自:http://yuanlairumeng.blog.sohu.com/106319232.html
    December 05

    金句

     I learned this, at least, by my experiment: that if one advances confidently in the direction of his dreams, and endeavors to live the life which he has imagined, he will meet with a success unexpected in common hours. -梭罗
    November 21

    少壮时宜念造化之主

    人怕高处,路上有惊慌;杏树开花,蚱蜢成为重担;人所愿的也都废掉,因为人归他永远的家,吊丧的在街上往来。 —— 《旧约·传道书》

    November 18

    记一个奇怪的人

    每次回家,我都喜欢去定王台看看。虽然不买书,因为再背回上海很累很麻烦。但是就这么看看,感觉也不错。

    昨天下午,先帮别人看了下电脑行情,就顺便去定王台了。

    我在一家小店里,顺便抽了本编译器工程在看。这时旁边有一个中年人,指着Knuth那套<The art of computer programming>问,这个书一套一共几本,老板没有听到,站在旁边的我便代答了,我说就这三本.然后他说要中文版,英文的他看不懂,老板说没有。这时我对他说,老伯这个书很难的,你要学编程可以看那边的基础书。他说他儿子有套英文版的,所以他也想学一下。“你会作曲么?“他问,我当然说不会,他接着就得意的说,“高手写程序都和搞艺术的一样,这个书就是讲艺术的,那些高手啊,牛人啊,都是艺术家。”“你懂汇编么?”他接着问,我点点头,他更加得意的说,“汇编最重要,计算机就是汇编,你想那个超级玛利,就是用汇编写的,那个就是艺术。多么好玩啊,特别是那个音乐......“

    他又问些杂七杂八的东西,比如我做什么的之类的,我先是硬着头皮作答,然后不胜其扰,只好换到另一家店看,结果又撞见了他。他又在问老板<The art of computer programming>的中文版,见到我,就顺手从书架上拿起一本分布式系统的书,问我懂不懂,我摇头,他又说开了,说什么中国军队和美国军队在计算机技术上差距巨大,“差了几十年啊”,他很痛心的样子,“我们的雷达根本不如它们,这里不知道有讲雷达的书么?“,他还做一番自我介绍,说自己是电业局退休的,我心里想电业局应该很舒服啊,还有这样的学习精神,真是不错啊。

    最后我还是决定不听他说了,动身走人,他也走了,扔下一句你这小孩还不错啊。我想大概是我坚持着听完了他说的那些话吧。


     

    November 12

    公交车笑话

              一天在公交车上,由于拥挤一男一女发生了碰撞。
        时髦女郎回头飞眼道:“你有病啊?”
        男子觉得莫名其妙回道:“你有药吗?”
        车上人窃笑!
        女子觉得生气回道:“你有精神病啊?”
        男子冷面对道:“你能治啊?”
        全车人爆笑!
        公交司机停车,趴在方向盘上大笑!
       这是珠江路上上班的朋友遇见的
         公交车上超挤,有一女人站在门口,
        从车后面挤过来一个GG要下车,
        跟那女的说了一句“让一下,下车”,那个女滴木有动。
        GG挤过去时就踩到她了。
        结果那女人好厉害的,不停的骂“神经病啊你!神经病啊你!~~”,还超大声,搞得全车都看呀。
        GG一直木有说话,下车时忍不了了,回头对那女人说,“复读机呀你!”
        全车人暴笑~!
        后边有几个搞笑的小孩,不停的伴演刚才的一幕,
        甲说“你神经病呀你!。。。。。乙说“你复读机呀你”。。。。。。
        全车人暴笑~!
        后来,有个小MM也要下车,挤过去怯怯滴说“偶~偶~偶想下去,偶不是神经病~!”
        全车人再次暴笑~!
        那个女人木有说话,可是从边上飘来一句话“你是不是没电了”
        全车人暴笑不止~!
    November 05

    意外

    雀巢咖啡里混上雀巢冰爽茶,居然味道不错.甘甜与苦涩,被笼罩在这片阴霾的天空下,构成了这个无聊的下午.

    于是想起一句诗,姑且算是诗吧.
     
    但是冷,但是还不算太冷
      但是有风,但是意料之中  -- By 饭饭 <养猪日记>