EKR to Chinese programmer
~ Leo 作者向中国开发者的自述
Leo is OpenSource,written by Python,can run in M$/Linux/MAC/etc. ,Leo is Literate Environment Outline-oriented ;-)
EKR is her father.
BUT, what is “Literate” ,is hard to explained,
i try and try and try to show/share to Chinese People, BUT…
next week,there is another chance for try again, and ask EKR say some abt. self…
So! EKR writed down his colorful life!
I’ve been interested in computers from the time I was about 10 years old.
I studied mathematics at Michigan State University and computer science at the University of Wisconsin, Madison. There I meant my friend and mentor, D.R. (Bob) Fitzwater. Bob encouraged me to focus more on design, less on the “bits”. He died several years ago—he would have enjoyed what has happened since.
When I first learned to program, my programs were “brittle”: changing one part would break another. For several years I wanted to know how to solve this problem.
My first programming job was at IBM in Kingston New York. This was about 1974. I didn’t like corporate culture. The problem was my own immaturity, not the people at IBM. Still, I’m happy I left.
While at IBM I studied the ideas of people like Edsjer Dijkstra and especially the great David L. Parnas. Parnas was writing before languages had classes. In fact, his ideas are the reason that Leo’s classes have remained unchanged in concept even though they have been rewritten many times.
I left IBM after less than a year. For a while I owned a computer store in Madison Wisconsin, where I have lived ever since. The store didn’t turn out too well…
I married Rebecca in 1980, and we have been a happy team ever since. Leo would not have been born without her. Rebecca and I have two children, James and Linda. James is 30, Linda 23.
About this time I started a computer business selling Sherlock, a tracing tool for C programs: https://sourceforge.net/projects/leo/files/Miscellaneous/Sherlock/ I received a patent for it, but the business went nowhere. Sherlock is not needed for tracing Python programs: the pattern used in Leo suffices.
The ideas behind Sherlock really ought to be part of Python’s logging framework. Levels of logging are feeble compared to individually named and targeted logs.
I worked (from home) for about a year for a company called Tuple in Ballard, Washington. I wrote (in C) a very fast optimizing C compiler, assembler, linker and unix-like file system for them. See the CC2 stuff at: https://sourceforge.net/projects/leo/files/Miscellaneous/CC2%20and%20Psyco/
This was before the days of unit tests! At that time, having the compiler compile itself was pretty much how testing was done!
I’ve been a fan of Donald Knuth ever since graduate school. I studied his books about TeX:
Volume A, The TeXbook (Reading, Massachusetts: Addison-Wesley, 1984), x+483pp. ISBN 0-201-13447-0
Volume B, TeX: The Program (Reading, Massachusetts: Addison-Wesley, 1986), xviii+600pp. ISBN 0-201-13437-3
Volume B is written in Pascal(!) and organized (if you can call it that) using Knuth’s WEB system. I studied WEB intensely.
Despite understanding bits and pieces of the 600-page code in volume B, I really didn’t understand the code. I asked myself, why is this so hard to understand? After perhaps 6 months of wondering, the basis of Leo came to me: webs are outlines in disguise. Actually, *all* programs are outlines in disguise.
You can read about the rest of Leo’s history here:
I learned about Python in 2001. I was working on the Python version of Leo on September 11.
Two years ago I got interested in Guido’s keynote about static type checking. I contacted him and started this project:
I spent lots of time learning how to traverse parse trees quickly. That’s not nothing, but it’s only the beginning of the task. Perhaps next year I’ll be able to do for type analysis what I did for traversing parse trees ;-)
And that’s about it. I’ve ever only been interested in programming. I love seeing how other people use Leo, but such excursions are not for me. I remain interested in programming because it has never been easy for me.
I am a mediocre wei chi player, despite many lessons from Yang Yi-Lun 杨以伦, pro 7 dan: https://en.wikipedia.org/wiki/Yilun_Yang I do know enough to appreciate famous games. One of my favorites was played between the two great rivals Go Seigen 吳清源 and Kitani Minoru 木谷 実 on March 20, 1932. Go Seigen won by resignation, despite losing about 25 stones.
I play the piano and take lessons from a great musician, Michael Butkus-Bomier: http://www.michaelbb.info/
I enjoy painting. About 20 years ago I received a black belt in karate.
俺第一份程序猿工作是在1974年进入 IBM (Kingston New York). 俺并不喜欢企业文化,当然问题在俺不在 IBM, 总之很高兴俺及时离开了.
有IBM 俺接触到象 Edsjer Dijkstra 或是 伟大的 David L. Parnas 们的想法.Parnas写的书面语言类, 诱发了 Leo 的类概念无论怎么重写都不会改变!
离开 IBM 快一年时.有一阵子,俺在威斯康星的麦迪逊那儿有个电脑店.事儿并不忙…
1980年,俺同 Rebecca 结婚了,从此有了俺自个儿的快乐团队.如果没有她, Leo 也诞生不出来. Rebecca 和俺有两个娃儿,James 和 Linda. 现在 James 30, Linda 23.
大约这时期,俺开始销售 Sherlock, 针对C程序的追踪工具.: https://sourceforge.net/projects/leo/files/Miscellaneous/Sherlock/
俺拥有相关专科,但是没什么业务.Sherlock 没必要对 Python 程序进行追踪: Leo 足够用了!
俺为华盛顿一家名为”Tuple in Ballard”的公司SOHO 了一年, 写(用C)了些很快的编译器,汇编器,链接器,以及 Unix样的文件系统.参考 CC2: https://sourceforge.net/projects/leo/files/Miscellaneous/CC2%20and%20Psyco/
毕业以来,俺一直是高纳德的粉丝. 学习过他有关TeX 的书.包括:
卷B, TEX:程序（阅读，马萨诸塞州：Addison-Wesley出版社，1986），18+600页。 ISBN0-201-13437-3
B卷是用 Pascal(!) 完成并组织的(甚至于可以调用它),运用了 高纳德的 WEB 系统.俺立即对 WEB 系统着迷了.
尽管对卷B 600多页中散布的代码进行了反复理解,依然一头雾水.俺反问自个儿,有这么难嘛?又过了大约半年, 完成了 Leo 的主要部分后,回过味儿来:
俺在2001 年才学的 Python.同年9月11日开始,就用Python 来构建 Leo 了.
两年前俺关注到 Guido 有关静态类型检查的报告.于是联系上他启动了这个项目:
俺花了大量的时间来学习如何快速遍历语法树.这不算什么事儿,但却是此任务的必然起点. 也许明年俺能基于语法树开展类型分析了 ;-)
[嚓! 王珢的 https://github.com/yinwang0/pysonar2 已经折腾很NB ;-]
是也乎,俺就是对编程感兴趣.俺喜欢见证大家对 Leo 的喜爱, 但是,这不会是俺的一切.俺保持编程的兴趣,因为对俺这从来不是简单的事儿.
俺是名普通的围棋爱好者, 从 Yang Yi-Lun (杨以伦)那儿学了很多, pro 7 dan: https://en.wikipedia.org/wiki/Yilun_Yang
俺能欣赏历史上知名的对弈, 其中最喜欢的是 1932年3月20号 吳清源 同 木谷 実(Kitani Minoru)的对战.尽管少了25颗棋子,但吳清源最终赢了!
俺也弹钢琴,并学习了伟大的 Michael Butkus-Bomier 的课程: http://www.michaelbb.info/