整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          2 Python與其他語言比較、Python解釋器的

          2 Python與其他語言比較、Python解釋器的其他實現

          ython與其他語言比較

          • Perl:腳本語言,優勢在于字符串模糊匹配,遠超標準shell腳本,擁有強大的正則表達式引擎。使Perl主要應用于過濾、識別和抽取字符串。之前一直是開發Web服務器CGI(Common Gateway Interface)網絡程序的語言。Python的正則表達式很多程度參考了Perl。Perl語言晦澀,對符號過度依賴,學習曲線高。由于語法復雜,要完成相同的任務,實現方式有多種,引起程序員之間的分歧。具體內容可以參考下述網頁。

          https://pleac.sourceforge.net/pleac_python/

          https://www.garshol.priv.no/download/text/perl.html

          • Java:Java與Python都有類似的面向對象的語法及特性。Java盡管比C++簡單得多,但依舊繁瑣,但Java提供了更加快速燉大鵝開發環境。而Python更加簡潔純粹,但性能較Java略低。在Python和Java關系上,曾經有Jython這樣一個產品。Jython是一個完全用Java開發的Python解釋器,可以在JVM中運行Python程序。在Jython環境中,可以熟練的處理Java對象,Java還可以與Python對象進行交互,可以訪問自己Javade標準類庫,如同Java一直是Python環境中的一部分。不過Jython在2.7以后就停滯不前,Python3.*的程序無法兼容。具體差異,參考下述網頁。

          https://dirtsimple.org/2004/12/python-is-not-java.html

          • Ruby,由于Ruby on Rails曾經紅極一時,Ruby也經常拿來與Python比較。Ruby完全面向對象,而Python有字節碼解釋器,Ruby沒有。Python有多種編程范式混合,易讀性更強。相對于Rails,Python也有自己的Web應用框架,Django、Turbogears等。
          • Tcl,是一種曾經與Python可以相提并論的腳本語言。Tcl是最易于使用的腳本語言之一,程序員可以像訪問系統調用一樣對Tcl語言進行擴展。不過,它有更多的局限性,如:有限的數據類型;沒有類、模塊、包機制;通常需要與它的圖形工具Tk一起工作。Python則有豐富的數據類型;有類、模塊、包機制可以編寫大型程序;目前Tk已經一直到Python中(Tkinter)。
          • Lisp,函數化編程語言,它的lambda、map、filter、reduce等機制,一直在被Python借鑒。Python雖然有一點點函數化編程(functional programming,FP)的結構,但并不是純粹的函數化編程語言。
          • JavaScript與Python相似的面向對象腳本語言。JavaScript是基于原型系統的,而Python則遵循傳統的面向對象系統。

          Python解釋器的其他實現

          1. Jython:完全用Java寫成。盡管與Python解釋器存在細微差別,但兩者還是比較接近,而且啟動環境完全相同。Jython的優勢如下:
            • 只要有JVM,就能運行Jython;
            • 擁有訪問Java包與類庫的能力;
            • 為Java開發環境提供腳本引擎;
            • 能夠很容易的測試Java類庫;
            • 提供訪問Java原生異常處理能力;
            • 繼承了JavaBeans特性和內省能力;
            • 鼓勵Python到Java或Java到Python的開發;
            • GUI開發人員可以通過AWT/Swing庫;
            • 利用Java GC原生垃圾收集器。

          由于Jython的開發者被微軟挖去做IronPython,導致Jython開始沒落,至Jython2.7之后就沒有再進行過更新。

          1. py4j,作為Jython替代,Java 程序中調用 Python 函數,并且在 Python 程序中訪問 Java 對象。Py4J 是一個 Java 庫和 Python 模塊。它可以被用于構建混合語言應用程序、數據科學項目,以及其他需要結合 Java 和 Python 的場景。具有如下特點:
            • 易用性:Py4J 提供了簡單的 Java API 和 Python API,使得在 Java 和 Python 之間進行交互變得非常容易。
            • 高性能:由于 Py4J 是基于 Java 實現的,因此它的性能表現通常會優于其他 Python-Java 框架。
            • 安全性:Py4J 支持安全模式,可以在不信任的環境中運行 Python 代碼。
            • 廣泛的適用性:Py4J 可以在各種操作系統和 JVM 上運行,并且支持多種 Java 版本。
          1. IronPython,用C#語言實現,適用于.NET和Mono。可以在.NET應用程序正好IronPython解釋器來訪問.NET對象。IronPython的擴展可以用C#或VB.NET編寫。另外還有一種名為Boo的.NET、Mono語言。
          2. Stackless,解決CPython沒改Python函數調用都會產生一個C函數調用,這樣會限制函數調用,用戶無法實現線程庫和復雜遞歸應用。Stackless允許一個C棧幀可以擁有任意數量的Python棧幀。這樣可以幾乎無窮的進行函數調用,并支持巨大數量的線程。Stackless唯一的問題是它要對現有的CPython解釋器做重大修改,所以它幾乎是一個獨立的分支。

          新智元導讀】有著20年編程經驗的資深程序員,以自己多年來的經歷,總結出程序員的編程語言切換規律,做了一個主流編程語言的進階流程圖,展示不同編程語言之間的承接關系、程序員選擇編程語言的方向和路徑。

          鐵打的程序員,流水的編程語言。時代在發展,編程語言也與時俱進,不斷有新的、更好或者更時髦的語言出現,程序員也會或主動、或被動去學習一門新的、”更好“的編程語言。

          Tailscale_io聯合創始人Avery Pennarun,一位有著20年編程經驗的資深程序員,以自己多年來的經歷,總結出程序員的編程語言切換規律,做了一個主流編程語言的進階流程圖,展示不同編程語言之間的承接關系、程序員選擇編程語言的方向和路徑。

          Avery這個人,很像是小說、人物報道里的典型程序員,有點偏執,喜歡搞怪。曾經做過7年的Debian開發,或許這段經歷能夠說明一些問題。因為Avery資歷深涉獵廣,我們也能夠從這篇文章中,了解到編程語言發展過程的一些有趣的歷史傳承。

          注:本文觀點帶有強烈的主觀傾向,新智元的讀者中,可能有人會持有不同意見,贊同也好反對也好,歡迎大家留言提出自己的看法!

          我們看到,圖中總共有4條主線,分別是:

          1. 低級語言,即匯編和C那一支
          2. 商用或者教學用語言,即BASIC那一支
          3. 專為數學和科學開發的語言,即R那一支
          4. 腳本、膠水語言,即Shell那一支

          或許有人會說這張圖里缺少了HTML、CSS、Haskell和Lisp,這不重要,因為Avery并沒打算展開去講它們。

          Avery提到,最初的時候,4類語言有一個比較明確的邊界。低階語言編程的程序員使用C,匯編或者Turbo Pascal,商用大型程序員使用VB(當然那個時候的“大型”,和現在的“大型”完全不在一個量級),數值計算人員使用Fortran,R或MATLAB,膠水編程使用Shell或Perl。

          程序員不會用Perl來寫操作系統,也不會用VB寫大數相乘。現代語言則模糊了相互之間的邊界,很多R寫的程序,也可以用Python實現。語言之間的轉換主要在于挑選不同的風格。

          低級編程語言

          先來看看傳說中的匯編。用匯編寫程序是相當困難的,但即使在人工智能蓬勃發展的今天,某些場景下匯編仍然是不可替代的最佳編程語言,而且,所有編譯語言的代碼都會被轉成匯編或者機器語言。

          從匯編開始出現了3個分支,在風格上有明顯的差異,不過我們先看C這一支。Pascal特點是有"begin...end";而C是用{}。花括號的風格影響了后世很多語言,雖然討厭花括號的程序員群體也不在少數。

          而且C有一種魔力,一旦你開始使用就很容易形成一種習慣,不管最終的效率高低,你總會想用C去實現一切。而且C也是為數不多的能合理實現所有上述四類編程問題的語言之一,而且速度也還可以。

          C再往下,是C++和Python 2。C++雖然名字看起來好像是C的進階,然而風格卻大不相同。Avery吐槽”用C++是因為很多做商用大型程序開發的程序員別無選擇“。

          而膠水編程就好辦多了,直接上手Python 2。雖然Python很慢,同時代的Perl也有不少簇擁。但作為一名C語言選手,Avery認為Perl的語法風格只能用怪誕來形容。相比之下,更接近C的Python顯然是更好的選擇。

          不需要花費太多精力就能很快適應Python的語法;在Python里調用C函數的成本比Java以及其他語言低多了!唯一的缺點就是慢,但你可以調用C模塊來緩解啊。

          后來Java出現了,大批C和C++程序員迅速投入Java懷抱,以至于很長一段時間Java都霸占著編程語言No 1的位子

          Java的缺點是運行時很慢,然而相比C++超慢的編譯速度、讓人頭大的header文件、超弱的跨平臺性…這點缺點不算什么了。

          Go剛出現的時候,有人稱其為C++和Java的終結者,結果并沒有。Avery說,想當年Go最輝煌的那陣子是因為Python 2程序員發現它跑的比Python快,RAM占用比Python少,寫代碼的難度相當。

          雖然現在認為Go是一門“系統”語言,但Avery認為本質上,Go其實還是一個膠水兒語言。

          商用編程語言

          BASIC是基于讓“新手能夠輕松掌握”的目的開發的,但是學院派發現有BASIC編程經驗的學生,很難教好他編程,這實在是有點諷刺。當然他們也沒選擇C,而是選擇了更適合教學用的Pascal。

          后來微軟將BASIC轉變成Visual Basic,這可能是JS出現之前最受歡迎的編程語言了。選擇我們仍然在Excel中使用VB,只不過它改名叫宏。

          后來Turbo Pascal的作者創建了一門新的語言Delphi,口碑很不錯,再后來還開發了C#。相反,VB.NET則可以說是非常失敗了。

          Avery還不忘給出很有殺傷力一擊:我其實很想在VB后面再加一個箭頭,但不好意思,我的確不知道這幫程序員后來去哪兒了。可能轉行做網頁了?或者去搞Excel的宏?

          膠水編程語言

          Avery說,膠水語言的鼻祖要數Unix的Shell。Unix的設計哲學倡導一次只做一件事,并將其做到極致。這些功能單一、但是極致好用的小模塊,通過pipeline鏈接起來,就能合力完成一件復雜的“大任務”,頗有點螞蟻群的味道。

          理想雖然美好,無奈敗給了現實,這樣看成完美的小程序模塊很難實現。于是有了awk,一個和C語法相似的解釋語言。

          接下來有了Perl,Perl對互聯網的興起起到了非常大的推動作用,同時也借助互聯網Perl收獲了超贊的口碑。人們使用Perl來運行web的CGI腳本,接受HTML請求,然后進行解析。

          你知道Perl最讓人印象深刻的是什么嗎?讓人眼花繚亂的標點符號!

          當然,你之砒霜可能是他人之良藥。有人覺得Perl語法丑陋(比如Avery),那么他可能之后會選擇使用Python;相反,有人愛死Perl的風格,那么可能會選擇Ruby。

          所以,如果你還在用Perl寫Web CGI腳本,那么請繼續吧;或者,你可以考慮一下“全世界最好的語言”PHP。

          前端編程語言

          JavaScript是一門編程語言,現在應該已經是一個不爭的事實了。然而,Avery指出,正因為JS是一個大雜燴,把HTML、CSS、面向對象、函數式編程、動態語言、JIT等等所有涉及到HTML請求的概念,統統囊括進來,導致這個語言特別

          而且你能相信一門在20多年前,僅僅花了10天時間就做出來的語言嗎?顯然它存在著很大的缺陷和一些無法修復的嚴重錯誤。

          我們回頭再看這張圖,注意一下右下角Python 3和JS:

          你會看到Python和JS形成了一個循環。為什么會這兩個會出現糾纏反復呢?Avery說因為用JS久了容易變得不正常,需要通過Python治療一下。(hmmmm...)

          接下來的TypeScript,可能因為作者是Delphi的開發者,Avery對TypeScript給予了很高的評價。

          在node.js出現之前,JS被認為就是一門前端語言。而現在成為了一門前端+后端+命令行的一條龍語言。

          最后,Avery也沒放過Python 3。他說在Python 3中編寫系統程序,你會發現自己經常搞亂unicode轉換,甚至連文件名都會搞亂!

          善有善報,惡有惡報。

          參考鏈接:

          https://apenwarr.ca/log/20190318

          作者 | JEAN-LUC AUFRANC
          譯者 | 彎月
          出品 | CSDN(ID:CSDNnews)
          提到編程語言,人們第一時間想到的無非是:哪個編程語言簡單易學,亦或是最掙錢等。但是編程語言功耗問題卻被很多人忽視。那么作為程序員的我們如何選擇編程語言,使其以低能耗高功效地工作呢?
          2017年,葡萄牙大學的研究人員團隊曾發表過一篇題為《各種編程語言的能耗》的論文,他們比較了各個編程語言(及其編譯器/解釋器)的能耗,為此他們研究了 27 種知名編程語言的運行時、內存使用情況以及能耗。最后,C 成為了無可爭議的贏家,其能耗最低,而 Python 和 Perl 則處于最末位。

          據悉,這項研究采用了多種方法論和多個基準測試。每種語言使用十個編程問題來進行調查,幫助研究人員獲得更具有可比性、代表性和廣泛性的程序,以及編譯/執行選項和編譯器版本。


          C /C++能耗最低且最快


          盡管人們普遍認為程序運行速度更快時能源消耗會隨之降低,但論文中明確指出“更快的語言并不總是最節能的”,強調這并不像 E(nergy)=T(ime) x P(ower) 的物理定律那么簡單。

          比如在他們的一項基準測試中,Chapel 程序的執行時間比用 Pascal 編寫的等效程序少 55%——但 Pascal 程序使用的能量少 10%。

          在人們傳統印象中,編譯語言“往往”是最節能、運行速度最快的。首先我們來看一看編譯語言在二叉樹測試上的結果。

          不出意料,這項研究得出的結論為:編譯語言是最快和最節能的語言。C 和 C++ 語言是能耗最低且最快的語言。Go 是編譯語言中表現最差的語言,甚至比依賴虛擬機的 Java 或 Erlang 等還要糟糕,至少在二叉樹的測試中是這樣。

          Perl、Lua 和 Python能耗高

          下面看一下解釋型語言在速度與能耗方面的表現,由測試可知解釋型語言才是能耗最高的語言,比如 Perl、Lua 和 Python。

          而5 種最慢的語言也是解釋型語言,如:Lua、Python、Perl、Ruby 和 Type。但在使用正則表達式操作字符串時,5 種最節能的語言中有三種解釋型語言,分別是 TypeScript、JavaScript 和 PHP。

          請注意,所有測試都是在如下環境運行:Intel Core i5-4460 Haswell CPU @ 3.20GHz,16GBRAM,Ubuntu Server 16.10 操作系統和Linux 4.8.0-22。考慮到如今 MicroPyhon 可以在各種微控制器上運行,猜它在體積更小的設備上的表現可能不會那么糟糕。
          此外,這項研究還根據時間、內存和能耗參數的不同目標組合,對每種語言進行了排名,而在這些指標中 C 語言始終名列前茅。這與人們長久以來的認知相同,如果你想優化程序,提高續航時間,降低功耗,則 C 語言絕對是最佳選擇、匯編語言、SIMD 指令或加速器的自定義指令優化某些例程。
          參考鏈接:
          • https://www.cnx-software.com/2021/11/18/save-the-planet-program-in-c-avoid-python-perl/


          為助力云原生開發者更好迎接即將到來的“黃金十年”,CSDN 特別發起《2021中國云原生開發者調查報告》,圍繞“云原生開發者畫像、人才和技術分布版圖、一線開發者的技術實踐、場景與應用分析、云原生的技術未來”等五大方面進行深度調查和解析。

          本次問卷調查共 10 個問題,可能占用您 3-5 分鐘時間,感謝您的傾力支持。


          主站蜘蛛池模板: 无码8090精品久久一区| 午夜视频久久久久一区| 一区二区三区亚洲| 好湿好大硬得深一点动态图91精品福利一区二区| 亚洲A∨精品一区二区三区下载| 久夜色精品国产一区二区三区| 亚洲日本一区二区一本一道 | 久久影院亚洲一区| 国产a∨精品一区二区三区不卡 | 亚洲毛片αv无线播放一区| 国产亚洲情侣一区二区无码AV| 亚洲一区二区女搞男| 亚洲日韩一区二区一无码| 国产vr一区二区在线观看| 人妻无码一区二区三区免费| 精品黑人一区二区三区| 不卡一区二区在线| 国产suv精品一区二区6| 久久精品岛国av一区二区无码| 亚洲精品色播一区二区| 消息称老熟妇乱视频一区二区| 一区二区三区视频在线播放| 另类国产精品一区二区| 亚洲福利电影一区二区?| jazzjazz国产精品一区二区| 国产精品第一区揄拍无码| 国产日韩一区二区三区| 男插女高潮一区二区| 高清精品一区二区三区一区| 97久久精品无码一区二区天美| 色狠狠AV一区二区三区| 国产AV午夜精品一区二区入口| 国产不卡视频一区二区三区| 日本一区二区三区在线视频| 国产91一区二区在线播放不卡| 激情无码亚洲一区二区三区| 无码中文人妻在线一区| 国产在线一区观看| 国产天堂一区二区综合| 精品欧洲av无码一区二区14| 无码中文字幕乱码一区|