跳轉到內容

Scala

0% developed
來自華夏公益教科書,開放世界的開放書籍
Scala
一種務實的程式語言

Scala 是一種通用語言,旨在支援清晰、簡潔和型別安全的程式設計,以及從最小的應用程式擴充套件到最大的應用程式。它透過提供複雜型別系統、支援內部 DSL 的簡潔靈活語法以及函式式和麵向物件正規化的整合,以及許多強大的抽象來實現這一點。此外,Scala 與 Java 相容,現有 Java 庫可以從 Scala 呼叫,反之亦然。這種設計的意義很多。

  • 對於相同程式碼,Scala 通常比其他通用語言(如 C、C++、C# 和 Java)所需的程式碼行數少得多,通常是 2-3 倍到 10 倍。這在保持與 Java 相 comparable 的效能的同時完成的。
  • 許多通常需要冗長的語法、內建語法或外部領域特定語言 (DSL) 的常見任務(如 actors、線性代數、數值計算、測試、解析等)可以作為 Scala 的庫用簡潔的語法提供。示例包括 actor 庫,如 Akka;數值程式設計、線性代數等,如 Breeze;測試,如 ScalaTestspecs2;或解析,如解析器組合器庫。
  • 效能、安全性和生產力是三種很難在一種程式語言中獲得的領域。Scala 在這三個方面都提供了高度的保證。Scala 擁有與指令碼語言相關的生產力,同時具有與 Java 相 comparable 的效能。靜態且複雜的型別系統、強大的抽象以及對引用透明性和不可變性的支援有助於提高用 Scala 編寫的程式的安全、清晰度和可靠性。
  • 對並行和併發程式設計的相當大的支援。示例包括 actor 庫、不可變集合、並行集合和 STM(參見 Akka)。
  • 支援從 Java 向 Scala 的逐漸遷移。例如,可以透過用 Scala 編寫新的測試模組來逐步引入 Scala。

截至 2012 年 7 月 5 日,該語言的當前實現正在為 Java 虛擬機器積極開發,並且正在進行支援 .NET 框架的工作。

由於該語言的深度、許多強大的抽象和複雜的型別系統,Scala 有時被視為一種難以學習的語言。雖然 Scala 的某些部分對大多數程式設計師來說絕對具有挑戰性,但有效使用 Scala 所需的知識和技能要容易得多。本書將不同主題分為學習 Scala 所需的不同知識層。這些層次並不總是代表難度。例如,一些人認為高階函式很難,但由於它們非常有用,因此在本書的基礎部分進行了描述。

如果您是 Java 程式設計師,則存在一些專門針對 Java 程式設計師的指南、資源和書籍。有關更多資訊,請參閱 http://www.scala-lang.org/node/1305#Java

概述

本書分為幾部分:基礎、中級和高階。

“基礎”介紹瞭如何設定 Scala,並介紹了基本語法、表示式、函式、基本面向物件程式設計和基本函數語言程式設計。它還介紹了列表、case 類和模式匹配。基礎中的文章包含了用 Scala 編寫簡單程式的足夠知識。

“中級”擴充套件了基礎中的知識。這包括高階函式式和麵向物件程式設計、型別安全程式設計以及對集合庫的介紹。中級中的知識應該足以有效地將 Scala 用於許多應用程式。

“高階”描述了用於編寫庫的功能,例如高階型別和隱式。

本書應該包含關於不同主題的簡短、鼓舞人心且易於理解的文章。這些文章不應花太多時間解釋為什麼功能是這樣的,或者描述每一個細節。原因是這本書旨在成為學習資源,涵蓋所有不重要的細節可能會阻礙學習並浪費讀者的時間。對於想要更全面涵蓋和文件的讀者,存在許多資源,例如 http://docs.scala-lang.org/、O'Reilly 的《Programming Scala》和 Artima 的《Programming in Scala》。

基礎

第一步

面向物件程式設計 1

函數語言程式設計 1

列表、case 類和模式匹配

中級

通用

面向物件程式設計 2

函數語言程式設計 2

型別 1

集合

可選

高階

通用

型別 2

其他資源

華夏公益教科書