![]() |
VOOZH | about |
程式設計師喜歡嘲笑時尚圈,潮流就像一陣風,來得快去的也快。裙子長長短短的變化,色彩的來回變化,領帶寬了又窄。在技術界,嚴謹,科學,數學和精準統治了一切。
但這不是說編程這個職業沒有趨勢一說。編程趨勢是由更高的效率,更多的定製要求,以及易用性來驅動的。新技術基於上代技術,又能在這些方面比上代技術做的更好。
下面列出了哪些是當今程式設計師中的熱點趨勢,哪些是是上代技術或要過時,或者說有過時趨勢的,或者說有更新的挑戰者的。當然不是每個人都會同意下面這個列表。而這些趨勢以及趨勢的相互博弈,就是使編程成為一個充滿迷人魅力的原因:快速的變化,激情的辯論,突然的回歸。
不是:全語言堆棧
不久以前,創造新的程式語言的人必須構建所有的事情,必須將代碼轉換為可運行的字節,自己寫編譯器之類的東西。那麼現在有人可以幫你利用已有的成果來簡化這個事情。現在只需編寫一個預處理器,將一種新型的代碼轉換成一組具有豐富的庫和API的某種已有語言的代碼。
腳本語言(如Python或JavaScript)曾被限制在小項目中,但現在它們已經可以是嚴謹工作的基礎。那些不喜歡JavaScript的人創建了CoffeeScript,一個預處理器,讓它們再次被編碼,而不需要繁瑣的標點符號。有幾十種變體以不同的方式對語法進行預處理。
喜歡動態編程的人們創建了Groovy ,這是一個更簡單的Java版本,沒有過多的標點符號。大概有幾十種語言,如Scala或Clojure,都運行在同一個JVM上。你可以在.Net虛擬機上運行很多語言。為什麼要重新發明輪子?
不是:管理程序
上面這個說法其實並不完全正確。管理程序還是有它們的位置,並且許多Docker容器運行和基礎的作業系統,是運行在虛擬機管理程序之上的。但是,Docker容器比虛擬機映像小得多,這使得它們更易於使用和部署。
開發人員會更願意操作Docker容器,因為在部署過程中更簡單更輕鬆。有些公司正在研究如何從堆疊中抽出更多多餘的東西,以便容器可以像「裸機」一樣運行。
在數字商業時代,你需要敏捷抓住新機遇,同時有效地維護傳統的內部遺留系統。
不是:JavaScript文件
很久以前,大家都要學習寫JavaScript來彈出一個警告框,或者檢查表格中的電子郵件地址是否包含@符號。現在,HTML AJAX應用程式非常複雜,很少有人完全從零開始。採用精心設計的框架,編寫一些膠水代碼,這樣來實現業務邏輯要簡單得多。
現在有很多的框架,比如Kendo,Sencha,jQuery Mobile,AngularJS,Ember,Backbone,Meteor JS等等,都可以處理網頁應用和頁面的事件和內容。
這些是Web應用程式。還有一類旨在為智慧型手機/平板電腦提供跨平台開發支持的技術。比如NativeScript、PhoneGap、Ext JS這樣的技術,這些都是使用HTML5技術創建應用程式的選項。
不是:通用級聯樣式表
曾經,向網頁添加樣式控制就意味著打開CSS文件,然後輸入一個新的命令,比如font-style:italic。然後保存這個文件。現在的網頁都非常複雜,無法這麼簡單地來操作。對顏色的一個調整,很可能所有地方都不一樣了。一切都是相互關聯的,你必須清楚一切細節,因為牽一髮而動全身。
這就是像SASS這樣的CSS框架和它的表兄弟Compass表現的地方。它們通過提供編程結構(如變量,嵌套塊和混合)。在編碼這一層來說,這些並不是新穎的東西,但它對於設計層來說是一個重大的飛躍。
不是:靜態標籤
曾經有一段時間,視頻就是你在視頻網站上看到的內容。這是一個獨立的事情,視頻在一個專門的頁面上獨自存在。視頻被越來越多地作為網站的一部分,就像靜態的GIF和JPG那樣。突然之間,我們看到人和狗都活起來了,屏幕開始動起來了。
設計人員發現,現在的視頻標籤只是另一個矩形,雖然這個矩形通常還需要一些程式設計師的JavaScript代碼來控制它。視頻不只存在於客廳沙發前面的盒子裡面,還是一個可以到處都有的裝飾選項。
不是:大數據(需要Hadoop)
每個人都希望是校園裡的大人物,如果不是,那麼他們就是正在找一個可以讓他們成為大人物的學校。所以毫不奇怪,當「大數據」開始流行時,人們就開始要求買最大的,最強的大數據系統 ,就像他們曾經購買遊艇或摩天大樓一樣。
有趣的是許多問題其實沒有大到需要使用最好的大數據解決方案的程度。當然,像Google或Yahoo這樣的公司會跟蹤我們所有的網頁瀏覽行為,它們的數據文件以千兆字節或堯字節(2的80次方)為單位。但大多數公司都有數據集可以輕鬆地基於PC的RAM工作。在大多數算法中,數據不需要讀入內存,因為從SSD傳輸它是正常的。
當然也會有一些情況需要並行運行的Hadoop雲中的數十台機器的快速響應,但是還有很多場景可以在單台機器上處理,而不會產生麻煩的協調或通信問題。
不是:Hadoop
這並不是說Hadoop已經冷卻了很多。更多想說的是Spark現在很熱,使Hadoop模型看起來有點老了。Spark借鑑了Hadoop從大量數據中提取信息的一些最好的想法,並通過一些改進來來使代碼運行得更多更快。最大的一個變化是Spark將數據保存在內存中,而不是要求將所有內容寫入分布式文件系統。
當然,許多人會合併這兩者。通過使用Spark的處理速度來處理存儲在Hadoop的分布式文件系統中的數據。與其說他們是競爭對手,更多的還是合作夥伴。
不是:大數據
大數據從人工智慧中借鑑了一些概念,並提升了挖掘日誌文件和點擊流中的大量的數值計算算法的複雜性。通過從AI研究的五十多年來借鑑更複雜的算法,我們比以往任何時候都更有可能在噪音中發現信號。從機器學習框架到認知計算,AI不斷幫助我們提升對數據的提取和分析。
不是:虛擬的東西
此時此刻,你看到這些文字的時候我們都將生活在虛擬實境中,一切都是通過一些顯卡在我們的視網膜上繪製的。與此同時,機器人的世界正在爆炸。每個學校都有一個機器人小組,房子的每一個角落現在都開放給機器人可以進入。機器人吸塵器、掃地機已經是舊消息了,無人機正在起飛。
這一切都意味著程式設計師需要開始考慮如何編寫代碼來控制新機器。目前,這通常意味著為像Raspberry Pi這樣的輕量級控制器編寫腳本,但隨著相關的工具庫發展地更加複雜,這一切都將會發生變化。許多機器人主義者而言,這是一個充滿C的機器平台。這意味著新的規則,新的工具庫,新的協議以及許多其他新的話題需要考慮。
不是:網站
網址指向的網頁是否填有靜態文字和圖片?將所有信息放在稱為網站的單獨網頁的網絡是多麼簡單和古雅。設計團隊將在網站地圖上花費數小時的時間,並試圖讓網站能夠輕鬆地進行導航。
新的Web應用程式是巨大資料庫的前端。當Web應用程式需要信息的時候,把數據從資料庫中提取到本地。沒有必要使用構建網頁所需的組件來標記數據。數據層與表現層完全分開。移動計算的興起是另一個因素:一個單一的響應式設計的網頁可以像應用程式一樣工作,以更好地避免應用程式商店的混亂。
不是:原生移動應用
如果你有一個關於移動方面的好主意,你可以為iOS,Android,甚至是BlackBerry作業系統或其他其他作業系統分別編寫單獨的移動APP版本。每種作業系統有需要一個獨立的團隊編寫一個不同的程式語言。
或者你可以構建一個HTML應用程式,並將其放在網站上,這樣可以運行在所有平台上。如果有變化,你不需要到每個應用商店去檢查。現在HTML層越來越快,能在更快的晶片上運行。這種方法可以在製作更複雜和互動更多的的應用程式方面,更好地與本地應用程式競爭。
其實混合式APP,比Web App更是原生App的對手。兼具Web App和原生App的優點。有興趣的可參考:移動應用,原生?Web?混合式?
未完,待續