自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

未來兩年你必須掌握的五種編程語言

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

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

在我們討論哪些編程語言在未來會吃香這個問題之前,先來看看不同編程語言之間的異同。

靜態(tài)語言 vs. 動態(tài)語言

當我們說到動態(tài)語言時,這個“動態(tài)”實際上說的是變量類型。使用動態(tài)語言編寫程序的時候,可以聲明一個變量,在程序運行的過程中又可以改變這個變量的類型。與動態(tài)語言相對的是靜態(tài)語言,或者叫強類型語言。比如C++和Java就是強類型的語言,而JavaScript,PHP和Perl是動態(tài)類型的語言。

在C++中,聲明變量的時候必須同時指定變量的類型。在程序運行的過程中,如果試圖去改變這個變量的類型,編譯器就會報錯。這在Java中也是一樣。

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

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

函數(shù)式語言

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

垃圾回收機制

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

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

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

虛擬機


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

#p#

編程語言

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

JavaScript,HTML5和CSS3:

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

JavaScript示例:

下面這個例子展示了JavaScript是怎么將一個函數(shù)存儲到變量中,然后又傳遞給另外一個函數(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#,從那時起,C#不斷發(fā)展壯大。C#的語法類似于Java(同時也類似于C++)。C#編程軟件首選Visual Studio,免費版和付費版都有。

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

C# 示例:

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

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

Java:

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

Java是一種強類型的語言,運行在自帶垃圾回收機制的虛擬機中。盡管不是一種函數(shù)式語言,還是帶有一些函數(shù)式編程的特征。

Java示例:

Java和C#在很多方面類似。在Java程序中,從main函數(shù)開始運行。像上面提到的C#示例一樣,在main函數(shù)中定義了一個整形的強類型變量x,并且在屏幕上打印x的值。學(xué)習更多Java知識,參考official documentation。

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

PHP:

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

PHP示例:

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

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

Swif:

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

Swift是一種強類型的語言,運行在帶垃圾回收機制的虛擬機中。

Swift示例:

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

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

另外一種語言Erlang

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

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

Erlang 示例:

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

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

寫在最后

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

責任編輯:閆佳明 來源: techug
相關(guān)推薦

2014-09-18 10:28:00

移動技術(shù)半月刊

2014-08-06 11:03:48

編程語言

2019-04-09 08:15:27

SEO優(yōu)化工具網(wǎng)站

2024-07-12 11:54:38

2015-08-17 09:27:06

編程語言需要學(xué)習

2014-05-20 10:31:31

2020-06-01 08:35:36

編程語言JavaPython

2021-08-18 06:48:52

編程語言開發(fā)IT

2021-08-18 10:44:18

編程語言FlutterUnity

2022-12-09 00:09:10

編程語言開發(fā)人員通信

2024-05-21 13:41:17

2022-02-18 00:05:07

編程語言Java技術(shù)

2021-12-30 10:36:12

編程語言RubyFlahs

2021-12-16 15:40:35

編程語言微軟語言

2020-05-19 13:49:43

C語言Java語言

2015-11-02 17:25:23

Elixir編程語言未來

2020-05-08 15:29:15

編程語言PythonJava

2021-01-17 23:21:16

數(shù)字貨幣加密貨幣銀行

2017-11-01 17:25:11

編程站著編程身體變化

2022-08-22 16:37:54

深度學(xué)習概率分布
點贊
收藏

51CTO技術(shù)棧公眾號