緩慢的速度、運行時問題和移動應用開發(fā)困境“毀掉”了的未來編程社區(qū)
2021-09-04
速度慢、運行時問題和移動應用開發(fā)困境“毀了”未來
編程社區(qū)花了幾十年才采用。但是從2010年開始就火爆了,人氣終于可以和C、C#、Java等媲美了。
但這種趨勢何時會持續(xù)?什么時候會被其他語言取代編程語言原理,為什么?
消亡時間難以預測,所以我不給出確切的時間點,而是評估當前推廣普及的優(yōu)勢,以及未來導致其衰落的缺陷。
哪些優(yōu)勢造就了今天的流行局面?
的成功可見一斑。該趨勢數據統(tǒng)計了平臺帖子中的標簽數量。鑒于其龐大的規(guī)模,這是一種編程語言受歡迎程度的良好指標。
各種編程語言上的標簽數量快照
.
R 過去幾年一直處于穩(wěn)定狀態(tài),許多其他語言的受歡迎程度也在穩(wěn)步下降,但 R 的增長似乎勢不可擋。大約 14% 的問題被標記為“”,并且這一趨勢正在上升。
這種現象背后有幾個因素。
悠久的歷史
它從 90 年代就已經存在了。這不僅意味著它有足夠的時間成長,而且還擁有龐大的支持社區(qū)。??p>
因此,如果您在使用編程時遇到任何問題,通過 搜索很有可能解決。因為有可能有人遇到過你的問題,并為它寫了一些有用的解決方案。
對初學者友好
這不僅是因為它已經存在了幾十年,讓程序員有時間制作很棒的教程。更重要的是,語法非常容易閱讀。
首先,它不需要指定數據類型。你只需要聲明一個變量;您將從上下文中了解它是整數、浮點值、布爾值還是其他值。這對初學者來說是一個巨大的優(yōu)勢。如果你用 C++ 編程,你就會知道僅僅因為一個浮點數被一個整數代替而無法編譯程序是多么令人沮喪。
如果與C++代碼進行比較,您就會知道它是多么容易理解。盡管 C++ 的設計考慮了可讀性,但與代碼相比,閱讀起來相當費力。
用途廣泛
由于它已經存在很長時間,開發(fā)人員已經為許多目的制作了包。如今,您可以找到幾乎適用于所有事物的軟件包。
想要處理數字、向量和矩陣?是你的好幫手。
想要為技術和工程行業(yè)進行計算嗎?請使用。
想在數據操作和分析方面大放異彩嗎?試試吧。
想開始使用人工智能嗎?為什么不呢。
無論您嘗試管理什么計算任務,都可能有可用的包。這使得它始終處于技術的最前沿,從過去幾年機器學習使用的激增可以看出。
的缺陷,會動搖根嗎?
如前所述,您可以想象它會在很長一段時間內保持熱度。但與所有技術一樣,也存在弱點。我會一一分析最重要的缺陷,并評估這些缺陷是否致命。
速度
很慢,真的很慢。平均而言,完成一項使用中的任務所需的時間是任何其他語言的 2 到 10 倍。
造成這種情況的原因是多方面的。其中之一是動態(tài)類型——請記住,您不需要像在其他語言中那樣指定數據類型。這意味著它使用了大量內存,因為程序需要為它可能使用的每個變量保留足夠的空間。大量內存使用意味著大量計算時間。
另一個原因是一次只能執(zhí)行一項任務。這是數據類型靈活的后果——你需要確保每個變量只有一種數據類型,并行處理可能會在這里出現問題。
相比之下,您常用的網絡瀏覽器可以同時運行十幾個不同的線程。還有其他因素。
但歸根結底,這些速度問題都不是關鍵問題。計算機和服務器已經變得如此便宜,所以無論它們有多慢,都只是亞秒級的差距。最終用戶不太關心他們的應用程序是在0.001 秒還是0.01 秒內加載。
范圍
一開始,它是動態(tài)范圍的。這基本上意味著在計算表達式時,編譯器首先搜索當前塊,然后依次搜索所有調用函數。
動態(tài)作用域的問題在于每個表達式都需要在每個可能的上下文中進行測試——這很乏味。這就是為什么大多數現代編程語言都使用靜態(tài)作用域。
試圖過渡到靜態(tài)范圍,但搞砸了。一般來說,內部作用域——比如函數內的函數——可以看到和改變外部作用域。在,內部作用域只能看到外部作用域,而不能改變它們。這可能會引起很多混亂。
雖然它非常靈活,但它的使用非常有限。只能是表達式 in,不能是語句。
另一方面,變量聲明和語句始終是語句。這意味著它不能用于他們。
表達式和語句之間的這種區(qū)別非常隨意,在其他語言中沒有出現。
空格使代碼更易讀,但更難維護。
空間
在,您可以使用空格和縮進來表示不同級別的代碼。這讓代碼看起來更漂亮,更容易理解。
其他語言(如C++)更多地依賴大括號和分號。雖然這可能不夠美觀,對初學者不友好,但它使代碼更易于維護。這種方法更適合大型項目。
較新的語言如
解決這個問題:它們依賴空格,但為那些不想使用空格的人提供了另一種語法。
移動開發(fā)
隨著我們目睹軟件行業(yè)從臺式機到智能手機的主流轉變,很明顯我們需要一種強大的語言來構建移動軟件。
但開發(fā)的移動應用程序并不多。這并不意味著它不能做到這一點——有一個名為 Kivy 的包可以做到這一點。
但它不是為移動設備設計的。因此,即使開發(fā)人員可能會使用它來為基本任務生成可接受的結果,最好的方法是使用為移動應用程序開發(fā)而創(chuàng)建的語言。一些廣泛使用的移動編程框架是,和。
需要明確的是,筆記本電腦和臺式電腦應該會繼續(xù)存在多年。不過編程語言原理,既然移動端的流量已經超過桌面端,可以說光是學習還不足以成為有經驗的全能開發(fā)者。
運行時錯誤
腳本沒有被編譯然后執(zhí)行。相反,它每次執(zhí)行時都會編譯,因此任何代碼錯誤都會在運行時顯示出來。這會導致性能下降、更耗時和大量測試。
這對初學者非常有用,因為測試可以教會他們很多東西。但是對于有經驗的開發(fā)人員來說,調試一個復雜的程序會讓他們感到困惑。這個缺陷是設置時間戳的最大因素。
未來可以替換哪種語言?
編程語言市場出現了一些新的競爭對手:
雖然市場上還有其他語言選擇,但 Rust、Go 和成功彌補了.所有這些語言在新興技術領域,尤其是人工智能領域都有突出表現。雖然他們的市場份額仍然很小(從標簽數量上反映出來),但他們的趨勢很明顯:一路攀升。
各種編程語言上的標簽數量快照
.
鑒于當今語言無處不在,這些新語言中的任何一種都肯定需要五年甚至十年的時間來取代它。
仍然很難說獲勝者會是哪種語言,Rust、Go 或未來的某種新語言。
但考慮到架構中的基本性能問題,總會有某種語言占據一席之地。
原文鏈接: