Python vs Ruby: 誰是最好的 web 開發語言?
(點擊
上方藍字
,快速關注我們)
編譯:開源中國
www.oschina.net/translate/python-or-ruby-web-development
如有好文章投稿,請點擊 → 這裡了解詳情
Python 和 Ruby 都是目前用來開發 websites、web-based apps 和 web services 的流行編程語言之一。
這兩種語言在許多方面有相似之處。它們都是高級的面向對象的編程語言,都是互動式腳本語言、都提供標準庫且支持持久化。但是,Python 和 Ruby 的解決方法卻千差萬別,因為它們的發展歷程導致它們的語法和原理都大不相同。
那麼要採用哪種語言來進行編程就需要好好考慮了,因為每種語言都是自己的優點和缺點。而且這些優缺點都會影響我們的決定。
基礎知識
Python 最初是作為科學領域的原型設計語言的,因為它可以很容易轉換成 C++ 語言。Python 發展很久之後才被第一次用於網站開發。而 Ruby 之所以流行就是因為網站開發,繼承自 Ruby 的 Rails 框架被開發人員用來設計複雜的網站。
哪種編程語言更適合你的需要?下面對於每種語言都做一個概述來幫助你選擇:
方法:最好的方法 VS 以人為本的語言
Python
Python 作為一種直接面向對象的編程語言。它主要的目的是對程序員來說所有的事情都是很明顯的。在 Python 語言中做某件事情的時候,只有一種『最好』的辦法。這種原理導致 python 語言的代碼規範很嚴格。
Python 的核心理念主要包括三條關鍵的分層原則:
顯示優於隱式;
簡單優於複雜;
複雜優於超複雜;
這種嚴格的原理導致 Python 語言是一種易讀且易學——這也就是為什麼一部分碼農說 python 語言是偉大的語言。對於,入門級的編程語言 Python 有很大優勢。它的語法簡單,幾乎不需要去記。因為它的代碼結構很明朗,開發者很容易知道一切從哪裡來,也很容易去調試。
Python 代碼的層次結構是很明顯的一個特點。不同於其他編程語言,包括 Ruby,Python 語言使用空格進行流程式控制制。代碼的縮進決定了它執行的意義。使用空格是 Python 「顯示」原理的一個很典型的例子,一個 Python 代碼的形狀決定了它的邏輯結構和執行順序。
Ruby
不同於 python ,Ruby 是「以人為本」的語言,是按照開發者認為的方式來運行的,它的代碼讀起來更像是口語化的語言(像開發者)而不是像其他語言一樣類似於一種機器語言。Ruby 遵循「最小驚動」原則,提供很多作相似事情的方法。這些相似的方法有多個名稱,使得很多開發者感到困惑和沮喪。
不同於 Python,Ruby 語言使用了「模塊」,一級對象在程序中被當做一個單元。事實上,Ruby 是一種面向對象編程的語言。一切皆為對象——甚至全局變數事實上都是對象空間中的對象。類和模塊本身就是對象,函數和運算符都是方法的對象。這種方式使得 Ruby 尤其強大,尤其是當結合其他主要力量:函數式編程和 lambdas 表達式的使用。
除了模塊和函數式編程,Ruby 為編程者提供了許多特性包括分片、哈希、不哈希類型以及可變字元串類型。
Ruby 的追從者認為它優雅的編碼方式是它最好的特點。同時,Ruby 的「神奇」的功能和靈活性使得它很難追蹤 bug。
社區: 穩定與創新
儘管特性和編程哲學是選擇一個語言的首要驅動因素,但是社區開發者的力量仍然會扮演一個重要的角色。幸運地是,Python 和 Ruby 都為自己有強大的社區而自豪。
Python
Python 的社區已經包含一個巨大的 Linux 社區和學術社區,因此它能提供很多學術(數學和自然科學)上使用的案例。這種支持不僅給社區帶來了穩定,還帶來了多樣性,這就導致了 Python 的增長不僅限於在 web 開發上。
Ruby
然而,Ruby 的社區從一開始主要就聚焦在 web 開發上。它在創新上往往比 Python 社區更快,但是這種創新也引起了更多的破壞。另外,它在多樣性上,還沒有達到 Python 的水平。
總結
對於 Web 開發,Ruby 有 Rails ,Python 有 Django 。 兩者都是強大的框架,所以當談到 Web 開發時,你使用任何一種語言都不會出錯。你的決定最終將歸結於你的經驗水平和偏好。
如果打算專註於構建 Web 應用程序,Ruby 是流行和靈活的,擁有一個建立在它之上的非常強大的社區,始終處於研發的最前沿。
如果你對構建 Web 應用程序有興趣,並希望學習更加通用的語言,請嘗試 Python 。 你會得到一個多元化的社區,並從其所應用的各個行業中感悟到很多,並得到很多支持。
看完本文有收穫?請轉
發分享給更多人
關注「P
ython開發者」,提升Python技能
※學慣用 Python 編程時要避免的 3 個錯誤
※如何開發一個 PyCharm 插件
※Python 魔術方法(Magic Method)
※隨機之美,隨機森林
※Django 使用 Celery 實現非同步任務
TAG:Python開發者 |
※Python web開發:Flask的項目配置
※如何在Windows下開發Python:在cmd下運行Python腳本
※TensorFlow,為什麼選擇 PyThon 作為開發語言?
※Flutter vs React Native,誰才是跨平台應用開發的最佳利器?
※python開發利器,python shell和vim中都需要的tab補全方法
※Python web開發:Flask的URL和視圖
※谷歌開發者節DevFest&TensorFlowDay,約!
※望城經濟技術開發區概況Wangcheng Economy and Technology Development Zone
※適用於Android和iPhone的Swype鍵盤停止開發
※HoloLens開發者:Magic Leap One確實比HoloLens好
※python web開發-flask連接sqlite資料庫
※Mixed Reality Toolkit-Unity開發系列—Sharing模塊
※谷歌開發者節DevFest&TensorFlow Day,約~
※python開發學習:Python 3 VS Python 2
※SpringBoot | 第十九章:web 應用開發之 WebSocket
※TensorFlow 開發者峰會:推出 TensorFlow.js,支持 Swift,TF 將更易於使用
※RogueInitiative與EmblematicGroup合作開發全新沉浸式內容
※Stack Overflow最新薪資計算器出爐:DevOps和Go語言開發者是大贏家
※Surface Phone正在開發中,有證據!
※Facebook正在開發一種「Talk the Walk」的AI