Front-End Frameworks: Comparação RealWord com Benchmarks ...
哪種編程語言將來會對編碼產生最大的影響?這取決于你問誰。事情一直在變化。某些語言(如Java和R)仍然處于最前沿。僅僅幾年前,其他流行語言就已經降溫了,它們被新興的替代方法吸引了大家的注意,這些替代方法使解決當今企業(yè)編程向導所面臨的各種問題變得更加容易。
有些事情已經改變了,有些沒有改變。顯而易見的是:自動化的工作流程仍然是語言創(chuàng)建者的最大職責。這是我們(至少目前)將定義編碼未來的頂級編程語言列表。
1.Ethereum
許多人認為Ethereum和比特幣是貨幣,您用來購買咖啡的東西或可能是非法的東西。但是,如果您消除了炒作和貪婪,就會埋藏在其中的一種編程語言可以定義要進行的相當復雜的計算。Ethereum語言甚至是圖靈完整的,至少如果您接受節(jié)點可能對代碼運行多長時間設置時間限制的話。
Ethereum的創(chuàng)造者認為,每個花費硬幣的人可能都想做更多的事情,而不僅僅是將財富從所有者A轉移到所有者B。他們認為,當事方可能希望構建詳盡的合同,其中包含有關何時或何時轉移或轉移財富的條款,警告和條件。不動,而這些將以計算機語言表達。
例如,30年的抵押可以表示為計算每月還款額并僅在完成360次還款后才除去留置權的代碼。這些用代碼編寫的合同是經濟和商業(yè)的未來,并且從現(xiàn)在開始理解語言對于進行交易至關重要。
要點:與貨幣系統(tǒng)緊密集成,這需要高度重視正確性和認證。
頭痛:與貨幣體系緊密結合,帶來監(jiān)管和偏執(zhí)狂。
2. React JSX
從技術上講,React Web應用程序是用JavaScript編寫的,但是許多模板都是用JSX構造的,這是JavaScript和HTML的怪異混合,無疑是由非常熟悉這兩者的人創(chuàng)建的。
省略了一些煩人的標點符號以節(jié)省時間,并且簡化了其他結構。但是,如果您打算在React或其同類產品中進行編程(例如Vue或也使用JSX的下一代Web應用程序之一),則需要掌握這種混合方式。
這意味著知道何時講JavaScript和何時鍵入HTML。它是如此不同,以至于它也可能是另一種語言。
亮點:速記使您可以精心制作互連的Web應用程序。
頭痛:它既不是HTML也不是JavaScript,因此您會經常感到困惑。
3. TensorFlow
機器學習無處不在,并且TensorFlow是探索它的主要開源軟件包之一。從技術上講,TensorFlow是用C ++,Python和CUDA語言混合編寫的。但是您編寫的代碼將主要包含對Tensor Flow API的調用,并且可以使用大多數(shù)主要語言(包括Java和JavaScript)來完成。
您可以選擇自己喜歡的語法和編譯器,但是困難的部分將是教您的代碼從數(shù)據(jù)中學習。您必須了解如何構建模型,并且代碼將反映您對系統(tǒng)的期望。了解API的這種結構是創(chuàng)建天才的第一步。
亮點:觸手可及的強大實力可以解決AI中的難題。
頭痛:結果通常是令人毛骨悚然的黑匣子,您可能對它們的作用感到困惑。
4. TypeScript
它看起來像JavaScript,并且旨在與瀏覽器和Node.js應用程序中的JavaScript具有幾乎相同的功能。在編譯階段,編譯器甚至將其轉換為JavaScript。那為什么要打擾呢?
當沒有操作導致未定義的行為時,TypeScript提供了一種類型安全性,這種安全性使許多程序員感到滿意,這種類型使Java代碼變得更加整潔和定義更好。開發(fā)人員在這里對JavaScript的更改不多;他們只是增加了一層,以確保數(shù)據(jù)類型對齊,這樣您就可以在代碼運行之前捕獲一些最簡單的錯誤。
它是流行的Angular框架的基礎,并且越來越流行,因為您通常可以將其放到需要JavaScript的任何地方。
亮點:轉換為JavaScript,使其廣泛適用。
頭痛:并不是每個人都看到了創(chuàng)建良好類型的代碼所需的額外工作的美。
5. R
“大數(shù)據(jù)”一詞可能不會像幾年前那樣在銷售報告中引起人們的興奮,但是對統(tǒng)計數(shù)據(jù)的需求繼續(xù)主導著許多業(yè)務決策。如果有的話,現(xiàn)在的實踐比以往任何時候都更加集成,這使得R(一種用于統(tǒng)計分析的語言)比以往任何時候都更加重要。
R是一種由統(tǒng)計學家和科學家設計的編程語言,旨在簡化他們的工作。它具有數(shù)據(jù)分析中使用的大多數(shù)標準功能,并且許多最有用的統(tǒng)計算法已經實現(xiàn)為自由分發(fā)的庫。數(shù)據(jù)科學家要做數(shù)據(jù)驅動型科學所需的大部分內容。
盡管它是用于創(chuàng)建任意函數(shù)的編程語言,但是許多開發(fā)人員在IDE中使用R作為高性能的暫存器,用于處理數(shù)據(jù)。這使其成為電子表格和圖形計算器之間的混合體。
RStudio和RCommander是兩個流行的前端,可讓您加載數(shù)據(jù),修改數(shù)據(jù)并將其作為圖表和表格吐出。他們使它不再是一種編譯運行語言,而更多地是一個可以在其中進行工作的交互式世界。
重點:用于選擇數(shù)據(jù)子集并對其進行分析的巧妙表達式。
頭痛:主要針對臺式機,而不是Hadoop等技術主導的大數(shù)據(jù)世界。
6. Java 8
幾年前,Java團隊環(huán)顧了Java虛擬機(JVM)的世界,發(fā)現(xiàn)許多程序員使用JVM不僅可以運行Java。適應這種趨勢的方法之一是通過在Scala中編寫代碼,該代碼將功能性方法的所有功能和規(guī)則與選項結合在一起,以鏈接到浮動在網絡上的數(shù)十億Java歸檔文件中。
現(xiàn)在,Java程序員無需切換到單獨的語言即可獲得功能解決方案的所有優(yōu)點。 Java 8是很好的舊Java,但是通過額外的功能機制又可以使您的代碼并行化,從而再次使Java 8成為新的。
當然,您不必使用并行性。您可以堅持使用舊的Java,因為它仍然有效。但是,如果您不使用較新的功能,則將失去為JVM提供更多結構來優(yōu)化代碼執(zhí)行的機會。您將錯失從功能上進行思考并編寫更簡潔,更快速且錯誤更少的代碼的機會。
重點:Lambda表達式和并發(fā)代碼。
頭痛:feeling不休的感覺使開發(fā)人員希望雙手撐起來并使用Scala。
7.Go
Go已針對現(xiàn)代世界進行了調整,在現(xiàn)代世界中,大部分情報都位于服務器上,這些服務器雜亂了數(shù)千個發(fā)出數(shù)百萬個API調用的客戶端。它的意思是快速,輕便,它具有足夠的功能來完成這項工作,而不會妨礙其他選擇。
語言沒什么太多,這就是重點。 Google想要一個根本上是基本的解決方案。正如一位創(chuàng)造者所說,它拋棄了其他語言中發(fā)現(xiàn)的許多更聰明的想法,并保持了足夠的準確性,“足以使一個程序員牢牢抓住”。
Go中沒有復雜的抽象或聰明的元編程結構-只是簡單語法中指定的最重要的功能。
這可以使團隊中的每個人都更輕松,因為當其他人從語言規(guī)范的更深層次中挖掘出一個整潔的主意時,無需擔心。
亮點:只是一種用于處理數(shù)據(jù)的簡潔明了的語言。
頭痛:有時您需要一個不在這里的聰明功能。
8. CUDA
最初,視頻卡只是為游戲玩家生成炫目的圖像的東西,是用于處理數(shù)百萬個三角形的專用硅片,因此人們可以幻想數(shù)十種精心制作的武器,以欺騙死亡,面對危險以及炸毀死亡和危險。
但是在這條線上的某個地方,一些聰明的程序員在后臺進行了觀察,并看到了通過釋放游戲精心設計的計算火力來加速其代碼的機會。
如今,許多視頻卡可以模擬復雜的科學模型或運行復雜的AI算法。如果您對計算的需求很大,那么CUDA語言是釋放圖形處理單元(GPU)功能的一種好方法,可以殺死僵尸或機器人以外的其他方式工作。您甚至可以在云中租用它們的機架來解決您的問題。
使用CUDA的主要挑戰(zhàn)在于學習識別算法的并行部分。找到它們后,您可以設置CUDA代碼,以使用視頻卡的所有固有并行功能遍歷這些部分。
有些工作(例如開采比特幣)非常簡單,但其他挑戰(zhàn)(例如分類和分子動力學)可能需要更多思考。科學家喜歡將CUDA代碼用于大型多維仿真。
亮點:非常快的性能,至少對于并行代碼而言。
頭痛:確定最容易并行運行的代碼部分并不總是那么簡單。
9. YAML
如果您問大多數(shù)程序員,他們會選擇一種編程語言。這是一種標記語言,然后“又是另一種”。但是,隨著更多的代碼層由這些曾經很瑣碎的文件中指定的參數(shù)控制,您會在更多地方找到以JSON格式格式化的YAML配置文件及其表親。
它們可能是編程游戲的典當,但是任何試圖使其Node.js堆棧做正確的事情的人都將花費時間為他們的YAML文件中的按鍵苦惱。這項工作可能不算是完整的編程,但是這些字符的放置仍然可以使您拔出同樣多的頭發(fā)。
重點:該格式相對沒有標點符號,但足夠豐富,可以表示許多層參數(shù)。
頭痛:除了基本格式外,結構和約定也可能千差萬別。
10. DSL
DSL(首字母縮寫詞)用于指電話公司的Internet服務。但是對于開發(fā)人員來說,它的意思是“特定領域的語言”,這是一個普遍的,非特定性的術語,出現(xiàn)在各地。皺紋是字母不指一種特定的語言來學習和掌握。
DSL代表一種設計理念,即一種語言應針對手頭的工作進行量身定制,而不是嘗試成為一種可在任何地方使用的通用語言。因此,用于劇院照明控制器的語言可能包含用于打開和關閉燈光的關鍵字,但沒有其他功能可用于將數(shù)據(jù)保存到文件或連接到LAN。專為運營鋼鐵廠而設計的另一種語言可能與高爐相接,但與某些用于將坐標轉換為地圖的API無關。
這些DSL的出現(xiàn)反映了設計人員如何意識到用戶需求對于一些菜單,復選框或命令行參數(shù)而言過于復雜。 DSL用戶希望通過在共享特定于域的數(shù)據(jù)的同時將特定于域的關鍵字串在一起來多行說明他們的需求。
each,每個DSL都不一樣,這很重要。共享的首字母縮寫并沒有使DSL邏輯更容易被吸收。您無法學習一般的DSL認證,但是您應該準備越來越頻繁地看到它們。
亮點:為許多應用程序帶來真正的力量。
頭痛:與各個領域不同。
持續(xù)關注工作流程
尋找計算機翻新商店,醫(yī)院和汽車的巧妙方法的程序員也在努力重新設計自己的工作。他們通過增加更多的智能層來加快創(chuàng)建軟件的速度,以便工具更快更聰明地發(fā)現(xiàn)錯誤。
最新的計算機語言使用起來更快,因為內置的智能功能使它們可以幫助程序員以更少的擊鍵次數(shù)執(zhí)行更多操作。他們通常也提供較少的錯誤。
較新的方法包括更多的結構和更多的抽象性,從而使語言的勇氣可以完成程序員過去必須自己完成的工作。這些自動化功能為開發(fā)人員提供了更多的精力來專注于更大的問題。在許多情況下,它們還可以產生更好的性能,因為自動化機制能夠更好地找到效率和并行計算的機會,同時消除了一些導致錯誤的簡單錯誤。
這種自動化中的一些圍繞著從實驗室涌現(xiàn)到通用的體系結構和構想。從事人工智能(AI)工作的程序員曾經用自己喜歡的語言編寫代碼。現(xiàn)在,像TensorFlow這樣的某些庫已經足夠穩(wěn)定以至于可以廣泛部署,并且它們的API幾乎就像是一種語言。
程序員專注于將這些API調用串聯(lián)在一起,其方式與將循環(huán)或函數(shù)串聯(lián)在一起的方式幾乎相同。
此列表中的某些所謂語言可能不被視為官方計算機語言。程序員通常會區(qū)分使他們能夠表達任意算法的完整計算機語言(通常被標記為圖靈完整)和較少的字符集,從而使他們僅拼出幾個參數(shù)或一些配置細節(jié)。
但是,這種區(qū)分可能是哲學上的,并且可能僅對大學討論和酒吧辯論很重要。因為有時候阻止您回家的唯一原因就是正確的角色是否在正確的位置。敲擊頭發(fā)以嘗試使所有事情正確執(zhí)行時,擊鍵是否表達某種值得被稱為完整語言的語法并不重要。
這10種語言正在改變我們告訴計算機做什么的方式。盡管其中一些語言是新語言,但其他語言已經非常流行。盡管我們有時會這樣想,但有些語言根本不是真正的語言。
事半功倍
清單上的項目沒有太多共通之處,除了程序員可能正在慢慢找到使每種鍵向下傾斜這些語言并使所生成的代碼更簡潔,功能更強大的方法之外。 在某些情況下,這些語言充當了通往諸如AI或大規(guī)模并行算法之類的全新選擇的門戶。