原帖地址:
http://www.runpc.com.tw/content/168/168E18_1.aspx
2008年必須知道的新技術——軟體開發篇 [zz]
2008年必須知道的新技術─軟件開發篇
文/蔡學鏞.匯整/編輯部
________________________________________
新 技術不斷出現,其中某些技術很可能會成為我們不可避免的挑戰,因此每隔幾年,我們
都應該審視我們未來應該注意的技術有哪些。透過本文章,和大家分享我的技 術觀察與建
議。 當然對大多數的開發者來說,Visual Studio 2008是今年的重頭戲,這也是Windows
Vista推出之后的第一個全新的Visual Studio版本,不容我們輕忽。但依照慣例,微軟還是
會用大量的技術資料、研討會、資源…等,把我們喂得飽飽的。我就不用在此多介紹了。
另外RIA也是今年的重點,最值得注意的RIA技術當然是WPF/Sliverlight和AIR/Flash。關于
RIA,許多文章都已經有提及,我也 不在此贅述。我想在這篇文章中帶領大家認識的,是比
較不一樣的新挑戰。
多核心與網絡運算
穆爾定律觀察到,每隔兩年,在單一芯片上能做的事會加倍。但是穆爾定律繞道而行,不是
產生越來越快的處理器(這幾年CPU頻率的增加已經趨緩), Intel與AMD等公司的作法是產
生多核心的裝置:單一芯片內包含兩個、四個、甚至更多個處理器。如果你的程序沒有共時
(concurrent),則一 次只會在單一個處理器上執行,使用者會認為你的程序很慢。對于
編程員來說,如何充分運用多核心的運算威力,變成一個重要的課題。 而網絡的連結,造
成分布式的環境;如何用更有效的方式進行分布式編程,也會越來越重要。 結合了上面了
兩點因素,Erlang正開始獲得大家的重視。
Erlang解決了現今開發者面對的最迫切問題之一:如何寫出可靠、共時(concurrent)、高
效能的系統。Erlang已經在世界各地被許多公司 廣泛地采用,這些公司用它來產生可靠、
有效率、具規模彈性的應用。 Erlang是一個編程語言,它的設計目的,正是為了幫助我們
建立極度平行、分散、容錯(fault-tolerant)的系統。它已經被商業采用運行多 年,建
立出許多容錯系統。多年來,這些Erlang所建立的系統出錯率極低。 Erlang程序在多核心
的計算機上執行時,會充分運用系統:這意味透過本文章,和大家分享我的技 術觀察與建
議。 當然對大多數的開發者來說,Visual Studio 2008是今年的重頭戲,這也是Windows
Vista推出之后的第一個全新的Visual Studio版本,不容我們輕忽。但依照慣例,微軟還是
會用大量的技術資料、研討會、資源…等,把我們喂得飽飽的。我就不用在此多介紹了。
另外RIA也是今年的重點,最值得注意的RIA技術當然是WPF/Sliverlight和AIR/Flash。關于
RIA,許多文章都已經有提及,我也 不在此贅述。我想在這篇文章中帶領大家認識的,是比
較不一樣的新挑戰。
多核心與網絡運算
穆爾定律觀察到,每隔兩年,在單一芯片上能做的事會加倍。但是穆爾定律繞道而行,不是
產生越來越快的處理器(這幾年CPU頻率的增加已經趨緩), Intel與AMD等公司的作法是產
生多核心的裝置:單一芯片內包含兩個、四個、甚至更多個處理器。如果你的程序沒有共時
(concurrent),則一 次只會在單一個處理器上執行,使用者會認為你的程序很慢。對于
編程員來說,如何充分運用多核心的運算威力,變成一個重要的課題。 而網絡的連結,造
成分布式的環境;如何用更有效的方式進行分布式編程,也會越來越重要。 結合了上面了
兩點因素,Erlang正開始獲得大家的重視。
Erlang解決了現今開發者面對的最迫切問題之一:如何寫出可靠、共時(concurrent)、高
效能的系統。Erlang已經在世界各地被許多公司 廣泛地采用,這些公司用它來產生可靠、
有效率、具規模彈性的應用。 Erlang是一個編程語言,它的設計目的,正是為了幫助我們
建立極度平行、分散、容錯(fault-tolerant)的系統。它已經被商業采用運行多 年,建
立出許多容錯系統。多年來,這些Erlang所建立的系統出錯率極低。 Erlang程序在多核心
的計算機上執行時,會充分運用系統:這意味著你的Erlang程序在四核心的計算機上會比單
核心的計算機上快,而最棒的是,你完全不需 要更動程序,就有如此顯著的效果。當然,
你可以用別的語言做到和Erlang一樣的事,但是只會事倍功半。
GUI
在Windows 3.x時代,Charles Petzold的Windows程序設計著作是大家必讀的經典。有人要
他為Windows NT也寫一本這樣的書,他卻說:等NT賣千萬套再說吧!這顯示出Charles
Petzold一直都是屬于「大眾技術類」的作家,當他在2007年也寫出一本3D程序書籍時,或
許代表我們3D程序設計的時代已經揭開序幕。 Vista與MacOS都早已經進入3D的時代。如何
運用3D的API,開發出更炫目的設計,會是未來GUI吸引使用者的重點。
Java
除了Sun官方的Java,Google剛推出的手機平臺Android也是一種Java平臺。更不用提AIR也
可以算是廣義的Java平臺(太多地方都 類似Java,連Bytecode檔案格式都很類似)。由于
Android和AIR都不是弱勢的平臺,所以可能會造成Java的分歧。 但是雖然彼此分歧,也算
各有其所。Java用在Web后端,Android用在手機,AIR用在Web前端。
Shell
30多年來,沿襲自Unix的Shell用法,再怎么改變,終究是換湯不換藥。在微軟推出
PowerShell之后,Shell終于有了截然不同的面貌和 更強大的威力。運用.NET,整合各種對
象模型(WMI、COM…),PowerShell名稱中有出現Power(威力)絕非浪得虛名。相當值得
系統管 理員與編程員學習。 但是提醒你,PowerShell或許不難上手,但是有太多陷阱。一
開始不熟悉這些陷阱時,會吃不少苦頭。
語言
從Tiobe的編程語言需求排名,可以看到Ruby與D語言快速進入主流;Perl消退,被Python超
越;C# 慢慢上漲、Java與C維持平盤、C++ 漸漸低落;Delphi持續探底,Lua往上猛竄。 估
計未來幾年,OO語言還是主流,函數語言漸漸流行。目前主要是學術圈在使用函數語言(
Functional Language),但確實有相當多跡象顯示,函數編程有可能會漸漸走入業界。
自己寫parser。除非你用像REBOL這樣的語言,否則寫parser應該會是很痛苦的事,幸好你
可以利用 ANTLR幫你產生parser。目前ANTLR已經支持相當多主流語言,ANTLR相當值得學習
。
Security
網絡的時代,危機四伏。許多系統的保全都是事后加上的,這樣子很危險。事先良好的規劃
是建立保全環境的關鍵,而規劃的最佳工具是模型塑造 (modeling)。用形式上的作法,
尋找威脅與弱點,以破除攻擊。 STRIDE是相當知名的威脅分類模型。STRIDE可以用來為系
統的重大威脅進行分類。威脅正是攻擊者希望發生的事,也就是我們不希望發生的事。如果
我 們塑模所有的STRIDE威脅分類,我們就有很高的機會可以涵蓋大多數重要的領域。
STRIDE是Spoofing(偽造)、Tampering(竄改)、Repudiation(否認)、Information
Disclosure(信息揭露)、Denial of Service(服務阻斷)、與Elevation of Privilege
(特權提升)的縮寫。 建立保全模型,有三個部分:威脅、資產、與緩解(mitigation)
。透過塑模了解你的系統可能面臨的威脅,并緩解問題,保護資產。不要讓你的程序, 布
滿弱點,危害大眾,程序員必須及早補充Security相關的知識,將STRIDE應用在開發過程中
。
整體而言
簡單才是王道。PHP、RoR、REST會流行正是因為簡單才是王道。復雜的技術固然有許多美好
的愿景(彈性、效率、跨平臺…),但是大多數的 developer尚未看到愿景,就已經半途陣
亡。復雜的技術,學習門坎太高,開發過程太長,成本太高,所以只適合用在極少數的項目
中。 多語言的時代來臨。以往只要用C/C++,就可以包辦各種應用的開發,不管是系統程序
、桌面應用、網絡應用。現在卻是多語言的時代。多會幾個語言比較保 險,尤其是學會兩
、三個Script語言絕對不嫌多。 今天的資產是明天的包袱。不甘心丟棄手中的技術(畢竟
是多年學習的結果),改用(改學)新技術者,會漸漸被時代拋棄。Paradigm Shift是常態
,所以我們應該積極地接受這些新挑戰,畢竟IT產業就是這樣。