目前最值得學習的9種非主流的開發語言

csdn發表於2017-07-23

  譯者注:從事主流開發語言的人員有很多,但是除了這些語言,我們也應該瞭解一些其他的,這樣,我們才能根據場景的不同決定採用哪一種。本文中作者為我們列舉了9種語言的應用場景。以下為譯文。

  目前比較流行的開發語言之所以能夠被大多數開發人員使用,是因為它們各自有各自的優勢。但是除了C#、Java或者JavaScript這些語言外,還有些其它的高階語言在某些時候也會提供很高的價值。下面的9種語言應該出現在每一位程式設計師的候選清單中。它們可能不是所有場景下的最佳選擇,因為它們都是有專用於某一種情況下的。但它們都提供了值得研究和學習的有利方面。可能有一天,其中一種語言被證明是你的專案或老闆所需要的。

 Kotlin:重新設計過的Java語言

  Java是一門偉大的語言,支援各種主流的平臺。但是它現在有點過時了,而且痛點正在被放大。Kotlin的意思是快速的編譯,它與Java並存,解決了Java開發者耗時長的問題。Kotlin的特性中需要重點關注的就是它對空值的處理,這個問題每個開發者都會遇到。Kotlin在這一方面取得了巨大的進步,它還可以和現有的Java程式碼一起使用,而且還可以將程式碼編譯成JavaScript和原生程式碼。

 Erlang:實時系統的函數語言程式設計

  Erlang的祕密武器就是功能正規化。大多數程式碼都被迫在自己的小世界中執行,這樣這些程式碼就不會對系統其他部分產生影響。這些函式在內部完成所有的工作,在類似於沙箱一樣的的小“程式”中進行執行,並且只通過郵件訊息相互通訊。該模型還簡化了執行時程式碼需要哪些程式碼確定可以同時執行的過程。這樣做就使得併發性非常容易檢測,所以執行時程式的開銷也會非常小。

  如果你正在構建一個實時系統,該系統沒有空間給那些已經刪掉的資料,比如行動電話交換機的計費系統,那麼可以考慮一下Erlang。

 Go:簡單性和動態性

  谷歌在調查開發語言的過程中,發現這些語言雜亂無章、複雜,而且往往很慢。2009年,谷歌釋出了它的解決方案:一種看起來像C語言的靜態型別的語言,但它的後臺更智慧,可以讓程式設計師不必指定型別和處理malloc呼叫。谷歌使用了和Sun以及蘋果公司完全不一樣的策略,他們希望Go語言的程式碼能夠“簡單到可以一直儲存在程式設計師的腦海中”。

  如果你是一家想要吸引谷歌眼球的創業公司,你需要建立一些伺服器端業務邏輯,那麼Go就是一個很好的起點

 OCaml:適用於複雜的資料層次

  有些程式設計師不希望指定變數的型別,動態語言可以做到。其他人則喜歡定義變數是否整數、字串或物件。對他們來說,許多編譯語言提供了他們想要的所有支援。還有一些人夢想著精心設計的層次結構,甚至可以說是創造出“代數”的型別。他們設想了各種不同型別的列表和表,它們被組合在一起,以表達複雜的、多層次的資料。它們談到了多型性、模式匹配原語和資料封裝。這僅僅是一個複雜的、高度結構化的世界的開始,他們想要的是型別、元型別和後設資料型別。

 TypeScript:你會喜歡的JavaScript語言

  TypeScript是目前比較受歡迎的開發語言,因為它要求所有的變數都必須定義一個型別,這種做法會讓Java程式設計師感到更加的安全。TypeScript現在之所以這麼受歡迎,最重要的原因就是因為Angular,而且TypeScript支援和遺留的JavaScript進行整合。還有一個原因是因為TypeScript是JavaScript的父集。強型別有很多優勢,比如可以在早期捕獲一些bug,而且可以提高編譯的速度。對他們來說,這是OCaml,這是程式語言社群的一項嚴肅的努力,推廣了上面提到的許多想法。有物件支援、自動記憶體管理和裝置可移植性。甚至還有來自蘋果應用商店的OCaml應用。

 Rust:安全可使用的系統語言

  Rust就像是翻新過的C語言版本,但是它有大量的多型型別。Rust發展很快,在Stack Overflow的語言流行排行榜上,以前大概50名左右,今年則躍升至18名。原因就是因為它解決了很多C語言擁有的問題。系統程式設計師不喜歡依賴垃圾回收機制,他們喜歡自己掌握記憶體的數量,Rust就會讓你有這種感覺。

 Scala:JVM上的函數語言程式設計

  如果你非常喜歡功能正規化,又需要將專案變為物件導向層次結構,而且程式碼還得簡單,你可能會有多個選擇。但是如果你有Java的基礎,Scala就可以幫助你了。Scala也是基於JVM執行的,與Java相比,它的程式碼顯得更為整潔。Scala的型別機制是強靜態的,編譯器為了推斷型別會做很多工作。在Scala中原始型別和物件型別之間沒有區別,因為Scala希望所有的東西都可以從一個ur-object中呼叫。

  Scala提供了函式式語言的許多特性,比如延遲評估、尾遞迴和不可變變數,但是為了在JVM上面執行,它已經做過修改了。基本的元型別或集合變數,如連結串列或雜湊表,可以是可變的,也可以是不可變的。

  如果你必須在數千個處理器叢集中處理資料,而且還面臨著遺留的Java程式碼問題,那麼Scala是一個很好的解決方案。

 Haskell:純粹簡單的函數語言程式設計

  20多年來,致力於函數語言程式設計的學者們一直在積極地發展Haskell。它是理想的函數語言程式設計一種更純粹的表達方式,它有一套很健全的體制去處理輸入/輸出通道。此外,Haskell的社群也非常活躍。如果你認為你的資料結構會很複雜,而且有很多型別,Haskell將會幫助你的。

 Julia:速度更快的Python語言

  軟體行業喜歡用Python開發的人非常多,然而,無論Python的優點有多明顯,它一直都存在一個讓人特別惱火的問題,就是速度問題。Julia的出現就是為了解決這個問題。它引入了Python開發者所崇尚的clean語法,使得程式碼可以在後臺進行編譯。它還提供了一個強大的型別推理引擎,可以讓程式碼執行的更快。與Python相比,它的速度明顯快很多。如果你的資料量比較大,但是喜歡Python的語法,那麼Julia可以是你的下一個學習的語言。

  原文:9 cutting-edge programming languages worth learning now  
  作者:Peter Wayner
  翻譯:Vincent

相關文章