移動互聯 news

從技術、平臺、工具、語言&框架等四大方面,詳解技術未來的趨勢!

發布于:2017/7/1 10:06:40   瀏覽:   Tags:

ThoughtWorks 已于昨日發布了最新一期的技術雷達,小編大熊第一時間拿到了先手資料,提取了朋友們最感興趣的內容整理成文,以饗廣大讀者。本文將從技術、平臺、工具、語言&框架等四個方面,為你詳解技術未來的趨勢。

简单五子棋下载:01會話式用戶界面和自然語言處理

五子棋最高端为 www.giyki.com        伴隨著蘋果Siri、微軟小娜和谷歌Allo類似這類工具——一種新的應用程序交互方式——人機對話,已經席卷了整個IT生態圈。然而這僅僅是這場風暴的開始,它繼續延伸到了家用設備,如:亞馬遜的Echo和谷歌的Home。構建會話式自然語言在用戶界面會遇到各種各種不期而遇的挑戰,然而它所帶來的利益是非常顯著的。為了迫使團隊成員重新思考許多人機交互的場景,亞馬遜Echo的研發團隊故意在該產品上省去了屏幕。


      這種“會話式”已經不僅僅限于傳統意義上的語言。由于消息已經增長到可以主導電話通話和工作場所,我們可以看到一些在智能聊天機器人協助下所發生的多人會話。伴隨著平臺的不斷改進,它們將會逐漸學會理解會話的上下文和會話意圖,從而實現人機交互真實逼真性。更重要的是,市場和主流媒體對這一領域的興趣與日俱增,這大大增加了開發者對這種新的個人“外部皮層”交互模式的興趣。

02智能即服務

      近期,爆發了一系列被我們稱之為“智能即服務”的平臺。不管是語言處理到自然語言識別、圖像識別和深度學習,這些平臺都與各種強大的技術領域密切相關。


     基于開源或者基于SaaS平臺的解決法案的出現,現在這些能力的實現已變得簡單多了。這便意味著“云計算之戰”逐漸從存儲和計算能力向認知能力轉變。


Kubernetes和Mesos這兩個差異化工具的開源就是對這場戰爭最好的見證。此領域中的所有大型廠商都有自己的產品。在倫理和隱私方面的影響我們仍保留態度,但我們并不否認,創新地使用這些強大工具會帶來很好的前景。作為我們的客戶的大多數,已經開始在新的視野上研究如何在他們的業務里把人工智能和商品的認知能力結合起來。

03開發者體驗成為新的差異化競爭優勢

對技術產品公司而言,持續關注的關鍵差異化競爭優勢——用戶體驗設計。而現在來自四面八方的各種因素:產品和開發者的工具的快速崛起,加之工程人才的嚴重稀缺,種種迫使這些技術產品公司不得不開始關注開發者體驗。

評估云產品,越來越多的組織判斷的標準為:“工程摩擦力”,此外,將API視為產品來精心打磨,且專注工程生產力來提升團隊效率。

這些關鍵技術包括: 將內部基礎設施作為一種產品, 令其具有足夠的吸引力來與外部產品進行競爭; 專注于自助服務系統; 理解所開發的 API 的 “開發者人機工程學”(developer ergonomics) ; 對遺留系統進行封裝; 以及對開發者的 “持續用戶共情研究” (ongoing empathetic user research) 的投入。

04平臺的崛起

      主題——技術雷達,源于審查過程中的交流與觀察。最新一次編輯技術雷達的過程中,研究人員注意到了進入象限的新條目的數量。這種現象,研究者認為,這表明平臺在軟件開發生態系統中有非常廣闊的前景。

那些引人注目的硅谷公司向我們展示了構建一個合理的平臺如何帶來顯著的效益。 他們成功的一部分原因來自于找到適用于自身的封裝和能力水平。 從技術雷達所強調的高級功能 (如自然語言處理) 到基礎設施平臺 (如亞馬遜) 來看, 越來越多的 “平臺思維” 出現在整個技術生態系統中。

企業開始考慮采用平臺的方式,使用產品化的API提供的一些精選的功能。特別是在“集成”和“提升開發人員體驗方面”開發團隊有個更多的思考。似乎業界終于走上了將“打包、便利和有用”進行合理組合這樣一條康莊大道。

總是喜歡講平臺如此來定義:API是平臺提供的一個自主服務的,當然在團隊開發環境中容易配置和創建這很重要——這樣很好地與“開發者體驗”主題相呼應。期待在不久的將來,平臺的定義和功能將得到進一步改進和完善。

05盛行的PYTHON

Python作為一門易用的通用編程語言,Python 在數學和科學編程領域具有堅實的基礎。這門語言總是不斷出現雜有趣的地方。 最近, 圍繞人工智能商品化及其應用的行業趨勢, 以及 Python 3 的成熟, 給 Python 社區注入了新的活力。

這一卷的雷達重點介紹了一些能夠促進 Python 人工智能生態圈發展的庫, 其中包括機器學習領域的 Scikit-learn ,采用智能數據流圖的 TensorFlow 、 Keras 和 Airflow , 以及通過自然語言處理實現會話識別應用程序接口的 spaCy 。我們越來越多地看到 Python 正在縮小組織內科學家和工程師之間的距離, 并減弱了他們過去在最喜愛工具方面的偏見。

諸如微服務和容器的架構已經簡化了 Python 在生產環境中的執行。 工程師現在可以通過與語言和技術無關的 API ,部署和集成由科學家們特別創建的 Python 代碼。 相比將特定語言 (比如 R 語言) 翻譯到生產環境上的現有做法, 這種流動性是朝構建研究人員和工程師之間一致的生態系統邁出的重要的一步。

一、技術

1

API轉化為產品

企業已經全然接受通過 API 把業務能力暴露給內外部開發者。 API 通過重組核心能力承諾了快速試驗商業創意的能力。對于API與普通企業集成服務區別在于:其一就是將 API 當做產品( 不考慮API消費者是企業內部的系統或開發人員)。構建API的團隊應該不斷理解客戶的訴求,伴隨著這差異化的需求,產品仍能滿足這些差異化的需求。API使用模式進一步更好理解可以通過可用性測試和用戶體驗研究來研究,并將產品思維帶入到API中,從而得到更好的API設計。API 應該有一個負責任,負責關注用戶并持續改進。 長期的經驗告訴我們,產品導向的缺乏會使普通企業集成和基于 API 平臺構建的敏捷業務存在差異。

2

從代碼中解耦密碼信息的密碼

在此之前的技術雷達,對于保證源代碼內部的秘密信息安全,我們提到了工具有git-crypt 和Blackbox。對于本期提出的從代碼中解耦秘密信息的管理,是另外一種技術人員存儲秘密信息的方式。


3

封裝遺留系統

最糟糕的開發體驗之一——遺留代碼上工作(特別是大型的單體應用)。 作為各種環境中的依賴,擴展和積極維護遺留單體應用是避免不了的??⑷嗽輩捎瞇檳饣迪馜ocker 容器來創建遺留系統及其配置的鏡像,來減少摩擦。已達到封裝遺留系統并供開發人員在本地運行。 同時也消除重新構建、 重新配置和共享環境時候對遺留系統的需要。


4

漸進式Web應用

漸進式 Web 應用的增長是把用戶帶回 Mobile Web 以回應 “移動應用疲勞” 的最新一次嘗試。 Google 在2015年提出, PWA 組合出最好的 Web和原生移動應用程序的 Web 應用程序。 它使用了一系列的開放標準技術, 我們可以通過這些技術創建出與平臺無關的移動應用以及原生應用的用戶體驗。 這平衡了 Web 應用和原生應用各自的優缺點, 并幫助移動應用開發者打破了應用商店的限制去接觸用戶。 你可以把 PWA 想作是具備原生應用功能和觀感的 Web 站點。


5

無服務架構

無服務器架構這種方法通過短暫存在的計算能力來替代長期運行的虛擬機。這種計算能力會根據服務請求而存在,并在服務完成后立即消失。 這種方法工作良好, 我們認為它是一種有效的架構選擇。 值得注意的是這種方法并不是一種 “要么全部采用,要么全部不用” 的方法。 我們的一些團隊已經使用無服務器架構來部署新的系統???, 而對于其他??樵蛉勻皇褂么車募芄?。

6

會話感知API

諸如 Amazon Alexa ,Google 語音服務和Siri 這樣的技術已經大大降低了基于語音的軟件交互的門檻。然而,想要在許多現有的API之上構建更多的會話式輸入(語音或文本) 還很困難。

通常這個上下文將出現在我們發送回瀏覽器的初始響應中。 但在語音接口的情形下, 我們需要在其他地方處理這個上下文。 會話感知 API 是后端為前端服務模式的示例, 其中前端是語音聊天平臺。 這種類型的 API 可以在代表語音前端呼叫底層服務時, 通過管理會話的狀態來處理這種交互方式的細節。


7

游戲領域之外的VR應用

虛擬現實的想法已經存在了50多年了,我們相信該領域目前已經達到了臨界點。 去年, 市場上已經發布了價格適宜的、 面向消費者的 VR 頭戴式設備, 再加上現代的圖形顯卡為這些設備提供了足夠的性能以創造身臨其境的體驗。雖然這些頭戴式設備目前主要還是針對視頻游戲愛好者, 但我們相信, 它們在游戲領域之外的 VR 應用上還存在許多的可能性。


二、品臺

1

LINUXA安全???/span>


“最小權限原則” 鼓勵我們限制軟件只訪問他們需要的資源。然而在通常情況下, Linux進程可以執行其運行的用戶可以做的任何操作,包括綁定端口和執行腳本。 LINUX 安全??椋↙SM)框架允許將安全性擴展至內核,例如 Linux 使用該??槔詞迪?MAC 。 SELinux 和 AppArmor 是最著名的 LSM 兼容實現,它們隨 Linux 內核一起發布。 我們建議團隊學習使用這些安全框架(這就是為什么我們將其放置在采用),它可以幫助團隊評估誰可以訪問共享主機上的哪些資源(包括其中的服務)。這種保守的訪問管理方法將幫助團隊在其SDLC流程中建立更好的安全性。


2

AMAZON API GATEWAY


AMAZON API GATEWAY 允許開發者把 API 服務暴露給互聯網的用戶。 它提供了 API 網關的常見功能: 流量管理,監控, 認證和授權。 我們的團隊在把它和 AWS Lambda 集成作為無服務器架構的一部分上有很積極的評價。 另一方面, 我們在把它用作一個運行在 EC2 上的 HTTP/HTTPS 端點之前的更通用的前置網關時遇到了更多挑戰, 對我們造成了阻礙的是 VPC 的缺乏互動性和在網關上建立客戶端證書驗證的困難。 基于這種混合的使用體驗, 我們建議團隊結合使用 AWS API Gateway 和 Lambda 。 但在更通用的配置里使用它時要評估其適用性。


3

OPENTRACING


隨著單體應用被更復雜的(微)服務生態系統所取代, 跨越多個服務的請求追蹤正成為常態。 幸運的是OPENTRACING 正在迅速成為分布式追蹤的事實上的標準。 它由Uber, 蘋果, Yelp和各種其他大廠商開發, 它支持多種分布式追蹤系統, 如 Zipkin , Instana 和 Jaeger 。OpenTracing 標準目前提供廠商中立的六種語言實現: Go, JavaScript , Java , Python , Objective-C , 以及 C++ 。


4

MESOSPHERE DCOS

MESOSPHERE DCOS 是一個基于 Mesos 構建的平臺。它將底層基礎設施抽象出來, 適用于容器化的以及沒有運行在 Docker 內的應用程序。 這可能對更多 “適量部署”(modest deployments) 而言是過度的, 但是我們開始看到它在商業版本和開源版本中的成功。 我們尤其喜歡它在不同的云計算供應商和專用硬件之間的可移植性, 因此可以使你擺脫對于單一容器編排框架的依賴。 雖然升級可能會比我們想要的更復雜一點, 但整個技術棧正在變得更加穩定。


5

Tango

由于對硬件的要求和構造虛擬世界的復雜度門檻較高,除了虛擬現實(VR) 之外, 替代現實 (AR) 和混合現實 (MR) 也在去年進入主流。 Pokémon Go 的風靡則證明了: 普通的智能手機也足以創造引人矚目的 AR/MR 體驗。 TANGO 是一種用于手機的新型硬件傳感器技術, 進一步增強了在手機上實現 AR / MR 的可能性。 它允許應用程序獲取用戶周圍的詳細的 3D 測量數據, 以便在攝像頭輸入流中放置和呈現更有說服力的虛擬對象。 第一批使用 Tango 技術的手機現已上市。


6

語音平臺

諸如 Amazon Alexa 和 Google Home 這樣的語音平臺目前處在技術界的風口浪尖 技術成熟度曲線 (hype cycle) 的炒作頂峰, 甚至有人預言, 未來會話式的語音接口會無處不在。 我們已經有把對話式UI集成到產品中的經驗, 并且看到了這種新的交互方式對接口設計的影響。 Alexa 則全部從頭設計, 他們舍棄了屏幕并將會話式用戶界面視為一等公民。 但現在要相信這樣的炒作還為時過早, 我們期待更多的大廠商進入這個領域。


8

WEBVR


WEBVR 是一組可讓你通過瀏覽器訪問 VR 設備的實驗性JavaScript API 。 它已經獲得了技術社區的支持, 并有正式版本和每日構建的版本可用。 如果你想在瀏覽器中構造VR 體驗, 那么 WebVR 將會是一個不錯的開始。 此項技術以及相關補充工具, 例如 Three.js , A-Frame , ReactVR ,Argon.js 和 Awe.js 都能夠為瀏覽器帶來 AR 體驗。 除了互聯網委員會標準以外, 該領域中的各種工具也將有助于促進 AR 和 VR 更廣泛的應用。

三、語言&框架

1

Python 3

PYTHON 3 引入了很多有用的特性, 這些特性和 Python2.x 不兼容。 它還移除了大量 Python 2.x 中用于向后兼容的功能, 這讓 Python 3 更容易學習和使用, 而且和語言的其他部分更加一致。 根據我們在機器學習和 web 應用開發這樣的領域中使用 Python 3 的經驗顯示, 語言本身以及大多數支持庫都已經成熟到可被采用的程度。 我們可以 fork 已有的庫并為其存在的小問題打補丁, 或者避免使用已經被放棄的不兼容的 Python 2.x 庫。 如果你在使用 Python 做開發, 我們強烈鼓勵你使用 Python 3。


2

REACTIVEX


分布式系統經常利用多線程、 基于事件的通信和非阻塞 I/O來提高整體系統效率。 這些編程技術提出了諸如低級線程、同步、 線程安全、 并發數據結構和非阻塞 I/O 等挑戰。 開源的 REACTIVEX 庫優雅地解決了這些問題, 提供了所需的應用程序管道, 并擴展了異步事件流之上的觀察者模式。ReactiveX 還擁有一個活躍的開發者社區, 支持的編程語言越來越多, 最近支持的是 RxSwift 。 它還實現了綁定到移動和桌面平臺的功能。


3

AVRO


AVRO 是一個數據序列化的框架。 它通過將 schema 與消息內容共同存放的方式來鼓勵 schema 演進。 生產者可以編輯字段名稱, 添加新字段或刪除現有字段, 而 Avro 確??突Ф絲梢約絳嚴?。 Schema 允許每個數據被寫入而沒有額外開銷, 促成了緊湊的數據編碼和更快的數據處理。 盡管生產者和消費者之間無結構消息的交換形式可以很靈活, 但我們已經看到團隊在部署期間遇到隊列中出現無法處理的不兼容消息的問題。 我們在許多項目中使用了Avro , 并且建議僅在發送非結構化消息時使用它。

4

VUE.JS

在日新月異的前端 JavaScript 框架世界里, VUE.JS 作為AngularJS 的輕量級替代品占據了一席之地。 它是一個非常靈活——且沒有預設主張——的庫。 它圍繞著??榛?、 組件和響應式數據流等概念, 為構建交互式 Web 界面提供了一套工具集。 它的學習門檻很低, 這讓初級開發者和新手很感興趣。 Vue.js 本身并不是一套大而全的框架。 它僅專注在視圖層, 因而可以輕松地和其他庫或現有項目做集成。


5

CAFFE

CAFFE 是一個用于深度學習的開源庫, 由伯克利視覺和學習中心開發。 它主要專注于計算機視覺應用的卷積網絡。 對于計算機視覺相關的任務, Caffe 是一個可靠并且流行的選擇, 而且可以從 Caffe Model Zoo 下載很多Caffe用戶創建的開箱即用的成功模型。 與 Keras 一樣,Caffe也是一個基于 Python 的 API 。 它們的不同之處在于, Keras 中的模型和組件是在 Python 代碼中直接被創建的對象, 而 Caffe的模型是用 Protobuf 配置文件描述的。 這兩種方式各有其優缺點, 并且可以相互轉換。

POSTCSS 是一個基于 Node.js 的 JavaScript 框架, 它有繁榮的插件生態圈, 能夠操作基于抽象語法樹的 CSS 文件。 PostCSS 常常被誤認為是一種預處理器 (如 SaaS 或者 Less ) , 然而我們發現, 它的實力來源于其豐富多樣的插件所提供的功能, 包括語法檢查 stylelint 插件、 交叉編譯sugarss 插件) 、 命名改編以避免選擇器沖突 ( modules 插件 ) 、 模板 CSS 代碼生成 ( autoprefixer 插件 ) 、 文件壓縮等等。 盡管插件的成熟度各不相同, PostCSS 本身仍然是一個簡潔而強大的前端開發框架, 它能夠像對待一個完整前端開發語言一樣處理 CSS 。

友薦云推薦