1. 程式人生 > Ruby 程式語言入門 >01 Ruby 簡介

01 Ruby 簡介

圖片描述

Ruby Logo

1. 什麼是 Ruby?

Ruby,一種簡單快捷的面向物件(面向物件程式設計)指令碼語言,在 20 世紀 90 年代由日本人松本行弘(Yukihiro Matsumoto,別稱:Matz)開發,遵守 GPL 協議和 Ruby License。它的靈感與特性來自於 Perl、Smalltalk、Eiffel、Ada 以及 Lisp 語言。——官方定義

Matz 希望他設計的語言簡單又強大,簡答到可以讓新手程式設計師學習起來不會很困難,而強大到讓經驗豐富的程式設計師可以從這門語言中獲取到想要的一切。

這一開始,似乎是矛盾的,但是 Matz 實現了他的目標,於是 Ruby 橫空出世。

2. Ruby 的版本

Ruby 的第一版本自 1995 年發行,Ruby 版本號的構成形式是 (MAJOR).(MINOR).(TEENY),均為只有1 位的整數;如 “1.8.6”、“1.9.3”。截止至今,最新穩定版的版本為 2.7.02.3.8 及以下的版本已不再維護,本書版本使用倒數第二個版本 2.6.5,通常來講,每一個 MINOR 的最後一個版本都是最穩定的。

3. Ruby 的特性

Ruby 是最純粹的面向物件程式語言。因為與其他語言不同,Ruby 沒有基本型別,所有內容都被視為物件,包括整型(1、2、3)浮點型(1.0、2.0、3.0)等等。

此外,Ruby 是一種指令碼語言。 指令碼語言是一種解釋型的語言,不需要編譯。因此 Ruby 可以通過嵌入其他程式中來控制他們。

Ruby 很推崇領域特定語言(DSL),通俗來說就是可以讓 Ruby 的語法更加語義化的語言。

例項:

watch :game do
end

get :id_card 

increase :balance

在 Ruby 中我們可以很容易地實現這樣的寫法,充分體現了 Ruby 這門語言的靈活性

4. 為什麼學習 Ruby?

Ruby 的語法非常的簡潔,所有的語法已經達到最簡潔,沒有多餘的語法糖,沒有像 Java 那麼多的條條框框,可以把更多的精力關注於要乾的事情上。優秀的語法讓您的工作更加輕鬆,更喜愛您的開發工作。

舉一個例子,在 Java 中,我們輸出一個 Hello World 需要這樣寫:

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello, world!");
    }
}

對於從沒接觸過程式設計的人,看到上面的程式碼肯定會非常困惑,這些程式碼這什麼要這麼寫? 怎麼這麼複雜?更有意思的是,越是資深的程式設計師越會贊成這種想法。

而 Ruby 輸出 Hello World 只需要這麼一行:

p 'Hello World'

最常見的,它可以與 Rails(一種流行的 Ruby 框架,簡稱:ROR)結合使用,用於開發 Web 應用程式。Rails 能做到15分鐘搭建一個網站。 這個是其他語言無法做到的。

它是一門用於文字處理和中介軟體程式的優秀指令碼語言,許多開發人員將 Ruby 用作 Perl 的替代品。

Ruby 的資源豐富。它擁有大量的文件、書籍、視訊、線上課程、開發論壇(Ruby China 等)等等,並且擁有超過 60000 個庫和多種框架可供選擇。RubyGems 就是為 Ruby 用來管理該語言構建的眾多框架和庫建立的。

5. Ruby 市場需求

Ruby 開發人員的工作都與 Web 開發有關,這些工作大多數要求瞭解 Rails 框架、其他開發語言或工具。

Ruby 的熱門崗位包括:

  1. Ruby 或 Ruby on Rails 工程師;
  2. Ruby 或 Ruby on Rails 專職開發;
  3. 後端工程師;
  4. 全棧開發工程師(帶有Ruby之類的語言);
  5. 敏捷軟體開發人員;
  6. 構建釋出工程師;
  7. Web 開發人員/軟體工程師。

這是 Ruby China 上最近發的一些招聘帖子。

圖片描述

Ruby 中文官網釋出的招聘資訊

這是每日統計全球網站使用的 Web 語言份額的一張截圖:

圖片描述

全球網站使用的 Web 語言份額

Ruby 是我最愛的一門語言沒有之一,不過說到就業的問題,如果您在一線城市,學習 Ruby 是一個不錯的選擇。如果您在二線城市,能選擇的機會就會很少,PHP 和 Java 會更好地找到工作。

6. 學習基礎

Ruby 是一門對新手非常友好的語言,任何零基礎的人都可以學習這門語言。由於語言特性,文章中會充斥著面向物件的思想,如果可能的話,最好先去理解一下面向物件的概念。