Saturday, November 10, 2007

My second app letter

I wrote this `diary' based on the thought of
"The stranger, the better" :)
Tuesday, Mar 6, 2007 Fine

/* 7:30 AM */ So tired last night! Until 3:00 AM I wrote programs! So late my computer teacher told me that I could take part in that IT competition - only five days I have until to submit my work... I stepped into the school with these complains in my head.
'Good moning, Dr. Yuan!' I raised my head and saw that classmates who on duty standing by the school gate were smiling to me. Suddenly I remembered: I have to teach classmates "Intro. to JavaScript" today. Yet another work...
/* 2:15 PM */ 'Well, today we are going to learn the "JavaScript" programing language, the most misunderstood language in the world. Write down new technical terms, please...' I have used of this after giving about 5 lectures. It is just another type of rest. '...OK, remember, don't analyze a recursion in the view of state-changing, just proof it by applying mathematical induction. OK, I will ask you about why this procedure runs so slowly next time!' However, this "rest" did made me thirsty.
/* 5:30, after school */ I decided to leave tonight, I must go home and complete my work. I had accomplished the regular expression replacement part last night, now I'm considering of the functions defination part, which is the most significant part of the implement of my programing language "Mazy".
'I...I want to leave tonight, Miz Xu.' I sad in a unnatural voice.
'Oh, OK. Well, you plan to write your program as soon as you go home, don't you?'
'Ah, yeah... yes.'
'What about your homework? Try to it at midnight but fall asleep?'
'Maybe...'
'Maybe you can finish it rapidly at school. Concentrate on it. Is it a better plan? In my memory, you haven't leave night-studies at all. By the way, how about your work?'
'It'll be the best.' I left and attended the night-study.
/* 8:00 */ Fortunately, I finished my homework. I used the remainder of the time to teach my two prentices Structure and Interpretation of Computer Programs.
'Ye! Zhou! Have you two done your homework? Sit closer. It's time to learn SICP!' I opened the book.
/* 9:00, way home */ Sky, black sky. Lights, orange light. We, god created. Laughter, we produced. So lucky I am, at least I can laugh with friends. Many adults have no real smile, I known, and I won't be one of them.
'Good luck, Yuan. I have read your Mazy Guide. If you finish it, I'll be the first user!' Ye said to me.

Wednesday, Mar 7, 2007 Dark

/* 3:00 AM */ I think I need some coffee... I have traced this strange bug for two hours - the function that the translater constructed can never be actived. The codes seems right, but the object couldn't be called. I stared at the shell, the characters were dancing... Have I failed?
"If you finish it, I'll be the first user!"
Of course you are. A good programer will never abandon his program, can a man like me who determines to be a computer scientist surrenders to his codes? No pattern match, no static type inference, if such a simple programing language I can't handle, how can I invent a language that superior to Haskell? I was born to win. Redesign this part.
/* 4:00 */ The new function-producing frame works, after I rewrited at least 100 lines codes. Sleep.

-- ZhiHao Yuan

My first app letter

The most CRAZY application letter I had written.
I am a crazy computer science learner, so I decide to apply for MIT (No hope now :).
As a young talented student who be fascinated by the formal semantics of programing languages, compiling principle, functional programing and type system, I had to scheme for my future as any Chinese student else does, to prepare the local university entering examination (GaoKao). But I abjure it, under the reason that most of the people who familiar with me express their opinion that I should enter an abroad university to study with the best students of computer science rather than stay in a local one to wait for to waste my gift. They are right.
In the China-style high school, GaoKao is an exam without computer test, unfortunately, it is the only aim on which students focus. I was learning algorithm and data structure while the useless computer class was teaching how to use Word, I was reading Structure and Interpretation of Computer Programs (SICP, I have done half of exercises in it), my favorite book, while my classmates were preparing endless tests. After school, I chose 4(Haskell, Scheme, JavaScript and Python) of 32 languages I learned to express my thinking on those exercises or implement my own design.
Not only I learn programing languages, but also I research, I invent, I love. Actually, the number of the programing languages that most of Chinese students even who had taken the "professional" programing education can use is less than that I completely analyzed their definition documents*. Among these docs, I attempted to translate the JS definition - ECMA-262 of ECMAScript into Chinese. During the translation, I mat several friends on the Internet, and they suggested many useful advises and helped me to check my works. An international student even taught me some translation skills and kept on to encourage me to continue. Although I had to pause the work because of to prepare the TOEFL/SAT, I did experienced the power of cooperation.
Known of these, I start another program, to create a new programing language**. I had tried to construct a Scheme-like one six months ago without anyone's help, I failed. I chose a syntax that easier to apply regular expressions to interpret it into JavaScript codes instead of one that I must write a lexer manually. I asked my students (a irony truth, I teach three classmates SICP) to comment on the semantics and test programs and my computer teacher to assess its REPL interface. Finally, I completed it. This experience really gave me a great confidence though it is not a challenge to me now.
With these experience and some knowledge of Lambda-Calculus, I decided to turn into a broader academic world rather than stop crouching in my small tech-blog***. I took part in the mail list of Haskell-cafe and build the first functional programing group on the famous Chinese technical website 'JavaEye.com', it has been success. Login the Internet to often turned me into a man of few words in real world, but instead, I achieved so much. We can look for the truth during debating, meet many wise people whom we can learn from a lot. The most significant benefit is, we can rediscovery ourselves. I had known that I do not like Chemistry and I am well at Maths and History, so I was amazing about I like to appreciate artworks, modern art and animation. However, I use major of my online-time to shares knowledge with web-mates, for example, to recommend some books and essays, solve problems and try to design some programing models, e.g.
Through many exchanges with other learners, I aware the appropriate future to me: Attend to MIT, and study computer science with new friends. - That is our wish.


* Definitionary documents of programing languages that I read:
LISP 1.5 Programmer's Manual: John McCarthy
Revised5 Report on the Algorithmic Language Scheme
ECMAScript Language Specification: Standard ECMA-262 2nd
Python Reference Manual: Guido van Rossum

** I name it "Mazy", short for "Math Lazy",
it's an simple Math-syntax-style functional programing language.
Example code, a function returns the length of a list:
len' (ls) =
0, nil
len'(ls--) + 1.
Where ``ls--'' is as same as ``(cdr ls)'' is Scheme.

*** If a Chinese professor can be found in MIT, my cyber-life will be viewable:
About Mazy: (http://www.douban.com/group/topic/1612055/)
My main blog: (http://let-in.blogspot.com)
JavaEye blog: (http://lichray.javaeye.com)
The FP Group: (http://wfp.group.javaeye.com)


-- ZhiHao Yuan