這本《第三行代碼》,讓大家久等了!

《第一行代碼——Android》這本書自2014年出版以來,已經過去了6個年頭。期間Android系統版本經歷了4.0到10.0系統的巨大升級,開發技術也發生了翻天覆地的變化。在2016年的時候,我曾對書中的內容進行了大幅度的更新,出版了這本書的第2版,也就是所謂的《第二行代碼》。而如今,再隔4年之久之後,《第三行代碼》終於要以全新的面貌跟大家見面了。


/ 創作 /

不得不說,《第一行代碼 第3版》這本書,在出版的過程中經歷了太多坎坷,以至於到今天才能跟大家見面。這裡先跟所有的讀者朋友們說聲:對不起,讓你們久等了!

早在2017年,Google在I/O大會上宣佈Kotlin將成為Android系統的一級開發語言,從此與Java平起平坐。那時我就猜想到,在Android應用層的開發語言將掀起一場大淘汰式的替換。當時圖靈出版社也看到了這個新聞,圖靈的編輯很快就聯繫我,問我準不準備寫一本Kotlin方面的書?

我認為掌握一門語言是需要時間沉澱的,學語法可能兩週就能搞定,但要想體會到精髓,則需要不斷通過寫代碼去磨練和提升。那個時候我不認為我具有寫好這樣一本書的能力,所以也就沒有答應。

長期關注我的朋友應該知道,在這之後的一年多時間裡,我把時間基本都放在了GifFun這個開源項目上面。這個項目一開始是使用Java來寫的,中途被我切換成了Kotlin。因為我知道,要想熟練掌握一門語言,最好的方式就是不斷用它來寫代碼。我也就藉此機會,對Kotlin有了更加深刻的理解。

到了2019年,我和出版社又重新進行了商討,準備對《第一行代碼》再度更新,推出第3版,這次會將全書的代碼都改用Kotlin來實現。但問題在於,Kotlin作為一門新興語言,程序員基數遠不可能有Java那樣龐大。如果換了語言之後導致大量讀者看不懂怎麼辦?

當時出版社提出了一個方案,讓我單獨再寫一本專門講解Kotlin語言的書,和《第一行代碼》配套使用。不過我認為這個方案會提升《第一行代碼 第3版》的閱讀門檻,就沒有答應。

幾經思考之後,我認為想出了一個最佳的寫作方案:在一本書裡面同時講解Android和Kotlin這兩門技術。這也將會是《第一行代碼》中首次引入編程語言的講解。

但如何安排這兩門技術之間的內容順序是一件非常有挑戰的事情。因為Kotlin是Android程序的開發語言,很顯然需要先掌握語言才能開發Android程序。可是如果先花小半本書的篇幅講解Kotlin,然後再開始學習Android開發,這種學習方式一定非常枯燥,因為學編程語言最怕的就是光學不練。

為此,我決定採用一種或許別人從未嘗試過的方式,將Kotlin和Android穿插在一起講解。首先使用一個快速入門章節介紹Kotlin的基礎知識,然後利用已掌握的知識開始學習Android開發,這樣可以做到立刻上手實踐。之後的每一章當中,都會結合相當章節的Android內容再學習一些Kotlin的進階知識,等學完整本書之後,你就能同時熟練地掌握Android和Kotlin這兩門技術了。

這種穿插講解的方式非常考驗我的內容設計能力,因為每章的Android開發中用到的Kotlin知識不能過於超前,不然讀者會出現看不懂的情況。同時每章講解的Kotlin知識又要結合著相應章節的Android知識,這樣才能更好地理解該知識點的用法與場景。它們之間的內容是相輔相成的。

為此,在前期制訂目錄上面我就花了將近一個月的時間,之後編寫Kotlin快速入門這一章又花了兩個多月的時間。因為我以前從來沒有寫過編程語言類的書,為了把Kotlin重要的基礎知識在這一章裡面都體現出來,我花費了很多心思。在編寫這一章的過程中,Google I/O 2019大會上正式宣佈了Kotlin First的口號,Kotlin已經不再和Java是平起平坐,而是變成一等公民了。雖然這是我意料之中的事情,但是比我預期來得要早,也讓我更加堅定了寫好這本書的信心。

《第一行代碼 第2版》是2016年3月份開始動筆的,同年9月份完稿,12月份出版。《第一行代碼 第3版》是2019年3月份開始動筆的,但是9月份卻遠遠無法完稿,因為改動內容和新增內容要遠比第2版時大得多。我幾乎把所有的業餘時間都放在了上面,最終在11月底才勉強全書完稿。

本來是想著好事多磨,好書也不怕晚出版幾個月,過完年應該就可以跟大家見面了。沒想到,我們恰好碰上了一場從未遇到過的疫情災難,包括17年前的SARS也沒有今天的新冠疫情嚴重。

這場疫情導致中國各方面都受到了極大的創傷,學校停課,企業停工,大家都只能呆在家裡,不出門就是最安全的。而受疫情的影響,出版社、印刷廠都延遲上班,無法復工。我每天在公眾號中都會被讀者追問,新書到底什麼時候可以出版?這個問題我當時真的無法回答,疫情所帶來的影響要持續到何時真的沒人知道。

後來到了三月份,國內的疫情已經逐漸控制住,多數企業也在慢慢復工復產了,這本書才終於能夠得以出版印刷。但是,雖然國內的疫情已經緩和,海外疫情卻緊接著爆發了起來,截至到我寫本篇文章時也沒有任何緩和的跡象。現在仍然不知道這場疫情給全球帶來的影響要持續到何時,希望新冠疫情能快點成為過去式,每個人都恢復到正常的生活當中。

經過了如此多磨難才誕生的這本書,期待能給大家送去更多的知識吧。

/ 變化 /

我相信一定會有很多讀者朋友都想問一個問題:《第一行代碼 第3版》相比於《第一行代碼 第2版》具體有哪些變化呢?在這裡我就向大家詳細地介紹一下主要的變化部分。

首先是編程語言上的改變,本書前兩版都是使用Java作為應用程序的編程語言,而第3版使用了Kotlin,這也是目前Google最推薦我們使用的編程語言。

本書的前兩版中也沒有涉及過語言方面的講解,默認讀者是有Java語言基礎的。而第3版中對Kotlin語言進行了非常全面的講解,不需要讀者有任何Kotlin語言的基礎。

另外你需要知道,《第一行代碼 第3版》是一本升級版的書,而不是一本全新的書,因此書中整體的知識架構仍然和《第一行代碼 第2版》是保持一致的。

雖然整體知識架構不變,但還是涉及了一些章節上的變動。

第3版中移除了之前第2版中的11、15兩章內容。這兩章內容分別講解的是LBS開發、以及App上架。

LBS開發其實主要講解的都是百度地圖SDK的用法,但是百度地圖SDK很可能會頻繁更新,而書中的內容卻是不能隨意改變的,所以我認為這部分內容更應該去百度地圖的開發者官網進行學習。

至於App上架主要講解的是360應用商店的上架過程,由於現在國內的App上架已經變得非常複雜,個人開發者都需要專門去申請軟件著作權才能將自己開發的App上架到應用商店,書中的內容已經不再適用,所以也進行了移除。

而第3版中新增了三章內容,分別是第2章、第13章和第16章。

第2章就是之前提到的Kotlin快速入門章節,這一章將會帶你迅速上手Kotlin編程,講解了如變量、函數、邏輯控制、面向對象編程、Lambda編程、空指針檢查等Kotlin中最基礎、同時也是最核心的知識點。學完了這一章內容之後,你就可以使用Kotlin來編寫一些Android程序了。

第13章是專門講解Jetpack的一個章節。Jetpack是Google於近年推出的一個開發組件工具集,旨在幫助我們編寫出更加符合高質量代碼規範、更加具有架構設計的應用程序。是的,現在我們已經不能停留在實現功能就萬事大吉的層面了,而是要在實現功能的同時,追求更高的代碼質量和架構設計。第13章中講解了ViewModel、Lifecycles、LiveData、Room、WorkManager等內容,基本涵蓋了Jetpack架構模塊當中最主要的一些組件。

第16章是第3版中新補充的一個實戰章節。本書的前兩版中都只有一個實戰章節,而第3版中會有兩個實戰章節。不同於過去的App開發實戰,第16章會帶你一起編寫併發佈一個開源庫。因為我之前也寫過幾個比較知名的開源項目,並且我在公司的主要工作就是SDK方面的研發,所以其實我很擅長寫這部分內容。還有什麼事情是比在別人的項目中看到引用了自己的開源庫更讓人激動的呢?

介紹完了整體章節上的變動,我們再來看一些具體內容上的變化。

為了響應Google的Kotlin First號召,第3版中將全書所有的代碼都改成了使用Kotlin語言來進行實現,Android的持續Kotlin化也是未來長期發展的必然趨勢。不過,由於新增的第2章只是講解了一些Kotlin的基礎內容,為了能夠讓你更加全面地掌握Kotlin方方面面的知識,第3版幾乎在每一章的最後都加入了一個Kotlin課堂的環節。全書一共有12節Kotlin課堂,全面涵蓋了諸如常用技巧、高階函數、泛型、協程、DSL等等語言層面的知識,絕對足以讓你熟練掌握Kotlin這門語言了。

除了在編程語言方面存在大量的變動之外,Android開發方面當然也不會一成不變。自《第一行代碼 第2版》出版之後,Android又經歷了8 9 10系統的快速迭代。每個新系統版本中都會增加一些嶄新的特性,也都需要進行一些開發方面的適配,第3版將這些內容全部涵蓋了進去。

另外,近些年來追求架構設計的開發者越來越多,類似MVP、MVVM等架構的使用也越來越廣泛,傳統的MVC架構逐漸在被拋棄。第3版的第15章中對MVVM架構進行了非常詳細的講解,並且配合著Google提供的Jetpack組件,最終完成了一個MVVM架構的天氣預報程序。雖然這個天氣預報程序我已經寫了3版了,但是這次將會是最具架構性,也最符合高質量編碼規範的版本。相信會對你未來開發公司的實際項目帶來很大的幫助。

除了上述主要變化之外,還有許多小細節方面的變動這裡就不一一列舉了,等待你自己閱讀的時候發現吧。

/ 設計 /

雖說這是一本升級版的書,可我花費在上面的時間和精力絲毫不亞於寫一本新書。所以,不管是在內容方面還是在設計方面,我都希望它和第2版能夠有著更加明顯的區別。因此,圖靈的設計師們這次也辛苦了。

首先是封面的設計,和第2版時一樣,這次第3版的封面也是由圖靈的設計師做出了幾個版本,然後我在公眾號上發起了一個投票,讓廣大讀者朋友們共同選出最滿意封面,投票結果如下:


這本《第三行代碼》,讓大家久等了!

最後藍色封面以壓倒性的優勢當選,《第一行代碼》也終於把紅綠藍這三元色全部湊齊了。第3版的封面正式確定:

這本《第三行代碼》,讓大家久等了!


然後是書籤,第2版中首次在書裡附贈了書籤,那麼第3版當然會把這個好傳統繼續堅持下去了。書籤的設計應該儘可能地展現出一本書的特點,而我認為《第一行代碼 第3版》最大的特點就是兩部分:Android 10和Kotlin。所以我也讓設計師專門為這兩個主題設計了兩種書籤,我們來一起欣賞一下吧:

這本《第三行代碼》,讓大家久等了!

這本《第三行代碼》,讓大家久等了!


每本書中都會贈送這兩個書籤,雖然一本書送兩個書籤可能有點多餘,但我覺得這會給人一種更加完整的感覺。

除此之外,第3版中還首次提供了全書知識架構的思維導圖。這是我根據書中主要知識點進行整理,並由本書編輯張霞繪製出來的,共分為Android和Kotlin兩張圖。

思維導圖可以方便你縱覽本書Android和Kotlin的宏觀圖景,幫助你梳理各章的知識要點。

Android的思維導圖如下:

這本《第三行代碼》,讓大家久等了!


Kotlin的思維導圖如下:

這本《第三行代碼》,讓大家久等了!


這兩張思維導圖都會以彩頁的形式裝訂在書中,方便你隨時查看。

最後是給高校老師們的福音,由於本書前兩版被大量高校當作教材使用,這次為了便於高校老師和培訓機構教學,第3版中專門配備了相應的PPT課件。在書中的前言部分附有所有隨書資源的下載地址。

/ 定價 /

我之前發現有部分讀者朋友對書的定價方式是有誤解的,所以這裡先來科普一下。

任何一本書,都是要以成本為依據來定價的,而不是內容。成本指的主要是這本書印刷所需花費的費用,所以頁數多的書一定比頁數少的書貴,彩色頁的書一定比黑白頁的書貴。

在我之前的一篇文章中,有些讀者留言,認為一本書應該是根據內容的好壞來定價,其實這是不可能的。也許會存在一些好書因為口碑特別好而提高定價,但一定不會存在一本差書因為自我感覺內容比較差而主動降低定價。

由於《第一行代碼 第3版》新增了許多Kotlin方面的知識講解,書的總頁數也從第2版時的500多頁變成了現在的700多頁,所以漲價是在所難免的事情。

一開始本書編輯張霞建議將第3版售價定為99元,我覺得相比於第2版的79元漲幅有點高,問她可不可以降低到89元。她告訴我,700多頁的書定價89元有很大概率會被出版社打回,但她仍然以這個價格上報了試試。果不其然,最終這個定價審核沒有通過,因為市面上700多頁的書定價都至少在100元以上。

最終我也做出了讓步,同意將第3版定價為99元,至少控制在了百元以內。不過這僅僅只是書的定價,而通常我們在網上買書都是有折扣的。具體折扣的多少由各網店自己決定,我參與不了,但一般也就是七八十塊錢就能買到了。

/ 購買 /

瞭解了這麼多,不知道你有沒有決定要買一本呢?目前《第一行代碼 第3版》已經在京東、噹噹等網上書店開啟預售了,3000本首發簽名版先到先得。

關於簽名版的供貨比例是由圖靈的發行部門控制的,這裡我直接透漏給大家:京東自營1800本,噹噹自營800本,常青藤圖書專營店300本,悅悅圖書專營店100本。至於具體在哪裡購買,大家自行選擇吧,我把所有可以購買到簽名版的店鋪都羅列出來了。


京東自營:


噹噹自營:


常青藤圖書專營店淘口令:€Kgi818HpmaQ€

悅悅圖書專營店淘口令:₴QPp018HKeBN₴

另外需要跟大家說明的是,目前這本書還是屬於預售階段,下單之後預計還要過幾天才能發貨。雖然我更想等各個網店都有了現貨之後再發文通知大家,但是出版社告訴我,預售階段已經被下了不少單了,再等幾天通知大家的話我怕簽名版庫存越來越少,所以今天趕快發文通知了,也請各位讀者朋友們多多擔待。


社區試讀:


原文鏈接:


分享到:


相關文章: