送给爱雪的孩子“柯西雪花”–还是《写给下一代的电脑工程师》

331,东北(辽宁地区)下了一场雪,小保尔在外公家度假刚好赶上这场雪。小保尔的外公打电话回来给我们说:小保尔看到下雪了,高兴得跑出去玩雪;他说雪花很大,“象假的一样大”。

可惜春天的雪花落到地上就融化掉了。小保尔玩不成雪,很失望……


小保尔:爸爸送你“柯西雪花”怎么样?

因为刚好上一次说过要给你讲一讲Basic语言,所以这次爸爸就用Basic语言给你做“柯西雪花”(Koch又译:柯克雪花)。

先上图:

http://dongren.cn/NextProgramers/Koch/koch2snow2.gif

Koch Snows1

 

 

“柯西雪花”漂亮吗?

作图、学习语言、和编写程序的道理其实相通的呢。那就是一笔一笔的画,一句一句的学和一行一行的写呀。以后记得吃东西也要这样子,要一口一口的吃哦。

 

小保尔,西方人讲事情喜欢直奔主题,而我们中国人喜欢含蓄,还喜欢从源头讲起,最后再“画龙点睛”哦!介绍有关Basic和谭浩强(老师)的故事今天我们话说从头好吗?

 

BASIC[1]Beginner’s All-purpose Symbolic Instruction Code,初学者指令符号编码),意思就是初学者”使用的计算机语言。

小保尔,中国人介绍一个人首先会从他的年龄开始,谭浩强老师1934年生人,你算算他今年(2009)已经有多大年纪了?对了,他比你爷爷还大十多岁呢。所以对于你来讲,你可以叫谭爷爷了(按中国人的习惯)。

谭浩强是我(Baoba)的老师哦,因为我的Basic语言就是从他的书上学来的;虽然我没有面对面上过谭浩强的课,但我们有句古话(老师说的)是说:“三人行,则必有我师”哦。

虽然Mr.谭写了很多计算机(尤其是计算机语言)的教材,教过很多学生。但是即便如此,关于谭老师也有负面的说法哦(你知道名人、明星很少人可以做到没有丑闻的,这个也属正常,对吧?)。比如就有人说:他写的BASIC是在毒害青少年。

小保尔,你只听说过黄色小说能毒害青少年,怎么BASIC语言也会毒害青少年呢?原来,他们的观点是:BASIC是非结构化语言,学了以后,养成不好的习惯,学了还不如不学。第2:BASIC太简单,功能不够强大,学了也没有什么用。

以上是有些人的观点,这两个观点不代表别的电脑工程师和程序员,也不代表我的观点。我告诉你啊小保尔,BASIC语言的非结构化问题早已经解决了,现在大家用的BASIC语言(尤其是你用到的VB.Net)几乎都是第三代结构化的BASIC了。
至于另外一个瞧不起BASIC的理论:BASIC太简单,功能不够强大,学了也没有什么用。让我来讲一讲谭老师说过的比喻来驳斥这种观点吧:小保尔都知道的,在大马路上有各种各样的汽车;它们包括公共汽车、小汽车、大卡车、三轮车、自行车,摩托车…… 哪种车最好?公物人员(尤其是大领导)们会说小汽车最好,因为它既快又舒服;公交部门说,公共汽车最好,因为它载客量大,能减少交通拥挤的程度;搬家公司说,大卡车最好,装东西最多;老百姓(比如进城里打工的“打工仔”)会说,我骑自行车上班最好、最便宜,不用买汽油,大街小巷都能走。如果领导们有了小汽车,就要取消自行车,大家肯定会不高兴,对吗?因为他脱离了实际,脱离了国情,没能符合普通人的习惯。

老师的第一本计算机教育的书(处女作)BASIC语言》一书发行量超过1200万册,创科技书籍发行量世界纪录。这本书直到现在仍在以每年30万册至40万册的速度增加。谭浩强一生(到现在为止将近一生哦)一共写了一百多本计算机的书,总(发行)量超过2200万册。所以说:在中国计算机界谭浩强老师的学生最多,懂计算机的人很少不知道谭浩强这个名字。

现在你也知道了Mr.谭哦,小保尔。你佩服这样的人吗?如果是的话,那就好好学吧。

 

至少在下一次,在《我的朋友小海龟》这篇文章里你还要继续和这个Basic打交道,让你们领教一下Basic的强大威力吧!

最后不要忘记要自己领略一下“柯西雪花”的Basic程序哦。“人间大炮一级准备……!发射!!”呵呵……让我们留住今年春天的“柯西雪花”,让彩色的雪花在你的小心灵里漫天飞舞吧!

彩色雪花
http://dongren.cn/NextProgramers/Koch/ColorSnows1.jpg

 

 

 

 

 

[1] BASICBeginner’s All-purpose Symbolic Instruction Code,又译培基),意思就是初学者的全方位符式指令代码,是一种设计给初学者使用的程序设计语言BASIC是一种解译式的程式语言,在完成编写后不须经由编译连结等手续即可执行,但如果需要单独执行时仍然需要将其建立成执行档。还要留些资料你自己阅读哦。http://zh.wikipedia.org/w/index.php?title=BASIC&variant=zh-hans

 

 

 

 

 


 

 

 

 

 

 

 

“送给爱雪的孩子“柯西雪花”–还是《写给下一代的电脑工程师》”有一篇评论

  1. baoer 评论道:

    ”柯西雪花“Koch’snow的主要迭代算法写一下,希望对学编程的有点个启发吧!代码通常占篇幅,真有兴趣咱们用SVN或邮箱来交流代码吧!

    If (bX - aX) * (bX - aX) + (bY - aY) * (bY - aY) < 10 Then
    ‘Me.Line (aX, aY) - (bX, bY)’这一行是Vb6及以前版本的画线语句
    g.DrawLine(mpen, aX, aY, bX, bY) ‘这一行是Vb.net的画线语句
    Else
    cX = aX + (bX - aX) / 3
    cY = aY + (bY - aY) / 3
    eX = bX - (bX - aX) / 3
    eY = bY - (bY - aY) / 3
    Call Fractal(aX, aY, cX, cY)
    Call Fractal(eX, eY, bX, bY)
    l = System.Math.Sqrt((eX - cX) * (eX - cX) + (eY - cY) * (eY - cY))
    alpha = System.Math.Atan((eY - cY) / (eX - cX))
    If (alpha >= 0 And (eX - cX) < 0) Or (alpha <= 0 And (eX - cX) < 0) Then
    alpha = alpha + PI
    End If
    dY = cY + System.Math.Sin(alpha + PI / 3) * l
    dX = cX + System.Math.Cos(alpha + PI / 3) * l
    Call Fractal(cX, cY, dX, dY)
    Call Fractal(dX, dY, eX, eY)
    End If

    做上图时优化了一下程序,PI用355 / 113“密率”代替了(为了迭代快),考虑程序可读性还是帖原来的。

    Email: i90-#hotmail.com
    #号替换掉。

发表评论

CAPTCHA Image
*