官术网_书友最值得收藏!

  • Scala編程(第5版)
  • (德)馬丁·奧德斯基等
  • 1131字
  • 2022-05-06 15:51:26

譯者序

Scala 3終于來了。

這是一次重大的更新,Scala編輯器從底層開始被全部重寫。不得不說,這也是Scala創始團隊的一次冒險,畢竟已經有很多成功的公司、團隊和個人在早期版本,尤其是Scala 2.8之后的Scala生態中找到了自己的位置,大量以Scala編寫的類庫和業務代碼在線上運行。

可Martin Odersky和他的團隊就是鉚足了勁要升級,想從根本上“修復”那些讓Scala還不夠理論完備的設計。但是理論完備有那么重要嗎?站在編程語言設計者的角度,我傾向于肯定的答案。而站在使用者的角度,我更關心它帶來了哪些變化,以及我能不能在使用中適應這些變化。

讓我頗感意外的是,真正上手Scala 3,并沒有想象中的那么困難重重。甚至飽受爭議的縮進語法,也沒有帶來任何不適。原有的代碼不需要修改,或者僅僅需要少量修改,就能順利地通過Scala 3的編譯。你很難相信這是一門全新的、從里到外重新實現的編程語言。

經過短暫的適應期,Scala 3的諸多新特性,如枚舉、上下文參數、擴展方法和類型族等,就能被我靈活運用。這些新特性初看起來各有各的模樣,并且實際使用下來,也多少都帶著一些新編譯器的“味道”,但是你能“嗅”到類型系統的某種一致性。Scala一直能在很多看似完全不同的概念之間找到關聯,似乎總能透過表象,直面本質。這種感覺很微妙,讓人既有些新奇,又非常熟悉。

Scala社區這幾年也有非常大的變化和進步,最值得一提的是,ZIO這個面向“作用”(effect)的編程類庫對業務代碼中常見的模式進行了非常有洞見性的抽象,將函數式編程以一種類型健壯且高效的方式引入一線開發者的工具庫中。很自然地,ZIO在順利發布1.0版本之后,隨著Scala 3的發布,也在第一時間全面“擁抱”Scala 3。

你手中的這本《Scala編程》已經是第5版,這一版針對Scala 3進行了全面的更新。更新主要體現在兩個方面:首先,增加了對Scala 3主要的新特性的介紹,所有內容和示例代碼都基于Scala 3重新梳理和編寫;其次,在篇幅上進行了大幅度調整,最顯著的是把《Scala編程》拆成了兩卷,第一卷也就是現在這本《Scala編程》,它保留了Scala編程語言核心功能特性和設計理念的內容,讓大家能夠快速地理解、掌握并使用Scala編寫實用的類庫和業務代碼,而第二卷為《Scala高級編程》,它將包含更多高級主題,且單獨成冊,面向那些對Scala高級特性(如宏和元編程)感興趣的讀者。

感謝Martin Odersky和他的團隊為我們帶來這樣一門獨特而優雅的編程語言,并且不惜冒著社區分化的風險(現在看來這個擔心很可能是多余的)堅持對語言核心進行升級;感謝電子工業出版社及張春雨編輯,在第1版、第3版和第4版之后,繼續引進本書的第5版;感謝編輯團隊和其他幕后工作者的辛勤付出;感謝家人無條件的支持和鼓勵,你們是我永遠的摯愛。

在本書的翻譯過程中,譯者雖已盡力忠實呈現原著的本意,但畢竟能力有限,問題和疏漏恐難以避免,懇請各位讀者批評指正,聯系地址:gaoyuxiang.scala@gmail.com。

高宇翔
2021年于上海

主站蜘蛛池模板: 丹巴县| 南投市| 凤山县| 大邑县| 缙云县| 宁远县| 安国市| 太湖县| 东乡县| 安顺市| 巴彦县| 蓬莱市| 永城市| 高雄市| 宜良县| 高密市| 东辽县| 巨鹿县| 华阴市| 易门县| 龙山县| 冷水江市| 公安县| 岳阳市| 绥滨县| 墨江| 黔西县| 长沙市| 崇明县| 外汇| 泗洪县| 健康| 长葛市| 明水县| 车致| 新乡县| 曲沃县| 英德市| 天气| 华安县| 留坝县|