赠书名单: @PengEdy @huopo125 @bigyellow @Guest @towonzhou @linuxgit @satzcoal @u1412955503
请各位在 10 月 16 日中午 12:00 前将姓名、邮寄地址和手机号用邮件发送至 [email protected]。 其他朋友的回答也非常精彩,可惜样书不够。 非常感谢大家的参与! 我们都爱 Ruby~
==================================================================================
借着《Ruby 基础教程(第 4 版)》上市之际,想抛砖引玉发个帖子让大家在这里聊一聊 Ruby。欢迎大家畅所欲言,各抒己见,只要答案能够打动小编,就能获得《Ruby 基础教程(第 4 版)》1 本。
问题 1:你觉得什么是优雅的代码?分享一下你认为优雅的 Ruby 代码。 问题 2:接触 Ruby 后,你的编程环境有什么变化?例如,不用 IDE,而是用文本编辑器写代码;弃用了爱用多年的 Windows,投向了 Linux 甚至苹果的怀抱。 问题 3:你用 Ruby 做过提高工作效率的小工具(Gem)吗?你的 Ruby 最佳实践是什么?
-活动时间:2014/9/19——2014/10/10 -活动奖励:本次活动将根据回复的精彩和充实程度,选出 5 名读者,他们将获得奖品《Ruby 基础教程(第 4 版)》1 本。 -追加:本书译者@kamiiyu 无私地贡献出 3 本样书,因此本活动的奖品升级为 5 本普通样书 + 3 本译者签名版
图书介绍:
★ Ruby 入门第一书,原版重印 27 次! ★ 松本行弘亲自审校并作推荐序 ★ 日本 Ruby 协会创始人兼会长倾情力作
“这是一本绝对不会让初学者失望的 Ruby 入门书。” ——Ruby 之父 松本行弘
本书为日本公认的最好的 Ruby 入门教程。松本行弘亲自审校并作序推荐。本书支持最新的 Ruby 2.0,也附带讲解了可运行于 1.9 版本的代码,事无巨细且通俗易懂地讲解了编写程序时所需要的变量、常量、方法、类、流程控制等的语法,以及主要类的使用方法和简单的应用,让没有编程经验的读者也能轻松掌握 Ruby,找到属于自己的快乐编程方式,做到融会贯通并灵活运用到实际工作中。 本书适合 Ruby 初学者学习参考,有一定 Ruby 编程基础的读者若想再回顾一下 Ruby 的各知识点,本书也能提供不少帮助。
图书试读:http://www.ituring.com.cn/book/1237 购买网址:http://item.jd.com/11524040.html
有活动,凑个热闹。
问题 1:你觉得什么是优雅的代码?分享一下你认为优雅的 Ruby 代码。
何谓“优雅”?优雅就是优美雅观,充分利用 Ruby 的优势,写出短小、简练,能解决问题的代码,摒弃一切冗余。
其实我觉得最优雅的代码是:
attr_accessor :attr
一行简单的 DSL 式代码,分别定义了 setter 和 getter,而且体现了 Ruby 类对数据封装的实现:属性在外部不可直接访问,需要什么就开放什么,绝不多提供。
问题 2:接触 Ruby 后,你的编程环境有什么变化?例如,不用 IDE,而是用文本编辑器写代码;弃用了爱用多年的 Windows,投向了 Linux 甚至苹果的怀抱。
首次接受 Ruby 时,我还在使用 Windows 系统。后来我又尝试在 Windows 中安装 gem,太折腾人。所谓人生苦短啊,为什么要把大好青春浪费在这里。入手 MBP 后我再次使用 Ruby,深感,这才是科技改变生活,再也不用折腾苦逼的 cmd.exe 了。
我不黑 Windows,只是它和 *nix 使用的是两种不同的哲学。各有优缺点,各有适用的场景。在最近开发的一个 Ruby gem 中,我完全禁止在 Windows 系统中使用,检测到 Windows 类系统,直接 exit
,暴力退出。
我开发的项目都很小,至今我从未用过 IDE(Xcode 除外),目前一直坚持使用 Sublime Text。
问题 3:你用 Ruby 做过提高工作效率的小工具(Gem)吗?你的 Ruby 最佳实践是什么?
我自己开发过几个 Ruby gem,自动化完成一些任务,比如新建翻译项目,爬取网页。还有两个 Ruby gem 用来生成各种格式的电子书,即 burr 和 persie。
burr 现在已经停止开发。persie 正在急速开发中,希望在下一个项目中能进入 beta 阶段。
我是 Ruby 菜鸟,谈不上最佳实践。但在 persie 的开发中,我对程序开发有了进一步理解,比如:
翻译的间隙,参与这个活动,支持一下。继续翻译,快交稿了。
person = Person.find_by_name('flowerwrong')
理由:强大的 metaprogramming
全面转移到了 linux 下,多种 IDE(sublime test 3,atom,rubymine)都在用,用烦了就换,我不是 vim 主义者,在服务器上能编辑就行。有好家伙果断用。
暂时没有,没有时间维护。通常都是写出来用。 没有最佳实践,最佳实践就像是一种约束。我喜欢 ruby,是因为他不行 python 那样,只遵循一种模式。这个方法我用烦了,换一个。
问题 1:你觉得什么是优雅的代码?分享一下你认为优雅的 Ruby 代码。
优雅?我们还是谈谈性感吧 😄http://huobazi.aspxboy.com/blog/2009/09/24/sexy-activerecord/
问题 2:接触 Ruby 后,你的编程环境有什么变化?例如,不用 IDE,而是用文本编辑器写代码;弃用了爱用多年的 Windows,投向了 Linux 甚至苹果的怀抱。
我爱用 Vim,也用 Visual Studio,我投向了苹果的怀抱,但没有完全弃用 windows
问题 3:你用 Ruby 做过提高工作效率的小工具(Gem)吗?你的 Ruby 最佳实践是什么?
你问滴,我就顺便广告啦 http://rubygems.org/profiles/huobazi http://loudatui.com/ http://nongmin365.com/
我木啥要求,你就砸我一个 kindle 版就可以了
问题 1:你觉得什么是优雅的代码?分享一下你认为优雅的 Ruby 代码。 问题 2:接触 Ruby 后,你的编程环境有什么变化?例如,不用 IDE,而是用文本编辑器写代码;弃用了爱用多年的 Windows,投向了 Linux 甚至苹果的怀抱。 问题 3:你用 Ruby 做过提高工作效率的小工具(Gem)吗?你的 Ruby 最佳实践是什么?
A1:
# ActiveRecord类
class Friend < ActiveRecord::Base
validates :name, presence: true
# ...
end
# Sinatra开发REST API实例
get '/friends' do
Friend.all.to_json
end
Ruby 强大的元编程能力,为创造极为精简的 DSL 提供了无限可能。 上面有人提到的:
attr_accessor :attr
也是极为不错的例子!
A2:
以前:写 Java,在 Windows 上用 Eclipse,每次打开 IDE 需要半分钟。
现在:写 Ruby,在 Mac 上用 Vim,轻敲vim
随即打开,结合 Rails.vim 以及其他 Vim 插件,无比畅快。
Windows 电脑已经被我从代码中解放出来,专门用来打游戏啦 ~(≧▽≦)/~
写 Ruby,就能给自己用 Mac 一个理由。
A3: Gem 的话还停留在 start-up 的阶段,不过有一个 gem 正在开发,尚未完工。 早起写过爬虫和运维的自动化脚本。 最佳实践:
git init
。以上。日常只写 Rails 的 Ruby 新人还是挺需要这本书的,请用它砸我吧!:)
Time.now
Time.now + 7.days
Ruby 时间相关的操作都挺好的。
在编写 ROR 之前我就已经迁移到 OS X 平台了,之前是被迫的,因为我要开发 IOS 应用,但是使用 Ruby 之后我才真正的融入 Unix Like 的环境中去,对 gem 的学习甚至反馈给了 IOS 开发,比如发现 IOS 也能这么玩: COCOAPODS http://cocoapods.org/.
对 irb 的使用也影响到前端的开发,我开始正式使用 chrome dev tools 的 console. 每多学一个语言,我都会发现一些新思想可以帮助其他以前学过的东西。
做过的一些 GEM 都是把公司的多个项目中共通的一些代码抽出来集中维护,因为是私有项目就不贴了。 同意 @PengEdy 的实践: 开发之后再优化,优化之后再重构。 我也是先把代码快速的写出一个工作的版本,然后再考虑优化和重构。 因为新增的需求往往是快速变化的,过早优化反而会阻碍后续的开发,特别是不要过早的加入各种 cache, 过早加入 cache 然后变更代码后遇到的坑不止一个两个了。 等功能上线一段时间,并且有足够的需求后,再进行优化和重构,如果反映不好也可能直接删掉。
#11 楼 @lakuxin 用它看 rails101 的 epub 体验感觉还可以,kindle 功能上感觉没有 duokan 方便。 类似这样发布 https://leanpub.com/rails-101 多设备都兼容的电子版,还是挺方便的:)
来凑个热闹,呵呵。
问题 1:你觉得什么是优雅的代码?分享一下你认为优雅的 Ruby 代码。
我非常同意@andor_chen,我写过 C、C#,也学习过 JAVA,用过 TCL 脚本语言,当朋友给我推荐 Ruby 的时候,我当时就很诧异attr_accessor
是如何工作的,第一感觉就是太简洁了。
问题 2:接触 Ruby 后,你的编程环境有什么变化?例如,不用 IDE,而是用文本编辑器写代码;弃用了爱用多年的 Windows,投向了 Linux 甚至苹果的怀抱。
编程环境基本都是根据所用的语言进行选择的,写 C 和 TCL 脚本主要用 notepad++,用 C 写的较大项目都是用 IDE,工作环境主要是 windows,选择了 Ruby 后又重新拾起了曾经的 Ubuntu,算是一种喜悦吧,总感觉在 linux 下看什么源码都很方便(苹果么,已列于明年导购计划,呵呵)。
问题 3:你用 Ruby 做过提高工作效率的小工具(Gem)吗?你的 Ruby 最佳实践是什么?
没写过成形的小工具,只是写一些脚本将平日麻烦的流程给便捷化,如抓取小说贴吧的最新更新帖子(自己比较懒,又爱看小说,总不想去多点击)、文件格式转换、文件路径变化等。
(1..100).reduce(&:+)
写过 web crawler 专爬美女图,置入数据库,前端 Rails + zurb foundation + sinatra. deploy 到 linode vps ubuntu linux + nginx + passenger, based on mongodb. 个人私站,表示下班了看看美女,能保证我身心愉悦,并提高工作效率。当然,这个不是 gem. 最佳实践:https://github.com/suffering/learnmvc
@lakuxin 我不懂 Ruby,所以这基础教程特适合我^_^
1,优雅源于内心,性格和修养于程序员我想也很重要,优雅于我就是美的享受。Sorry 代码还看得一知半解,故暂无。
2,哈哈这个我有答案,我一直用的 Arch Linux, 配套 Vi,不花哨简洁舒服。
3,完蛋这个作品更甭谈贡献一点也没,至多翻译下文档,当当小白鼠。
看来这书希望渺茫啊
#32 楼 @garyonrails #34 楼 @cifery 谢谢指点!麻烦到 http://www.ituring.com.cn/Book/1237 提交勘误。
ruby
没多久,争取一下。问题 1:你觉得什么是优雅的代码?分享一下你认为优雅的 ruby
代码。
def quick_sort(list)
return [] if list.size <= 0
flag,*foot = list
left,right = foot.partition { |i| i <= flag }
quick_sort(left) + [flag] + quick_sort(right)
end
答:这个快速排序的代码我认为优雅,一直觉得自己用 ruby
不写出优雅的代码是一种罪过。
问题 2:接触 ruby
后,你的编程环境有什么变化?例如,不用 IDE,而是用文本编辑器写代码;弃用了爱用多年的 Windows,投向了 Linux 甚至苹果的怀抱。
答:接触 ruby
后,我的编程环境从 windows 转向 mac OS,刚毕业,将自己的实习,和转正的薪水存起来买了台 mac book , IDE 改用 Sublime Test, 再也回不去了。
问题 3:你用 ruby
做过提高工作效率的小工具(Gem)吗?你的 Ruby
最佳实践是什么?
答:用 ruby
写过很多处理数据的脚本如:查询数据库,根据需求处理计算出结果,生成报表,并处理成附件定时发送邮件给需求者。
我的最佳实践是:参考别人的成功例子去学习,帮助提高自己的能力,然后去胜任工作。
问题 1:你觉得什么是优雅的代码?分享一下你认为优雅的 ruby 代码。
Elegance = Simplicity + Power
# how to find the longest word longest = %w{ uno dos tres cuatro }.inject do |previous, present| previous.length > present.length ? previous : present end puts longest # => cuatro
# just for illustration print '(+) or (-) or (*) or (/), no outside (): ' operator = gets.strip print "number: " number = Float(gets) if operator =~ /(+|*|\/|-)/ calc = ->(n) { n.send(operator, number)} puts((1..10).collect(&calc).join(', ')) end # * 2 <=, => 2.0, 4.0, 6.0, 8.0, 10.0, 12.0, 14.0, 16.0, 18.0, 20.0 # + 2 <=, => 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0
---
**问题2:接触 ruby 后,你的编程环境有什么变化?例如,不用 IDE,而是用文本编辑器写代码;弃用了爱用多年的 Windows,投向了 Linux 甚至苹果的怀抱。**
> 一直用 linux + subl
---
**问题3:你用 ruby 做过提高工作效率的小工具(Gem)吗?你的 Ruby 最佳实践是什么?**
> Github上没有自己的Gem, 只有Contributions
最佳实践
1. 多写测试
1. 订阅RubyWeekly
1. 不卑不亢
问题 1:你觉得什么是优雅的代码?分享一下你认为优雅的 Ruby 代码。
class Cart
has_many :orders
belongs_to :user
end
问题 2:接触 Ruby 后,你的编程环境有什么变化?例如,不用 IDE,而是用文本编辑器写代码;弃用了爱用多年的 Windows,投向了 Linux 甚至苹果的怀抱。 原来是 vs,现在是 Fedora + Sublime 问题 3:你用 Ruby 做过提高工作效率的小工具(Gem)吗?你的 Ruby 最佳实践是什么? 基本每个 gem 都是为了节省时间或者精力。
devise
thin
cancancan
capistrano
rspec
我买的实体书,买到本错版的。封面和书里面的文字是倒的。 于是我想象一个场景:我拿着书挡着脸在看,别人说你书拿反了,我转过去给他看书里的内容和他说没反。
问题 1:你觉得什么是优雅的代码?分享一下你认为优雅的 ruby 代码 我觉得优雅的代码,在于压根不需要什么注释,基本就可以明白代码在干什么。
connection.create_table :exhibits, force: true do |t|
t.belongs_to :user
t.string :name
t.text :notes
t.timestamps
end
问题 2:接触 ruby 后,你的编程环境有什么变化?例如,不用 IDE,而是用文本编辑器写代码;弃用了爱用多年的 Windows,投向了 Linux 甚至苹果的怀抱。 确实正式抛弃 eclipse 是从学习 ruby 开始,但最主要的编程环境变化在于,我可以在任何环境下进行程序开发,并且可以调试,不再受操作系统的影响。当然是大部分情况。
问题 3:你用 ruby 做过提高工作效率的小工具(Gem)吗?你的 Ruby 最佳实践是什么? 一直都用 GEM,非常方便。除了 gem,我还喜欢用 bundle 和 rake。将原想服务器上所有的 SHELL,全部用 ruby 重写了一下,并且打包成 gem。代码的更新和维护,还有迁移方便了很多。
#41 楼 @sunday35034 太囧了。。。请将书用顺丰到付邮寄到:北京市丰台区成寿寺路 11 号 邮电出版大厦 焦志炜 收 电话:010-81055193 我们将为您免费调换。
答题 1:
"a".next
另外有一段代码记忆深刻
def triangle(a, b, c)
raise TriangleError if [a,b,c].min <= 0
x, y, z = [a,b,c].sort
raise TriangleError if x + y <= z
[:equilateral,:isosceles,:scalene].fetch([a,b,c].uniq.size - 1)
end
这段代码出处参见:https://ruby-china.org/topics/15476
答题 2: 呃,我能说我毕业工作以来一直都是从事 Ruby 相关的开发吗? 好吧,尽管如此,我刚开始也是使用 XP + Aptana,然后才转成 MAC + Sublime
答题 3: 嗯,自从知道如何创建 gem 以后,做过一些用来处理接口的 gem,没有任何普遍适用性,就不拿出来分享了。。。
问题 1:你觉得什么是优雅的代码?分享一下你认为优雅的 Ruby 代码。
答案 1: if x.between?(1..6)
认为优雅的代码就是在简洁的前提下,一看就能懂的代码,类似人类语言,这是 ruby 设计的初衷,你想表达什么那么就写下什么吧。
问题 2:接触 Ruby 后,你的编程环境有什么变化?例如,不用 IDE,而是用文本编辑器写代码;弃用了爱用多年的 Windows,投向了 Linux 甚至苹果的怀抱。 答案 2: 接触 ruby 后就一直用 vim,坚持着写五分钟代码,弄三十分钟 vim 配置的良好习惯....
问题 3:你用 Ruby 做过提高工作效率的小工具(Gem)吗?你的 Ruby 最佳实践是什么? 答案 3: 我基本每个 controller 都会用到
module ActionController
class Base
#检查http参数是否存在或为空
#参数: http params
#返回: yield 错误信息或 String(单一参数),Array(多个参数)
#例子:
#单一参数:
# str_name = check_params(:name){|msg|
# return response_with xxx
#}
#多个参数:
#单一参数:
# str_name,str_year = check_params(:name,:year){|msg|
# return response_with xxx
#}
def check_params(*args)
rs = args.map do |arg|
if !params[arg.to_sym] || params[arg.to_sym].empty?
if block_given?
yield arg.to_sym
else
raise ArgumentError.new("missing params[:#{arg.to_sym}]")
end
end
params[arg.to_sym]
end
return rs.join if rs.size == 1
rs
end
end #class Base
end #module ActionController
问题 1
[*'a'..'z',*'0'..'9'].sample(4).join
随机生成短信验证码
问题 2 windows => linux => mac
linux <=> mac
问题 3 暂无
问题 1:所有重构后的代码 问题 2:{windows: ['asp', 'php'], mac:'ruby', ubuntu: 'python'}, {ide: 'sublime'} 问题 3:https://github.com/liwei78/shipstation-ruby
1、优雅? 假如让一个不会写代码的人看这样一段: 事情是这样的,你吃饱了吗?吃饱了看书吧,没吃饱再去吃水果。
if you.full_up?
you.read_a_book
else
you.eat_fruit
end
我理解的优雅是它能按人的语言思维和顺序完成一段代码。语法糖只是在已经理解代码的基础上进行精简化,如果不最求短代码。。。长些也无所谓,可读性高。是吧?
2、IDE?我用 netbeans 用了 6 年了,IDE 是让我变懒的唯一工具。懒程序员才是好程序员,有的人确实可以这样理解。因为 ruby 都是开源的,所有源码没经过加密,IDE 能够快速把我带到源码的精确的方法定义里。方法的注释就是完整的 api 资料了,新手要会利用,资料早已经沉睡在你电脑里了,别到处找 api、Dash。我只能说人傻钱多。
开发环境其实熟悉就好,window == os == linux。熟悉什么,什么就没问题。。。
3、提高效率就 system_log 了。。。 https://github.com/bolide/system_log 在代码里,写上 puts "==============call-me #{record.inspect}" 刷新下界面,或者点下按钮,再看 /system_log 啥都出来了。不用 dubug 好多年了
问题 1:我认为优雅的代码是执行效率高,可维护性好的代码。 问题 2:弃用了 windows 投向 Linux 怀抱,主要是 Mac 太贵。。。 问题 3:暂无。 接触 ruby 时间不太长,觉得 ruby 里用“像鸭子就是鸭子”的处理方式很方便,免去了许多类型声明的麻烦。更加灵活,许多设计模式的实现变得非常简单。
Q1: 我认为优雅的代码就是简洁,符合 KISS 原理,Keep it simple, stupid. ruby 强大的 metaprograming 和 DSL.
p "I love Ruby."
“1 2 3 4".split.map(&:to_i)
year, month, day = $1, $2, $3 if date =~ /(\d\d\d\d)-(\d\d)-(\d\d)/
('a'..'z').to_a.shuffle[0..7].join
has_many orders
belongs_to customer
rails 中利用 DSL 表达表的关系。
Q2: 在 ubuntu 上使用 vim。
Q3: 我是一个 Linux SA.正在学习 ruby 和 rails. 还没写过 gem,目前正在用 ruby 写一些命令行脚本来自动化我的工作。 我的 Ruby 最佳实践理解是 Make It Work,Make It Right,Make It Fast,Mait it Perfert. 求签名版哈哈。
新来的。。凑凑热闹。。
问题 1:你觉得什么是优雅的代码?分享一下你认为优雅的 Ruby 代码。
3.times
令人惊讶的简洁
People.find_by_sex_and_age
还有强大的变态的元编程
问题 2:接触 Ruby 后,你的编程环境有什么变化?例如,不用 IDE,而是用文本编辑器写代码;弃用了爱用多年的 Windows,投向了 Linux 甚至苹果的怀抱。 刚接触 ruby 的时间里,每天都像是发现新大陆一样。天天边拽着同事看示例代码边惊呼'我擦还能这样!' os 上 WLM 都有,身为没代码提示会死星人都装了破解版 RubyMine。。
问题 3:你用 Ruby 做过提高工作效率的小工具(Gem)吗?你的 Ruby 最佳实践是什么? 简单的爬虫,文档处理的小工具 实践:unless 大牛{ 写段代码;找本有提高的书/源码;看;重构}
再次想请楼主发行多看或 kindle 版本的啊,这两家版权也做的比较好,不用太担心盗版的问题。
电子书乃时代进步的表现啊,砖头书真的太重了,手腕吃亏
我在这里发的处女贴后,不怎么敢发帖了 - -, 之前看过镐头书,又在 code school 上练习过,现在学习 rails 中。
问题 1:你觉得什么是优雅的代码?分享一下你认为优雅的 Ruby 代码。
# 给6个用户生成测试用的微博内容
users=User.all.limit(6)
50.times do
content=Faker::Lorem.sentence(5)
users.each { | user| user.microposts.create!(content:content)}
end
问题 2:接触 Ruby 后,你的编程环境有什么变化?
用 ubuntu+sublime text 问题 3:你用 Ruby 做过提高工作效率的小工具(Gem)吗?你的 Ruby 最佳实践是什么?
我是编程新手,我做过的唯一个实用的东西,是 gmail 泄露了帐号后,我下载回来发现是很大的一个 txt,如果是以前恐怕我没办法了。于是用 ruby 写了几行代码试试有没有我的帐号,很高兴发现没有我的。
问题 1:你觉得什么是优雅的代码?分享一下你认为优雅的 Ruby 代码。
rand(100)
简单粗暴!
问题 2:接触 Ruby 后,你的编程环境有什么变化?例如,不用 IDE,而是用文本编辑器写代码;弃用了爱用多年的 Windows,投向了 Linux 甚至苹果的怀抱。
一直使用 SublimeText, 没换过其它的编辑器,受 Ruby 的影响,最近打算入手 MacBook 了。
问题 3:你用 Ruby 做过提高工作效率的小工具(Gem)吗?你的 Ruby 最佳实践是什么?
最近做了两个 Gem
第一个是bootstrap-material-design, 能方便快捷的使用 material-design 的 bootstrap 主题。
第二个是 easy-emoji, 能快速在项目中使用 emoji.
最佳实践:
学生党求砸书!!!
问题 1:我觉得优雅的 ruby 代码最重要的可读性要高,方法以及变量的命名要符合英语和编程规范,让人读起代码来就像是读自然语言,很舒服。 问题 2:实习时用的是 mint 系统,用 rubymine,感觉还不错,最重要的是摆脱了鼠标。正式工作之后配到了 mac,运行那叫一个流畅,确实好用。但是 rubymine 的速度感觉有些跟不上,经常会卡,已经开始使用 vim 编程。 问题 3:还没有做过 Gem,对封装的理解不是很好,继续补充能量。
Q1:
p "Hello,world!"
刚学 ruby 的时候就被这句话折服了 更别说后来的各种好用的迭代器和代码块了
Q2: 由于之前一直是写 java 的,接触到 ruby 之后就用 sublime text3 了,后来要用到 java 的时候有时候实在受不了 eclipse 的速度。
Q3: 由于是初学,没写过什么高大上的东西, 就是暑假的时候用 ruby 了个小爬虫爬了豆瓣上 30 万的电影和图书资料存在 SQLite 里面准备慢慢看。。 当然还有各种计算项目代码行数的,文档管理的小工具什么的。。
来晚了。。还是求个书~~
一个外行人眼中的 Ruby 语言。 我真的不会编程,但有一天,好奇心告诉我:“你都错过那么多美好和有趣的东西了,难道你就不想再试试吗?万一学会了呢?”于是,我便开始了一段为期两周的真正的学习之旅… …
那还是在 2007 年冬天的一个下午,我们百无聊赖的游荡在新华书店里,学计算机的好友翻着一本“程序员”对我说,“借用心理学家的话说:Ruby 有一个很长的过去,却只有一个很短的历史。”我一脸茫然,却不知所云,后来才了解到,原来 Ruby 语言借鉴了很多前辈语言的长处,最终结合松本先生个人对程序语言设计的初心、理念和意志,才成就了 Ruby 语言自己。至今我还比较清楚的记得当初好友对 Ruby 语言不太认同的那张表情。
时隔多年,当我认认真真的通过 Kevin 老师的在线 Ruby 课程体验过一回 Ruby 语言后,我终于觉悟了,原来还有一种对我来说比成为一名程序员更令我感到骄傲的事情,那就是从学习 Ruby 语言中体会到了程序语言的美!正如 Ruby 语言之父松本先生所说:“Ruby 就像人的身体一样,表面上看来简单,但内部却相当的复杂。”毫无疑问,这是一次勇敢的尝试!尽管它无关胜败,尽管松本先生不在意别人是否认为 Ruby 语言就是一锅拿来主义风味的大烩菜;尽管松本先生在某次采访中甚至不无遗憾的说到(大意),设计 Ruby 语言的初衷是为了带给程序员快乐,提高工作效率,但是在借鉴前辈语言方面显然有些用力过猛,貌似有点过度设计了,还举了 Perl 语言的例子。
“科技以人为本”,这句诺基亚曾经的宣传口号,一语道破!当我们重新站在科技与人文的十字路口,不难发觉,Ruby 语言拉近了我们非程序员与机器之间的距离,这种近似人类直觉化的思维方式所带来的温暖,有时候很难从其它语言身上体会到。Ruby 语言并不完美,但已然成为对我这样一个门外汉更为友好的先行者,作为一门程序语言,Ruby 语言必然会被超越,正如人们形容康德那样,你可以超越他,但你却终究无法绕过他。
我不是程序员,也没有打算将来依靠编程赚钱,在粗浅的比较过几门程序语言之后,我选择了 Ruby 语言,只是因为自己感受到了一些额外的、与众不同的温暖和开心!她使我从心底体验到了美好的感觉,仅此而已,这就是我,一个外行人的偏见。
最后总结一下答案吧:
问题 1:你觉得什么是优雅的代码?分享一下你认为优雅的 Ruby 代码。
回答:谈到优雅,关乎审美,涉及品味。就代码而言,我的偏见是:这是一个矛盾的世界,所谓优雅的代码也应该是一种矛盾平衡的产物,而非 Geek 仅能欣赏的代码,不同的只是平衡的要素而已。看到之前有很多朋友列举的代码,对于能看懂的部分,感同身受。
'123'.to_i # => 123
name = "Ruby"
name.length
puts "Hello, #{name}!" # => Hello, Ruby!
condition? true : false
def hi name # 或 def hi(name)
puts "Hello, #{name}!"
end
name = 'Ruby'
hi name # 或 hi(name)
比如,当我在书店里第一眼看见 Time.now,当时我就走不动了。 作为一个初学者,我倾向于利用 Ruby 语言来更有效率的完成我的作品,又不失快感,在乐趣的激励下激发我的创造力,这种隐性的价值是很大的!
问题 2:接触 Ruby 后,你的编程环境有什么变化?例如,不用 IDE,而是用文本编辑器写代码;弃用了爱用多年的 Windows,投向了 Linux 甚至苹果的怀抱。 回答:曾经体验过 IDE,但是作为一个门外汉,根本无法享受这种高大上的待遇,好在比较早的喜欢用上了 GNU/Linux(ArchLinux、Ubuntu) 和 Vim。现在买了一台 Macbook,单就 Ruby 本身而言,感觉 Linux 对 Ruby 的支持一点也不比 Mac 差。
问题 3:你用 Ruby 做过提高工作效率的小工具(Gem)吗?你的 Ruby 最佳实践是什么? 回答:暂时还没有学过如何制作 Gem,但是,通过学习 Ruby 语言的短暂经历,我现在已经迫不及待的准备上手体验一把了。就目前为止,我能明显体会到的最佳实践,应该有两个方面:一方面是基于 Ruby 语言的元编程能力之上的符合松本先生设计理念和初衷的语法体系和结构体系 (gem);另一方面是围绕着 Ruby 语言衍生出的工具链体系,而这两者统一构成了 Ruby 语言的生态圈。
一种莫名的兴奋感在好奇心的催化下油然而生。:-)