本文是文章“InfoQ's 2019, and Software Predictions for 2020”的閱讀筆記,大致介紹了 2019 軟件開發領域的一些數據和 InfoQ 對 2020 技術趨勢的展望。
標題:InfoQ 2019 年度總結和 2020 軟件領域預測
關鍵點
Google 聲明他們實現了量子計算機;
人們對 VR 的興趣在減少——至少是在基於智能手機的 VR 方面,儘管我們認爲 AR、VR 技術在未來幾年會不斷成熟達到市場要求;
我們持續對 Web Assembly 保有興趣,希望其工具能夠成熟起來;
在我們的 DevOps 和 Cloud 趨勢報告中,Kubernetes 佔有了整個雲計算市場。下一個火熱的話題是服務網格(Service Meshes)和開發者工作流工具;
我們希望看到開源社區在例如微服務等架構模式的情景下,是如何在理解力、監察力、可調式性領域下功夫的。
正文
2019 年,量子計算領域有了顯著的進步。5 月 IBM 在 Nature 發表了論文說,他們可能找到了解決當前量子計算機中量子退相干問題(Quantum Decoherence:Quantum decoherence is the loss of quantum coherence)。InfoQ 作者 Sergio De Simone 說到:退相干的主要問題是波函數的坍塌,這會導致在很短的時間週期之後,產生噪音和錯誤。論文指出兩種解決方案:其中一個叫做概率錯誤校正,另外一個叫做零噪音外推。
9 月,Google 也在 Nature 發表論文,說到他們建造了一個超級量子機器,解決了以前計算機沒有解決的問題。但是這被 IBM 所反對,而且 Google 的對機器實際應用是受限的,但這兩者聲明代表在量子領域的一大進步。
另外微軟開源了量子計算的編程語言 Q#。
令人驚奇的是,人們對 VR 領域的興趣減退了,至少在基於智能手機的 VR 方面。Sergio 寫道:Google 決定停止支持 Daydream VR 設備標誌着基於手機的 VR 的終點。
開發方面
Java
JavaScript、Java、C# 仍然是最受歡迎的語言,Rust、Swift、Go 也備受關注,Python 是感興趣增速最快的語言,可能和機器學習有關。
InfoQ 的讀者調查顯示,Java 是使用最多的語言,開發者仍會關注語言的新特性和發展。另外 Kotlin 的受關注度很多、增速很快。
Microsoft 在 Java 有了更多的投入,比如加入 OpenJDK。
在 Java 編程語言趨勢報告中,我們注意到非熱點 JVM 的增長。
一些關於 Java 的優秀文章:
Upgrading from Java 8 to Java 12 by Trisha Gee
Why Continuations are Coming to Java by Ron Pressler
The Complete Guide to the Java SE 12 Extended Switch Statement/Expression by Mohamed Taman
Kotlin: Write Once, Run (Actually) Everywhere by Jake Wharton
A First Look at Java Inline Classes by Ben Evans
.NET
.NET Core 3 在 9 月的發佈在 InfoQ 產生了很大的反響。WebAssembly 是另外一個備受關注的領域,Blazor 也嶄露頭角,它是一個新的 ASP.NET 框架,可以讓開發者使用 C# 和 HTML 創建交互式網頁。Blazor 有很多版本,包括 Blazor WebAssembly,它允許單頁面程序基於 WebAssembly .NET 運行時跑在客戶端網頁瀏覽器之上。
C# 是 第二大廣泛使用的語言。
關於 .NET 的優秀文章:
Goodbye Client Side JavaScript, Hello C#'s Blazor by Ed Charbeneau
Single Page Applications and ASP.NET Core 3.0 by Shawn Wildermuth
.NET Core: Past, Present, and Future by Arthur Casals
Blazor: Client-Side Web UI with .NET Core 3.0 by Arthur Casals
C# 8: Type Inference for the New Keyword by Jonathan Allen
C# 8: Caller Expression Attribute for Assertions and Automated Testing
Web 開發
JavaScript 是在 InfoQ 讀者之中最廣泛使用的語言。最受歡迎的 JavaScript 框架是 Vue 和 React。除了 Blazor,WebAssembly、Typescript、Elm、Svelte 也較受歡迎。
此主題比較好的文章有:
Using TypeScript with the MySQL Database by Deepak Vohra
Google Earth Ported to Browsers with WebAssembly by Bruno Couriol
Vue 2 vs. Vue 3: James Stewart at Vue Glasgow Meetup by Bruno Couriol
Largest Transport Provider in Norway Rewrites Its Website with 83,000 Lines of Elm by Bruno Couriol
How We Reduced Our React App Load Time by 60% by Ilango Rajagopal
架構
分佈式計算和微服務架構也是 InfoQ 內容的一大部分。
此主題比較好的文章有:
Why Do We Need Architectural Diagrams? by Ionut Balosin
Our three part series on "Testing Microservices" by Wojciech Bulaty and Liam Williams (part 1, part 2, part 3).
Reducing Microservices Architecture Complexity with Istio and Kubernetes by Ray Tsang
Netflix Play API: Building an Evolutionary Architecture by Daniel Bryant
Kubernetes Workloads in the Serverless Era: Architecture, Platforms, and Trends by Bilgin Ibryam
AI、機器學習和數據工程
AI 仍然是 InfoQ 讀者比較感興趣的話題。2019 一個比較關鍵 AI 故事是 MIT GEN 介紹,一個基於 Julia 的人工智能語言。Google 仍然繼續在機器學習領域發力。
此主題比較好的文章有:
Google Announces TensorFlow Graphics Library for Unsupervised Deep Learning of Computer Vision Model by Anthony Alford
Google Launches AI Platform - an End-to-End Platform to Build, Run, and Manage ML Projects by Abhishek Kaushik
Algorithms behind Modern Storage Systems by Alex Petrov
Real-Time Data Processing Using Redis Streams and Apache Spark Structured Streaming by Roshan Kumar
Fraud Detection Using Random Forest, Neural Autoencoder, and Isolation Forest Techniques by Kathrin Melcher and Rosaria Silipo
文化和方法
如果要對編程文化和方法做一下總結,那就是“敏捷出問題了”,我們很多文章聚焦于敏捷開發的問題所在。
關於文化和方法相關最受歡迎的文章有:
Maybe Agile Is the Problem by Mo Hagar
How to Slow Down to Go Faster Than Ever in Software Development by Lemi Orhan Ergin
The Death of Agile and Beyond by Mynul Chowdhuri
Simplicity, Please - A Manifesto for Software Development by Paul Merlyn
Minibook: Understanding Agile Values & Principles. An Examination of the Agile Manifesto by Scott Duncan
Lynne Cazaly on Embracing "ish" and The Dangers of Perfectionism
Jeff DeLuca on FDD and Transforming Large Organisations to Product Thinking
Jeremy Kriegel on Design Innovation and Doc Norton on why "Tuckman was Wrong"
DevOps 和 Cloud
Kubernetes 霸佔了容器市場,下一個火熱的話題是服務網(Service Meshes)和開發者工作流工具。我們注意到很多語言是面向基礎設施或者面向雲的。很多和基礎設施、雲相關的語言、SDK——比如 Ballerina 和 Pulumi 備受關注。這樣我們不得不提一下 Dark,雖然還在 beta 階段,但是已經吸引了大量關注。賀詞相關,我們還要提一下 Ecatasy 語言。
此主題比較好的文章有:
How Airbnb Simplified the Kubernetes Workflow for 1000+ Engineers by Manuel Pais
Containers in 2019: They're Calling it a [Hypervisor] Comeback by Phil Estes
Google Releases Anthos, a Hybrid Cloud Platform, to General Availability by Steef-Jan Wiggers
Kubernetes Workloads in the Serverless Era: Architecture, Platforms, and Trends by Bilgin Ibryam
AWS Cloud Development Kit (CDK) Is Generally Available, Enhancing Coding Cloud Infrastructure by Steef-Jan Wiggers
2020 軟件預測
在軟件領域做預測是十分難的。
我們認爲企業開發團隊會繼續選擇 Kubernetes。與此相關的有五個雲提供商:Amazon、Google、IBM(和 RedHat)、Microsoft 和 VMware(和 Pivotal)。我們認爲,除了中國,Alibaba、Oracle、Salesfore、SAP 會有競爭市場的勢頭。
在平臺、操作領域,我們認爲服務網格會和底層的編排框架(Orchestration framework)
(比如 Kubernetes)。我們也希望開發者和服務網格交互的工作流會和當前的工作流、技術、管道更加緊密集成。
極致的開發者應該能夠通過一致的可持續的交付流程進行部署、發佈和調試。例如,通過 GitOps 風格的管道去通過配置 k8s YAML 文件部署服務;使用類似 canarying 或者 shadowing 的技術來控制新功能的發佈,這些技術通過配置一些負載管理的 k8s 定義定製資源的 YAML 來實現;通過一些額外的 CRD 配置來支持添加 log 和 debug 工具。
對於架構方面,2020 將是“管理複雜”之年。架構模式例如微服務和函數已經能夠支持開發者去更好的分離關心點,通過獨立分隔的部署實現各種各樣的變動,工作也更加極致的有伸縮性。然而,我們對正在構建的複雜分佈式系統複雜性的理解——雖然相關的工具已經具備——沒有跟上開發的腳步。我們希望看到開源社區和其他軟件團隊在理解力、監察力和可調式領域的成果。
我們希望看到更多開發者使用“低代碼”平臺。微軟的 PowerApps、Flow、Power BI 和 Power Platform 等產品給此注入了很多能量。
在 .NET 生態中,我們相信 Blazor 會繼續贏得 Web 開發者的喜愛。.Net 5 會給生態帶來巨大改變,尤其是可以和 Java、Objective-C、Swift 互調。儘管言之尚早,微軟最近對 IoT 和 AI 的投入對 .NET 開發的起勢也有所幫助。相關的我們也希望看到對 Web Assembly 有繼續的關注,希望相關工具開始成熟。
儘管對於 VR 今年有一些負面的新聞,我們還是認爲關於 AR、VR 領域,或者其他可選的人機交互方式,在未來幾年會取得明顯進展,儘管關鍵因素還沒真正出現。
本文選自 2019/2020 trends overview。是 InfoQ 軟件工程師的一些看法。