2025年1月27日 星期一

React 思維進化:一次打破常見的觀念誤解,躍升專業前端開發者

 



在估評、挑選網頁應用程式的技術範疇時,無庸置疑的容器化前後端分離兩項技術已經是軟體開發業界默認的 De facto standard ,而前後端程式分離的概念與實踐更是一舉改變軟體工程師的職務劃分。以 JavaScript 為核心語言的網頁工程師,逐步變成掌握網站與行動應用開發話語權的前端工程師。隨著 Node.js 以其高效能成為網頁後端技術新竉兒,各種超越 JQuery 這個前端 JavaScript 函式庫的挑戰者們,也因為其青出於藍而大放異彩。其中 React 便是獨領風騷的一方之霸。

對於一個從事後端開發的工程師來說,學習 React 技術,目標純粹只是想減少自己對前端技術的知溝,方便未來能與前端工程師同事更容易討論、合作有前後端分離的網站專案。不過事與願違,在完全沒基礎的情況下,嘗試去搞清楚所謂的前端技術是怎麼一回事,很容易用自己瞭解的技術去推論,而有所侷限,反而看不清真相。像我一開始也鬧了個笑話,把 React 誤以為是 Java 語言裡的 Reactive 技術,還因此去研究了 Spring WebFlux。或是後來分不清 React 和 Node.js 的角色與關係,把 React 誤當成是某種 Node.js 上的框架。後面這點倒是不能笑我,畢竟 React 的開發環境太依賴 Node.js 了,幾乎所有的資料都是指導 React 開發者先安裝 Node.js。

正在苦惱如何事半功倍地學習必要的前端基礎時,React思維進化一書如天降甘霖般紓解我的煩憂。全書的目標便是替讀者們建立最正確、基礎的 React 技術觀念。也順道解答了為何 React 這樣的前端技術能將 JQuery 取而代之,而且形同水火,兩者不能並存。實際上就是 React 為了要減輕操作瀏覽器 DOM 的負擔,導入了 Virutal DOM 的設計,壓縮程式運行中所有的元件異動,只在最後階段才同步反映到瀏覽器的 DOM 上。JSX 是方便撰寫 React element 的語法蜜糖,而 React element 卻要經過 Babel 這種語法轉譯器的幫助,才能變成真正可運作的 JavaScript 程式碼。這一切的一切都有太多前情提要的背景知識,也難怪 React 不是非常好上手的程式語言。

不過 React 不好學習有另一個關鍵的原因,如果你在網路上查找 React element 的範例程式碼,肯定會找到兩種風格截然不同的東西,class component 和後來的 function component 。 書裡提出許多論證,讓讀者知道 function component 改進、消除了過去 class component 設計上的缺失。這樣的技術改版是不得不然,但這肯定是個容易讓初學者踩雷的誤區,甚至可能白費時間學到過時的 class component 開發技術。單向資料流的 prop 以及 state ,是確保 Virutal DOM 運作能正確無誤的機制,這也連帶著影響了程式碼的開發範型。從鳥瞰的角度來評論,可以說許多 React 特殊的程式碼設計風格與規範,以及搭配運作的 hooks 函式庫,都是為了達成更有效率的 DOM 更新,React 原始設計團隊,將此負擔轉嫁到工程師上,而不是開發出能簡化程式碼的一體適用執行環境。

不論是線上的 React 前端工程師,或是像我這種想對 React 多點瞭解的後端工程師。React思維進化都是值得成為第一本或是唯一一本的 React 技術指南。在擁有書中講解、介紹的背景知識後,讀者們才能更有自信,具備足夠的底氣去學習更進階的,如 Next.js 等 React 框架。而在全書的薰陶之後,即便看到前端工程師同事丟來的程式碼,相信也能略懂略懂的端詊。

2025年1月14日 星期二

設計聊天機器人

 


自2017年起由AlphaGO興起的人工智慧浪潮,從最初的車牌、人臉辨識,到自動翻譯和對話機器人,各種改變大家行住坐臥的AI服務,已經深深融入到你我的日常生活情境中。其中對話機器人或稱為聊天機器人被許多公司行號用來執行每日的客服事務,或是當做基本的品牌行銷渠道。而設計、開發與維運聊天機器人,卻有著和傳統資訊系統截然不同的流程與思維,這便是這本設計聊天機器人的主題,帶讀者們以產品經理或簡稱PM的觀點,用全方位的角度,好好瞭解聊天機器人到底是什麼?

從市面主流的聊天機器人平台談起,再介紹主要的各種應用情境。先從策略面的角度切入聊天機器人能為企業帶來怎麼樣的創新。接著強調設計機器人時的個性塑造要符合企業、組織的品牌形象,並補充由技術面剖析聊天機器人的系統架構等資訊。談完大方向,內容就落實到實作面的各種技術議題。最核心的當然是達成自然語言理解的人工智慧、其次是對話資訊流多元互動使用者介面,這些都和一般網頁與應用程式開發有所不同。書中最後幾章手把手帶著讀者,從無到有地規劃、設計一個聊天機器人產品。其中撰寫對話腳本和系統測試相信對絕大多數的開發者來說,都是充滿新奇的一種體驗。

相信絕大多數的消費者對於時下所謂的智能對話機器人並沒有正向的體驗。書中預測的對話經濟風潮,對照的卻是各家大廠陸續退出智能語言服務市場,像是狠狠地打了作者一巴掌。追究原因或許有三,一是由機器學習的監督式分類模型,要處理複雜、充滿例外的自然語言理解課題,仍是力有未逮。二是對話機器人系統的維運,必須不斷地投入心力爬梳對話記錄,用以調校、優化腳本和模型,以維持智能服務的高品質,但大多數的企業、組織仍習慣以建好就結案的思維來建置資訊系統,讓八成以上的智能對話服務變成了雷聲大雨點小。最後,許多應用情境一開始都是出於過度樂觀的猜想,實際問世後不被消費者買單。像是購買流程,對照網頁操作的直觀、迅速,有多少比例的消費者願意花時間和機器人對話,只為了購買一個簡單的商品?

大型語言模型或簡稱LLM的出現,肯定會對聊天機器人相關產業產生天翻地覆的震撼。畢竟藉由生成式AI的協助下,就連非資通本科生也能輕鬆打造出能打敗專營打造對話機器人服務的科技公司。在技術力不再是發展門檻的大環境下,對話式應用能否實際開創出有如APP市場的另一片天?讓家家戶戶都能使用像電影鋼鐵人裡的智能服務賈維斯,或許是指日可待的未來。