今年的早些時候我們對比過了幾種native編程語言,包括D語言、Go、Rust和Vala。這里我們將分析來自Google的Go語言,看看他到底哪里跟別的語言不一樣。 Go語言比其他的很多語言都吸引我,雖然我不是Go語言的專家,但是我很樂意在這里介紹一下它的特性,下面的這些特性指引我轉(zhuǎn)向了Go語言。 快速簡單的編譯: go語言編譯的很快,事實上,他快的甚至可以作為腳本語言了。幾個使他編譯很快的原因有: 他不使用頭文件當A依賴B,B又依賴C時,那么首先會編譯C,然后是B和A;但是如果A依賴B,但是A并不直接依賴于C,而是存在依賴傳遞,這時會把所有B需要從C拿到的信息放在B的對象代碼里。這樣,當編譯A的時候,就不需要再管C了。在編譯程序時,只需將類型信息沿著依賴關(guān)系樹向上遍歷即可,如果到達樹的頂端,則只需編譯緊鄰的依賴,而不用管其它層級的依賴了。通過多返回值的錯誤處理: 現(xiàn)代的編程語言基本上有兩種錯誤處理辦法,例如在C語言里是使用返回值,而在Java等面向?qū)ο笳Z言里使用異常處理返回值,因為返回值的狀態(tài)碼總是可能跟需要返回的結(jié)果有沖突。Go語言允許多返回值,從某種程度上解決了這個問題。你可以為你的函數(shù)的執(zhí)行結(jié)果狀態(tài)定義返回值,任何調(diào)用的時候都可以來檢查,很方便。簡單的組合: 可以使用interface為對象指定一些類型的成員,還可以像Java一樣給他們指定操作(行為)。例如在標準庫的io包中定義了一個Writer,就有一個帶有字節(jié)數(shù)組作為參數(shù)(輸入)一個integer值和錯誤碼作為返回值(輸出)的方法。而實現(xiàn)了io.Writer接口中的Write方法的類型才是實際被執(zhí)行的。這個設(shè)計能夠非常優(yōu)雅的分離代碼,還簡化了單元測試過程,例如,如果你想測試一個數(shù)據(jù)庫對象的一個方法,在傳統(tǒng)的語言中你必須創(chuàng)建一個數(shù)據(jù)庫對象,然后做很多協(xié)議初始化工作。在Go語言中,你可在接口下創(chuàng)建任何對象。簡單的并發(fā): 在Go中并發(fā)變得非常的簡單,在任何函數(shù)前方上go兩個字母,這個函數(shù)就將以他自己的go-routine(一個非常輕量級的線程)來運行,Go- routines之間通過channels來通信。我們通常會有一些需要線程同步和互斥的需求,在Go中非常簡單,Go只是啟動并發(fā)任務(wù),各個任務(wù)之間通過channels來通信,從而協(xié)調(diào)同步和互斥。優(yōu)秀的錯誤提示: 我從沒見過別的語言有Go語言這么高的錯誤診斷質(zhì)量。例如如果你的程序思索了,Go的運行時可以通知你,而且,他甚至可以告訴你是哪個線程出了問題。當然編譯錯誤也是很詳細很有用的。其他特性:Go語言還有其他非常吸引人的特性:高階函數(shù)、垃圾回收、哈希映射、可擴展的數(shù)組等等。當然了,沒有一件東西是非常完美的,Go語言的開發(fā)工具還非常缺乏,社區(qū)很小,但是這個語言的背后支持者是Google,這些問題都會一步一步的解決。當其他語言,尤其是D語言、Rust、Vala旨在簡化C++而且增加新的特性的時候,他們都覺得自己像是帶著新特性的C++。
創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供原州網(wǎng)站建設(shè)、原州做網(wǎng)站、原州網(wǎng)站設(shè)計、原州網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、原州企業(yè)網(wǎng)站模板建站服務(wù),10多年原州做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
我并沒有什么編程的經(jīng)驗,覺得編程實在是太復雜了,不喜歡去研究太多,對這個也不怎么懂,只能說自己是個半吊子,就是所掌握的知識,也是東拼西湊的,朋友和我說點兒,自己去書上看一點兒,只能說根據(jù)自己的體驗給出一些體會吧。
Rust的優(yōu)勢是:
1、Rust把安全、精確的內(nèi)存管理作為一切的中心放在首要的位置。
2、Rust同時擁有特別強的控制性和特別強的安全性。
3、Rust語言通過: 優(yōu)秀的類型系統(tǒng)設(shè)計、 嚴格的編譯器靜態(tài)審查、 配合程序員局部核對、加上少量的運行時校驗,保障了內(nèi)存安全。
4、Rust的語言特別的復雜,導致學習曲線比較陡峭,對于初學者來說難度較大。但學通之后將終生受益。
5、效率高,速度特別的快
6、 支持范型
7、 社區(qū)活躍度很高,更加的強調(diào)了社區(qū)的作用。
8、Rust 有更強的語義,更容易捕獲錯誤的邏輯,編譯器直接檢查出你代碼中的不安全的部分
Rust的劣勢是:
1、 語言相對來說比較復雜,對于新手來說,讓新手摸不著頭腦。
2、還不算太穩(wěn)定。
其實我覺得什么代碼啊編程啊這些東西還是比較適合理工的學生去研究,我一看腦袋就大,完全不明白在講什么。我大概了解的就是這些,語言的話大家可以多方面的去了解,也不是說有缺點就是不好,看配置看個人吧,每個人習慣不一樣,也許有的人用不穩(wěn)定的還覺得挺好呢,有的人就喜歡比較完美的,在我看來編程這個東西真的是很復雜,會有很多的代碼,這些代碼弄得我自己頭都大了,有的時候還得去惡補一下。
建議可以從以下幾個方面著手:
1、建議學習 Python。Python 基礎(chǔ)語法內(nèi)容較為簡單,可以比較快的了解編程的思維習慣,并能夠較快接觸到 Python GUI 庫(比如Tkinter),很容易借用這些庫開發(fā)出一些有趣的程序。同時 Python 的縮進格式也比較嚴格,這也很好的讓編程初學者養(yǎng)成一個良好的編寫代碼習慣。
在美國有很多編程初學 Python 的書籍,其受眾就是小學、初中的青少年,比如《Python for Kids》,這些書籍一個很大的特點就是圖文并貌,并且很快引入圖形庫的學習,教會小朋友制作出一些圖形和簡單的游戲,比如畫星星,彈球。這樣的好處是激發(fā)小朋友學習編程的樂趣,讓小朋友從小就感受到編程的魅力。
2、讀大一零基礎(chǔ)學編程
上學習編程的首要任務(wù)是學習電腦的基礎(chǔ)操作,熟悉鍵盤,讓自己對電腦有初步的了解認識。至于理工科專業(yè)的學生大一估計都會教《計算機科學導論》這樣類似的課程,如果想盡快編程,學生應(yīng)盡快將該書內(nèi)容看一遍,讓自己對計算機有一個整體的認識。
那么大一學生若要系統(tǒng)的學習 C語言,建議使用 《C Primer Plus》,英語好的同學可以直接看英文版,注意該書不是《C++ Primer》,《C++ Primer》可以在 C語言學的有一定基礎(chǔ)的時候看。當學完《C Primer Plus》之后,可以對算法的知識學習,有精力的話可以啃《算法導論》。平時可以多上 github 上直接看源碼,這樣比單純看書進步的更快。
3、新手學習編程,看書時一定要不能只看不動手,一定要同時動腦、動手,要將書里面的代碼都勤奮的敲。
值得注意的是,編程是個比較廣義的概念,編程語言有數(shù)種,所以要學習計算機語言就要先了解語言的發(fā)展史以及各種語言在不同領(lǐng)域的作用,推薦先學C/C++,這門計算機語言是一門相對簡單且發(fā)展的比較完善的計算機語言,初次之外呢還有basic、C#、java等等,在C之前還有更加原始的計算機語言。
推薦的學習資料是郝斌老師的教學視頻,還有譚浩強老師的《C程序設(shè)計》一書,建議先看書在看視頻,當然也可以同時看,這兩樣都是入門的較好的參考資料。