2017年程序員需要掌握哪些技術?你會幾個?
我是非常支持程序員們抱著終身學習的態度的。盡管新型技術成果不斷出現,但對于從業者而言,打好基礎永遠更為重要。因此如果大家對以下六項基本技術方案還不太熟悉,請在2017年到來之前做好準備。
(注:不管市場如何曲折,如HTML這類內功性質的技能是不可能很快消失。很多朋友可能會奇怪我為什么沒有把JavaScript列入進來。事實上,如果列入JavaScript,那么React、jQuery等等,或者其他多種軟件包或框架也都需要被列入進來,然而這些顯然會在未來幾年中逐步更新換代的。考慮到篇幅所限就不多敘述別的知識了。)
1.Go語言
今年10月的TIOBE編程語言人氣榜上,Go語言得到了簡單但有力的描述:“谷歌的Go語言幾乎無可匹敵,而這主要是受到Docker等Go語言編寫的容器應用方案的大力推動。”
盡管Go語言最初的目的有實驗性質,但Docker以及其它企業都把它作為自身基礎設施的有力支柱,而理由則非常簡單:它擁有迅如閃電的編譯與執行速度,可以使用簡單方法(Goroutines)支持并發機制,并且也為程序員們提供大量選項來構建并維護現有及新型技術。然而Go語言的好處需要到代碼量達到一定量之后才能體會出來,比如當你遇見一個cpp文件一個小時都編譯不完的時候,你就知道簡化語法增加編譯速度有多重要了。Go同樣面向對象,但它不存在類型結構。
以下為Go語言中的“Hello World”編寫方式:
package main import "fmt" func main() { fmt.Println("Hello, World") }
2.Rust
與火狐瀏覽器同宗同源的Rust是一類系統編程語言,它運行速度極快、不存在段錯誤并且可以保障安全。與Go不同,Rust并不具備垃圾回收機制(Go的垃圾回收機制速度很快),因此Rust編程適用于嵌入式系統。
與Go類似,Rust依賴于代碼分支結構——但Rust更為復雜。兩種語言都是免費,并且它們都擁有自己的支持工具生態系統。Rust博客主頁中的“穩定性即可交付性”口號正是Rust的理念所在; 其在RedMonkt及其它編程語言榜單上皆擁有不俗表現,其未來發展自然值得關注。
下面來看一段出色的Rust代碼示例:
let number = 13; println!("Tell me about {}", number); match number { // Match a single value 1 => println!("One!"), // Match several values 2 | 3 | 5 | 7 | 11 => println!("This is a prime"), // Match an inclusive range 13...19 => println!("A teen"), // Handle the rest of cases _ => println!("Ain't special"), } let boolean = true; // Match is an expression too let binary = match boolean { // The arms of a match must cover all the possible values false => 0, true => 1, }; println!("{} -> {}", boolean, binary); }
3.Git
時至今日,每個人都需要使用版本控制系統(簡稱VCS)。VCS實際上就是一套容納代碼及數據的存儲庫。它能夠追蹤變更,并使用開源meld等diff工具進行變更查看。
各類VCS的工作原理大體相同。大家需要利用源代碼文件建立一個項目,而后即可隨時對其進行檢查、編輯而后確認(提交)。
由Linux之父Linus Torvalds編寫的Git是一套分布式VCS,因此其可供團隊成員以遠程方式使用各自的文件進行編輯,而后將變更的結果進行合并。如果存在沖突,也就是兩位成員對同一文件提交了不同編輯結果,Git則會在合并時以高亮方式顯示沖突部分。接著,大家必須手動編輯并修改這些內容。從人氣角度講,Git已然所向披靡。
4.HTML
在今天探討的四種技術中,HTML顯然最為簡單。HTML是網頁標記語言,是瀏覽器能夠閱讀的語言。只要你寫的東西想要瀏覽器能正確顯示出來,那就要懂HTML。其中的/代表著關閉標簽,而且大多數HTML標簽都利用這種開放標簽加/關閉標簽的形式起效。(對于以HTML起始的內容,標頭可選且為文檔中的不可見部分,而本體則容納可見部分。)
大多數其它HTML標簽用于實現布局與文本格式; 其同樣易于使用。盡管HTML的技術標準已經相當陳舊,但其仍然被廣泛使用——如果大家尚不了解,請一定找點時間進行學習。
5.Python
如果,只能選擇掌握一種編程語言,那么我的答案是Python。早在互聯網誕生之前,Basic是每一位開發者所必須了解的語言選項; 如今Python就是新時代下的Basic。這是一種通用型編程語言,雖然沒人會利用其編寫那些“重量級”應用——例如游戲或者操作系統(這類應用仍然使用C++)。
Python易于學習,且使用縮進而非大括號標記結構。以下代碼來自Python維基詞條:
parents, babies = (1, 1) while babies < 100: print 'This generation has {0} babies'.format(babies) parents, babies = (babies, parents + babies)
Python語言帶有解釋特性,因此大家可以在Python shell中嘗試各種命令丈表達式。其速度很快,但相比優化型編譯語言稍慢一點。它擁有規模龐大的資源庫,且可通過多種方式實現進一步提速。大家可以使用pypy等替代性方案或者利用Cython將其編譯為C; 如果大家了解C語言,也能夠編寫自己的C、Go或者Rust擴展。
Python在科學家群體中亦大受歡迎。最近推出的英特爾Python(免費)使得Python成為一種面向機器學習的可用語言,其適用場景包括大數據、神經網絡以及其它相關技術。英特爾打造的這套發行版包含超過100套軟件包(NumPy、SciPy等),且專門進行了優化以使用英特爾MKL及英特爾TBB庫——二者內置于其中且可免費使用。大部分高強度任務都可由這些經過優化的英特爾庫負責執行。
6.Linux
即使大家身為專業Windows用戶及程序員,Linux同樣值得加以關注,它能幫助您更快地學習,它還能使用多種技術方案。舉例來說,Python、Go以及Rust就更適合在Linux平臺上使用。(要在Windows上進行Rust程序編譯,大家需要使用微軟VC++或者MinGW——這是一套GNU編譯器與工具集合,專門用于Windows平臺上的開發與運行任務)。
對于Windows用戶,大家只需要下載免費VirtualBox并安裝一套Linux發行版(我個人推薦Ubuntu 14.04 LTS或者16.04 LTS)即可開始Linux之旅。在此之后,大家即可學習Linux,安裝各類編程語言,運行本地LAMP(Linux Apache MySQL PHP)Web服務器甚至嘗試進行開發工作。
來自:http://cloud.51cto.com/art/201612/526066.htm