由麻省理工學院電腦科學與人工智慧實驗室開發的新語言!
下載量超過兩百萬次,Google、Facebook和美國聯邦航空總署的開發者都在用!
全台第一本Julia操作學習教科書,只有這本,帶0基礎的你從頭開始學Julia!
第二版的增修與Julia官方同步更新,本書帶你永遠走在最前面。
全球熱度上升最快的程式語言,趕快一起來追程式語言新女神!!
大數據時代,科技的進展速度早已遠遠超越我們的學習速度,因此,只有不斷的學習最新的知識和技能,才不會在大數據的浪潮之中狠狠摔在沙灘上。如果你今年只打算學習一個新語言,我會毫不猶豫的推薦──Julia!
用於優化數據分析和深度學習的最佳語言已經誕生!
◣Matlab般強大的線性代數運算能力,而且免費!
◣Python般簡潔的語法系統,而且更快速!
◣與C語言一樣快速,而且更加容易上手!
本書為全台第一本Julia操作學習教科書,作者為資料科學專家,同時擁有豐富的教學推廣經驗,最了解初學者需要的講解方式,在寫作上使用螺旋教學法,幫助讀者在最短時間建立對Julia的掌握與運用能力。先從介紹Julia這個語言的特性和安裝步驟開始,接著針對資料型別、變數、註解與函式等進行基礎性的介紹,後續再分別以各個主題加以深入探討以及實作演練。作者將程式步驟一一拆開,一步一步的解析,讓你也能輕鬆跟著踏入新世代程式語言的精采世界。
第二版加入遞迴、例外處理、資料結構與泛型程式設計等全新章節,並重新編排章節及內容,讓學習更為流暢。
Julia,為資料科學而生。
作者介紹
作者簡介
杜岳華
Julia Taiwan 發起人,陽明大學生物醫學資訊所碩士,成功大學醫學檢驗生物技術學系及資訊工程學系雙主修,工研院人才培訓中心機器學習課程講師。熱愛數學、電腦科學及自然科學,希望成為計算生物學家,為開源軟體貢獻者。
胡筱薇
基督徒,Data Lab創辦人,為中央大學資訊管理所博士,美國普渡大學克蘭納特管理學院訪問學者;現為東吳大學巨量資料管理學院副教授,且擔任台灣人工智慧學校講座師資;機器學習、資料探勘、社群網路、智慧商業為主要研究項目;近年來,致力於協助企業建立數據團隊並培育資料科學人才。
杜岳華
Julia Taiwan 發起人,陽明大學生物醫學資訊所碩士,成功大學醫學檢驗生物技術學系及資訊工程學系雙主修,工研院人才培訓中心機器學習課程講師。熱愛數學、電腦科學及自然科學,希望成為計算生物學家,為開源軟體貢獻者。
胡筱薇
基督徒,Data Lab創辦人,為中央大學資訊管理所博士,美國普渡大學克蘭納特管理學院訪問學者;現為東吳大學巨量資料管理學院副教授,且擔任台灣人工智慧學校講座師資;機器學習、資料探勘、社群網路、智慧商業為主要研究項目;近年來,致力於協助企業建立數據團隊並培育資料科學人才。
目錄
推薦序
作者序一
作者序二
Part 1 從幾個重要的問題開始
Chapter 1 Julia 是什麼樣的程式語言?
Chapter 2 走入Julia 的世界
Chapter 3 上手Julia
Part 2 程式設計基礎篇
Chapter 4 控制流程 - 條件判斷與迴圈
Chapter 5 集合容器
Chapter 6 字元、字串與正規表達式
Chapter 7 函式
Chapter 8 遞迴
Chapter 9 例外處理
Part 3 程式設計物件篇
Chapter 10 型別
Chapter 11 方法
Chapter 12 資料結構與泛型程式設計
Part 4 串流與檔案
Chapter 13 檔案讀寫
Chapter 14 網路程式設計
Chapter 15 檔案與目錄管理
Part 5 程式設計進階篇
Chapter 16 再論型別系統
Chapter 17 函數式程式設計
Chapter 18 Macro及Metaprogramming
附錄:參考資料與學習資源、運算子優先權表、ASCII 字碼介紹與字碼表、跳脫字元表
作者序一
作者序二
Part 1 從幾個重要的問題開始
Chapter 1 Julia 是什麼樣的程式語言?
Chapter 2 走入Julia 的世界
Chapter 3 上手Julia
Part 2 程式設計基礎篇
Chapter 4 控制流程 - 條件判斷與迴圈
Chapter 5 集合容器
Chapter 6 字元、字串與正規表達式
Chapter 7 函式
Chapter 8 遞迴
Chapter 9 例外處理
Part 3 程式設計物件篇
Chapter 10 型別
Chapter 11 方法
Chapter 12 資料結構與泛型程式設計
Part 4 串流與檔案
Chapter 13 檔案讀寫
Chapter 14 網路程式設計
Chapter 15 檔案與目錄管理
Part 5 程式設計進階篇
Chapter 16 再論型別系統
Chapter 17 函數式程式設計
Chapter 18 Macro及Metaprogramming
附錄:參考資料與學習資源、運算子優先權表、ASCII 字碼介紹與字碼表、跳脫字元表
序
作者序一
近年來資料科學與⼈工智慧技術大行其道,不少研究領域與創新應用紛紛出爐,相對傳統的科學計算與數值計算領域已經有不少成熟
的演算法與軟體。資料科學,除了需要統計及資料處理的技術外,還非常仰賴基礎的數值運算功能,在大數據的情境下,數值運算的加速更是重要。人工智慧技術也非常仰賴資料科學的分析結果,以及模型運算上的效率。然而傳統科學計算與數值計算領域的研究成果對資料科學與人工智慧的助益非常大。舉凡矩陣運算、數值分析、應用線性代數或是最佳化方法上的成果都化為一行行的演算法及程式提供給資料科學家或是機器學習專家,用來建造更為貼近人心的人⼯智慧產品。資料科學與人工智慧技術很需要數值計算的演算法為基礎。很自然地,Python 就被選為這些技術的發展平台,近十年來,不少科學運算的功能都挹注在這個語言當中。最重要的兩塊基石可以說是numpy及scipy 套件,提供了很棒的數值運算及科學運算基礎,使用介面上也不算煩雜。然而,這還不夠,當開發者開發出新的功能或是套件時,卻會受限於語言本身的執行效能,而需要以更低階的語言實作來取得效能。程式語言的效率及開發彈性一直是魚與熊掌不可兼得的,選擇了程式效率就勢必放棄開發的彈性,選擇了開發的彈性與速度就勢必放棄執行效率。Julia語言,作為⼀一個新興語⾔言,同時兼有效能以及開發彈性,吸取了各家語言的優點,並且在語⾔及編譯器技術上的設計,讓Julia成為了兼有效能及彈性的優美語言。Julia語言設計者一開始著重科學運算以及數值運算上,而將這個語言設計為一個泛用型的語言。對多數的科學家來說,效能是非常需要的,往往一個理論模型的實驗需要數天以上的時間。對一個非資訊領域的領域專家來說,方便易用的語言會是得心應手的工具,不需要去了解太多的底層細節可以節省非常多的時間,專注在他們自己有興趣的事物上。Julia語言在設計之初就考慮了非常多的語言特質,讓他在很多面向可以被顧及,成為受到各個領域專家所喜愛的語言,更是資料科學與人工智慧技術的最佳搖籃。
作為⼀個年輕的語言,套件的豐富程度遠遠不及其他發展長久的語言,但是他有一群活潑積極的開發者。在語言發展初期借了了不少其他語言來的套件以補足缺少的部份,然後逐漸發展出純Julia寫成的套件,一個兼具效能及彈性的套件。以最富名氣的 Flux.jl 深度學習框架為例,他本身是⼀個純 Julia 實作而成的套件,底層有GPU 的 CUDA ⽀支援,上層有可拆解組合的模型元件,由於語言本身的特性,套件可以與語言本身無縫接軌,語言本身的特性可以直接被套用在模型上。為了效能及可讀性,一群熱情的開發者正積極地開發著這樣純 Julia 的套件,也為了真正地解決問題。在語⾔進入穩定之後,套件開發者們更可以放心的實作,期待未來可以看到在這個語言上套件百花齊放的燦爛姿態。
在國外的開發者社群開心的討論著這個新興的語言,台灣卻難掩寂寞。於是我決定自己來發起社群,將好語言介紹給大家。不少在台灣的開發者都不具備相關科系的背景,而且在台灣的環境中比較難培養好的英文能力,這使得廣大而豐富的英文技術資源難以被台灣的開發者所使用。語言的確是個隔閡,技術底蘊更是身為開發者需要修煉的。我也決定在中文的使用者社群中投入自己的心力,撰寫本書,讓更多中文使用者可以接觸到這個語言、理解這個語言。
本書的定位是從完全沒有程式基礎的人到有基礎的程式設計師。在書的章節編排上,由淺入深,前六個章節是基礎的程式設計篇章,
7~9章節是這個語言的核心觀念,也是比較進階的程式設計方式,會對應到物件導向風格的設計方式,10~12 章節是關於串流及檔案的存取方面,最後的三個章節會晉升到更高層次的討論,介紹物件導向設計、函數式程式設計及metaprogramming。對於語言的初
學者可以不用把書全部看完,可以邊實作專案,有一些實務經驗的同時慢慢閱讀後續的章節。
作者序二
在校園裡同學們最常問我的一個問題就是:「老師,我該學哪個程式語言比較好?是R、是Julia 是Python?」我的答案是,都好!因為重點不在於選擇,而是當你做出選擇之後的每一個嘗試、學習、堅持、突破與精進,這過程所積累出來的實力,才是你該追求的。為了提供學生更多元的學習場域,引動學習動機,我成立了資料實驗室(Data Lab),並長期與企業合作,透過實際的專案項目培養資料科學人才,同時也定期開設相關課程,鍛鍊同學們的基礎能力,一個因緣巧合,我認識了本書的另一位作者--杜岳華老師,岳
華讓我印象非常深刻,是個有想法、有才華、有熱情、有能力,堅持理想並付諸行動的年輕人,有一次他跟我說,希望有更多人認識Julia的這個語言,更希望台灣在國際Julia社群中的能見度可以提高!我聽了非常感動,也跟著熱血了起來!於是,我們在資料實驗室中開設了Julia程式語言的課程,接著就是撰寫本書,讓更多中文使用者可以認識這個資料科學語言中的新星--Julia 。
這個時代的學習和過去很不一樣,有太多的新知識與新技術鋪山倒海的湧入,就像這幾年年大家常常在談的IoT、Big Data、ML、AI、
Blockchain,似乎沒有人能明確又清楚的告訴你那些是什麼?它沒有教課書,也沒有結論,因為這一切都還在發展與演化當中,不過可以肯定的是,倘若我們仍舊以過去的學習態度和方法,要能夠跟上這個時代,掌握這些風口,肯定很困難,那我們該如何因應呢?
既然確定性的知識越來來越少,那就保持開放的頭腦與心胸吧!當思考世界的角度越多,你的未來就充滿了無限可能。
最後,我想引用Ratatouille的經典台詞並稍做修改來鼓勵各個領域的朋友:
"Not everyone can become a great Data scientist, but a great Data scientist can come from anywhere."
衷心祝福各位讀者!
近年來資料科學與⼈工智慧技術大行其道,不少研究領域與創新應用紛紛出爐,相對傳統的科學計算與數值計算領域已經有不少成熟
的演算法與軟體。資料科學,除了需要統計及資料處理的技術外,還非常仰賴基礎的數值運算功能,在大數據的情境下,數值運算的加速更是重要。人工智慧技術也非常仰賴資料科學的分析結果,以及模型運算上的效率。然而傳統科學計算與數值計算領域的研究成果對資料科學與人工智慧的助益非常大。舉凡矩陣運算、數值分析、應用線性代數或是最佳化方法上的成果都化為一行行的演算法及程式提供給資料科學家或是機器學習專家,用來建造更為貼近人心的人⼯智慧產品。資料科學與人工智慧技術很需要數值計算的演算法為基礎。很自然地,Python 就被選為這些技術的發展平台,近十年來,不少科學運算的功能都挹注在這個語言當中。最重要的兩塊基石可以說是numpy及scipy 套件,提供了很棒的數值運算及科學運算基礎,使用介面上也不算煩雜。然而,這還不夠,當開發者開發出新的功能或是套件時,卻會受限於語言本身的執行效能,而需要以更低階的語言實作來取得效能。程式語言的效率及開發彈性一直是魚與熊掌不可兼得的,選擇了程式效率就勢必放棄開發的彈性,選擇了開發的彈性與速度就勢必放棄執行效率。Julia語言,作為⼀一個新興語⾔言,同時兼有效能以及開發彈性,吸取了各家語言的優點,並且在語⾔及編譯器技術上的設計,讓Julia成為了兼有效能及彈性的優美語言。Julia語言設計者一開始著重科學運算以及數值運算上,而將這個語言設計為一個泛用型的語言。對多數的科學家來說,效能是非常需要的,往往一個理論模型的實驗需要數天以上的時間。對一個非資訊領域的領域專家來說,方便易用的語言會是得心應手的工具,不需要去了解太多的底層細節可以節省非常多的時間,專注在他們自己有興趣的事物上。Julia語言在設計之初就考慮了非常多的語言特質,讓他在很多面向可以被顧及,成為受到各個領域專家所喜愛的語言,更是資料科學與人工智慧技術的最佳搖籃。
作為⼀個年輕的語言,套件的豐富程度遠遠不及其他發展長久的語言,但是他有一群活潑積極的開發者。在語言發展初期借了了不少其他語言來的套件以補足缺少的部份,然後逐漸發展出純Julia寫成的套件,一個兼具效能及彈性的套件。以最富名氣的 Flux.jl 深度學習框架為例,他本身是⼀個純 Julia 實作而成的套件,底層有GPU 的 CUDA ⽀支援,上層有可拆解組合的模型元件,由於語言本身的特性,套件可以與語言本身無縫接軌,語言本身的特性可以直接被套用在模型上。為了效能及可讀性,一群熱情的開發者正積極地開發著這樣純 Julia 的套件,也為了真正地解決問題。在語⾔進入穩定之後,套件開發者們更可以放心的實作,期待未來可以看到在這個語言上套件百花齊放的燦爛姿態。
在國外的開發者社群開心的討論著這個新興的語言,台灣卻難掩寂寞。於是我決定自己來發起社群,將好語言介紹給大家。不少在台灣的開發者都不具備相關科系的背景,而且在台灣的環境中比較難培養好的英文能力,這使得廣大而豐富的英文技術資源難以被台灣的開發者所使用。語言的確是個隔閡,技術底蘊更是身為開發者需要修煉的。我也決定在中文的使用者社群中投入自己的心力,撰寫本書,讓更多中文使用者可以接觸到這個語言、理解這個語言。
本書的定位是從完全沒有程式基礎的人到有基礎的程式設計師。在書的章節編排上,由淺入深,前六個章節是基礎的程式設計篇章,
7~9章節是這個語言的核心觀念,也是比較進階的程式設計方式,會對應到物件導向風格的設計方式,10~12 章節是關於串流及檔案的存取方面,最後的三個章節會晉升到更高層次的討論,介紹物件導向設計、函數式程式設計及metaprogramming。對於語言的初
學者可以不用把書全部看完,可以邊實作專案,有一些實務經驗的同時慢慢閱讀後續的章節。
Julia Taiwan
杜岳華
杜岳華
作者序二
在校園裡同學們最常問我的一個問題就是:「老師,我該學哪個程式語言比較好?是R、是Julia 是Python?」我的答案是,都好!因為重點不在於選擇,而是當你做出選擇之後的每一個嘗試、學習、堅持、突破與精進,這過程所積累出來的實力,才是你該追求的。為了提供學生更多元的學習場域,引動學習動機,我成立了資料實驗室(Data Lab),並長期與企業合作,透過實際的專案項目培養資料科學人才,同時也定期開設相關課程,鍛鍊同學們的基礎能力,一個因緣巧合,我認識了本書的另一位作者--杜岳華老師,岳
華讓我印象非常深刻,是個有想法、有才華、有熱情、有能力,堅持理想並付諸行動的年輕人,有一次他跟我說,希望有更多人認識Julia的這個語言,更希望台灣在國際Julia社群中的能見度可以提高!我聽了非常感動,也跟著熱血了起來!於是,我們在資料實驗室中開設了Julia程式語言的課程,接著就是撰寫本書,讓更多中文使用者可以認識這個資料科學語言中的新星--Julia 。
這個時代的學習和過去很不一樣,有太多的新知識與新技術鋪山倒海的湧入,就像這幾年年大家常常在談的IoT、Big Data、ML、AI、
Blockchain,似乎沒有人能明確又清楚的告訴你那些是什麼?它沒有教課書,也沒有結論,因為這一切都還在發展與演化當中,不過可以肯定的是,倘若我們仍舊以過去的學習態度和方法,要能夠跟上這個時代,掌握這些風口,肯定很困難,那我們該如何因應呢?
既然確定性的知識越來來越少,那就保持開放的頭腦與心胸吧!當思考世界的角度越多,你的未來就充滿了無限可能。
最後,我想引用Ratatouille的經典台詞並稍做修改來鼓勵各個領域的朋友:
"Not everyone can become a great Data scientist, but a great Data scientist can come from anywhere."
衷心祝福各位讀者!
東吳大學巨量資料管理學院 副教授
胡筱薇
胡筱薇
內容連載
Chapter 1 Julia 是什麼樣的程式語言?
1. 程式語言
世界上的程式語言有上千種,但是最常用的、耳熟能詳的不過是其中的少數。程式語言可以說是現代工程師的最佳武器,舉凡從網頁設計到後端系統設計,甚至是資料庫或是作業系統,都是藉由程式語言來完成的。在網頁設計中可能會用到 Javascript,以及後端的PHP。如果是要寫 Microsoft 系列或是在 Windows 上跑的程式,會需要 C# 或是 ASP.NET 架構的幫忙。要撰寫可以在 Mac 上執行的程式會需要 Swift。如果是寫 Android 系列的 app 就需要熟悉Java。
如今資料分析跟機器學習的人會使用Python、MATLAB 或是R。操作資料庫會需要 SQL 語言。不要忘了效能極佳的 C 和C++,這兩個語言對於作業系統發展有極大的貢獻。在作業系統上,需要有可以跟系統互動的語言,像是 Linux 系統上就有Bash。
程式語言就是一個非常強大的計算機,一般計算機只能計算單一的數學式,工程用計算機可以計算更複雜的微積分,而程式語言可以處理的範圍超乎你的想像,我們可以利用程式語言設計出任何的軟體。
2. Julia 語言介紹
Julia是個新興的程式語言,由Jeff Bezanson, Stefan Karpinski,Viral B. Shah, and Alan Edelman 四人共同設計,在2009年開始這個專案,並在 2012年發表。他們希望打造一個這樣的程式語言:我們想要一個開源的語言,擁有自由的版權。我們想要C的速度和Ruby 的動態。我們想要有一個語法與內在表示有一致性(homoiconic)的語言,並且像 Lisp 一樣擁有真的巨集,但是擁有像Matlab 一樣熟悉好懂的數學符號。我們也想要像Python一樣好用的泛用型程式語言,處理統計要和 R 一樣,處理字串要和Perl一樣地自然,要有和Matlab一樣強大的線性代數功能,串接程式要如同shell一樣好用。要學習的東西極致簡單,同時能讓大多數認真的程式設計師寫起來開心。我們希望它是互動式的而且也是可編譯的。
1. 程式語言
世界上的程式語言有上千種,但是最常用的、耳熟能詳的不過是其中的少數。程式語言可以說是現代工程師的最佳武器,舉凡從網頁設計到後端系統設計,甚至是資料庫或是作業系統,都是藉由程式語言來完成的。在網頁設計中可能會用到 Javascript,以及後端的PHP。如果是要寫 Microsoft 系列或是在 Windows 上跑的程式,會需要 C# 或是 ASP.NET 架構的幫忙。要撰寫可以在 Mac 上執行的程式會需要 Swift。如果是寫 Android 系列的 app 就需要熟悉Java。
如今資料分析跟機器學習的人會使用Python、MATLAB 或是R。操作資料庫會需要 SQL 語言。不要忘了效能極佳的 C 和C++,這兩個語言對於作業系統發展有極大的貢獻。在作業系統上,需要有可以跟系統互動的語言,像是 Linux 系統上就有Bash。
程式語言就是一個非常強大的計算機,一般計算機只能計算單一的數學式,工程用計算機可以計算更複雜的微積分,而程式語言可以處理的範圍超乎你的想像,我們可以利用程式語言設計出任何的軟體。
2. Julia 語言介紹
Julia是個新興的程式語言,由Jeff Bezanson, Stefan Karpinski,Viral B. Shah, and Alan Edelman 四人共同設計,在2009年開始這個專案,並在 2012年發表。他們希望打造一個這樣的程式語言:我們想要一個開源的語言,擁有自由的版權。我們想要C的速度和Ruby 的動態。我們想要有一個語法與內在表示有一致性(homoiconic)的語言,並且像 Lisp 一樣擁有真的巨集,但是擁有像Matlab 一樣熟悉好懂的數學符號。我們也想要像Python一樣好用的泛用型程式語言,處理統計要和 R 一樣,處理字串要和Perl一樣地自然,要有和Matlab一樣強大的線性代數功能,串接程式要如同shell一樣好用。要學習的東西極致簡單,同時能讓大多數認真的程式設計師寫起來開心。我們希望它是互動式的而且也是可編譯的。
網路書店
類別
折扣
價格
-
新書9折$450
-
新書9折$450
-
新書93折$465
-
新書95折$475
-
新書95折$475
-
新書$646