2009年4月1日 星期三

轉貼文章:提高自己水平的十大技術解析

在網路上看到這篇文章,分享給想要進入IT領域,卻不知如何開始的社會新鮮人。

資料來源:http://51pass.blog.ithome.com.tw/post/1551/24071
====================================
在當今的IT就業市場,有人歡喜有人憂。有人對目前的工作和薪水很滿意,有人目前正面臨著下崗,或者已經下崗……

可能你是公司裡唯一諳熟某項關鍵技術的高手,缺了你,公司便玩不轉了;也可能你所在的公司對你現有的專業技能高枕無憂,認為你在任期內足以勝任公司給你的開發任務(當然就不會再花銀子去培訓你啦)。

不要告訴我你們公司對原來用VB開發的業務處理系統很滿意,而你呢,也認為自己除了用C語言開發程序以外,不會再去做別的什麼事情。

你是不是對.NET和Java為爭奪開發工具市場撕破臉皮而熟視無睹,你是不是對XML將要取代關係數據庫而無動於衷以及不屑一顧。你是不是認為你能用彙編或C開發任何東西,所以覺得其它開發工具都不再重要……

如果真是這樣,那麼你離失業的日子不遠了

俗話說--未雨綢繆……

想一想如果你現在失業沒有工作會怎麼樣?

想一想現在還有如此之多的弟兄們為了找一個飯碗而四處奔波。

想一想如果現在你們公司為了搶占市場,突然要進行技術轉向,你該怎麼辦?

想一想你現在為了自己的前途,突然需要改變技術領域,你該怎麼辦?或者你不滿足於現在自己的知識結構,想要再充實一下,但又不知選擇那些內容來學習。那麼繼續往下看,並一起參加討論吧,相信會有收穫的。 在人才招聘市場,人事經理們關注的是實際技能,要求現在和將來從事開發工作所需要的實際技能。作為一個技術開發人員,自己的知識結構是就業和保持自身崗位的關鍵。此外還有一點也很重要,那就是即便你不再從事或者尋求實際的開發工作,也必須盡可能多地了解和熟悉當今你所從事的領域中最前沿的技術和信息,只有這樣才能跟上技術發展的步伐。以便使自己始終處於不敗之地。

本文列出了當今計算機軟件開發和應用領域最重要十種關鍵技術排名,如果你想保證你現在以及未來的幾年不失業,那麼你最好跟上這些技術的發展。雖然你不必對這十種技術樣樣精通,但至少應該對它們非常熟悉。

一、XML
在十種技術中,最重要的一種技術我想應該非XML莫屬。這裡不僅僅指XML規範本身,還包括一系列有關的基於XML的語言:主要有XHTML,XSLT,XSL,DTDs,XML Schema(XSD),XPath,XQuery和SOAP。如果你現在還對XML一無所知,那麼趕快狂補吧。 XML是包含類似於HTML標籤的一個文本文件,在這個文件中定義了一個樹型結構來描述它所保存的數據。
XML最大的優點是你既可以在這個文本文件中存儲結構化數據,也可以在其中存儲非結構化數據——也就是說,它能包含和描述“粗糙的”文檔數據,就像它描述“規則的”表格數據一樣。 XHTML是目前編寫HTML的首選方法;因為XHTML本身就是格式良好的XML,與通常畸形的HTML文檔相比, XHTML格式文檔更容易處理。
XSLT和XSL是對XML文檔進行轉換的語言。它們可以將XML文檔轉換成各種格式,比如另一個文本文件、PDF文件、HTML文件、逗號分割的文件,或者轉換成其它的XML文檔。
DTDs和XML Schema用來描述XML文件所包含的數據內容的類型,使你不用編寫定制的代碼就能對XML文檔的內容進行“有效性”檢查,使內容強行遵守給出的規則。
XPath和XQuery是查詢語言,用它們可以從XML文檔中吸取單個的數據項或者數據項列表。 XQuery的功能特別強大,因為它對XPath查詢進行了擴展。實際上,XQuery和XML的關係就像SQL之於關係數據庫一樣。
SOAP是Web services間進行通訊的標準協議。你不必知道SOAP協議的所有細節,但是你應該熟悉其常用規則及其工作原理,這樣你才能使用它。

二、Web Services
Web服務是XML流行後的直接產物。因為XML可以描述數據和對象,XML大綱可以保證XML文檔數據的有效性,因為XML的基於文本的規範,因而XML文檔極其適合於作為一種跨平台通訊標準的基本格式。如果你還沒有接觸過Web服務,那麼過不了多久你肯定會碰到它,所以必須熟練掌握Web服務,最好是精通它,因為它是迄今為止應用程序間跨不同種類機器、語言、平台和位置通訊的最簡單的一種方式。不管你需不需要它,Web服務都會是將來互用性的主要趨勢。 XML工作組的John Bosak曾說過:“XML使得Java有事可做”,那麼,我們也可以說,Web服務使得所有語言都有事可做。 Web服務讓運行在大型機上的COBOL應用程序與運行在手持設備上的應用程序相互溝通;讓Java小應用與。 NET服務器相互通訊,讓桌面應用與Web服務器進行無縫交互,不但為商業數據處理,同時也為商業功能提供了方便的實現——並且這種實現與語言、平台、和位置無關。

三、面向對象編程
許多程序員仍然認為OOP乃技術的象牙之塔,但是細細想一下過去十年裡在面向對象領域裡佔據過統治地位的開發語言之後,你就不會這麼認為了,OOP理念從Smalltalk開始,然後蔓延到C++和Pascal(Delphi),到Java成為真正的主流,VB.NET和C#的出現可以說是OOP發展到了登峰造極的地步。雖然使用這些語言不必了解OOP的概念,但如果你缺乏一些OOP的基本知識和方法,我想你很難在逐漸疲軟的就業市場中找到工作。

四、Java,C++,C#,VB.NET
如果你熱衷於技術,並且熱愛編程,那麼我想你應該輕鬆玩轉這些高級語言,我說的玩轉並不一定要你成為超級編程高手。而是能看懂用這些語言編寫的代碼即可。如果你還有精力用它們編碼那就更好了。其實這種機會甚少。但是看代碼的機會很多,學習編程的最有效的一種方式就是看源代碼——浩如煙海的源代碼中很多都不是用你所鍾愛的開發語言編寫的。
在過去的幾年裡,各個語言功能的發展基本上都差不多。現在你完全可以用VB.NET來寫Windows服務、Web應用或者命令行程序。即使你只用其中的一種語言寫程序。我認為也完全有必要學習另外一種語言,使自己能閱讀和理解它們現有的例子代碼,並且能將一種語言編寫的代碼轉換成你首選的編程語言代碼。這裡列出的四種語言可謂是一個強大的開發語言工具箱,如果你掌握了它們,毫無疑問你一定是一個眾人仰慕的高手。這裡我要聲明一下:那就是我並沒有要忽略和排除其它的高級語言,如:FORTRAN、COBOL、APL、ADA、Perl和Lisp等等,根據你所從事的領域不同,應該選擇適合的語言和工具。

五、JavaScript
Java和JavaScript兩者的名字儘管很類似,但它們之間並沒有什麼關係。為什麼一種腳本語言會如此重要,以至於將它列入十種關鍵技術之一呢?仔細想一下就知道了,目前所有主流的瀏覽器都使用JavaScript。如果你要編寫Web應用程序,那麼JavaScript不可或缺。此外,JavaScript還能作為一種服務器端的腳本語言,如將它嵌入在ASP、ASP.NET中,或者嵌入XSLT來擴展功能。目前JavaScript在Mozilla/Netscape中是激活基於XUL界面的首選語言,它派生出了ActionScript,成為Flash MX應用的編程語言。還有就是JavaScript極有可能成為未來新設備的腳本語言以及主流應用的宏語言。
相比之下,VBScript雖然在微軟的產品中得到很好的支持,但從長遠來看,沒有跡象表明它會有美好前途。微軟自己都趨向於用JavaScript(或者用由JavaScript派生的JScript)來編寫其客戶端腳本代碼。因此,如果你要選擇腳本語言,非JavaScript莫屬。

六、Regular Expressions
從所周知,關係數據庫的查詢使用SQL,搜索XML文檔用XPath和XQuery,而正則表達式則用來搜索純文本。例如,你可以用一個命令來查找或刪除HTML格式文件中的註釋內容。大家都用過“IndexOf”、“InStr”以及“Like”這些內建在JavaScript或VB中的文本搜索函數,這些函數雖然很容易使用,但是它們的功能卻無法與正則表達式同日而語— —現在每一種主流的開發語言都提供對正則表達式的存取。儘管有人認為正則表達式本身的讀寫艱澀難懂,但畢竟它的功能強大,使用它的領域也越來越多。

七、Design Patterns
就像OOP通過創建和分類對象來簡化編程一樣,設計模式將普通的對象交互分類成指定的模型,這是一個從一般到具體的過程。 OOP的成分使用得越多,設計模式就顯得越有用武之地。所以你必須理解它們,跟上其總體理論的發展。

八、Flash MX
當你需要比HTML和CSS所能提供的更多的客戶端圖形和編程能力時,Flash是最佳選擇。在Flash中編程比用Java小應用或者.NET代碼來得快得多,也容易得多。 在最新版本中(MX),Flash不僅可以畫圖和進行動畫打包,它還是個高度的可編程應用環境。具備強大的與SOAP Web服務溝通的能力,可以調用運行在遠端服務器上的ColdFusion、Java或。 NET代碼。可以說Flash幾乎無處不在,包括手持設備、置頂盒、甚至是新的平板電腦,你到處都可以見到它的身影,所以使用它實際上可以擴展和延伸你的應用程序使用領域。

九、Linux/Windows
這是當今PC機操作系統的兩大陣容,如果你想在計算機行業裡混,就一定要熟悉它們。對於Linux,最好能自己安裝,配置,下載它的圖形用戶界面以及一些應用程序。自己安裝Apache並會編寫Web應用程序。要清醒地認識到這個世界除了Windows之外,還有Linux的存在。並且這種局面將會長期存在。反過來,如果你是一個死忠的Linux開發者,不要再繼續對Windows的憎惡,要相互學習,取長補短,看看Windows有什麼好的東東可以採納。記住Windows仍然是桌面之王。
誰也說不准你們公司什麼時候會決定從Linux轉向Windows,或者從Windows轉向Linux。誰也說不准什麼時候你會跳槽跑到另外一個使用不同平台的公司上班——或者即便不跳槽,也有可能在不同平台上開始另外一個殺手級項目——所以最好在每個平台上都積累一些經驗,而不要在一棵樹上吊死。

十、SQL
儘管SQL在當今眾多的技術中已不是什麼新東西,而且在未來的十年裡它的作用很有可能被削弱,甚至整個被淘汰,但它仍然是一種基本技能——別看它是一種基本技能,至今仍有許多開發人員不懂什麼是SQL或對它了解不多。不要指望基於圖形用戶界面的SQL構造器會幫你的忙,還是自己親手寫SQL查詢吧,確定你掌握了SQL的基本語法。現在理解了SQL,不僅對以後學習XQuery有所裨益,而且可以使你很快找到簡化或改進當前開發項目的途徑。 尾聲:培養對技術的好奇心 其實,不管技術的發展趨勢如何,每個人最重要的一個技能是好奇心。敢於面對挑戰,在你目前或未來的工作中,新語言或新技術可能很重要,也可能不怎麼重要,你所學習的東西並不一定非要針對你的工作。不要怕失敗,任何新的技術對初學者來說都是困難的。大多數的失敗都可以歸咎於本身急功近利,希望速成。俗話說——千里之行,始於足下,應該腳踏實地,一步一個腳印地往前走。不要讓時間來左右你行動,而是要利用時間來關注、研究、測試新的開發技術和工具。

本文的用意不在於要讓你成為任何一種技術的專家——只是想拋磚引玉,和大家暢談現在和未來哪些技術是我們要密切關注的,討論今後IT行業就業的知識結構,思考自己今後應該在哪些方面需要多花些功夫。因為每一個人的情況各有不同,應該根據具體情況來構築自己的知識層面。但有一點無庸置疑——那就是保持良好的好奇心始終會使你充實和睿智。