十二/080
初涉Ruby
晚上闲来无事,简单看了下ruby的语法。113页的文档几个小时看完,就是为了了解ROR。Ruby吸取了perl的正则表达式, python的简单性可读性,smalltalk的纯面向对象语法和单继承,LISP的无穷嵌套的语法,Java的线程等等,语法也不是很晦涩,我这样的菜鸟都能欣然接受。
刚接触就对ruby的条件运算符特别感兴趣,看似稍微麻烦的问题用这么多丰富的条件运算符就很容易解决。注释等语法都没有碰到过,确实新鲜。
说来也巧,刚好看到一本Rails for PHP Developers的电子书,网上google了下,只有英文版的,并且在很多翻译网站有人提出需求需要翻译,刚好自己也是个初学者,干脆一边自己看,一边翻译,把资料放到blog上面了,共享给各位和我一样的菜鸟。
想接触ROR纯粹是看到其快速开发的魅力,想在ruby的基础上再上一堂深刻的面向对象和MVC课程,并且web快速开发对我是很重要的。我想有了php和python的基础,看起来应该不难。刚好找到这本为phper写的书,里面有很多图片以及拿ruby和php的一些比较,对我来说再也适合不过了。
书中大体讲完ruby基本语法后,有这样一个例子,求50以内的素数。书中用ruby的代码如下:
$arr=[ ] #建立一个全局数组 $arr
$arr[0]=2
def add_prime(n) #定义方法 将 n以内的奇素数加入$arr
3.step(n,2){|num|$arr <<num if is_prime?num }
end
def is_prime?(number) #定义方法 判断一个数是否是素数
j=0 #数组下标
while $arr[j] * $arr[j] <=number
return false if number % $arr[j] ==0
j +=1
end
return true
end
add_prime(50)
print $arr.join(", "),"\n" #转换成字符串输出
——————————————————–
我按照这个算法,用php写出来:
$return = array(2);
for ($i = 3; $i < 50; $i+=2) {
if (is_prime($i)) array_push($return, $i);
}
function is_prime($num) {
global $return;
$index = 0;
while ($return[$index] * $return[$index] <= $num) {
if ($num % $return[$index] == 0) {
return false;
}
$index++;
}
return true;
}
print implode(’, ‘, $return);
不难看出,ruby很面向对象,并且处理数据的方式很像python。
提醒自己:新鲜事物初期给人的刺激和兴奋如果能维持下去才有意义和价值,做惜时如金的人。