也許一直在一線的程式設計師們對這個標題呲之以鼻,特別是全端工程師們。這篇文章主要是拋磚引玉,預測一下以後的技術方向。另外,文中可能也有表達不對的地方,歡迎指正。如果只想看未來的部分,可從中間開始看。
電腦產生以後,這個產業的發展日新月異,不停地產生新的技術來解決新的問題。這裡不把電腦語言的更新換代看作技術的變化。電腦程式語言應該算做是規範,除了解決新問題外,有些語言的產生和流行也是有歷史原因的。
從電腦剛產生時,解決的是計算問題。其將許多人花費好幾個月的計算在幾天之內完成。這一代的工程師們更多的在解決硬體問題。程式設計師(或叫做軟體工程師)是將問題翻譯成電腦語言(其實程式設計師做的一直是這個),也就是卡片紙。程式設計師在當時的電腦系統中,應該不算一個核心角色。因為大部分問題和挑戰都在硬體系統、演算法上。
隨著電腦成本的降低,世界大戰後戰爭需求減少,開始大力發展經濟。硬體解決方案的成本問題開始凸顯,於是開始產生了通用計算機。通用電腦逐漸統一了硬體標準,把更多的彈性放到了軟體上。基本模式就是:巨無霸的硬體廠商負責提供運算資源,程式設計師負責解決問題。這時候,程式設計師的春天來了。同時,軟體開發的理論也在不停地發展。隨著各種語言的層出不窮,基本上大家都認可了指令、數據,程式基本流程、函式庫函數等各種計算機的概念。
再往後,隨著電腦的應用的範圍越來越大,挑戰也越來越多了。由於系統複雜性的增加,許多系統已經不是幾位,甚至是數十位程式設計師就能完成的了。 (現今的作業系統、搜尋引擎都是數千甚至數萬人幾十年辛苦工作的結晶)。新的挑戰也來了——軟體工程,如何更有效率、可預期地開發、維護複雜系統。這裡的挑戰包括:如何將傳統的專案管理經驗放到軟體專案管理中;如何讓程式設計師採用各種標準化的程式設計風格;如何建構合適的團隊結構等。這時候,程式設計師的重要性就凸顯出來了,產業鏈中的地位也變高了。縱觀歷史,數萬人以前集中在一起都是進行體力勞動或戰爭。人類從來沒有這麼大規模的將智力集中在一起解決問題。
同時,解決的問題規模和類型也進一步增加。其中,人機互動是一個熱門且有挑戰的方向。輸入上,除了從打字機來的鍵盤外,又發明了滑鼠,顯示,揚聲器等各種人機互動的裝置。程式設計師除了要實現底層的驅動程式碼,在人機互動層面也要實現方便易用的互動體驗。這時候除了演算法和設計等挑戰,還有人體工學、文化上的挑戰。例如,中國人花了很多年,也沒製造出廣泛應用的中文鍵盤和流行的輸入方式,最後還是英文鍵盤 拼音成了最主流的輸入方式。這是漢字本身的特徵造成的,而廣大程式設計師花了大量的人力物力才認識到了這些文化上的規律。另外,網路也是另一個熱門。程式設計師們在底層將電腦連接在了一起,並依靠強大的網路能力實現了人們的遠端溝通。
到了近幾年,又出現了大數據、物聯網等熱門的方向。程式設計師從底層實現大數據的批次、傳輸、存儲,解決了效能、可靠性等各種問題。由於大數據的精確性和完備性通常達不到100%,所以大數據也讓許多程式設計師開始去解決不確定的問題。
別人家的程式設計師一直在解決不同領域、類型的問題。程式設計師的角色開始了分化(同時也有很多角色從程式設計師中分化出來了),從開發、測試,到架構設計、體驗最佳化、前端開發、後端開發、驅動開發、資料庫開發、IT等等數不勝數。縱觀不太長的程式設計師職業史,這些角色也在不停的產生和消失中。這代表著一代一代的程式設計師不是不停的學習,就是從這個產業離開(也沒什麼不好的,好多富翁都是程式設計師變的)。從歷史來看,程式設計師解決的問題,所使用的元件和思考模式都在不停地改變。但也有一些不變的東西,像是程式基本流程、設計模式、軟體工程。所以很多程式設計師在不停的學習新東西,以便能夠解決新問題。
那麼,現在正在、未來會發生什麼變化呢?這裡只想討論一個:人機互動的革命,包括人機互動方式,和人機互動層次兩方面的革命。 (說人話!)好吧,就是Kinect, HoloLens、Cortana帶來的新情況。這類新產品集中在一起,將對現有的人機互動產生顛覆性的革命。一句話概括:未來人們應該花更少的時間學習如何使用科技,程式設計師要花更多時間讓科技適應人,而不是人去適應科技。例如,單輪摩托車不需要學習怎麼在一個輪子上保持平衡,四軸飛行器不需要學習怎麼轉彎、穩定,這都是很好的例子。
1、人機互動方式。人是生活在三維空間裡的,程式設計師們也不停地在各種輸入輸出方式模擬三維空間。首先,顯示器是一個二維的輸出,因此滑鼠和各種觸控方式也設計成了二維的。這裡的二維性除了它們是平面輸入輸出外,它還真的只是個物理的平面…顯示器放在哪裡就在哪裡,觸控要在顯示器上完成,滑鼠也需要在一個平面上完成移動。鍵盤呢?可以說其維度都沒到一維。
什麼是未來的輸入設備呢?它包括全像輸入輸出設備和解放雙手的輸入方式。
(1)、全像輸入裝置。 Kinect這樣的體感、手勢輸入裝置屬於全像輸入裝置。 Kinect很酷,但不得不說這只是全息輸入裝置的雛形。這不僅是因為其不溫不火的狀態,也是本身還有很大的提升空間。一方面,設備本身精確度不夠、使用的範圍不是360度無死角;另一方面後面沒有強大的人工智慧來支援(人工智慧放到互動層次部分講,這裡只講全像輸入裝置)。未來的輸入設備應該是覆蓋整個空間,精確檢測到人的微動作和微表情,甚至能夠檢測到人的健康狀態(安全和隱私是需要考慮的方面)。從單一技術上來說,應該沒有突破不了的難題了,但整合起來製造出完美的設備仍然需要巨大的投入。
(2)、全像輸出設備。全息顯示技術在許多科幻電影裡都示範過了。 HoloLens這樣的擴增實境裝置和各種虛擬實境裝置都屬於全像顯示裝置。這些設備還處於非常初級的階段,但已經帶來了極大的震撼。在物理技術沒有突破之前,這種穿戴式的裝置是全像技術的主要載體。除此之外,還會出現各種味覺、觸覺的設備,這些全部加起來,覆蓋了人的所有感覺器官,就可以稱作全息輸出設備了。
(3)、Cortana一類的語音助理。其最具革命性的一點是進一步解放了雙手(聽起來怎麼這麼耳熟?)。這和人類直立行走的解放雙手當然不能相提並論,但其革命性也是可圈可點的。還是那句話,這類語音助理還在雛形階段,它們的主要挑戰除了語音辨識外,主要是在後文要講的互動層次。 Cortana不像滑鼠鍵盤,一方面需要學習如何使用,一方面還需要到固定的位置或某個固定的姿勢才能使用。現在Cortana雖然要將手機拿起來才能使用,但透過物聯網的進一步發展,是可以進一步發展的。
對程式設計師的挑戰就來了:
(1)、製造、整合出這些設備,甚至發明出新的設備。這些設備需要提供完美的體驗,和人的運動、感官無縫結合,讓人感到自然。
(2)、在較高層次,如何收集模糊、大量的輸入,並轉換成電腦能夠處理的確定指令。和傳統的輸入方式相比,除了空間變成了三維,資訊量也有數量級的增加。
(3)、如何提高輸入的效率、降低學習成本?程式設計師需要考慮的是如何顛覆性的提高輸入效率。這裡不僅是滑鼠和螢幕的座標從二維變成了三維的。想想鋼鐵人是怎麼輸入的?
(4)、如何讓設備輸出最自然的體驗?特別是全息顯示設備,要解決頭暈等問題需要大量的調試和研究的。
(5)、最重要的是:如何用這些裝置建構全新的體驗模式。例如,不同種類的應用應該放在什麼位置,什麼呈現方式?什麼樣的動作操作才是最有效率、最自然的?這些需要一代一代的產品不斷的迭代,才能加深對新體驗的認識,並發揮新一代全像裝置的能力。
2、人機互動層次。目前的人機互動方式上,雖然許多產品號稱體驗非常好,但仍然需要人去適應設備。不僅是輸入輸出的方式,也是思維的方式,目前的人機互動的體驗都有很大的提升空間。
例如,想出去旅遊時,要先研究到底去哪裡,要嘛上網,要嘛聽人說,要嘛去旅行社直接預約。去旅行社當然最省事,但聽不到第一手的體驗,成本也會比較高。如果要自己研究,選地方,確定日期,買機票、飯店,找攻略,過程中要用到很多次搜尋引擎,各種預訂網站,發郵件等。從開始想到基本確定至少要好幾天,中間也好幾個小時使用各種工具。而富豪們呢?也許只花5分鐘就完成了整個過程:告訴助手:想出去玩。助手可能就問問想去什麼樣的地方(也許不是某個特定的地方)?玩幾天?大概什麼時候去?然後基本確定後再回報安排就可以了。這兩個過程之間的核心差異就在於互動的層次。一般人是依賴電腦進行任務層次的交互,而富豪是意圖層次的交互。這就是互動層次的不同對效率的影響。
Cortana這樣的語音助理除了解放了雙手,它也是一個非常自然的輸入方式。這讓程式設計師和科學家開始更多的研究人們語言後面的意圖,從而提高電腦和人的互動層次。
Project Oxford和Azure Machine Learning這樣的開放的人工智慧組件真正把多年實驗室裡的玩具帶給了全世界。這就像當年Siri的發布一樣,雖然它不是最好的,但沒有它,就不會有google now和Cortana的迅速推出。好吧,再來一次:雖然Project Oxford只是個雛形,但是Project Oxford的推出給業界定義了人工智慧組件更高層的介面標準,降低了人工智慧的學習、應用門檻。特別是其中的語言模型。除了人工智慧組件的開放,可以預見由各大公司基於大數據的各種數據模型也會很快共享。基於它們,人工智慧的應用很快就會遍地開花,所有程式設計師都能創造出更聰明的應用,讓每個人都可以有自己的個人助理。如果無法腦補個人助理的價值,請觀看電影《她》(《Her》),看看人工智慧是怎麼幫忙處理電話和郵件的。
另一方面,在這一輪人工智慧的熱潮下,硬體公司也開始製造採用人工智慧演算法的處理器,這也代表著新一代的程式語言和理念的開始流行了。
互動層次方面對程式設計師有更大的挑戰了:
(1)、最大的挑戰就是學習和適應新的程式設計理念。以前的程式都是if..else while這樣的確定性的結構化程序,程式設計師要開始學習如何寫元程式。寫出的程序是可以自己適應個體使用者需求的,而不是寫一段能夠適應所有使用者的程序。程式設計師的程式碼將是方向性的,統籌性的,而不再是細節的堆疊。
(2)、大開腦洞,如何結合全像互動和物聯網等技術提升人機互動層次。幫助人們做事情10步並5步,5步並1步。例如,什麼情況下抬手錶示要喝水,抬頭表示想開燈,甚至無需特定動作;真正幫助人們管理時間,協調日程,而不僅僅是一個日程表。
總而言之,這裡描述的未來可能需要10年、20年或更長。也許我們這代程式設計師已經退出江湖了。熱點將不再是發明各種語言、發現各種工程管理方式和軟體設計模式了,而是科技如何進一步的以人為本,促進生產力發展。對程式設計師的挑戰除了要學習和探索新的輸入輸出方式,還要學會像人工智慧這樣的完全不同的程式設計理念。
免費領取LAMP兄弟連原創PHP影片教學光碟/《細說PHP》精要版,詳情諮詢官網客服:
http://www.lampbrother. net
|