加载中…
个人资料
张翼轸
张翼轸 新浪个人认证
  • 博客等级:
  • 博客积分:0
  • 博客访问:11,830
  • 关注人气:170
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

开始学Ruby语言

(2009-04-15 19:05:50)
标签:

杂谈

同事经常拿一些女儿的奥数题目来给我们做,大家一起寻找答案。不过由于这些题目往往来路不同,参考答案有时候甚至都无法确保是正确的。尤其是遇到那些适合用穷举法验算的题目,第一反应就是编个程序测试下。

说起编程,早年学电脑的时候许过。最喜欢的自然是入门级的BASIC,好歹当年还用VISUAL BASIC写过《仙剑奇侠传》的存盘纪录修改器。至于C也学过,高一时花了些功夫拿了张国家二级证书,最搞笑的就是Pascal,被学校计算机老师强迫参加上海高三学生的计算机编程比赛,临时抱佛脚速成了下,第二天就去比赛,混了个三等奖,然后便又全部忘光了。

不过,很早就发现自己的数学功底,实在不适合作为一名优秀的程序员,所以便没继续钻研下去,像诸如面向对象、JAVA这些,也就是知道个名字了。

如今,为了帮同事验证这些奥数题目,准备重操旧业。只可惜找不到LINUX上比较好用的BASIC解释器,所以干脆顺便学一门新语言得了。因为只是为了简单的一些操作,所以那些追求效率追求强大的语言是绝不碰的,最终选择了比较容易上手,也具有面向对象特性的Ruby,貌似Ubuntu中缺省就内置了解释器,单位的Windows中装一个也不麻烦。

卓越上买了本Programming Rudy中文版(第2版),粗粗速成了一番,总算基本的功能会了。

不得不说,Ruby比起当年的Basic,在一些基本功能上是方便太多了,尤其是诸如动态数组之类的。像最近准备做一个二叉树测试,也就是进行多次0、1两种可能的分析,比如若10次,那么就一共有2的10次方种可能,要换以前BASIC时代,肯定用十次For i=0 to 1的循环来完成,但这种方法不仅麻烦,而且扩展性比较差,要增加次数,代码就要重写,若是来个60次迭代,光是重叠的这六十个循环语句就写死人了。

Ruby还是很简单的,要获得10级二叉树的所有结果,只需要进行一个0到1023的循环,然后利用to_s方法把每个数字转换成10位数的2进制文本,再用split把这个文本逐字符拆解成数组,然后利用数组读取每一位判断是0还是1就能知道这一级的情况了,若是要进行20级,那不过是将循环扩展到0到1048575即可,然后依次对这些数字进行分解,真是不错。

虽然未来不可能做一个程序员,不过仅仅是学习一门计算机语言本身,也是一个乐趣所在——往大里说,是掌握一种新的构建计算机虚拟世界的方法,往小里说,至少是脑立体操,有助于防止老年痴呆症。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有