導航:首頁 > 編程語言 > rubyonrailspython

rubyonrailspython

發布時間:2022-05-17 07:54:46

java是不是現在最流行的

目前來講java仍是主流,但java存在很多缺陷,代碼冗餘,難學,開發周期長等,有很多新生語言都有可能在將來取代java,如python,ruby
on
rails,perls,lisp等

⑵ 為什麼我又從 Node.js 回到 Python

一.NodeJS的特點我們先來看看NodeJS官網上的介紹:Node.jsisaplatformbuiltonChrome』,scalablenetworkapplications.node.jsusesanevent-driven,non-blockingI/,perfectfordata-intensivereal-.其特點為:1.它是一個Javascript運行環境2.依賴於ChromeV8引擎進行代碼解釋3.事件驅動4.非阻塞I/O5.輕量、可伸縮,適於實時數據交互應用6.單進程,單線程二.NodeJS帶來的對系統瓶頸的解決方案它的出現確實能為我們解決現實當中系統瓶頸提供了新的思路和方案,下面我們看看它能解決什麼問題。1.並發連接舉個例子,想像一個場景,我們在銀行排隊業務,我們看看下面兩個模型。(1)系統線程模型:這種模型的問題顯而易見,服務端只有一個線程,並發請求(用戶)到達只能處理一個,其餘的要先等待,這就是阻塞,正在享受服務的請求阻塞後面的請求了。(2)多線程、線程池模型:這個模型已經比上一個有所進步,它調節服務端線程的數量來提高對並發請求的接收和響應,但並發量高的時候,請求仍然需要等待,它有個更嚴重的問題。到代碼層面上來講,我們看看客戶端請求與服務端通訊的過程:服務端與客戶端每建立一個連接,都要為這個連接分配一套配套的資源,主要體現為系統內存資源,以php為例,維護一個連接可能需要20M的內存。這就是為什麼一般並發量一大,就需要多開伺服器。那麼NodeJS是怎麼解決這個問題的呢?我們來看另外一個模型,想像一下我們在快餐店點餐吃飯的場景。(3)非同步、事件驅動模型我們同樣是要發起請求,等待伺服器端響應;但是與銀行例子不同的是,這次我們點完餐後拿到了一個號碼,拿到號碼,我們往往會在位置上等待,而在我們後面的請求會繼續得到處理,同樣是拿了一個號碼然後到一旁等待,接待員能一直進行處理。等到飯菜做號了,會喊號碼,我們拿到了自己的飯菜,進行後續的處理(吃飯)。這個喊號碼的動作在NodeJS中叫做回調(Callback),能在事件(燒菜,I/O)處理完成後繼續執行後面的邏輯(吃飯),這體現了NodeJS的顯著特點,非同步機制、事件驅動整個過程沒有阻塞新用戶的連接(點餐),也不需要維護已經點餐的用戶與廚師的連接。基於這樣的機制,理論上陸續有用戶請求連接,NodeJS都可以進行響應,因此NodeJS能支持比Java、PHP程序更高的並發量雖然維護事件隊列也需要成本,再由於NodeJS是單線程,事件隊列越長,得到響應的時間就越長,並發量上去還是會力不從心。總結一下NodeJS是怎麼解決並發連接這個問題的:更改連接到伺服器的方式,每個連接發射(emit)一個在NodeJS引擎進程中運行的事件(Event),放進事件隊列當中,而不是為每個連接生成一個新的OS線程(並為其分配一些配套內存)。2.I/O阻塞NodeJS解決的另外一個問題是I/O阻塞,看看這樣的業務場景:需要從多個數據源拉取數據,然後進行處理。(1)串列獲取數據,這是我們一般的解決方案,以PHP為例假如獲取profile和timeline操作各需要1S,那麼串列獲取就需要2S。(2)NodeJS非阻塞I/O,發射/監聽事件來控制執行過程NodeJS遇到I/O事件會創建一個線程去執行,然後主線程會繼續往下執行的,因此,拿profile的動作觸發一個I/O事件,馬上就會執行拿timeline的動作,兩個動作並行執行,假如各需要1S,那麼總的時間也就是1S。它們的I/O操作執行完成後,發射一個事件,profile和timeline,事件代理接收後繼續往下執行後面的邏輯,這就是NodeJS非阻塞I/O的特點。總結一下:Java、PHP也有法實現並行請求(子線程),但NodeJS通過回調函數(Callback)和非同步機制會做得很自然。三.NodeJS的優缺點優點:1.高並發(最重要的優點)2.適合I/O密集型應用缺點:1.不適合CPU密集型應用;CPU密集型應用給Node帶來的挑戰主要是:由於JavaScript單線程的原因,如果有長時間運行的計算(比如大循環),將會導致CPU時間片不能釋放,使得後續I/O無法發起;解決方案:分解大型運算任務為多個小任務,使得運算能夠適時釋放,不阻塞I/O調用的發起;2.只支持單核CPU,不能充分利用CPU3.可靠性低,一旦代碼某個環節崩潰,整個系統都崩潰原因:單進程,單線程解決方案:(1)Nnigx反向代理,負載均衡,開多個進程,綁定多個埠;(2)開多個進程監聽同一個埠,使用cluster模塊;4.開源組件庫質量參差不齊,更新快,向下不兼容5.Debug不方便,錯誤沒有stacktrace四.適合NodeJS的場景1.RESTfulAPI這是NodeJS最理想的應用場景,可以處理數萬條連接,本身沒有太多的邏輯,只需要請求API,組織數據進行返回即可。它本質上只是從某個資料庫中查找一些值並將它們組成一個響應。由於響應是少量文本,入站請求也是少量的文本,因此流量不高,一台機器甚至也可以處理最繁忙的公司的API需求。2.統一Web應用的UI層目前MVC的架構,在某種意義上來說,Web開發有兩個UI層,一個是在瀏覽器裡面我們最終看到的,另一個在server端,負責生成和拼接頁面。不討論這種架構是好是壞,但是有另外一種實踐,面向服務的架構,更好的做前後端的依賴分離。如果所有的關鍵業務邏輯都封裝成REST調用,就意味著在上層只需要考慮如何用這些REST介面構建具體的應用。那些後端程序員們根本不操心具體數據是如何從一個頁面傳遞到另一個頁面的,他們也不用管用戶數據更新是通過Ajax非同步獲取的還是通過刷新頁面。3.大量Ajax請求的應用例如個性化應用,每個用戶看到的頁面都不一樣,緩存失效,需要在頁面載入的時候發起Ajax請求,NodeJS能響應大量的並發請求。總而言之,NodeJS適合運用在高並發、I/O密集、少量業務邏輯的場景。Python的優缺點優點簡單————Python是一種代表簡單主義思想的語言。閱讀一個良好的Python程序就感覺像是在讀英語一樣,盡管這個英語的要求非常嚴格!Python的這種偽代碼本質是它最大的優點之一。它使你能夠專注於解決問題而不是去搞明白語言本身。易學————就如同你即將看到的一樣,Python極其容易上手。前面已經提到了,Python有極其簡單的語法。免費、開源————Python是FLOSS(自由/開放源碼軟體)之一。簡單地說,你可以自由地發布這個軟體的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用於新的自由軟體中。FLOSS是基於一個團體分享知識的概念。這是為什麼Python如此優秀的原因之一——它是由一群希望看到一個更加優秀的Python的人創造並經常改進著的。高層語言————當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內存一類的底層細節。可移植性————由於它的開源本質,Python已經被移植在許多平台上(經過改動使它能夠工作在不同平台上)。如果你小心地避免使用依賴於系統的特性,那麼你的所有Python程序無需修改就可以在下述任何平台上面運行。這些平台包括linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、PalmOS、QNX、VMS、Psion、AcomRISCOS、VxWorks、PlayStation、SharpZaurus、WindowsCE甚至還有PocketPC、Symbian以及Google基於linux開發的Android平台!解釋性————這一點需要一些解釋。一個用編譯性語言比如C或C++寫的程序可以從源文件(即C或C++語言)轉換到一個你的計算機使用的語言(二進制代碼,即0和1)。這個過程通過編譯器和不同的標記、選項完成。當你運行你的程序的時候,連接/轉載器軟體把你的程序從硬碟復制到內存中並且運行。而Python語言寫的程序不需要編譯成二進制代碼。你可以直接從源代碼運行程序。在計算機內部,Python解釋器把源代碼轉換成稱為位元組碼的中間形式,然後再把它翻譯成計算機使用的機器語言並運行。事實上,由於你不再需要擔心如何編譯程序,如何確保連接轉載正確的庫等等,所有這一切使得使用Python更加簡單。由於你只需要把你的Python程序拷貝到另外一台計算機上,它就可以工作了,這也使得你的Python程序更加易於移植。面向對象————Python既支持面向過程的編程也支持面向對象的編程。在「面向過程」的語言中,程序是由過程或僅僅是可重用代碼的函數構建起來的。在「面向對象」的語言中,程序是由數據和功能組合而成的對象構建起來的。與其他主要的語言如C++和Java相比,Python以一種非常強大又簡單的方式實現面向對象編程。可擴展性————如果你需要你的一段關鍵代碼運行得更快或者希望某些演算法不公開,你可以把你的部分程序用C或C++編寫,然後在你的Python程序中使用它們。可嵌入性————你可以把Python嵌入你的C/C++程序,從而向你的程序用戶提供腳本功能。豐富的庫————Python標准庫確實很龐大。它可以幫助你處理各種工作,包括正則表達式、文檔生成、單元測試、線程、資料庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統、GUI(圖形用戶界面)、Tk和其他與系統有關的操作。記住,只要安裝了Python,所有這些功能都是可用的。這被稱作Python的「功能齊全」理念。除了標准庫以外,還有許多其他高質量的庫,如wxPython、Twisted和Python圖像庫等等。概括————Python確實是一種十分精彩又強大的語言。它合理地結合了高性能與使得編寫程序簡單有趣的特色。規范的代碼————Python採用強制縮進的方式使得代碼具有極佳的可讀性。缺點強制縮進這也許不應該被稱為局限,但是它用縮進來區分語句關系的方式還是給很多初學者帶來了困惑。即便是很有經驗的Python程序員,也可能陷入陷阱當中。最常見的情況是tab和空格的混用會導致錯誤,而這是用肉眼無法分別的。單行語句和命令行輸出問題很多時候不能將程序連寫成一行,如importsys;foriinsys.path:printi。而perl和awk就無此限制,可以較為方便的在shell下完成簡單程序,不需要如Python一樣,必須將程序寫入一個.py文件。(對很多用戶而言這也不算是限制)NO.1運行速度,有速度要求的話,用C++改寫關鍵部分吧。NO.2國內市場較小(國內以python來做主要開發的,目前只有一些web2.0公司)。但時間推移,目前很多國內軟體公司,尤其是游戲公司,也開始規模使用他。No.3中文資料匱乏(好的python中文資料屈指可數)。托社區的福,有幾本優秀的教材已經被翻譯了,但入門級教材多,高級內容還是只能看英語版。NO.4構架選擇太多(沒有像C#這樣的官方.net構架,也沒有像ruby由於歷史較短,構架開發的相對集中。RubyonRails構架開發中小型web程序天下無敵)。不過這也從另一個側面說明,python比較優秀,吸引的人才多,項目也多。

⑶ [新手]apache+mod_python速度比php快嗎

python的運行速度總得來講是要比PHP慢的。但由於PYTHON的良好設計,使得你可以輕松寫出速度還算可以的WEB程序,而用PHP則需要費大量腦筋。作為整個開發框架而言,PYTHON的DJANGO比RUBY的Ruby
on
Rails和PHP的Symfony運行速度要快----但是這個測評文章,我始終沒見到過----那是幾個星期以前的事了,剛才又去查了一下,那篇文章又能看到了:http://wiki.rubyonrails.com/rails/pages/Framework+Performance國內用PYTHON作WEB開發的例子好像還很少。

⑷ 如何查看ios app 模擬器

iOS應用開發移動應用測試框架
1
KIF:專為iOS設計的移動應用測試框架
全稱Keep
It
Functional,來自Square,是一款專為iOS設計的移動應用測試框架。由於KIF是使用Objective-C語言編寫的,因此,對於iOS開發者而言,用起來要更得心應手,可以稱得上是一款非常值得收藏的iOS測試利器。
2
Gitorious:截屏+Python腳本,測試細致入微
基於Git版本控制系統的Web項目託管平台,使用Ruby
on
Rails開發。而其移動測試框架(MTF)也是深受開發者歡迎,Gitorious移動測試框架是一款充分利用Sikuli自動化工具的iOS測試框架。
3
Frank:模擬用戶黑盒測試
一款深受開發者喜愛的iOS應用測試框架,該框架可以模擬用戶操作對應用程序進行黑盒測試,並使用Cucumber作為自然語言來編寫測試用例。此外,Frank還會對應用測試操作進行記錄,以幫助開發者進行測試回顧。
4
FlipTest:再也不用為決定不同版本的好壞發愁
專為iOS設計的移動應用A/B測試框架,通過它,開發者可以無需重新向App
Store提交應用或重構代碼,只需添加一行代碼,即可直接在iOS應用上進行A/B測試。
5
Kiwi:專業iOS開發的行為驅動開發(BDD)庫
介面簡單而高效,深受開發者的歡迎,也因此成為了許多開發新手的首選測試平台。和大多數iOS測試框架一樣,Kiwi使用Objective-C語言編寫,因此對於iOS開發者而言,絕對稱得上是最佳測試拍檔。
6
Cedar:BDD風格多環境測試框架
和Kiwi一樣,Cedar也是一款BDD風格的Objective-C測試框架。它不僅適用於iOS和OS
X代碼庫,而且在其他環境下也可以使用。

⑸ Ruby,Perl,Python,Lua等語言相互之間都有哪些異同點

本文從RoR對Ruby的影響、Ruby的優勢等多個角度分析了Ruby比Python成功的原因。伴隨著RoR的風行,Ruby語言受到越來越多的開發者的關注,同為腳本語言,Python的地位卻略顯尷尬,什麼樣的原因,造成了這樣的局面?筆者認為有以下幾個方面:一、RoR的推波助瀾筆者認為,Ruby的成功,很大一部分是由於RoR的帶動。幾年前,如果你沒聽過RoR倒是情有可原,但如果今天,RoR對你來說,還是一個陌生詞彙的話,那你就有點危險了。:)什麼是RoR呢?全稱,RubyonRails,簡稱,RoR或者Rails。它是個全棧的(full-stack)web應用框架,它為開發者提供了構建一個web應用所需的完整基礎結構,並且嚴格按照MVC(模型-視圖-控制器)架構進行開發。RoR致力於提高開發者的開發效率,希望通過盡量少的代碼,完成盡可能多的功能。基於這樣的考慮,RoR有兩大設計原則,一是,不要重復自己(Don''tRepeatYourself);二是,慣例優於配置(ConventionOverConfiguration)。使用RoR,你甚至可以通過簡單的幾條命令行、幾行代碼,就完成一個功能強大的web應用程序,這極大地提高了開發者的開發效率。2004年7月,RoR一經發布,在短期內,便受到很多開發者的追捧。時至今日,RoR已經被全世界的開發者們所關注,它帶給開發者的效率提升,是前所未有的;它帶給業界關於軟體開發的思考,也是意義深遠的。在RoR如此風行的大背景下,RubyonRails,這個需要使用Ruby進行開發的web框架,也自然地帶動了Ruby語言的發展。在下面的「Ruby語言受關注程度趨勢圖」上,可以清晰地看出,Ruby語言在RoR發布也就是2004年7月後,進入了高速發展期。Ruby因為有了RoR這樣的「殺手級」應用,變得春風得意,那麼Python呢?在《淺談Python語言》一文中,我們提到了Python具有豐富的API庫,在web開發方面,也有Django、Turbogears這樣的一些框架,就運行速度而言,Python比Ruby快;就社區而言,Python也比Ruby成熟,可是為什麼Python沒有產生一個像RoR這樣的「殺手級」應用呢?Python語言的創始人Guido在接受InfoQ采訪時,是這樣解釋的:「我不喜歡KillerApplication,因為那會讓多數人或者社區將精力集中於一個地方。Python是一個應用廣泛的語言,基於Python已經產生了很多好用的Web框架,比如Django等。但是Python不KillerApplication,至少目前是這樣,而且我相信隨著Python社區的發展,會有很多KillerApplications自然出現。我喜歡多樣化的應用。」通過這個觀點,我們可以看出Python在其發展道路上,追求的是一種均衡,一種「大而全」。「會有很多KillerApplications自然出現」,這點,我想我們需要拭目以待。單就「均衡」而言,筆者認為這很危險,作為一門腳本語言,試圖做Java之類傳統語言做的事情,不太可取。以Java為例,在web應用上,有太多的框架可供選擇,不錯,「在不同的場景用不同的框架」,這想法很好。可是,在實際應用中,有多少開發者可以根據項目特點,正確、合理地選擇框架?與其到最後,用戶還不知道該如何選擇,還不如一開始就替用戶做出一個選擇。作為Python的使用者,我更願看到有個Python的「殺手級」應用出現,進而帶動Python更快速地發展。你可以說RoR成就了Ruby,可是Rails為什麼偏偏選擇了Ruby?!Ruby優勢何在?二、Ruby的優勢1.比Perl更強大,比Python更面向對象「比Perl更強大,比Python更面向對象」,這是Ruby創始人Matz設計Ruby的初衷。Python既支持面向過程的編程也支持面向對象的編程,而Ruby則是完全面向對象。在Ruby中,任何東西都是對象,包括Python中的基本數據類型;每個過程或函數都是方法。例如,取-3的絕對值,在Python中,是這樣的:abs(-3)。而在Ruby中,則是這樣的:-3.abs。這種OO的方式,顯得更加直觀。2.強大的語法功能單就語法的簡單性而言,Ruby不及Python。但解決一些較復雜的問題,Ruby強大的語法功能,有助於降低問題的復雜度。例如:Ruby以「塊」的方式來實現列表內的條件、循環語句,比Python的更靈活、更具通用性。Ruby具有類似Lisp的徹底的函數方式的條件、循環語句等。Ruby的迭代器功能可以將流程式控制制結構抽象化。3.強大的字元串處理、正則表達式功能Matz認為:Ruby>(Smalltalk+Perl)/2。Ruby類庫是對Perl語言功能的面向對象方式的重組,因為借鑒了很多Perl的東西,使得字元串處理、正則表達式這塊,Ruby同樣強大。4.不會僵住的「膠水語言」同樣是「膠水語言」,Ruby比Python更靈活。使用過一段時間的Python,你會發現,Python比較依賴第三方的東西。相比較,Ruby則更依賴自身。例如,Ruby可以使用(UNIX的)絕大部分的系統調用,單獨使用Ruby也可以進行系統編程等。有優勢,Ruby就一定可以成功了?Python同樣也有很多優勢!對,還得看當時所處的環境。三、時勢造英雄這點還得回到RoR的崛起。Ruby,1995年12月正式發布,2000年進入美國;2004年7月,RoR正式發布。RoR的出現時間,值得玩味。在下面的「Java語言受關注程度趨勢圖」上,可以看到,2004年7月前後,Java處於一個相對「衰退期」。提到Java,大家應該都會想到J2EE。J2EE應用程序的廣泛實現是從1999、2000年開始的,它的出現帶來了諸如事務管理之類的核心中間層概念的標准化,但是因其開發效率、學習難度和實際性能的問題,在實踐中沒有獲得完全的成功。作為J2EE核心技術的EJB(2.x),更是因其高昂的學習代價、極低的開發效率和極高的資源消耗,備受指責。在這樣一個大背景下,2003年,Spring框架誕生了。Spring的設計思想在於「使J2EE開發更加簡單」。這個設計思想,在包括Java領域在內的眾多軟體開發領域引起了廣泛關注。軟體開發者們開始思考,如何讓開發向著一個更簡單的方向發展。RoR在這一時期出現,無疑是順應了這樣一個潮流。可以這么說,是歷史選擇了RoR,當然也選擇了Ruby。遇到合適的機遇,還不夠,俗話說得好:「眾人拾柴火焰高」。四、眾星捧月Ruby的出現,受到了兩大主流平台Java和.NET的極力追捧。2006年9月,SUN僱傭了JRuby的主要開發者CharlesNutter和ThomasEnebo;一年不到,2007年6月14號,JRuby1.0正式發布。SUN在其JavaIDENetBeans6.0M10中,更是集成了對Ruby/JRuby的支持。反觀Python的Java實現——Jython,則沒有這么幸運,發展至今,它並沒有得到SUN的支持。而Microsoft,也在2007年7月,推出了Ruby的.NET實現——IronRuby的預覽版。相信SUN和Microsoft對Ruby的競相推崇,必然推動Ruby的進一步發展。基於以上幾點,筆者認為Ruby的成功不是偶然,並且相信這樣的成功還會持續下去。對於Python的未來,我們也將拭目以待。

⑹ 游戲開發中常用哪種腳本語言

隨著《魔獸世界》(以下簡稱wow)在世界范圍內流行,腳本漸漸被人們所熟知。由於wow強大的自定義界面系統,Lua這一腳本語言一舉成名。

其實早在Lua腳本語言被大眾所熟知以前,游戲業內人士就已經開始使用腳本來開發游戲了。我們熟悉的很多國內的網路游戲大都運用了腳本開發,比如網游的長青樹「夢幻西遊和《大話西遊2就大量應用了腳本技術。特別是《大話西遊2》,其實現基於Lua腳本游戲開發的時間要遠早於《魔獸世界》。在腳本技術上,國內與國外其實是站在同一起跑線上的,並不存在什麼差距,這也為國內游戲產業趕超國外游戲產業提供了強有力的技術保證。

在單機游戲時代,腳本這個詞幾乎很少出現,那麼,為什麼在網路游戲時代它卻成了業界的寵兒呢?原因是多方面的。

單機游戲時代,無論游戲主機還是PC機,它們的性能都非常低下,從而需要具有較高執行效率的編譯型語言對機器的性能進行「壓榨」。隨著科技發展和硬體性能的不斷提升,腳本逐漸被開發者所接受並利用,但這並不是腳本流行起來的決定性因素,真正的原因還在於游戲市場有這方面的需求。

網路游戲時代的市場競爭激烈、變化莫測,如果延用單機時代一年半載才出一個新版本的開發方式,必然會被游戲行業激烈的市場競爭所淘汰。正是這種游戲市場需求旺盛和開發工具效率底下之間的矛盾,促使腳本語言迅速地發展起來。腳本的興起使得傳統編譯型語言(asngC/C )的性能優勢在硬體功效大幅攀升的今天已經不復存在。

除了市場和硬體這兩個因素之外,還有一點我們不能忽略。那就是用C/C 進行游戲開發的高成本和高項目風險。隨著java/.net逐漸流行,學習C/C 編程語言的人越來越少,而網路游戲市場的需求卻越來越龐大,在程序人才大量匱乏的情況下,造成了c,C 人才的高成本。即便是有能力僱傭大量C/C 程序員的公司,在開發游戲的過程中,也不能無視C/C 的高級特性和高度靈活性帶來的高項目風險。C/C 是易學難精的編程語言,在開發大型項目的時候由於程序員的水平參差不齊,所以極易造成溝通不暢。不僅如此,c,C 濫用的高級特性也容易引入大量bug。正是由於這些原因,游戲公司開始在游戲中使用腳本,希望通過腳本來解決這些高成本、高風險的問題。

二.腳本的現狀

腳本不僅解決了c/C 無法解決的開發效率難題,還降低了開發的成本和風險。因此腳本技術在游戲業內蓬勃發展起來,並且已經成為游戲業中不可或缺的一環。縱觀當前腳本技術現狀,形勢一片大好,不僅語言百家爭鳴,而且書籍種類也越來越多;不僅在游戲業界開花結果,在web等其它應用領域也大放異彩。

首先,我們來看看目前比較流行的腳本:Python、Lua、ruby和Erlang。Python和Lua是網路游戲開發的中堅力量;ruby憑借 rubyonrails的web開發框架的強勁力量,其在游戲業的發展前途亦不可小視;Erlang在高並發性上的原生優勢吸引了無數追求高性能網游伺服器的開發人員的目光。

其次,我們來看看書籍方面。大家都知道,文字對語言的普及起到了催化劑的作用,甚至可以看作是語言的有機組成部分。Python經過基金會的多年經營而得到NASA、Google重用的原因,就是由於其相關書籍種類比較豐富;Ruby隨著RoR的流行,這兩年行情看好,書籍也出版得越來越多了;Erlang是典型的少眾語言,但隨著多核時代的來臨和高並發網路應用的需求,Erlang有著光明的發展前景,現在<<ProgrammingErlang>>等書也已經在策劃出版了;反觀Lua,雖然目前越來越流行,但由於它晦澀的介面設計和缺乏大型應用的支持,使得相關書籍寥寥無幾。

最後,我們把焦點重新聚集到游戲開發行業中,其實不難發現,除了前文提到的《魔獸世界》和網易經典「西遊系列」使用了腳本外,現在大多數比較流行的程序也都使用了腳本,如騰訊的QQgame))和搜狐的《天龍八部》等。不僅如此,現今的游戲引擎也都提供了腳本介面,無論是商業的unreal引擎還是開源的 OGRE,無一例外。

三.腳本的優勢

腳本之所以能夠在游戲業中找到自己的一席之地,是因為網路游戲市場需要一個快速開發方案來避免C/C 開發帶來的項目高成本和高風險。那麼,腳本相對於C/C 這類編譯型語言到底有什麼優勢呢?

I易於學習,代碼可維護性強

腳本的語法通常都非常簡單,也沒有太多高階的特性,學習的門檻較C/C 低得多,比如Python可能只需要花一個下午即可學會。這使得游戲開發公司可以招聘完全沒有腳本、編程經驗的新手,通過低成本的培訓,他們便能迅速地走上工作崗位。除易於學習外,腳本代碼也有較強的可維護陛(盡管寫出沒有人看得懂的Lua代碼也非難事)。因為腳本沒有很多高階特性(如c 里的模板元編程就是高階特性),所以腳本程序員就有更多的精力去架構、模式、重用和測試等工作,從而提高了代碼的可維護性。相應地,正因為沒有那麼多讓人困惑的高階特性,也使得腳本代碼「簡潔」不少。

2.降低開發成本

如上所言,由於腳本易於學習,游戲開發公司可以大量起用新手,這正是降低成本的有效手段。那麼如何來確保新手所寫代碼的質量呢?眾所周知,新手無論用什麼語言寫程序肯定會出現bug,但用C/C 和Python做比較,可以看出,一個新手用C/c 編寫出的程序所出現的bug肯定會比用Python編寫出現的bug要多。由於c程序需要編譯,而腳本程序(大部分)都可以直接解釋執行,所以在排除 bug方面腳本也佔有一定的優勢,這也使腳本在降低成本的同時能夠更好地保證代碼質量。

3.形成人才壁壘

軟體開發行業是一個頗為動盪的行業,無數的程序員都在跳槽和謀劃跳槽的狀態中生活,使用腳本開發形成人才壁壘是游戲業減少人才流動的有效手段。因為現在腳本除了在游戲業中非常流行外,並沒有在其它行業形成廣泛應用(雖然在web開發方面也有燎原之勢,但終究不如在游戲業中的地位高)。這就使得游戲程序員很少會考慮非游戲行業的職位,但其它行業的程序員卻可能會因為腳本的易學習性而轉投游戲業。腳本除了能有效形成行業間的人才壁壘外,也能有效地形成企業間的人才壁壘。由於現有的腳本種類繁多,不同公司往往有不同的選擇,甚至有些公司使用自己開發的腳本語言,所以程序員從公司A跳槽到公司B可能要學習使用另一種腳本,這就提高了跳槽的成本,從而減少了人才的流動。

四.腳本的發展趨勢

依照目前趨勢來看,腳本語言一定會更加的普及,而且會逐漸滲透到其它行業中。隨著網路游戲從業人員數量的增長,腳本程序員也一直增加,而且Web2、0熱潮引起的網路需求,也促成了一批批新腳本程序員的誕生。網路游戲市場就像一個正在滾動的雪球,推動著腳本的普及。

隨著腳本在游戲業中越來越流行,市場對生產效率的需要也會相應提高。腳本雖然在一定程度上緩解了生產效率與生產工具之間的矛盾,但仍然不夠完善。由於市場競爭日趨激烈,而網路游戲在很多功能上的實現又都相差無幾,如網路、資料庫、圖形甚至部分邏輯,這必然會引起網路游戲生產的組裝化一一大量中間件相互組合形成新的網路游戲。從目前來看,Bigwofld、PhysX和Unreal等都是比較流行的網路游戲中間件。腳本語言則是粘合各個中間件的良好膠水語言,所以隨著網路游戲的生產組裝化,腳本將有更大的發展空間。

那麼,當腳本發展到如日中天的時候,可能取代C/C 這些編譯型語言嗎?筆者認為不會。腳本語言和編譯型語言在生產效率和執行效率上各擅勝場,網路游戲既需要能快速應變的腳本,也需要能快速執行以提供更絢麗游戲效果的編譯型語言。未來,它們之間一定會保持長久的和諧互補關系,相輔相成。

五.結語

綜上所述,網路游戲時代是上帝賜予腳本語言發展的絕好時機,腳本語言很快將迎來光芒四射的時代。腳本語言擁有編譯型語言無可比擬的生產效率優勢,所以它們將互補互助並肩奮戰在游戲的最前線。

⑺ 快速搭建社交網路,python或者ruby,求教程,新手有點編程基礎

快速只有一個辦法,上網找個開源的軟體社交軟體,下載後弄一弄。改一改。php的可能多些。其次是java的。python的可能少。

即使是python或者是ruby的高手,如果不熟悉業務也沒有辦法快速給你弄出來。工作量大啊。

閱讀全文

與rubyonrailspython相關的資料

熱點內容
短字元串壓縮 瀏覽:861
u盤插入後顯示加密格式化 瀏覽:942
我的世界怎麼用命令方塊獲得超級武器 瀏覽:382
狗語翻譯器app鏈接怎麼下 瀏覽:905
選擇排序演算法的流程圖 瀏覽:881
如何對文件夾開啟共享 瀏覽:527
常用的磁碟調度演算法 瀏覽:662
怎麼用返利app返利 瀏覽:127
java代碼快速 瀏覽:243
單片機左移右移後是補1還是0 瀏覽:599
湛江一號命令 瀏覽:333
導出命令行 瀏覽:274
C和php交互 瀏覽:600
蘋果手機里的通訊錄如何導入安卓手機 瀏覽:170
怎麼在京東app裡面看自己會員等級 瀏覽:43
emerson伺服器怎麼短接啟動 瀏覽:559
工控編程人員工資 瀏覽:397
速成義大利語pdf 瀏覽:250
連續加減乘除法的演算法 瀏覽:654
用mfc編程實現dda演算法 瀏覽:43