Slide 1

Slide 1 text

Ruby 简介 申思维 siwei.me

Slide 2

Slide 2 text

关于我 ● 7 年半的 Web 开发人员 ● 05 年~ 08 年底 (3 年半), java 程序员 累计 8 个正式项目 ● 之后至今 ruby 程序员 累计 12 个正式项目。若干小的开源项目。

Slide 3

Slide 3 text

我的故事 ● 其 我的 实 JAVA 做的 好。 实 ● 毕业设计 3 个人做,我一个人把其他两个人 的活 都干了。 儿 ● 第二年毕业设计,帮另外一个同学(结业) 了 了 的 文也 了。 写 论 ● 之后 JAVA 干的 生水起。 熟悉各种 的上 风 说 名字的框架。各种工具。各种开源东 东。。。。 ● 干活而速度也最快。

Slide 4

Slide 4 text

转向 RUBY ? ● 08 年受 熊 ( 了 《重 》, 《 人件》, 翻 论 论 论 《 WIHTOUT EJB 》 , 《 RUBY ON RAILS 滑板 )》 ) 影 。 实 实 ● 我所知道的 JAVA 大牛都做 RUBY 项目 了。 ● 相信大牛, 的。 实实

Slide 5

Slide 5 text

深入了解 RUBY ● Dave 和 Andy 了 论 100 多 言,最后 实实 发现只有 RUBY 是他们想要的(第一版序 言?) ● When we discovered Ruby, we realized that we’d found what we’d been looking for. ● You can concentrate on solving the problem at hand, instead of struggling with compiler and language issues. ● Four years later. Ruby is still our language of choice

Slide 6

Slide 6 text

比喻 ● 用了 TDD 的方式,再也不愿意回到原 的 来 开发方式了 ● 用了自 化 脚本,再也不愿意人肉 动 测试 测试 了。 ● 用了 RUBY ,再也不愿意回到 JAVA 了。

Slide 7

Slide 7 text

这几年的最直观感觉 ● RUBY 代 接近于正常 言。 实 实 ● 读文件: ● File.read(“some_file”) ● 心里想的是什么, RUBY 代码就是什么。 ● JAVA 代码跟心里最初想的差太多。

Slide 8

Slide 8 text

读文件的 JAVA 代码 (1) public class FileInput { public static void main(String[] args) { File file = new File("C:\\MyFile.txt"); FileInputStream fis = null; BufferedInputStream bis = null; DataInputStream dis = null; try { fis = new FileInputStream(file); // Here BufferedInputStream is added for fast reading. bis = new BufferedInputStream(fis); dis = new DataInputStream(bis); // dis.available() returns 0 if the file does not have more lines.

Slide 9

Slide 9 text

读文件的 JAVA 代码 (2) while (dis.available() != 0) { System.out.println(dis.readLine()); } fis.close(); bis.close(); dis.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }

Slide 10

Slide 10 text

对比( java : RUBY ) RUBY : 写代码思路流畅。 JAVA : 实现代码跟思路差太远,离自然 语言太远了。 ● 我干嘛要了解 各种 input stream? ● 我干嘛要使用 main 函数? 我只知道目标文件名。

Slide 11

Slide 11 text

生 率: 实 JAVA : RUBY = 1 : 5 大 可以 : 在 概 认为 WEB 开发方面: 一个 RUBY 程序员,干 5 个 JAVA 程序员的 活儿。

Slide 12

Slide 12 text

RUBY 适合做什 ? 实 除了不能写 3D 大型游 ,其他都可以。 戏 1. 日常的常 工作。 实 1.1. 自动化脚本,取代 SHELL 1.2. 实现 DSL 2. WEB 开发。 3. 其他开发

Slide 13

Slide 13 text

入 要求高 门 (主要是英文) ● 90% 的文 都是英文的。 档 ● 剩下 10% 的中文文 都是 期的。 档 过 (参考《滑板书》的更新速度,还不如直接 看官方的 文档 ( guides.rubyonrails.org )

Slide 14

Slide 14 text

深入了解:更高 的 言特性 级 语 ● 元编程 (Meta programming) ● 支持代码块 (block, closure, proc ) ● 最适合做 DSL

Slide 15

Slide 15 text

RAILS: WEB 开发的利器 Java: spring. Hibernate, struts. Velocity. 等 等。 Python: django Ruby: RAILS.

Slide 16

Slide 16 text

RAILS 优点 1 :遵循 定配置 约 ● 好 :不必事无巨 的都把配置 出 。 处 细 写 来 所有的 model 都放在 app/model 所有的 view 都放在 app/view 所有的 controller 都放在 app/controller 所有的 RAILS 程序员省去了沟通和交流的麻 。 实

Slide 17

Slide 17 text

对比 JAVA (老风格) Spring: 一堆配置文件 Struts: 一堆配置文件 Hibernate: 更是一堆配置文件 人望而却步。 实 然后来出 了 论 论 xdoclet 和 annotation, 但 是仍然配置代码量极大。

Slide 18

Slide 18 text

RAILS 优点 2 :吸收最佳实践 数据 迁移 库 (DB migration) 持久层。 MVC 。 缓存 . Bundler 管理 rubygem HAML, Coffeescript Asset pipeline. ( 压缩 css, js) 自动化部署工具 , 元 工具。 实 实实

Slide 19

Slide 19 text

RAILS 缺点 ● 于新手 , 化有 度 实 实实 实 实 ● 可能 RUBY 新手写的东西,比 JAVA 新手写 的 西,性能要慢一些。 东 ● 国内大公司用的不多。所以工作职位目前以 初 公司 主。 实 实 挑 机遇 存。机遇大于挑 。 实实 实 实

Slide 20

Slide 20 text

新 言的比 ? 实 实 实 ● Scala ● Closure ● Coffeescript 都 得一 值 试 Coffeescript 身上有很多 RUBY 语言的影 子。 起 非常自然流 。 实 实 实

Slide 21

Slide 21 text

新框架? ● Node.js: 适合处理业务逻辑简单的高并发 访问 ● Ruby 中也有同样的东西: EventMachine. ● 或者 Sinatra.

Slide 22

Slide 22 text

其他 用? 实 ● 编写 iOS: RubyMotion ( 2012/12/12 出版 ) ● 编写 Android: Ruboto – Ruby on Android ● 编写硬件相关:略

Slide 23

Slide 23 text

展望 ● Ruby 2.0 + Rails 4 也马上出炉了。也有很 多特性。 ● 国内越来越多的大公司开始招聘 Ruby 程序 员了。( redhat, 路透社 , Vmware... ) ● 给力啊!

Slide 24

Slide 24 text

提问 + 谢谢大家~ ● siwei.me ●