每個程式設計師都該學習的5種開發語言
轉載請註明出處:葡萄城官網,葡萄城為開發者提供專業的開發工具、解決方案和服務,賦能開發者。
原文出處:https://dzone.com/articles/5-programming-languages-every-master-developer-sho
我曾在某處讀到過(可能在《程式碼大全》,但我不敢確定),程式設計師應該每年學習一門新的程式語言。但如果做不到,我建議,你至少學習以下5種開發語言,以便你在職業生涯有很好的表現。
每個公司都喜愛精通多種程式語言並且多才多藝的程式設計師。一個既能很麻利地寫指令碼,也能編寫複雜的Java程式的程式設計師,確實相當有價值。所以實際上,對於高階開發者來說,學習不止一種程式語言,幾乎就是必然的要求。
目前而言,面試官越來越看重那些擁有多種程式語言經驗的工程師。比如,同時有C++ 和Java的經驗就很不錯,Python和Java也是。我個人喜歡那些在C++ 或者Java方面有著豐富經驗,而且能用Groovy、Perl或Python寫指令碼的軟體工程師。
很多時候,寫一個小指令碼就足以快速搞定一些專有任務。我不想我的程式設計師們花上一整天用Java去寫一個讀取CSV檔案的程式,或者在TCP/UDP埠抓取資訊的程式,這是很浪費時間的一件事情。
為什麼我在文章中選擇這5種語言呢?我的理由簡單且實際。我是基於這些語言的用途、程式設計正規化和流行度及代表性來選擇的。
例如,如果你想找一份應用開發的工作,就不能忽視Java。同樣,做與web相關的事情,就得知道無處不在的JavaScript。
在開發者職業生涯的早期,我強烈建議學習C語言。它能幫助開發者貼近系統底層,知曉那些程式設計的關鍵概念,這是隱藏在JVM或CLR底下的東西。
對於指令碼語言,我的選擇是Python,儘管你也可用Perl或Groovy代替。但在擴充套件支援方面來看,Python的表現無疑是最棒的。有很多Python模組可供選擇,幫你能分分種搞定各種任務。
學習一種面向物件的語言的同時,也學習一種像Haskell或Scala這樣的函數語言程式設計語言,這能拓展你的思維和程式設計認知。你可以在本文找到學習這5種語言的更多理由。
言歸正傳,下面就是我列出的5種每個程式設計師或軟體開發者都該嘗試學習的程式語言。
它包含了語言的大雜燴,比如[面向物件的]語言(http://javarevisited.blogspot.sg/2013/06/5-must-read-books-to-learn -object.html),函式式的語言,指令碼語言,提供了對底層的控制,也涵蓋了廣泛用於服務端開發的語言。
1. Java
Java是近二十年來最流行的語言之一。它統治著全球的服務端應用開發,同時在基於Anroid開發的移動應用和遊戲市場,以及企業web開發領域,也佔有相當一部分比重。
Java最初的構想是一次編寫各種平臺均能執行(write once run anywhere)。隨著時間的推移,它確實做到了執行在各個平臺的各個角落。
你應該學習使用Java構建健壯的、可擴充套件的服務端應用。你可以用Java構建多種複雜度的工程。與之相伴的,有很棒的工具、技術和社群支援。
為什麼你應該學Java呢?你會學到如果專注於應用層面和程式碼結構的設計,而不用關心特定系統的細節和記憶體管理。JVM幫你搞定了後面這些。
如果你已經決定開始學習Java了,那麼Udemy上的 The Complete Java Master Class 教程就很棒,用它作為入門教程很好,它包含了Java的所有核心概念,很詳細。
順便一提,如果你想要更多選擇,而且不介意使用免費的課程學習,那可以看看這上面給新手提供的課程。
Java被許多世界上的大型組織所使用。而且能夠向眾多使用者展示你用Java開發的Android應用。如果你仍然還在動搖,我建議你去這看看10個學習Java的理由。
2. Python
在全球範圍的學校和院系,Python是教授最多的語言之一。在美國,許多學術課程中,Python已經取代了Java成為接觸程式設計的首選語言。你將從學習Python中得到什麼呢?——那將非常多。
Python既能用於寫指令碼,也能作為一種面向物件的語言編寫大型工程。
許多流行的網站,比如Reddit,就使用基於Python的框架來構建,比如Django。近段時間,許多大型組織也轉向使用基於Python的框架了。
Python也越來越多地用於像機器學習、人工智慧、資料科學這樣的新一代技術中。這也難怪,因為有基於Python的非常棒的機器學習庫,比如TensorFlow、Scikit-Learn以及其他。
我個人倒是在用Python寫指令碼。這能很快地完成一些有用的事情,比如,你可以用Python花5分鐘寫一個UDP訊息的監聽器,相比較,用Java可能就要花20分鐘。忘掉“編譯、打包,然後才能使用”這些步驟。你可以直接為特定任務編寫Python指令碼。如果你有興趣學習Python,那麼The Complete Python BootCamp就是個很好的開始。
如果你需要更多選擇,而且不介意使用免費的課程學習,那也可看看這上面給新手的課程。
並且,如果你困惑於不知道該從Java還是Python開始,看看這個,它比較了兩者。
另外,如果你仍然沒有被我說服,那就可以看看我的關於10個學習Python理由的文章。
3. JavaScript
你可以用Java替代C++,用Pythont替代Ruby,但是,坦率地講,當前沒有JavaScript的替代品。在最近5年,JavaScript完全統治了世界。
它不再僅僅是客戶端指令碼語言。有了Node.js這樣的庫,和Angular、React這樣的框架,你可以在服務端做使用者介面的開發。
JavaScript的巨大成功,有一部分要歸功於jQuery。它真正改變了人們在客戶端使用JavaScript的方式。
作為一個在工作中使用JSP和開發基於Servlet的應用的程式設計師,我有許多機會同時使用jQuery和JavaScript。
有了此語言的知識,可以幫助我們決定哪些功能應該在服務端實現,哪些該在客戶端實現。比如,許多服務端的校驗邏輯,就被我們遷移到了客戶端。
如果你想從頭開始深入學習JavaScript,那Udemy上的The Complete JavaScriot就是你可加入的最佳線上課程。
如果你想要更多選擇,且不介意跟著免費的課程學習,那麼可以看看這裡為web開發者提供的課程。
4. C 和/或 C++
如果不知道C或C++,你就不能成為真正的程式設計師。這聽起來有點苛刻,但是我的經驗之談。
瞭解C的工程師或者開發者,就是比不了解C的程式設計師要優秀。這可不是簡單的巧合。
這是你必須要了解的程式語言之一。我在求學期間學習的C語言,並在那時學到了關於程式設計的許多關鍵概念,比如結構體、陣列、指標、記憶體管理等等。
C仍然是作業系統程式設計方面最受歡迎的語言,並且在這兩年,給排名榜首的Java帶來了強勁地衝擊。如果你想學習這門美妙的語言,那C Programming for Beginners就是個很好的開始。
它同樣是最古老的主流語言之一,已經存在了四十多年。
C++ 和C很像,都允許你為系統和驅動編寫底層程式碼。如果你想學習C++ 而不是C,可看看我為新手列出的免費C++課程。
5. Scala
Scala是基於過去20年來的最佳實踐而創造的語言。它是一種函數語言程式設計語言,提供了一種跟面嚮物件語言不同的程式設計正規化。這能改進你的思維和程式碼認知。
雖然有許多函數語言程式設計可供選擇,比如Haskell。我選擇Scala,因為作為一名Java開發者,我發現學習Scala比Haskell更容易。
有人也可以把學習Haskell當作一個挑戰。但是從實際的角度講,我認為學習Scala對於Java開發者來說更有意義。
對於C++程式設計師,學習Haskell可能更合理。坦率講,你可以選擇任何一門函數語言程式設計語言,但請選擇一門有商業需求的比較好。
作為一名職業開發者,我傾向於把時間投資在那些對我的職業有幫助的事情上。如果你想學習Scala,那麼Beginning Scala Programming是個很好的入門課程。
無論你學習了多少種程式語言,你需要遵從Bob Martin在《程式碼整潔之道》給出的編碼和設計原則,才能成為一名專業的程式設計師。它是在你的程式設計職業生涯能給與你最大幫助的技能。
以上所有清單的內容,列出了每個軟體工程師都該學習的5種程式語言。你們中有些人可能已經發現了,這是Java開發者應該學習的5個程式語言。也正是如此。
學習能提供不同程式設計正規化的語言,是提升編碼技能的最佳途徑。它能幫你有效地解決日常任務。
理想情況下,一個程式設計師的工具集裡,應該包含一個接近底層系統的語言,比C或C++;一個面向物件的語言,比如Java,Pythong或C++;一個函數語言程式設計語言,比如Scala或Haskell;一個強大的指令碼語言,像Perl、Python、Ruby和JavaScript。
結語
最後,感謝各位閱讀這篇文章。如果你喜歡這些程式語言,請與你的朋友和同行分享。
如果你有任何問題或反饋,或其他任何你認為什麼程式語言也應該值得每個程式設計師都應該學習,也歡迎發在評論區和我們分享。
&n