文章会有【原创】或者【转载】标示,部分来自Google Baidu的学习结果 {Java/PHP/Python/Ruby/Go}

Happy Ruby day01:为什么是Ruby?(文字版)【转载】  


转载自:http://www.yangzhiping.com/tech/why-ruby-text.html

理解程序语言的本质

  • 程序语言应增强人类智力

  • 但是,人怎么成了计算机奴隶?

  • 问题,出在哪?

好的程序语言

  • 更容易描述现实

  • 更易被他人使用

  • 沟通现实世界与计算机世界的桥梁很稳定

人们的世界是如此不同

  • 人格心理学关于人格差异的研究

  • 不争议,选择自己的世界

为什么是Ruby:程序设计哲学

Ruby的历史

Matz,1993年发明,1995年公布

Ruby的初衷

初衷是让人们快乐

使用Ruby的人们快乐吗?

Matz很快乐,4个孩子,程序语言创始人中孩子最多的-^

为什么是Ruby:生产力

简洁性:更容易描述现实

我们看看hello world程序,Ruby的是:

puts "Hello World"  

Ruby的语法很自然,这种写法比比皆是:

[1,2,3].each{|n| puts n}
10.times do puts "hello world" end
print "Ruby!" * 5
1.upto(5){|n| puts n}
5.downto(1){|n| puts n} 

在Ruby中一切都是对象

puts 10.class
puts "why ruby".class 
puts [1,2,3].class  

即使空值也是对象

puts nil.class 

即使对象也是对象

class Myclass
  def initialize(args)

  end  
end
puts Myclass.class
puts Fixnum.class
puts String.class   

一切都是对象,所以调用特别简单,Ruby可以直接这么写

puts 10.to_s
puts 10.next
puts 10.next.next
puts 'a'.next  

扩展性:更易被他人使用

元编程

describe User do
  it "should require username " do
    user = User.new(:username => nil)
    user.should_not be_valid

    user.username = "happyruby"
    user.should be_valid
  end

end

DRY

  • 已经拥有96个标准库

http://rdoc.info/stdlib

  • 28,707gems

http://rubygems.org/stats

  • github用户突破百万,Ruby项目位居第二

http://github.com

Ruby生产力的暴力示范

Ruby生产力的示范:5行的RSS调用

require "rubygems"
require 'feedzirra'
# fetching a single feed
feed = Feedzirra::Feed.fetch_and_parse("http://www.aaronsw.com/2002/feeds/pgessays.rss") 
# puts feed entry
feed.entries.each_with_index do |entry,id|
  puts (id+1).to_s+".  ["+entry.title+"]"+"("+entry.url+")"
end    

简单blog仅需要5行;

只需要在命令提示符中6行就生成一个简单的blog系统

cd ~/dev/
rails new blogtest
cd blottest
rails g scaffold Post title:string content:text
rake db:migrate
rails s

稳定性:沟通现实世界与计算机世界的桥梁很稳定

得益于Matz的c功底,Ruby在多重继承与内存管理上设计与众不同。

多重继承

放弃了脆弱的脆弱的多重继承设计,规定一个子类只能有一个父类,但是每个子类通过Mix-in能非常自然地拥有多个父类。

module A
  def say_hello
    puts "hello,world"
  end
end

module B
  def say_goodbye
    puts "goodbye,bad life"
  end
end

class C
  include A
  include B
end

obj=C.new
obj.say_hello
obj.say_goodbye  

内存管理

为什么是Ruby:美感

Matz性格平和,深受日本文化影响

第一代使用者也多具备美感

代表人物

高桥征义

日本Ruby学会会长,所创造的有美感的事物——高桥流

高桥个人网站
高桥流简报
高桥流中文解说

DHH

赛车手与Rails创始人,所创造的有美感的事物——Rails

DHH个人网站
Ruby on Rails官网

Tom Preston-Werner

github创始人,所创造的有美感的事物——Jekyll与github

Tom Preston-Werner个人网站
Jekyll
Github

为什么学习编程很难?

关于编程的刻板印象太多

  • 男生
  • 极客
  • 高智商
  • 三十岁之后废了
  • 码农
  • 职业病很多
  • 找不到老婆

一边学编程,一边与社会压力做斗争

心理学关于编程的研究很少

  • 心理学关注数学学习、英语学习,但是很少关注如何学习编程
  • 高质量的如何学习编程的研究多来自优秀程序员的自我总结

来自心理学的启发

  • 在学习区刻意练习,每天500行
    • 一万小时定律
    • 什么是学习区?
    • 如何刻意练习?
  • 执行意图:使用如果...那么...的思考范式代替我要...的思考范式,并逐步对关键情景、行动过程建立自动化的思考方式

学习Ruby程序设计

初学编程,最应该记住的是在学习区刻意大量练习,千万少看书,要多练习。当年我从管理咨询行业继承的陋习,先看大量资料,才进入某个领域,并不适合学习编程。Ruby新手的学习区在哪里? 推荐以下三个新手学习区:

刻意练习时,有几个重要的工具:

TextMate的Ruby bundle

windows下的朋友可能暂时缺少,通过bundle可以快速掌握一门语言的核心语法;

Ruby cheat

cheatsheets类似于考试时的小抄,将某个需要学习的东西精华整理在一页或几页纸上。

http://cheat-sheets.org/,找到里面的Ruby cheatsheets,有多个版本,找一个最适合自己的版本 ,然后下载并打印出来。一张纸囊括核心内容。

cheatsheets,还有很多在这里:http://refcardz.dzone.com/

Ruby FlashCard

FlashCard是一种学习方法,先将题目呈现,然后心中默想答案,再翻看答案。

将与学习相关的FlashCards下载在手机或者打印出来,然后等车等无聊时间,予以默想。

比如:http://www.yoyobrain.com/cardboxes/103

以及一个特别针对Ruby on Rails的:

http://itunes.apple.com/app/ruby-on-rails-commands-flashcards/id440877359?mt=8