SlideShare a Scribd company logo
1 of 36
從 Java Programmer 的觀點來看 Ruby 王建興( Qing ) qing.chwang at gmail.com 2011/08/27
講者簡介 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Agenda ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
我的程式語言歷程 BASIC 1987 1990 1993 1997 2003 ASM PASCAL C++ Prolog Java C# C ObjC 2009
唯一用過的直譯式程式語言  - BASIC 10 REM  Sample BASIC Program - Counts To Ten 20 REM 30 REM  Copyright 2005 Andrew Eichstaedt 40 REM  Eichstaedt Development Group 50 REM  http://www.andrew-eichstaedt.com 60 REM 70 PRINT "Hello! I am a sample BASIC program" 80 PRINT "that counts to ten." 90 PRINT 100 FOR I=1 TO 10 110 PRINT I 120 NEXT I 130 PRINT 140 PRINT "Thanks for running me." 150 END *http://www.andrew-eichstaedt.com/sample-basic-program.html
為什麼學了這些程式語言 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
最喜歡的程式語言 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
對 Ruby 的初次印象及認知 ,[object Object],[object Object],[object Object]
為什麼我不用 Ruby/RoR ,[object Object],[object Object],[object Object],[object Object],[object Object]
影響生產力的因素 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
程式語言如何影響生產力  -  以 Java 為例 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
boolean 型別在 Java 中的影響 int a = 3; int b = 1; if(  a = b  ) // if( a == b ) { // do something }
減少程式設計者犯錯的機會  (1/2) ,[object Object],[object Object],[object Object],[object Object]
減少程式設計者犯錯的機會  (2/2) ,[object Object],[object Object],[object Object],[object Object],[object Object]
魔幻語言 – 孟岩  “ Ruby 1.9 不會殺死 Python” ,[object Object],[object Object],[object Object],[object Object],[object Object],*http://blog.csdn.net/myan/article/details/2028545
寫程式要克服的兩種困難 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],* 「超越 Java :探討程式語言的未來」書評  - Joel Spolsky
各世代程式語言演化所解決的附屬性困難 ,[object Object],[object Object],[object Object],[object Object],[object Object],* 「超越 Java :探討程式語言的未來」書評  - Joel Spolsky
程式庫如何影響生產力  -  以 Java 為例 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Java 成功的關鍵 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Java 語言本身的問題 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Java 在 Web 應用程式開發的問題 ,[object Object],[object Object],[object Object],[object Object]
超越 Java –  探討程式語言的未來 *http://www.oreilly.com.tw/product_java.php?id=a187
Ruby 在語言上的特點 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ruby 語言被發明的初衷 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
動態型別系統  vs.  靜態型別系統 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
動態型別系統和測試驅動式開發 ,[object Object],[object Object],[object Object],[object Object],[object Object]
動態型別系統不是沒有代價 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
關於效率 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
關於程式設計風格的差異 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
RoR vs. Java Web  應用程式開發 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ruby 的侷限 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ruby 尚需努力的方向 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
站在 Java 肩膀上的 Ruby (1/2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
站在 Java 肩膀上的 Ruby (2/2) ,[object Object],[object Object],[object Object],[object Object]
關於程式語言的選用 ,[object Object],[object Object],[object Object],[object Object]
Thanks

More Related Content

Viewers also liked

全文搜尋引擎的進階實作與應用
全文搜尋引擎的進階實作與應用全文搜尋引擎的進階實作與應用
全文搜尋引擎的進階實作與應用建興 王
 
Apache Hadoop an Introduction - Todd Lipcon - Gluecon 2010
Apache Hadoop an Introduction - Todd Lipcon - Gluecon 2010Apache Hadoop an Introduction - Todd Lipcon - Gluecon 2010
Apache Hadoop an Introduction - Todd Lipcon - Gluecon 2010Cloudera, Inc.
 
開發實用創新的 Android 應用程式
開發實用創新的 Android 應用程式開發實用創新的 Android 應用程式
開發實用創新的 Android 應用程式建興 王
 
開放原始碼的回收與再利用
開放原始碼的回收與再利用開放原始碼的回收與再利用
開放原始碼的回收與再利用建興 王
 
lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫建興 王
 
IKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 JavaIKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 Java建興 王
 
認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算建興 王
 
在雲端上啜飲爪哇
在雲端上啜飲爪哇在雲端上啜飲爪哇
在雲端上啜飲爪哇建興 王
 
Introduction to C++ over CLI
Introduction to C++ over CLIIntroduction to C++ over CLI
Introduction to C++ over CLI建興 王
 
「沙中撈金術」﹣談開放原始碼的推薦系統
「沙中撈金術」﹣談開放原始碼的推薦系統 「沙中撈金術」﹣談開放原始碼的推薦系統
「沙中撈金術」﹣談開放原始碼的推薦系統 建興 王
 
Introduction to Apache Hadoop Ecosystem
Introduction to Apache Hadoop EcosystemIntroduction to Apache Hadoop Ecosystem
Introduction to Apache Hadoop EcosystemMahabubur Rahaman
 
Hadoop at Twitter (Hadoop Summit 2010)
Hadoop at Twitter (Hadoop Summit 2010)Hadoop at Twitter (Hadoop Summit 2010)
Hadoop at Twitter (Hadoop Summit 2010)Kevin Weil
 
大資料趨勢介紹與相關使用技術
大資料趨勢介紹與相關使用技術大資料趨勢介紹與相關使用技術
大資料趨勢介紹與相關使用技術Wei-Yu Chen
 
孫民/從電腦視覺看人工智慧 : 下一件大事
孫民/從電腦視覺看人工智慧 : 下一件大事孫民/從電腦視覺看人工智慧 : 下一件大事
孫民/從電腦視覺看人工智慧 : 下一件大事台灣資料科學年會
 
Hadoop Map Reduce 程式設計
Hadoop Map Reduce 程式設計Hadoop Map Reduce 程式設計
Hadoop Map Reduce 程式設計Wei-Yu Chen
 
MLDM Monday -- Optimization Series Talk
MLDM Monday -- Optimization Series TalkMLDM Monday -- Optimization Series Talk
MLDM Monday -- Optimization Series TalkJerry Wu
 
Practical Problem Solving with Apache Hadoop & Pig
Practical Problem Solving with Apache Hadoop & PigPractical Problem Solving with Apache Hadoop & Pig
Practical Problem Solving with Apache Hadoop & PigMilind Bhandarkar
 
[系列活動] Machine Learning 機器學習課程
[系列活動] Machine Learning 機器學習課程[系列活動] Machine Learning 機器學習課程
[系列活動] Machine Learning 機器學習課程台灣資料科學年會
 

Viewers also liked (20)

全文搜尋引擎的進階實作與應用
全文搜尋引擎的進階實作與應用全文搜尋引擎的進階實作與應用
全文搜尋引擎的進階實作與應用
 
Apache Hadoop an Introduction - Todd Lipcon - Gluecon 2010
Apache Hadoop an Introduction - Todd Lipcon - Gluecon 2010Apache Hadoop an Introduction - Todd Lipcon - Gluecon 2010
Apache Hadoop an Introduction - Todd Lipcon - Gluecon 2010
 
開發實用創新的 Android 應用程式
開發實用創新的 Android 應用程式開發實用創新的 Android 應用程式
開發實用創新的 Android 應用程式
 
開放原始碼的回收與再利用
開放原始碼的回收與再利用開放原始碼的回收與再利用
開放原始碼的回收與再利用
 
lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫
 
IKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 JavaIKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 Java
 
認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算
 
在雲端上啜飲爪哇
在雲端上啜飲爪哇在雲端上啜飲爪哇
在雲端上啜飲爪哇
 
Introduction to C++ over CLI
Introduction to C++ over CLIIntroduction to C++ over CLI
Introduction to C++ over CLI
 
「沙中撈金術」﹣談開放原始碼的推薦系統
「沙中撈金術」﹣談開放原始碼的推薦系統 「沙中撈金術」﹣談開放原始碼的推薦系統
「沙中撈金術」﹣談開放原始碼的推薦系統
 
Introduction to Apache Hadoop Ecosystem
Introduction to Apache Hadoop EcosystemIntroduction to Apache Hadoop Ecosystem
Introduction to Apache Hadoop Ecosystem
 
Hadoop.TW : Now and Future
Hadoop.TW : Now and FutureHadoop.TW : Now and Future
Hadoop.TW : Now and Future
 
Hadoop at Twitter (Hadoop Summit 2010)
Hadoop at Twitter (Hadoop Summit 2010)Hadoop at Twitter (Hadoop Summit 2010)
Hadoop at Twitter (Hadoop Summit 2010)
 
大資料趨勢介紹與相關使用技術
大資料趨勢介紹與相關使用技術大資料趨勢介紹與相關使用技術
大資料趨勢介紹與相關使用技術
 
海量視覺資料-孫民
海量視覺資料-孫民海量視覺資料-孫民
海量視覺資料-孫民
 
孫民/從電腦視覺看人工智慧 : 下一件大事
孫民/從電腦視覺看人工智慧 : 下一件大事孫民/從電腦視覺看人工智慧 : 下一件大事
孫民/從電腦視覺看人工智慧 : 下一件大事
 
Hadoop Map Reduce 程式設計
Hadoop Map Reduce 程式設計Hadoop Map Reduce 程式設計
Hadoop Map Reduce 程式設計
 
MLDM Monday -- Optimization Series Talk
MLDM Monday -- Optimization Series TalkMLDM Monday -- Optimization Series Talk
MLDM Monday -- Optimization Series Talk
 
Practical Problem Solving with Apache Hadoop & Pig
Practical Problem Solving with Apache Hadoop & PigPractical Problem Solving with Apache Hadoop & Pig
Practical Problem Solving with Apache Hadoop & Pig
 
[系列活動] Machine Learning 機器學習課程
[系列活動] Machine Learning 機器學習課程[系列活動] Machine Learning 機器學習課程
[系列活動] Machine Learning 機器學習課程
 

Similar to 從 Java programmer 的觀點看 ruby

J Ruby和Rails 让Ruby语言融入Java项目
J Ruby和Rails 让Ruby语言融入Java项目J Ruby和Rails 让Ruby语言融入Java项目
J Ruby和Rails 让Ruby语言融入Java项目George Ang
 
Nodejs部门分享
Nodejs部门分享Nodejs部门分享
Nodejs部门分享zffl
 
Grails敏捷项目开发
Grails敏捷项目开发Grails敏捷项目开发
Grails敏捷项目开发Michael Yan
 
基于架构的开发模式
基于架构的开发模式基于架构的开发模式
基于架构的开发模式thinkinlamp
 
初窺 Flutter 開發.pdf
初窺 Flutter 開發.pdf初窺 Flutter 開發.pdf
初窺 Flutter 開發.pdfgdscnycu
 
尼古丁加咖啡因,不瞌睡的简报設計模式 (Caffeine+Nicotine)
尼古丁加咖啡因,不瞌睡的简报設計模式 (Caffeine+Nicotine)尼古丁加咖啡因,不瞌睡的简报設計模式 (Caffeine+Nicotine)
尼古丁加咖啡因,不瞌睡的简报設計模式 (Caffeine+Nicotine)Dahui Feng
 
Jsp高级编程
Jsp高级编程Jsp高级编程
Jsp高级编程yiditushe
 
這些年,我寫 Angular 時所使用的小技巧
這些年,我寫 Angular 時所使用的小技巧這些年,我寫 Angular 時所使用的小技巧
這些年,我寫 Angular 時所使用的小技巧志龍 陳
 
常用Js框架比较
常用Js框架比较常用Js框架比较
常用Js框架比较Adam Lu
 
高性能网站建设指南4
高性能网站建设指南4高性能网站建设指南4
高性能网站建设指南4lookyu
 
软件工程 第七章
软件工程 第七章软件工程 第七章
软件工程 第七章浒 刘
 
Ruby on rails部署
Ruby on rails部署Ruby on rails部署
Ruby on rails部署Deng Peng
 

Similar to 從 Java programmer 的觀點看 ruby (20)

J Ruby和Rails 让Ruby语言融入Java项目
J Ruby和Rails 让Ruby语言融入Java项目J Ruby和Rails 让Ruby语言融入Java项目
J Ruby和Rails 让Ruby语言融入Java项目
 
Android工作坊
Android工作坊Android工作坊
Android工作坊
 
Nodejs部门分享
Nodejs部门分享Nodejs部门分享
Nodejs部门分享
 
Go
GoGo
Go
 
Jni文档
Jni文档Jni文档
Jni文档
 
beidakejian
beidakejianbeidakejian
beidakejian
 
Jobforcompal
JobforcompalJobforcompal
Jobforcompal
 
Grails敏捷项目开发
Grails敏捷项目开发Grails敏捷项目开发
Grails敏捷项目开发
 
基于架构的开发模式
基于架构的开发模式基于架构的开发模式
基于架构的开发模式
 
Android JNI
Android JNIAndroid JNI
Android JNI
 
初窺 Flutter 開發.pdf
初窺 Flutter 開發.pdf初窺 Flutter 開發.pdf
初窺 Flutter 開發.pdf
 
尼古丁加咖啡因,不瞌睡的简报設計模式 (Caffeine+Nicotine)
尼古丁加咖啡因,不瞌睡的简报設計模式 (Caffeine+Nicotine)尼古丁加咖啡因,不瞌睡的简报設計模式 (Caffeine+Nicotine)
尼古丁加咖啡因,不瞌睡的简报設計模式 (Caffeine+Nicotine)
 
Jsp高级编程
Jsp高级编程Jsp高级编程
Jsp高级编程
 
這些年,我寫 Angular 時所使用的小技巧
這些年,我寫 Angular 時所使用的小技巧這些年,我寫 Angular 時所使用的小技巧
這些年,我寫 Angular 時所使用的小技巧
 
SCJP ch01
SCJP ch01SCJP ch01
SCJP ch01
 
常用Js框架比较
常用Js框架比较常用Js框架比较
常用Js框架比较
 
高性能网站建设指南4
高性能网站建设指南4高性能网站建设指南4
高性能网站建设指南4
 
软件工程 第七章
软件工程 第七章软件工程 第七章
软件工程 第七章
 
TypeScript
TypeScriptTypeScript
TypeScript
 
Ruby on rails部署
Ruby on rails部署Ruby on rails部署
Ruby on rails部署
 

從 Java programmer 的觀點看 ruby

  • 1. 從 Java Programmer 的觀點來看 Ruby 王建興( Qing ) qing.chwang at gmail.com 2011/08/27
  • 2.
  • 3.
  • 4. 我的程式語言歷程 BASIC 1987 1990 1993 1997 2003 ASM PASCAL C++ Prolog Java C# C ObjC 2009
  • 5. 唯一用過的直譯式程式語言 - BASIC 10 REM Sample BASIC Program - Counts To Ten 20 REM 30 REM Copyright 2005 Andrew Eichstaedt 40 REM Eichstaedt Development Group 50 REM http://www.andrew-eichstaedt.com 60 REM 70 PRINT "Hello! I am a sample BASIC program" 80 PRINT "that counts to ten." 90 PRINT 100 FOR I=1 TO 10 110 PRINT I 120 NEXT I 130 PRINT 140 PRINT "Thanks for running me." 150 END *http://www.andrew-eichstaedt.com/sample-basic-program.html
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12. boolean 型別在 Java 中的影響 int a = 3; int b = 1; if( a = b ) // if( a == b ) { // do something }
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22. 超越 Java – 探討程式語言的未來 *http://www.oreilly.com.tw/product_java.php?id=a187
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.