日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

接下來(lái)的兩年你可能需要這五種語(yǔ)言!

 看見(jiàn)就非常 2014-08-07

對(duì)于處在編程世界的我們來(lái)說(shuō),現(xiàn)在已經(jīng)走到了一個(gè)轉(zhuǎn)折點(diǎn)。十年前,程序員們對(duì)動(dòng)態(tài)語(yǔ)言趨之若鶩。對(duì)我們中的大部分人來(lái)說(shuō),動(dòng)態(tài)語(yǔ)言不僅使編程變得更加簡(jiǎn)單,同時(shí)也意味著一種時(shí)尚。時(shí)至今日,動(dòng)態(tài)語(yǔ)言不再享有特別的青睞,現(xiàn)在的程序員使用新語(yǔ)言和舊語(yǔ)言的搭配來(lái)開(kāi)發(fā)項(xiàng)目。我不禁要問(wèn),為了保持自身的競(jìng)爭(zhēng)力,哪些編程語(yǔ)言是程序員們最需要永久掌握的?

在我們討論哪些編程語(yǔ)言在未來(lái)會(huì)吃香這個(gè)問(wèn)題之前,先來(lái)看看不同編程語(yǔ)言之間的的異同。

靜態(tài)語(yǔ)言 vs. 動(dòng)態(tài)語(yǔ)言

當(dāng)我們說(shuō)到動(dòng)態(tài)語(yǔ)言時(shí),這個(gè)“動(dòng)態(tài)”實(shí)際上說(shuō)的是變量類(lèi)型。使用動(dòng)態(tài)語(yǔ)言編寫(xiě)程序的時(shí)候,可以聲明一個(gè)變量,在程序運(yùn)行的過(guò)程中又可以改變這個(gè)變量的類(lèi)型。與動(dòng)態(tài)語(yǔ)言相對(duì)的是靜態(tài)語(yǔ)言,或者叫強(qiáng)類(lèi)型語(yǔ)言。比如C++和Java就是強(qiáng)類(lèi)型的語(yǔ)言,而JavaScript,PHP和Perl是動(dòng)態(tài)類(lèi)型的語(yǔ)言。

在C++中,聲明變量的時(shí)候必須同時(shí)指定變量的類(lèi)型。在程序運(yùn)行的過(guò)程中,如果試圖去改變這個(gè)變量的類(lèi)型,編譯器就會(huì)報(bào)錯(cuò)。這在Java中也是一樣。


 

但是JavaScript不一樣,在JavaScript程序運(yùn)行過(guò)程中可以改變變量的類(lèi)型。事實(shí)上,在聲明變量的時(shí)候就不需要指定這個(gè)變量的類(lèi)型,在使用變量的時(shí)候,可以先把一個(gè)整數(shù)賦值給這個(gè)變量,然后又用一個(gè)字符串覆蓋這個(gè)整數(shù),這在動(dòng)態(tài)類(lèi)型的語(yǔ)言中都是允許的。

盡管動(dòng)態(tài)語(yǔ)言在最近才大行其道,可實(shí)際上這個(gè)概念在50年前就已經(jīng)提出來(lái)了。

函數(shù)式語(yǔ)言

隨著動(dòng)態(tài)語(yǔ)言的發(fā)展,人們對(duì)函數(shù)式語(yǔ)言的興趣也越來(lái)越大。在函數(shù)式語(yǔ)言中,函數(shù)本身可以被存儲(chǔ)在變量中,存儲(chǔ)在變量中的函數(shù)又可以作為參數(shù)傳遞給另外的函數(shù)。現(xiàn)在的大多數(shù)語(yǔ)言都在一定程度上支持函數(shù)式編程。比如說(shuō)C++,C++允許程序員將指針傳遞給函數(shù)。JavaScript等一些語(yǔ)言使函數(shù)的傳遞變得更加容易。所以,一般認(rèn)為C++不是一個(gè)真正意義上的函數(shù)式語(yǔ)言,而認(rèn)為JavaScript是函數(shù)式語(yǔ)言,而Haskell一般被認(rèn)為是函數(shù)式語(yǔ)言的絕佳示例。

垃圾回收機(jī)制

理論上來(lái)說(shuō),只要你正確書(shū)寫(xiě)代碼,你就不會(huì)有任何bugs。這聽(tīng)起來(lái)很美好??蓪?shí)際上,當(dāng)你和許多其他程序員合作完成一個(gè)大項(xiàng)目時(shí),有一個(gè)bug會(huì)經(jīng)常出現(xiàn),這就是內(nèi)存泄露。你定義了一個(gè)變量,使用完這個(gè)變量之后卻沒(méi)有及時(shí)回收這部分內(nèi)存,這時(shí)我們就說(shuō)發(fā)生了內(nèi)存泄露。如果發(fā)生了內(nèi)存泄露又沒(méi)有及時(shí)發(fā)現(xiàn),隨著程序運(yùn)行時(shí)間的增加,程序越來(lái)越大,直到消耗完系統(tǒng)的所有內(nèi)存,然后系統(tǒng)崩潰。sounds terrible!


 

你可能會(huì)說(shuō),每次使用變量之后及時(shí)釋放內(nèi)存,內(nèi)存泄露不就不會(huì)發(fā)生了?想法是好的,可實(shí)際情況可能比這要復(fù)雜的多。比如說(shuō),你申請(qǐng)了一個(gè)鏈表來(lái)存儲(chǔ)數(shù)據(jù),這個(gè)鏈表被傳遞到另外一個(gè)函數(shù),這個(gè)函數(shù)是別人編寫(xiě)的,在別人編寫(xiě)的這個(gè)函數(shù)中,將這個(gè)鏈表復(fù)制了一份,但是你并不知道,你說(shuō)是應(yīng)該刪除這個(gè)鏈表還是繼續(xù)保留?基于這種情況,程序員們想到了一個(gè)變通的辦法:將內(nèi)存回收的工作交給系統(tǒng)來(lái)做。當(dāng)你不再使用某個(gè)變量,系統(tǒng)通過(guò)掃描內(nèi)存找到這個(gè)不再使用的內(nèi)存,然后主動(dòng)回收,這就叫做垃圾回收機(jī)制。對(duì)新開(kāi)發(fā)出來(lái)的語(yǔ)言來(lái)說(shuō),這是一個(gè)非常重要的特征。垃圾回收背后的思想是使編程更加容易,從而讓程序員將精力放在創(chuàng)造偉大的軟件之上。

需要說(shuō)明的是,確實(shí)存在幾種不同的垃圾回收機(jī)制:一種是系統(tǒng)定期掃描內(nèi)存,發(fā)現(xiàn)那些不再使用的內(nèi)存;另外一種是系統(tǒng)為每一個(gè)變量保留一個(gè)tab,一旦發(fā)現(xiàn)變量不再使用,馬上刪除之。從技術(shù)上來(lái)說(shuō),后者并不是一種垃圾回收機(jī)制,而是“引用計(jì)數(shù)”,但是達(dá)到的效果是一致的。

虛擬機(jī)


 

當(dāng)Java在20世紀(jì)90年代中期橫空出世的時(shí)候,人們對(duì)它不是直接將代碼編譯成匯編語(yǔ)言這一點(diǎn)十分在意。和C++相反,Java在編譯的時(shí)候先把程序編譯成一個(gè)叫字節(jié)碼的中間代碼。在運(yùn)行的時(shí)候,系統(tǒng)調(diào)用虛擬機(jī)執(zhí)行字節(jié)碼,有時(shí)候甚至只是將字節(jié)碼編譯成匯編代碼。這種編譯方式剛剛出來(lái)的時(shí)候,程序員們抱怨其速度慢,當(dāng)然現(xiàn)在已經(jīng)不成問(wèn)題。許多語(yǔ)言采用虛擬機(jī)的方式運(yùn)行,比如說(shuō)前面提到的Java、C#等?,F(xiàn)在這種類(lèi)型的語(yǔ)言在速度上得到了長(zhǎng)足的發(fā)展。

語(yǔ)言

說(shuō)了這么多,那么程序員到底應(yīng)該學(xué)習(xí)哪些語(yǔ)言呢?下面列舉了五種在未來(lái)工作中有豐富需求的語(yǔ)言。除此之外,我還列舉了第六種語(yǔ)言,作為一個(gè)“honorable mention”。


 

JavaScript,HTML5和CSS3:從技術(shù)上來(lái)說(shuō),HTML5并不是一種語(yǔ)言,而是一項(xiàng)技術(shù),這項(xiàng)技術(shù)和CSS3、JavaScript一起使你能夠構(gòu)建基于Web的應(yīng)用。你可以創(chuàng)建運(yùn)行在瀏覽器中的軟件,這樣做的好處是,你構(gòu)建的應(yīng)用將會(huì)擁有前所未有的移植性——幾乎可以在所有的設(shè)備上運(yùn)行,包括手機(jī)。幾年前,F(xiàn)acebook開(kāi)始使用HTML5來(lái)構(gòu)建他們的手機(jī)應(yīng)用,他們超前了這個(gè)時(shí)代,那時(shí)HTML5還不成熟。一段時(shí)間后,他們回歸了傳統(tǒng)模式。過(guò)去兩年中,瀏覽器紛紛開(kāi)始實(shí)現(xiàn)最好的HTML5技術(shù),對(duì)JavaScript的需求隨之增加。如果想保持你的競(jìng)爭(zhēng)力,這是一項(xiàng)你必須學(xué)習(xí)的技術(shù)。(在服務(wù)器端,很多大公司以Node.js的方式使用JavaScript)。

JavaScript示例:

下面這個(gè)例子展示了JavaScript是怎么將一個(gè)函數(shù)存儲(chǔ)到變量中,然后又傳遞給另外一個(gè)函數(shù)的。JavaScript方面的資源非常多,權(quán)威指南,參考Mozilla Developer Network,新手教程,參考以下網(wǎng)站。

  1. var myfunc = function() {  
  2.       alert(‘hi’);  
  3. };  
  4. setTimeout(myfunc, 2000); 

C#:在15年前,Microsoft創(chuàng)造了C#,從那時(shí)起,C#不斷發(fā)展壯大。C#的語(yǔ)法類(lèi)似于Java(同時(shí)也類(lèi)似于C++)。C#編程軟件首選Visual Studio,免費(fèi)版和付費(fèi)版都有。

C#是一種強(qiáng)類(lèi)型的語(yǔ)言,帶有一個(gè)虛擬機(jī)。最初的發(fā)行版對(duì)函數(shù)式編程的支持非常少,在2006前后,Microsoft為這門(mén)語(yǔ)言加入了一些函數(shù)式編程的特征。和Java一樣,C#也有自己的垃圾回收機(jī)制。

C# 示例

示例定義了一個(gè)叫做Program的類(lèi),Program包含一個(gè)叫做Main的函數(shù)。程序從Main函數(shù)開(kāi)始運(yùn)行。Main函數(shù)定義了一個(gè)強(qiáng)類(lèi)型的整形變量x,并且在屏幕上打印x的值。學(xué)習(xí)C#方面的更多知識(shí),移步Microsoft’s official site。

  1. using System;  
  2. class Program  
  3. {  
  4.           static void Main()  
  5. {  
  6. int x = 1000;  
  7. Console.WriteLine(x);  
  8. }  

Java:Java即將迎來(lái)自己的20歲生日,時(shí)至今日,Java還在不斷的發(fā)展、成熟。在2004年,我的一位同事說(shuō)這是一門(mén)“玩具語(yǔ)言”。經(jīng)歷了早期的成長(zhǎng)之痛后,Java早已不是一門(mén)玩具語(yǔ)言:它支撐起了不可勝數(shù)的網(wǎng)站和數(shù)據(jù)庫(kù),開(kāi)源office套件也是用Java開(kāi)發(fā)的?,F(xiàn)在來(lái)看,Java的前景依舊一片光明。

Java是一種強(qiáng)類(lèi)型的語(yǔ)言,運(yùn)行在自帶垃圾回收機(jī)制的虛擬機(jī)中。盡管不是一種函數(shù)式語(yǔ)言,還是帶有一些函數(shù)式編程的特征。

Java示例:

Java和C#在很多方面類(lèi)似。在Java程序中,從main函數(shù)開(kāi)始運(yùn)行。像上面提到的C#示例一樣,在main函數(shù)中定義了一個(gè)整形的強(qiáng)類(lèi)型變量x,并且在屏幕上打印x的值。學(xué)習(xí)更多Java知識(shí),參考o(jì)fficial documentation。

  1. public class HelloWorld  
  2. {  
  3.         public static void main(String[] args) {  
  4.         int x = 1000;|  
  5.       System.out.println(x);  
  6.     }  

PHP:PHP是一種易用的通用編程語(yǔ)言。其語(yǔ)法和Java、C++類(lèi)似。在一個(gè)非常簡(jiǎn)單的層次上來(lái)說(shuō),PHP用于在網(wǎng)頁(yè)中嵌入可變化的文本內(nèi)容。比如說(shuō),在你的網(wǎng)頁(yè)中可能存在打印當(dāng)前日期的PHP代碼,當(dāng)你把網(wǎng)頁(yè)代碼送到瀏覽器,相應(yīng)的PHP代碼就會(huì)在屏幕上打印出當(dāng)前日期。PHP能做的遠(yuǎn)比在網(wǎng)頁(yè)上打印日期多。PHP的類(lèi)庫(kù)能夠操作數(shù)據(jù)庫(kù)(幾乎你能想到的任何數(shù)據(jù)庫(kù)都能處理),能進(jìn)行科學(xué)計(jì)算,能處理文本。PHP的未來(lái)依舊一片光明。

PHP示例:

PHP代碼嵌入在HTML文檔之中。這段PHP代碼將時(shí)區(qū)設(shè)置為L(zhǎng)os Angeles,然后打印出當(dāng)前時(shí)間。瀏覽器解析HTML文檔的時(shí)候,PHP代碼部分被代碼的輸出結(jié)果所取代。所以最終顯示在屏幕上的是“Hello! The current time is”,后面是當(dāng)前時(shí)間。學(xué)習(xí)更多PHP相關(guān)知識(shí),參考這個(gè)網(wǎng)站。

  1. <html> 
  2. <body> 
  3. Hello! The current time is  
  4. <?php 
  5.       date_default_timezone_set(‘America/Los_Angeles’);  
  6.       echo (strftime(‘%c’));  
  7. ?> 
  8. </body> 
  9. </html> 

Swif:這是一門(mén)全新的語(yǔ)言,蘋(píng)果制造。一般來(lái)說(shuō)我不會(huì)推薦人們學(xué)習(xí)一門(mén)全新的語(yǔ)言。但是要知道我們說(shuō)的是蘋(píng)果,并且現(xiàn)在你已經(jīng)能使用這門(mén)全新的語(yǔ)言來(lái)創(chuàng)建iOS應(yīng)用了。事實(shí)上,已經(jīng)有跡象顯示Swift將會(huì)成為iOS平臺(tái)編程的未來(lái)。Swift的語(yǔ)法非常像JavaScript,但是沒(méi)有分號(hào)和括號(hào)。


 

Swift是一種強(qiáng)類(lèi)型的語(yǔ)言,運(yùn)行在帶垃圾回收機(jī)制的虛擬機(jī)中。

Swift示例:

示例中定義了一個(gè)叫做str的變量,存儲(chǔ)一個(gè)字符串。盡管沒(méi)有明確指出str的類(lèi)型,但是Swift是強(qiáng)類(lèi)型的,編譯器通過(guò)賦值語(yǔ)句右邊的字符串判斷出str是字符串類(lèi)型。學(xué)習(xí)Swift的更多知識(shí),參考蘋(píng)果官網(wǎng)的相關(guān)頁(yè)面。

  1. var str = “Hello, World!”  
  2. println (str) 

鼓勵(lì)獎(jiǎng)項(xiàng):

Erlang是愛(ài)立信的工程師在1986年發(fā)明的編程語(yǔ)言。這本來(lái)是通信領(lǐng)域?qū)S玫木幊陶Z(yǔ)言,現(xiàn)在已經(jīng)發(fā)展成一門(mén)通用的編程語(yǔ)言,并且在基于云的、高性能的并行計(jì)算中大行其道。現(xiàn)在人們使用Erlang編寫(xiě)出了一些強(qiáng)大的軟件,比如說(shuō)CouchDB和Riak。這是一門(mén)與眾不同的語(yǔ)言,其處理字符串的方式非常奇怪,但是也很容易學(xué)習(xí)。

我們應(yīng)該學(xué)習(xí)Erlang嗎?雖然需要Erlang的工作不多。但是,如果你真正掌握了這門(mén)語(yǔ)言,那你很可能得到一份極好的工作。這是一個(gè)抉擇。在真正掌握這門(mén)語(yǔ)言之前,你需要投入大量的精力,一旦你學(xué)成,回報(bào)也很高。

Erlang 示例:

下面的示例來(lái)自這篇博客,這是“hello world”示例的復(fù)雜版本。記住,Erlang是一門(mén)成熟的語(yǔ)言,如果你真的打算學(xué)習(xí)這門(mén)語(yǔ)言,參考前面提到的博客和這個(gè)網(wǎng)站。

  1. -module(hello).  
  2. -export([start/0]).  
  3. start() -> 
  4.       spawn(fun() -> loop() end).  
  5. loop() -> 
  6.       receive  
  7.         hello -> 
  8.         io:format(“Hello, World!~n”),  
  9.        loop();  
  10.    goodbye -> 
  11.    ok 

寫(xiě)在最后

程序員肯定是在哪都能找到工作,但不一定是你特別喜歡的職位,關(guān)鍵還在于學(xué)習(xí)真正能用得著的技術(shù),找到那份屬于你的好工作。學(xué)習(xí)JavaScript、C#、Java、PHP、C++不會(huì)有錯(cuò)。如果你開(kāi)始學(xué)習(xí)Swift,未來(lái)的就業(yè)形式一片大好。如果你想嘗試一把高性能編程,看看Erlang,盡管需要Erlang的工作可能不會(huì)馬上出現(xiàn)。不管你現(xiàn)在在致力于哪一門(mén)語(yǔ)言,都要腳踏實(shí)地的學(xué)到精,這是關(guān)鍵。

原文鏈接:http://code.csdn.net/news/2821055

【編輯推薦】

【責(zé)任編輯:牛小雨 TEL:(010)68476606】

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多