[超级好文章转贴]爱砌积木的孩子

发信人: kyhpudding (家), 信区: Programming
标 题: 爱砌积木的孩子
发信站: 逸仙时空 Yat-sen Channel (Wed May 18 09:08:25 2005), 转信

昨晚热得睡不着的时候写的呵呵
纯水

我的一个从小保持到现在的爱好
砌积木
特别是那种只有基本部件 有一切可能的积木
只需一套 永远也不会玩厌倦

从我在那台小霸王学习机上敲第一个BASIC程序到现在
也十个年头有多了
从初中起 只要能面对电脑 我几乎每天都有写程序
而且从不厌倦 一如我爱玩的积木
现在lego的积木不但可以砌 还可以装上电机和芯片
像机器人一样编程控制
那就更好玩了 可惜偶没米 :-(

在很大程度上 编程和积木都是一样的
在一个只有自己的和它的世界
按照你自己的意愿
把它砌成自己所要的任何形状
不喜欢的时候推倒再来
永远都不会重复 不会厌倦
十年来 或者说二十年来 我都是这么一个爱砌积木的小孩

我的 BASIC 语言几乎都是在小霸王学习机上看着它的用户说明书学的
也没有人教我 学的自然不怎么样
我虽然只能用它算点简单的数 按说明书的例子画点图 弄点声音
但我依然玩得兴趣盎然

初一的时候误打误撞进了信息学竞赛组 开始了科班训练
用的是Pascal语言 在语言能力上本身就比BASIC强了很多
Pascal是一个强大优雅的语言
讲到程序词句的优雅 表达意思的清晰 我觉得没有任何一个语言能及得上它
我们的竞赛训练采用自学的方式 比较自由
正好适合我这种好奇的孩子
如果说是一本正经的授课 我肯定会大打呵欠的
但我对如此有趣而且似乎有着无边的能力的Pascal的好奇心
使得我很快就熟悉了它 并且享受着 Pascal 编程

我们的任务当然是竞赛 说句实话 我对这个并不太感兴趣
我的竞赛训练与其说是为了拿奖 还不如说是满足我的好奇心 让我玩得更好多点
中学的时候有老师的要求 有保送的压力
到大学玩 ACM 就完全是出于兴趣了
有时间的时候到网上做两题 转转脑筋
比赛的时候去凑凑热闹 玩玩而已
但无论怎样 中学的竞赛训练打下了我的编程和算法基础 使我受益终身

中学竞赛训练自由 我不务正业的时候也很多
大部分不务正业的时间 偶都在写游戏
从初学编程的剪刀石头布到井子过三关到赛马五子棋到手指跳舞机黑白棋
写了很多 但还是发现 写游戏程序给我的快乐 大大多于玩游戏

中学的电脑组时光是难忘的
我想什么时候我应该写写中山纪念中学信息竞赛组的故事
当然这就跟技术关系不大了

后来学了C, 比较奇特的是 我是先学 C++ 后学 C 的
C++ 是一个非常复杂的语言 所以那时候小朋友也没办法学透
C让我觉得简洁方便得多
我到现在对C++还是很不熟悉
我对面向对象的观点也有很多不认同 这点散发开去就扯远了 以后再说
现在我写得最多的还是 C 程序

我在高三后的暑假在新华书店淘到了一本"如何求解问题 ---- 现代启发式方法"
(How to Solve It --- Mordern Heuristics) 高三的时候的幼稚和自大达到了顶峰
觉得自己学的数据结构和算法都已经差不多了 没啥新意了 编程语言都跟Pascal 和
C 差不多, 也没啥钻研的兴趣. 这本书让我马上谦虚起来, 就连我看起来如此简单弱
智的 除了深度广度就没啥文章可做的搜索 都有这么多有趣的 我从未知道的东西!
我那点可怜的知识 根本就不值一提. 我的好奇心又上来了, 从此我也更多地了解一些
比较"深"的"理论"的东西 收获很多

从 Pascal 到 C, 甚至到 C++, Java 等语言
对我来说都没有什么震撼性的效果
它们都是过程化的语言 看久了就觉得都差不多 都是熟面孔
让我像当初接触 Pascal 一样兴奋莫名 犹如打开了一个全新世界的大门的语言
只有两个 scheme 和 forth

接触 scheme 是因为找 linux 的资料到了王垠的主页
看他极力推荐 scheme 和 SICP(Structure and Interpretation of Computer Programs)
觉得最不可思议的一点就是: 没有循环语句??!! 这完全超出了我对三大程序结构的
认识. 看他主页上的问题和程序 更是云里雾里

后来忘了到底是什么原因(闲极无聊? 冻坏脑子?)大一的寒假下载了SICP来看
这一看就没法放手了 我用五天时间看完前三章(第四章元语言抽象 可不是这么好懂的)
看这本书 想上面的习题 真的到了废寝忘食的地步
我确实是走进了一个新世界
我学 Tail Recursive, 学 continuation, 学lambda演算
就好象孩子得到了奇妙的新玩具 我感到前所未有的充实

我知道了一个语言能够多么简洁和优美(SICP的序中拿LISP和Pascal作比较, 不但是由于
当时教学普遍使用Pascal, 而且确实至今也找不到第三个能在这方面与它们相较的语言)
我明白了 语言的强大 并不是因为它有多少特性 而是它能有多少特性
跟好的积木一样 scheme能够给你一切可能
(我觉得这一点能够大而化之 所有的计算机系统都是如此
我一直使用 Linux 也是这个原因
UNIX的管道和输入输出重定向功能 把一切强大功能的创作自由 都交给了你
不知是哪一天 看那本"The Design of UNIX Operating System"的时候
突然灵光一闪 明白了这管道啊重定向啊的意思 纷繁复杂的计算机系统
一下变得清晰简单起来 原来就是这么简单的一回事! 原来我可以这么轻易地驾驭它!
这样的感觉学scheme的时候也有过
这种自由和满足 是其他系统无法给予的)
scheme的计算模型是如此的简单 归根结底就是一个 eval 和 apply 的太极
(其实我觉得其他很多语言都是 不过被各种语言特性掩盖起来
也不会像 scheme一样让用户直接调用 会受很大限制)
各种数据穿行其中 犹如天地真气 这就仿佛道生万物
它能完成别的语言所不能完成的魔术一般的运算
eval 和 apply 没有谁比谁更根本 没有谁能脱离谁而存在
如果沿着 eval 和 apply 的计算方向转 将永远没有尽头
这是一件多么奥妙的事!

scheme和SICP也为我解开了我对面向对象方法和C++的困惑
面向对象方法只是一种思想 一种建议 不是编程的一切
在一门语言的特性上去专门支持面向对象 并不是一个好主意
你完全可以用 scheme 来做面向对象编程 用C语言也可以
而你觉得不适合的时候 不会有烦人的语言特性来骚扰你
当别人在研究C++ 研究Java .NET的时候
我把目光投向了简陋的scheme一层一层的括号
ps. 因为玩 scheme, 我还顺便熟悉了 emacs, 到现在 emacs 还是我的首选编辑器.
vim 也有 lisp 模式去处理 lisp 风格的缩进 但是说到跟interpretor方便的集成
还是 emacs 更好, 怎么说 elisp 跟 scheme 还是本家嘛

我接触 forth 是因为要找堆栈计算机的资料
这门语言非常的易懂 却也非常的难懂
我花一个多小时看完了一份基本教程 能够做我平时做的编程
可 forth 决不仅止于此
forth是一个语言 一个解释器 也是一台机器(真有forthCPU的)
forth是forth机的汇编语言 用最简单的语法 两个堆栈 你就能完全地操纵计算机
这是多么的让人惊奇 兴奋 无法遏止的要知道它的一切!
但forth实在是太博大精深了 就好比道德经
区区几千字 但几千年你都读不透
据说forth语言学习者的必修课是写个forth解释器/虚拟机/编译器
能写出来 说明你算是懂forth编程 懂forth的计算模型了
可惜偶至今还没写出来 可能我写出来的时候 这能参透一点 "道" 的奥秘?

就如"Forth禅思"中所说 "我在刚学 forth时, 也是日日怨, 夜夜愁, 直到一年
后发觉自己在写程式时, 口中顺嘴说出的就是程式的句子, 心中凝想者两个堆叠
的上下起伏五半点刻意, 时下意识的自然反应". 在这里 人和机器已经完全结合
在一起 这是一种完全的自由. 图灵梦见自己变成了机器 事后 他说不知是图灵梦见
自己变成机器 还是机器梦见自己变成图灵(语出 The Tao of Programming)
Forth就是这么一台堆栈计算机 在这里它不是隔离着机器和人的高级语言
它就是机器本身 它就是一切 而你做的只是用forth机构造专门解决你的问题的forth机
因此forth机就是你的程序 程序就是forth机
它跟你的思维完全吻合 不知道是你的思维变成了forth机 还是forth机本来就是你的思维
这或许也是编程者所追求的最终境界吧

小时候玩积木 把积木哗地往地上一倒
我就能在那里坐上好几个小时 (现在还有喜欢坐地板的毛病-_-||||||||)
不理大人在干什么 看什么电视 只顾玩自己的
我极少吵着要去哪里玩或者要买什么新玩具
其实我的玩具主要也就是一套套的积木
现在 我回到家 绝大部分时间还是定定地坐在电脑前面编程
别的家长可能担心孩子沉溺游戏 我的父母却问出了这样分特的问题
"你怎么不玩游戏?"
老爹老妈 我怎么才能让你们明白
没有哪种游戏能够比编程这种完全能够自己控制 拥有无限可能的游戏更好玩
就跟积木一样 编程就是我最好的游戏 而且 偶还真沉溺其中了 hoho...

我还是学生 没有生活之忧 我尽情地玩着我最喜欢的游戏
我也知道很多时候编程可不能这么自由自在
就好比积木能随便玩 要你建房子的时候可不能乱来
也看过不少文章 说做coder是吃年轻饭的 做不过30岁云云
coder 跟 programmer 还是有很大的区别的
一个是工业制作 一个是个人的艺术创作
说起艺术创作 又想起了 Knuth 的 "The Art of Computer Programming"
这就是真正的Programmer的境界

我不敢奢望自己有Knuth这么牛
积木是孩童的游戏 编程是年轻人的游戏
也让我老的时候做个老顽童 继续玩我最喜欢的游戏吧

嗯 还是 linus 的那句话
Just for Fun, 不论是对编程还是对这篇水

--
Just for fun

※ 来源:.逸仙时空 Yat-sen Channel bbs.zsu.edu.cn.[FROM: 172.16.85.43]
※ 修改:.kyhpudding 于 May 18 21:49:55 修改本文.[FROM: 172.16.85.43]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值