首頁 後端開發 php教程 Rails與Node.js/PHP/Python等對比

Rails與Node.js/PHP/Python等對比

Nov 11, 2016 am 09:58 AM
ruby

首先,這不是比較貼,語言和框架能比較嗎?

其次,我也沒有全部用過 

本文唯一的目的在於提醒自己(還有正在瀏覽的你)真正所需要關注的究竟是什麼 

PHP 
PHP是simple but dirty的語言,simple是指的語言,simple是指學習曲線低,主要是因為有大量的基於php的傻瓜式應用,比如wordpress,discuz之類的,如果你只有一般的博客或論壇需求的話,只要善用google,你不用寫哪怕一行代碼。但是,php本身simple嗎?個人認為不是的,原因就不一一列舉了。至於dirty,我更覺得說的是他的設計,語言設計比較糟糕,看著常常的下劃線連接的函數名就略窺一二,除了有豐富經驗的php程式設計師,很難有人能寫出沒有嚴重漏洞的程式碼。

php開發框架建議:一等:Yii,Yaf,Symfony;二等:Zend,Cake,CI 

Django 
Django是基於Python的web開發框架,和Rails十分的相似,前幾年,他比Rails好的地方在於Python比Ruby更“可靠”,所謂可靠,就是更多人用,文檔更多,更能通過詢問找到答案,但隨著近幾年Ruby的逐漸興起(大部分靠Rails的帶動) ,越來越多的網站使用Rails。單論語言設計,Python不見得比Ruby簡潔,一致性也略遜於Ruby,可以說Python唯一的優勢就是有很多serious scientists都在使用它,在科學計算領域佔據大半江山,而Ruby是日本人造的(Ruby借鑒了Python)。倘若Ruby是與Python同時代的歐美國家誕生的語言,相信現在已經沒Python什麼事了。 

Rails 
Rails是個驚人的web框架,幾乎現在所有的主流web框架都能看到Rails的影子,Rails把Ruby的特性用到了極限。 Rails能應用於一切大中小型應用,超大規模應用不是單靠任一腳本語言就能勝任的。 Rails經過多年的發展已經洗盡鉛華,現在正處於「一枝獨秀」的狀態,可以說沒有一款框架的綜合能力(易用性,簡介性,效率,學習曲線等)能超越Rails,NodeJS不行, Django不行,其他「小眾」的語言更不行,相反,Rails正處於飛速發展狀態,以後超大規模應用的成功案例也會逐一出現。

NodeJS 
NodeJS是一款很有前景的Web框架,可惜就是晚生了幾年,不然現在也是能和Rails一較高下,相比php,Django和Rails,NodeJS的開源專案相對較少,大型的成功案例也略少,但其設計和性能也相當簡潔和高效。相信不久的將來也會大放異彩。

ASP,JSP等 
複雜,臃腫,企業級,靠人數堆積的公司,國企,銀行,電商,創業公司用這些的話就是自殺,重要部門不用這些的話也是自殺(招的人不行,只能用售後啦)。 

其他 
其他語言就是各有各的用途,只不過業務恰好用到該語言罷了,嚴格的說不能算是專門搞網絡開發的,比如Clojure,Io等。這裡暫時不討論了。

總結: 

如果讓我再次選擇學習路線(只有語言,不包括server,db方面)的話,我會 

了解一下php,不用深入 

了解一下Yii,一款php的MVC框架,不必深入 

基本學習Ruby 

基本學習Rails 

徹底學習Ruby 

徹底學習Rails 

了解Pyt ,Django,Lisp,Clojure,NodeJSo
了解Pyt------ -----------分割線------------------------------ 

這篇文章對rails和nodejs的適用場景描述的非常到位。 rails和nodejs是最值得關注的兩種後台技術。 
聲明:這篇文章絕不是一篇討論 NodeJS 和 Ruby on Rails 孰優孰略的檄文。它所描述的只是我們做決策過程中的一些思考、決策背後的原因。兩種框架都非常優秀,都出色的完成了它們的設計初衷,這也是為什麼我們部分的模組仍然運行在NodeJS上的原因。 

我是NodeJs的大粉絲,認為這是一項讓人非常興奮的技術,相信它會變的越來越流行。我對這項技術非常的欣賞——儘管我們最近把Targeter App從NodeJS遷移到了Ruby on Rails。 

我們當時使用NodeJS來發展它的原因很簡單。我有一個程式包,能很快的將我們的應用弄上線(我們花了54小時做這個事情),相比起Ruby,我更 常使用的是JavaScript。因為我們的技術架構牽涉到MongoDB,我的這些專長只有在NodeJS環境裡才會有意義。然而,隨著應用程式規模的增 長,我意識到,選擇NodeJS來實現這個應用程式是個錯誤的選擇。下面讓我來概述一下其中的原因。 

NodeJS很適合做那些有大量短生命期請求的應用。對於傳統的CRUD應用,它也很好,但不是非常的理想。在 PHP,Ruby,Python語言裡都有很成熟、優化的很好的框架來處理這個應用。 NodeJS裡的所有東西都非同步執行的理念對於CRUD應用來說沒有 任何效果。其它語言裡的流行的框架能提供非常好的快取技術,你所有的需求都能滿足,包括非同步執行。 

NodeJS是一種非常年輕的技術框架,它的周邊程式庫都不是很成熟。我說這些並沒有任何對那些程式碼捐贈者冒犯 的意思,他們很優秀,開發出來很多優秀的程式庫。然而,大部分的程式庫需要改進,而NodeJS這種快速成長的環境意味著每一版升級中都帶有大量的變化; 當你使用一種前沿技術時,你十分有必要盡快的緊跟最新的版本。這給創業型的企業帶來了很多的麻煩。 

另一個原因是關於測驗。 NodeJS裡的測試框架還不錯,但跟Django或RoR平台上的比較還是差一些。對於一個每天都有大量的程式碼提交、並且在一兩天內就要發布的應用程式來說,程式不能出問題是至關重要的,否則你為此辛苦的努力變得得不償失。沒有人願意花一天的時間改一些弱智的bug。 

最後一點,我們需要的是一種可以緩存一切的東西,並且要盡快的實現。儘管我們的應用程式正在成長,每秒鐘有上萬次的hits,但絕不會出現很大量的存取請求;這不是一個聊天程式!主程式最多時也就達到1000RPS,這樣的負載對於Ruby on Rails和Nginx來說算不了什麼。 

如果你現在還在讀這篇文章,那你已經看到了我所有要說的了,你也許非常堅持的想知道我們的應用什麼地方還在使用NodeJS。是這樣的,我們的應用 由兩個部分組成。一是介面,使用者看到的這部分,二是負責報表管理的部分,以及做日誌的功能。後者是NodeJS的一個最佳使用場景,存在有大量的短週期的請 求。這部分的動作需要盡快的執行完成,甚至在我們的資料推送還沒完成之前。這很重要,當請求執行還未結束,瀏覽器繼續等待回應結束,這會影響使用者使用 體驗。 NodeJS的非同步特性救了我們。資料要麼被存入資料庫,要麼被處理掉,當請求一旦執行完成,瀏覽器就可以開始做它重要的事情了。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

深入分析 Golang 與 Ruby 的異同 深入分析 Golang 與 Ruby 的異同 Jun 01, 2024 pm 08:46 PM

Go與Ruby的主要區別在於:Go是一種靜態類型編譯語言,支援輕量級並行和高效記憶體管理,適合編寫高並發應用程式;Ruby是一種動態類型解釋語言,支援真正的平行但記憶體管理需手動控制,適合編寫靈活的Web應用程式。

Ruby怎麼使用Mysql2連接操作MySQL Ruby怎麼使用Mysql2連接操作MySQL Apr 17, 2023 pm 10:07 PM

Ruby操作MySQL使用mysql2連接mysql並操作mysql。 geminstallmysql2連接mysql建立連線:require'mysql2'conn=Mysql2::Client.new({host:'192.168.200.73',username:'root',password:'P@ssword1!'})接受的連線選項包括: Mysql2::Clie

為什麼 Python、Ruby 等語言棄用了自增運算子? 為什麼 Python、Ruby 等語言棄用了自增運算子? May 11, 2023 pm 04:37 PM

許多人或許會注意到一個現象,那就是在一些現代程式語言(當然,並不是指「最近出現」的程式語言)中,自增和自減運算子被取消了。也就是說,在這些語言中不存在i++i​​n或這樣的表達,而是只存在i+=1j-=1這樣的表達方式了。本回答將從設計哲學這個角度探討這現象所產生的背景與原因。嚴格來說,說"i++正在消失"也許有失偏頗,因為主流程式語言中似乎只有Python、Rust和Swift不支援自增自減運算子。當我第一次接觸Python時,這也

如何使用MySQL和Ruby實作一個簡單的資料轉換功能 如何使用MySQL和Ruby實作一個簡單的資料轉換功能 Sep 21, 2023 am 08:07 AM

如何使用MySQL和Ruby實作一個簡單的資料轉換功能在實際的開發工作中,經常需要進行資料轉換,將一個資料格式轉換為另一個資料格式。本文將介紹如何使用MySQL和Ruby來實作一個簡單的資料轉換功能,並提供具體的程式碼範例。首先,我們需要安裝並設定MySQL和Ruby環境。確保已經安裝了MySQL資料庫,並可以透過​​命令列或其他工具連接到資料庫。另外,需要安裝

如何使用MySQL和Ruby實作一個簡單的非同步任務排程功能 如何使用MySQL和Ruby實作一個簡單的非同步任務排程功能 Sep 20, 2023 am 10:48 AM

如何使用MySQL和Ruby實作一個簡單的非同步任務排程功能先前的Web應用程式大多採用同步的方式來處理請求,也就是用戶發送請求後,伺服器會立即處理完請求並傳回結果。然而,隨著應用程式複雜度的增加,同步方式的處理效率逐漸變得低下,因此非同步任務調度成為了現代Web應用程式中常見的需求。本文將介紹如何使用MySQL和Ruby來實作一個簡單的非同步任務排程功能,包括任務的

如何使用MySQL和Ruby實作一個簡單的資料查詢分析功能 如何使用MySQL和Ruby實作一個簡單的資料查詢分析功能 Sep 21, 2023 pm 04:36 PM

如何使用MySQL和Ruby實作一個簡單的資料查詢分析功能在當今大數據時代,資料分析已經成為了許多領域中不可或缺的一部分。而在進行資料分析時,最常見的操作就是進行資料查詢。本文將介紹如何使用MySQL和Ruby程式語言來實作一個簡單的資料查詢分析功能,並且給出具體的程式碼範例。首先,我們需要安裝MySQL和Ruby的開發環境。 MySQL是一個開源的關聯式資料庫

如何使用MySQL和Ruby實作一個簡單的資料分析報表功能 如何使用MySQL和Ruby實作一個簡單的資料分析報表功能 Sep 20, 2023 pm 05:09 PM

如何使用MySQL和Ruby實作一個簡單的資料分析報表功能引言:在當今資料驅動的時代,資料分析對於企業的決策和發展起到了至關重要的作用。而資料分析報表作為資料分析的重要組成部分,對於資料進行整理、視覺化和解讀具有重要意義。本文將介紹如何使用MySQL和Ruby來實作一個簡單的資料分析報表功能,並提供對應的程式碼範例。一、資料庫設計與建表要實現資料分析報表功能

Redis在Ruby開發中的應用:如何快取複雜資料結構 Redis在Ruby開發中的應用:如何快取複雜資料結構 Jul 30, 2023 pm 08:58 PM

Redis在Ruby開發中的應用:如何快取複雜資料結構概述:Redis是一種高效能的鍵值儲存系統,被廣泛應用於快取資料和暫存。在Ruby開發中,我們可以使用Redis來快取複雜資料結構,進而提高系統的效能和反應速度。本文將介紹如何在Ruby中使用Redis快取複雜資料結構,並提供程式碼範例。背景:在開發過程中,我們經常遇到需要處理複雜資料結構的情況。例如,

See all articles