⑴ 初學者學php看哪本書
如果你已經學過其他語言的話,建議你直接看<<PHP5 與 MySQL5 Web開發技術詳解》,因為php很簡單的,如果你有基本的開發基礎的話,就直接學PHP5 與 MySQL5 Web開發技術詳解,如果沒有的話,你就先學學《PHP與MySQL基礎教程(第2版)》 ,因為要先打好基礎的,基礎打好了,再在項目中去學習開發的經驗。
⑵ 聽說Ruby 性能不好,為什麼還有這么多人推薦 Ruby 呢
盡管如此,有時候語言本身的差異未必能在一個具體程序里體現出來,比如一個XML流解析程序,用各種腳本語言來做,不應該有太多性能差異,原因是各種腳本語言底層的XML解析庫,實際都是C寫的實現,最終的parser很可能是libxml;這樣一來,語言本身更多是一個wrapper,實際跑的核心代碼是C code;所以性能的問題,失去了具體場景單討論語言本身未必有多大意義,還得看項目本身對語言的使用情況。 ruby開發的程序員成本真的比其他語言比如python,php更低嗎?一個熟練ruby程序員和一個熟練python程序員再一個熟練php程序員開發同一組web功能,各自選擇熟練的框架,ruby程序員所使用的man hour一定最低嗎?我表示懷疑,在熟練的情況下,遵照MVC的原則進行開發,PHP和python本身的開發效率不認為一定低於RoR;原因是現代的開發框架,設計理念上都是你中有我,我中有你;比如就ORM來說,PHP, Python都有成熟的實現,routing,templating這種必須的piece,所有的框架都設計得足夠好,很難說任何一個超越其餘的一個層次;花多少man hour來實現一個項目,團隊熟練程度決定大部分,語言本身和框架本身的邊際效用,不一定有想像的那麼大。 另外,我覺得ruby不是好學的語言,至少不比python更好學,比php我覺得要難學得多;概念多,選擇多,對學習者的干擾也多;這個因素應該已經被一些公司和團隊意識到了,國內把ruby作為主項目語言的,或者樂意做這種切換的,也只是局限在一個很小的圈子裡,真正要考量的時候,PHP或者java是更實際的選擇; 個人覺得有兩個方面ruby很特別開放的Object系統,所有的對象(包括「類」對象)都可以在runtime修改擴充,這讓在ruby下做一些事成為自然的可能,而在其他語言則不得不做各種work around;ruby的OO可元編程能力特別強大; ruby的括弧是可選的,雖然這看起來只像個語法糖,但要寫DSL的時候,ruby可能是最最自然的語言 這樣極致的可讀可懂性,別的語言很難做到不露痕跡。事實上Rake就是一組DSL,RoR的ActiveRecord是一個DSL實現;Sinatra的API也是一組DSL;很多templating language也被實現成DSL;
⑶ 懂編程的來
各種語言的介紹(第二版)
在介紹編程語言之前,先說說開放源代碼的必要性。現在,在軟體生產領域存在巨大的智利浪費,大家把大量的精力用在編寫別人已經實現的 程序代碼上。看看,文本編輯器有多少,看看ftp程序有多少,看看字處理程序有多少,這些程序雖然有差別,但主要的功能都是一樣的。要實 現個性化的功能,在已有的軟體基礎上修改會節省多少時間呀!而每個程序各編一套,又浪費多少時間?如果,沒有這些重復的工作量,世界 上的程序員至少可以節省80%的工作量。同時,開放源代碼也方便了大家的交流,閱讀源代碼應該是最直接最有效的學習途徑。尤其是比較專業 的領域。
要開放源代碼,下面幾點比較重要: ×、語言要流行。 ×、語言的函數和類庫統一。 ×、語言的語法和編譯器要統一。 ×、編譯器是否開 放源代碼。 ×、API是否開放源代碼。 ×、語言的可重用性、功能、友好性。
語言統一的必要性:如果大家都用一種編程語言,都用同樣的函數,同樣的類庫,那麼,大家的共同語言就會很多。大家只要學會一種語言, 一套函數,一套類庫,就可以相互讀懂源代碼,這樣,學習量是最少的。學習新的API浪費程序員大量的時間和精力,尤其是當這個API有大量 和其他API重復的功能的時候。
要增加代碼的可重用性,要從下面幾點著手: ×、代碼的可讀性。如格式、是否接近英語語法和單詞。 ×、代碼的表達能力,也就是簡單性 ,能用最少的語句和單詞實現同樣的功能。 ×、代碼的結構性,如函數、模塊、類。
語言功能的強大從下面幾點來說: ×、是否擁有大量的庫支持。這是最重要的,要求編寫任何功能的程序都有強大的庫支持。 ×、語法功能 是否強大,比如是否有出錯處理。是否有指針。
語言的友好性: ×、語言包的大小,語言包越小,學習越簡單。 ×、語言是否有友好的編輯調試環境。 ×、語言的可視化和集成編程環境。
c語言:
從性能上說,除了匯編語言,c語言是最接近機器的語言。各種操作系統的編程介面的默認語言都是c語言。因此,用c語言編程,可以最大限 度發揮操作系統的能力。同時,由於絕大部分的商品軟體都是c實現的,都有c編程介面,可以說,沒有c不能實現的功能。
在linux環境中,c具有很好的開放源代碼的條件,它有統一的編譯器gcc,有強大但比較難掌握的編程環境emacs,有統一的API:posix和 linux介面。並且編譯器和API是開放源代碼的。
在linux上編寫圖形界面程序,有兩個選擇KDE和gnome,KDE更成熟,gnome支持多語言和面向對象的程序間的協同。
在windows環境中,現在統一到了vc上,但有一個缺點,windows的升級換代太快,從dos環境到windows31
,從windows31到windows95,到windows2000,到.net。API常常變換,這樣,在windows上的程序代碼的壽命會比較短。並且vc的編譯器和API 太復雜,難於掌握。
同時,由於c具有現代語言的大量特徵,現在常常代替pasical作為教學的編程語言。
實際上,如果不深入學習,c也是一種很簡單的語言。不學basic,直接學c完全沒有問題。
和其他語言相比,c有多種編譯器,多種操作系統API,多種語法和函數。學習的難度大,統一性差。
和java相比,c的語法不夠豐富、現代。
java:
相對c,java作為現代語言,具有非常豐富的語法特徵,如模塊和類,不像c隨操作系統和編譯器的不同有極大差異,java是一個公司的產品 ,具有唯一的API,因此,java程序員沒有語言隔閡。
相對跨平台的語言來說,java具有最好的圖形界面編程API。
java所有的API都是類庫,相對c的函數來說,是非常大的進步。java具有現代語言幾乎所有的特徵。
perl:
perl的最大特點是有強大的字元串模式匹配,是最好的文本文件的讀取和生成語言。
perl具有很大的自由性,象英語一樣有很大的隨意性,
perl有一個強大的資料庫介面和其他各種介面。
perl有最大量的程序庫。
perl不適合編寫大程序。
perl有一個著名的缺點是難懂,也有一個著名的優點是簡練。
php:
我感到php是個怪胎,本來perl加嵌入html的功能就完全能實現php的功能,還要另創一種語言,加重了大家的學習負擔。
php可以嵌入html,更容易編寫伺服器端程序。
php天然和web伺服器以及mysql資料庫相結合。
php可以動態生成圖像。
python:
首先,python是和basic一樣面向初學者的語言,和英語一樣容易懂。
python具有和java一樣的最豐富的語法。
python有和perl類似的簡單性,但沒有模式匹配。
python適合編寫大程序。
python有和lisp相似的地方,它有將字元串作為程序執行的eval函數,可以對一個對象的所有數據進行保存,可以把函數作為參數傳給另一 個函數。
python具有非常好的擴充性,python程序可以和c程序,以及java程序很好地結合。
tcl:
tcl具有最簡單的語法,最好的和其他程序交互的能力,有編寫圖形界面程序的tk。
javascript:
編寫動態網頁的最佳工具。
lisp:
lisp的語法非常簡單,只有簡單的函數和參數的語句結構。
lisp數據和程序的界限模糊。
lisp可以深度嵌套。
prolog:
prolog是一種專門的語言。專門用來處理知識。
我感覺prolog是一種資料庫的處理工具。
也是根據一些知識衍生出更多知識的推理工具。
basic:
現在最著名的basic是vb,
basic是簡單的初級語言。
vb是快速的界面生成語言,是快速的資料庫程序開發語言。
vba是vb的應用版,嵌入在offic中。編寫offic上的程序很好用。
vbscript是vb的腳本語言,可以產生伺服器端和客戶端的動態網頁。
basic的醜陋在於參數還是默認傳地址。太危險。
delphi:
和vb一樣是快速開發環境,但性能更好,功能更強大。
.net:
支持多種語言的統一的API類庫,
可以編寫webform程序,即所有的邏輯都在伺服器端,傳到客戶端的是標準的html3.0,可以被各種瀏覽器支持。各程序組件間通過soap交換 消息。
2002-04-12新增內容:
除了匯編語言外,c是最接近系統底層的語言,因此它是大部分程序的編程語言。c的缺點是沒有統一的函數庫,標准不統一,因此,同樣是c程 序員,相互看不懂代碼是很平常的事。
ada的出現就是為了解決統一標準的問題。有一個國際組織專門進行嚴格ada語言的認證來保證ada的統一。因此,ada編譯器有很多種,但ada語 言程序用任何ada編譯器編譯都能通過。同時,ada的執行程序的效率和c比較接近。有人說比c要快,我想不可能,除非c用的庫有問題。ada比c 排錯能力更強,但c也有類似的功能。ada還有一個缺點,就是語言羅索,象cobol一樣非常難看。
java是對c的大大的改進。有統一的標准,豐富的庫,完全的面向對象。也繼承了c的一些特點,無所不包的全功能,深入系統底層的編程的靈 活性。但因為java學習了c的深入系統底層的特點,它的語言就嚴格、呆板、羅索。另外,java要跨平台,它的速度就非常令人不滿意,只能局 限在高級應用方面。在速度上,可以選擇微軟的.net和蘋果的coco(可能拼寫有錯誤)。他們也同樣是底層的面向對象語言。
作為高級的應用程序,如果沒有保密要求,腳本語言是最合適的。腳本語言因為不用編譯,因此開發速度會比編譯語言快很多。
basic和perl都是古老的腳本語言。basic被微軟發揚光大了,但它的缺點是沒有完整的面向對象特性,因此編寫大型程序很困難。另外,微軟 的產品肯定是「腫件」。perl被特別設計來進行文本的處理,文本處理能力非常強,但不適合編寫大程序,語言風格也比較令人費解。
python定位於入門的編程語言,是basic的代替品,它具有和basic同樣的簡單性,並且編程語句更優雅。python有比較完整的面向對象特性, 可以用來編寫大程序,因此有些大型的實用程序是python完成的,從加快開發速度的角度,可以代替c和java。python的另一個巨大的應用領域 是用來操作定製其他程序,這個能力basic也有,從這個角度說,python就是unix世界的basic。但python更進一步,和c的溝通能力非常好,任 何為c編寫的介面能夠很容易轉化為python的介面。和java的介面有專門的python的java版,就是jython,jython可以和java本身一樣使用各種 java資源。
ruby首先是smalltalk的替代品。有徹底的面向對象特性。另外,也努力作為perl、php、basic、python的替代品。
rebol是lisp的替代品,同時作為腳本語言的一員,有自己的獨特之處,他的網路編程和圖形用戶界面編程是最強大的。
語言解析語言yacc、 html、xml、xlt、xul等也可以算作語言。
[edit]
各種語言的選擇
如果編寫對性能要求苛刻,或和操作系統結合緊密的程序,必然選擇c。
如果編寫到處可用的程序,選java。
如果編寫大程序,可能的化盡量用python,不行了再用java和c。因為python帶來了生產力。
編寫文本的處理程序用perl。
編寫知識的處理程序用prolog。
編寫最靈活,最模糊的程序用lisp。
編寫office程序用vba。
編寫伺服器端程序,php、perl、python、asp都是選擇。
編寫資料庫程序用vb或delphi。
[edit]
各種語言的選擇
如果要追求性能和程序的能力,要完全發揮操作系統的能力,使用c語言是合適的。在windows環境下用vc,在linux環境下用gcc。
如果不是追求和操作系統完美結合,而只是性能,又要追求跨平台性,那麼仍然選擇c,但可以選擇跨平台的庫,如qt、gtk、fox、wxwindows 。如果要編寫游戲也有跨平台選擇:SDL。
如果不滿意c領域標準的不統一,不滿意c的容易出錯,不滿意c的面向對象特徵不徹底。如果不在乎跨平台,windows平台可以選擇c#,mac平台 可以選擇coco。如果需要跨平台,可以選擇java。
如果需要跨平台,又要廣泛的支持的話,選擇java。
如果不在乎商業機密,應用目標也不是太苛刻的話,編寫大型跨平台程序還有一個選擇就是python或ruby。腳本語言,但是具有全面的庫的支 持,有和c語言的方便的交互能力。他們和java相比,編程效率更高。同時因為沒有編譯,程序更方便修改。因為他們的庫都是c實現的,也比 java有更高性能。同時,他們都是開源的,都是對商業應用友好的,也是簡單的、方便定製的。也是不滿意java的不可控制的越來越龐大的庫 的又一個選擇。
在linux下,最方便的工具語言是perl,它有強大的社區和代碼庫的支持。
如果只作為簡單應用的工具語言,python和ruby是更好的選擇,他們的跨平台移植性好,應用也比較廣泛。其中python更適合入門和交流,長 期使用也不錯。ruby是對python不滿意的另一個選擇,它提供了很多額外的功能。
如果要選擇一個程序的嵌入語言,原來有lisp、basic和java,現在還可以選擇python和ruby。
如果在要求動態解釋執行語言,而又不想學其他語言的話,c程序員的選擇是pike,java程序員的選擇是beanshell。
在java平台,又想用腳本語言的話,可以用jython。
最正統的基於文檔的語言或叫動態頁面語言是javascript。
最專門的伺服器端語言是php,當然也有很多其他選擇。
xml語言以xul為最著名,dtml也算一個,你自己也可以用xml作為自己特殊用途的語言。比如jedit就用xml作為一種模式定製語言。xml語言是 一種比較先進的趨勢,比現有的語言在特殊領域更高效。
要找容易實現的語言,lisp和tcl是選擇。
lisp的數據和程序融為一體的能力和自由是其他語言都沒有的。現在出現了一個lisp的現代化的變種:rebol。
如果有基於事實的編程的需要的話,prolog和clips是必然。
[edit]
我為什麼選擇了python
首先聲明,我編程只編應用程序,就是代替自己工作的小程序。如果編寫系統程序總會用到c或java的。
我喜歡腳本語言,腳本語言不用編譯就可以運行,非常便於修改,而編程序是一種經常性的活動,程序編完後總在不斷的修改中,沒必要搞的 很隆重,還要編譯。另外,腳本程序每個使用的人都可以隨手拿來修改,不會出現還要去找源代碼的情況。因此,c和java就被排除了。
我喜歡簡單的語言,不喜歡為了編寫簡單的程序而去學習大量復雜的規定,需要大量的學習才會的語言不是好語言,是把人當機器看。c和java 都有嚴格但羅索的語法,有永遠學不完的函數、類、庫。讓人看到就頭大。而perl有各種怪里怪氣的速記符號,程序常常讓人頭暈。簡單的含 義除了容易學,還要功能豐富,常用到的東西要早就准備好,不用每個人都去寫同樣的數據結構程序等。python有豐富的數據類型,有完備的 面向對象的結構,有規則表達式等各種方便編程的模塊。這個邏輯就是程序做的多,人做的就少,如果程序做的少,就要人做的多。這就是界 面友好的問題。容易上手,功能豐富是程序設計的很重要的目標,windows就是靠這個流行的。而python也很好的體現了這點。而perl象unix的 emac之類其它工具一樣,功能強大,但太難學,太難懂。是比較違背人性的。
關於性能。現在cpu已經很強大了。除了很大的程序和系統程序,沒必要關心性能。
關於功能。如果不是編寫系統程序和貼近系統的程序,沒必要使用操作系統特別提供的功能。c是可以干任何事情,但它編程效率低,復雜。
至於我為什麼不用vb,因為vb太龐大了。我沒必要實現一個小功能啟動這么龐大的程序。太誇張。另外,vb沒有類繼承,雖然是應用編程,但 如果要編稍微大的程序,總會用到類繼承的。
python得強大得擴展能力使對python得學習不會浪費。python經過簡單得處理能使用各種得c和c++庫,也可以被c和c++調用。python可以直接 使用java得類,也可以直接被java調用。這樣,對python、java、c得學習和使用經驗都不會被浪費,還能相互補充。python可以提高java和c 得編程效率,java和c可以補充python功能上得不足。python還可以和tcl直接交互,這種功能是內置得。期待python能簡單的調用perl和php得 功能。能使用lisp和prolog更好。
[edit]
ruby 吸取了所有語言精華的語言 第二版
ruby 語言還是雜耍 ruby?:O ruby 日本人的玩意
ruby有
* perl的正則表達式
* python的語言的簡單性可讀性、最容易的擴展能力,強大的可移植性。
* php的嵌入功能和多種客戶端
* smalltalk的純面向對象語法和單繼承
* lisp的無窮嵌套的語法,也就是函數式的語法。
* 用「塊」來實現更快捷的數據結構的處理。不知道是不是scheme的宏功能。用塊能更清楚的實現python的表處理功能。
* java和ada的線程編程
* java的安全編程
不得不承認ruby確實是個精彩的語言,它完全學會了lisp的所有編程都是函數的思想,smalltalk的所有東西都是對象的思想,perl的一個目的 多種手段的方法,python的簡單化的「最少驚喜」的原則,java的多線程和安全控制的功能,tcl的容易擴展的功能,php的嵌入功能和強大客 戶端的功能,最方便的shell命令的調用。
[edit]
ruby和python的比較
[edit]
python和ruby的相同點
* 都強調語法簡單,都具有更一般的表達方式。python是縮進,ruby是類basic的表達。都大量減少了符號。
* 都是動態數據類型。都是有豐富的數據結構。
* 都具有c語言擴展能力,都具有可移植性,比perl的可移植性更好。也都可以作為嵌入語言。
* 都是面向對象的語言,都可以作為大項目的開發工具。
* 都有豐富的庫支持。
* 也有最寬松的版權許可,除了一些工具屬於GNU世界。
* 都有lisp特色的eval函數,也都能把函數作為參數。
* 也有圖形界面的ruby的專門編輯器。
* 都獲得了廣泛的c庫的支持。如qt、gtk、tk、SDL、FOX等,ruby計劃實現SWIG介面。
* 都有完善的文檔。
[edit]
和python相比ruby的優點
* 具有正則表達式和嵌入html的功能。python也有正則表達式,但沒有ruby的應用方便和廣泛。python的嵌入html項目才剛起步。ruby還有 apache的mod模塊。ruby本身也實現和很多unix工具,如racc,doctools。比python更親近linux。
* 比python功能更完整的面向對象的語法。
* ruby的整個庫都是具有類繼承的結構。
* 他的基本的數據類型和運算符都是可以重載的。
* ruby主要的功能都是通過對象的方法調用來實現的,而不是函數。python也在向這方面發展,但沒有ruby做的徹底。
* ruby的類是更規范的單繼承,還有介面等概念的實現。
* python可以實現在列表內的條件語句、循環語句,而ruby用「塊」的方式來實現這個功能,比python的更靈活,更具有通用性。
* ruby具有類似lisp的徹底的函數方式的條件語句、循環語句等。語句的表達能力更強。
* 附帶一些unix工具,如racc等。
[edit]
和python相比ruby的不足
* 最大的不足正是因為ruby的強大所引起的。它沒有python的簡單性好。比較復雜的面向對象語法、「塊」語法的引入、正則表達式的引入、 一些簡寫標記都增加了語言的復雜性。
* python的縮進表達方式比ruby的basic的表達方式更讓人悅目,ruby程序的滿眼的end讓人不舒服。當然,ruby認為end的方式比python更先 進。
* ruby還沒有python的「自省」的能力,沒有從程序文件中生成文檔的能力。
* ruby沒有國際化的支持。國際化支持在ruby的計劃中。這是因為ruby的歷史比python要短造成的。
* ruby沒有類似jython的東西。
[edit]
python和ruby的語言的選擇
從簡單的就是好的來說,選python是沒錯的。python適合尋找簡單語言的人,這很可能造成python更流行,因此也有更多的支持。但如果要追 求更強大的語法功能,則ruby是好的選擇。因為ruby和python的哲學有很多相似的地方,先從python入手,盡量用python,如果python的能力 不足了,可以在找ruby。
ruby和python的比較,就像五筆和拼音輸入法的比較。拼音作為入門的輸入法和長久使用的輸入法都沒有問題。五筆適合更高要求的情況。如 果追求性能的不妨學學ruby。對編程語言感興趣,想了解各種編程概念的學ruby也會很興奮。
[edit]
php有什麼好處
我一直認為php是一個垃圾,因為它只是實現了腳本語言得嵌入,卻單獨實現一種語言、實現大量得函數庫,浪費了大量得開發人員得寶貴時間 來重復其他腳本已經實現了得功能,也浪費了php開發人員得大量學習時間,還要單獨學一種只能存在於web伺服器得語言,浪費了perl、 python得已有得使用經驗。相似得還有pike,一種c得腳本語言,沒什麼新東西,還不如仍然用c編譯器。
但我最近看書才了解php得獨特得開發目標。
php為什麼不直接用perl作腳本語言。是因為perl是一種unix語言,帶有unix傳統得字元神秘高深,讓人難於學習。而編動態網頁得人不見得會 用perl這種unix工具,他們可能只有html知識。php就簡化了perl得語言,變成了一種簡單友好得語言,免去了人們學習perl得困難。
php為什麼不選python作腳本。因為python是一種面向對象得語言,大量得功能都要涉及面向對象概念,而web應用只是簡單得實現客戶機邏輯 和顯示功能。沒必要涉及面向對象得復雜概念。函數是最簡單,最容易理解得,因此,php傾向於所有得功能都用函數來解決,而不是用對象來 解決。這有點象c和c++之爭。應該承認,函數在實現簡單功能得時候是最有利得工具,它得語句量最少。
php定位於以html為用戶界面,充當各種伺服器得客戶端,實現得是傳統得客戶端編程得任務。它有pop、smtp、ftp、多種資料庫等各種伺服器 得客戶端得函數,也有圖片、pdf生成,xml處理等這種必要得功能。這些都是其他腳本比不上php得地方。
我幾乎沒用過php,說得不對,請指教。
[edit]
ada語言草述
ada語言我看了他的介紹。
ada語言和c一樣是一種編譯語言,他們最後編譯出的執行文件的機器碼都很小。因此現在眾多的語言只有c很ada能比較。
和c相比,ada的特點是可靠、可移植。
他的可靠是通過比其他語言都強大的類型,每種類型還都可以象資料庫欄位一樣進行強類型、范圍的檢查。以此來保證在編譯中就發現錯誤。
它有強大的標准化組織,嚴格認證ada編譯器的標准。有多線程能力。
適於編寫實時程序。
但和c相比太復雜、羅嗦,因此註定不能流行。
[edit]
多腳本語言的大統一及疑問
現在各種腳本語言太多了,有必要進行整合,parrot是一個好的想法。.net也是好的想法。它為各種腳本提供了一個統一的虛機,為各種腳本 語言提供了基於「類」的相互調用,為各種腳本提供了統一的類庫。
現在各種腳本語言只是提供了對c語言的交互性,這種交互也是費勁的和效果不好的。比如python、perl、ruby等都提供了對c的交互功能。腳 本語言之間的交流障礙重重。而類似.net的東西,提供了非常容易的各種腳本的相互利用的途徑,避免了很多的代碼的重復編寫。這種標准平 台的力量是很大的,這種標准平台為什麼沒有在開源領域首先出現呢?眾多的腳本正是開源的特點和優勢,為什麼這種問題要微軟來解決呢? 前面有人提出了類似的問題,在linux中為什麼至今沒有好用的類似ODBC的東西呢?
可能這種整合只有商業公司有能力實現吧。
我的理解是,如果有創新思想的人都拿他的想法去賣錢了,因此,在開源中只剩下了模仿的人。kde是模仿windows,koffice是模仿office, linux是模仿unix,gcc、bash等也全都是模仿,以及gstep等,還有freedos、atheos等也是模仿,wxwindows、SDL也是模仿。我想知道開源社 區有沒有自己的創新?我所知道的創新是zope,但zope最初也是商業產品,後來才開源的。perl是創新,python是創新,但還有什麼呢?是不 是開源領域只有hack,沒有creator?
[edit]
.net介紹
.net所實現的java的功能
可控代碼 跨平台的虛機和偽碼免費贈送命令行編譯器 純面向對象語言 對xml和xml web services的支持 和jsp對應的asp.net 網頁上的程序 一套統一的中間件環境。
asp.net跟jsp不是同一個層次上的web技術, asp.net使用完善的事件響應機制,WinForms類似的 WebForm技術,只有JSF跟Asp.net有可比性。
.net未實現的java功能
免費的集成開發環境 多廠家支持,跨平台的成熟度
免費的IDE, #develop , ASP.net的有MS的WebMatrix 而免費開源的CLR實現,有MS自己的XP,FreeBSD,MacOS下的實現(原理演示不能進行商 業應用), Novell下的Mono項目,已經發布了Beta1版本,在2004-6-30 將會發布Release1; 還有GNU的一個.net實現!!
[edit]
.net實現的java不具備的功能
多語言支持 強大的集成開發環境。在windows上媲美本機程序的速度。 對COM的支持,對vs的繼承 對widows form 、web form、伺服器端程序 的圖形直觀編程。
[edit]
相對vs6的改進
統一了集成開發環境,使c++程序也具有了vb的友好性。
[edit]
xml各種技術介紹
xml:
xml是統一格式的結構化數據的文本文件。
基於xml的程序,數據結構是開放的,方便不同程序處理同一種文件,這樣,程序之間可以達到高水平的協作。
xml現在成為了各行各業統一數據格式的基礎。
xml發展出了完善的語法,它用DTD或scheme來界定xml的標記語言。用uri來唯一確定一個xml格式。用css或XLT來轉換xml格式,xlink和 xpointer等來建立xml的鏈接,用xpath來定位xml中的數據。
xhtml:
是嚴格符合xml格式的html。
RDF:
基於xml的元數據描述語言。方便交換結構化數據。方便交換知識。
RDF是用主語、謂語、賓語來描述知識的。
SVG:
xml格式的矢量圖形格式。
SMILE:
xml格式的各種多媒體在時間線上的協同。
xmath:
xml格式的公式描述語言。
xml-rpc和soap:
以http協議和xml格式來進行網路程序之間的消息通訊。
xul:
netscape的mazilla使用的程序界面語言,基於xml格式,比html強大的多的描述圖形界面的xml語言。它用css來換膚,用DTD來實現多語言界 面,用javascript來實現程序邏輯,以此編寫跨平台的可方便定製界面的程序,現在這個程序API功能已經很強大了,整個mazilla程序就是基 於xul的。
xaml:
MS在LongHorn平台的最新編程語言,將統一Windows與Web編程,直接使用
LongHorn下的瀏覽器進行執行, 跟XUL有類比性
[edit]
最先進的xml格式圖形界面程序開發工具-xul
大家知道netscape程序,一個僅次於ie得瀏覽器,也有很多人知道mozilla,netscape得開放源代碼版本。但很多人只是使用mozilla,不知道 mozilla另一個重要得功能--程序開發。在netscape開放源代碼後三年mozilla得1。0版還沒有問世,很多人譏笑他的超慢得開發速度,實際 上,mozilla醞釀出了一個超酷得新產品,可以看作是軟體開發工具發展得另一個里程碑。
現在基於瀏覽器得三層開發結構非常流行,微軟得.net得思路就是基於這個結構得。另外,不考慮伺服器結構,就是基於網頁得javascript小 程序也對人很有吸引力,這些產品得思路都是以html為用戶界面,但開發人員常常苦惱於html太簡陋。而mazilla得xul解決了這個問題。
xul是對html得擴展
⑷ 學習Ruby需要什麼資料
Programming Ruby(2nd Edition)
這似乎已經不是怪事:關於一種編程語言的經典教材,作者不是這門語言的創造者。就像Stan Lippman之於C++、Joshua Bloch之於Java、Martin Fowler之於UML一樣,Dave Thomas也許是這個世界上最善於向別人講解Ruby語言的人——至少超過Matsumoto是毫無問題的。也許正是因為自己也經歷了「不懂到懂」的學習過程,有時候「旁觀者」反倒比「創造者」更清楚學習者們需要什麼。
所以這本書就是Ruby的經典教材。關於Ruby的基本語法和常用工具,書中第一部分和第二部分做了詳細的介紹。第三部分「Ruby Crystallized」更加闡述了Ruby語言的一些細節和設計理念,其中第23章「Duck Typing」是剛從Java或者.NET平台走出來的讀者不可錯過的,因為對於類型與契約的理解、對於類與類型的理解,正是Ruby這種動態語言與Java/C#等靜態語言最大的區別之一。隨後的第四部分提供了Ruby基礎類庫的速查手冊。
Dave Thomas和Andy Hunt這兩個「Pragmatic Programmer」並非浪得虛名:這本Programming Ruby雖然不是一本稱職的參考手冊,卻足夠幫助一個初學者步入Ruby世界而不致誤入歧途,並且能夠在很少見的一些情況下——譬如說忘了yield的用法——給有經驗的Ruby程序員提供幫助。在我看來,這也就足夠奠定它作為經典教材的地位了。由於封面上有一柄丁字鎬,這本書也被昵稱為「鎬頭書」——它正是你發掘「紅寶石」(Ruby)寶藏的必備工具。
Agile Web Development with Rails
Rails的作者David Heinemeier Hansson說過一句大實話:「我從來不會為了學語言而學語言。」大多數人在大多數時候學習一種新的語言不是為了比較語言的優劣,而是因為這個語言底下的某個工具能給他的工作帶來幫助。Ruby世界裡的這個「殺手應用」,讓Ruby在短短一年時間里成為焦點的這個工具,就是Rails。
這是第一本介紹Rails的圖書,又是由Rails的作者DHH和前面提到的Dave Thomas共同撰寫,其價值可謂不言而喻了。許是兩位作者有太多的「乾貨」想要交給讀者,這本書的第一版被他們——不幸地——寫到了558頁之厚。書中首先展示了一個規模不大的在線購物網站,讓讀者親身體驗用Rails進行敏捷開發的感受;然後針對Rails框架的各個組件和安全、部署等延伸話題展開了深入的討論。其內容之全面、探討之深入,令人嘆為觀止。看起來,和Matsumoto不同,DHH很清楚應該怎麼介紹自己的作品——不管是「淺出」還是「深入」。
值得中國讀者高興的是,這本書的第一版已經由林芷薰翻譯,電子工業出版社付梓。Rails仍然處在高速發展的階段,從本書第一版截稿至今,Rails已經發生了相當大的變化,因此這本中譯本甫一面世便已經有很多過時之處。但這本書畢竟不是參考手冊,作者更多地是在其中闡述Rails的設計理念和最佳實踐。對於英文閱讀無法達到最快速度的讀者來說,這個譯本未嘗不可以是一個稱職的向導。
Rails開發者助手兩種
不難想像,有很多性急的程序員會——就像我一樣——草草了解Ruby語法之後就一頭扎進Rails的絢麗宮殿,體驗快速開發web應用的成就感,卻不得不時時因為缺乏對Ruby語言的深入了解而感到迷惑:這個類里什麼都沒有,它為什麼會工作?那個地方寫的代碼是什麼意思?可是,要全面系統地學習Ruby,又實在令人望而生畏。還好,我們有這本Ruby for Rails。書中介紹了一些Ruby語言特性——既有普通的也有高級的,都是Rails中使用到的。簡而言之,這就是一本專門為Rails應用開發者提供的Ruby指南。更有趣的是,書中還用了一章(第17章)篇幅專門介紹「如何探索Rails源代碼」,真可謂是「授人以漁」的典範了。
另一個「助手」則是Chad Fowler——他也是Programming Ruby的合著者——的Rails Recipes。和任何一本「菜譜」(recipe)一樣,這本書不會教你如何使用菜刀與炒勺、如何把蔬菜切片——你可以從別的很多地方學到這些技巧。這本RailsRecipes教給讀者的,是如何在 Rails環境下急就章地完成一個你需要的功能。譬如說「用戶登錄與身份驗證」這件事,每個網站、每個開發者都曾經做過不止一次,這本書中就給了讀者一個簡單而可靠的解決方案,讀者只要抄抄改改,幾分鍾就可以完成這個功能。對於初接觸Rails(以及Web 2.0)、面對很多問題尚且無從下手的新兵來說,這本書確實可以幫助他們解決一些實際問題。
不過這本書的局限也同樣明顯:如果你需要的菜色超出了這份菜譜的范圍,它就只好愛莫能助了;而且,僅僅給出解決問題的代碼,卻沒有對應的單元測試,也讓習慣了TDD的讀者多少有些忐忑。在我看來,這本書對「授人以魚」的專注恰好和前一本Ruby for Rails構成了一對「可怕的對稱」,也讓這兩本書有理由共存於Rails開發者的案頭。
Ruby In A Nutshell
作為Ruby語言的締造者,Yukihiro Matsumoto只能寫一本「果殼書」,這本身就是一件耐人尋味的事情。O』Reilly的「果殼書」系列歷來褒貶不一:有人認為它們缺乏深度,也有人認為它們是快速入門的好幫手。但Matsumoto最大的問題在於:他創造了Ruby,卻沒有真正意識到這種語言到底有多大的威力——後來他經常在Ruby on Rails討論組活動,從中了解一些精妙的Ruby用法。其結果也很自然:這本Ruby In A Nutshell作為語言參考中規中矩,但對於實際應用中的妙處——例如在DSL方面的應用——卻語焉不詳。再加上它所針對的Ruby版本是略顯過時的1.6版,也讓這本書的地位略顯尷尬。
Ruby 奇書兩種
稱它們為「奇書」,因為它們的主題實在偏頗。先看這本Enterprise Integration with Ruby:雖說腳本語言常常被稱為「膠水」,有多少人會當真想到用Ruby去做企業應用集成?不過細看之下,這本書多少有些名不副實之嫌,因為它真正介紹的無非只是如何訪問資料庫、如何操作XML、如何通過SOCKET通信之類比較底層的技術而已。在一個生僻的題目之下寫著另一些生僻的內容,盡管這些內容算得上有趣,但我還是要對那些沒有讀過這本書的Ruby程序員說:你沒有錯過太多——盡管這本書與你想像的並不一樣。
最後要介紹的這本書更是備受爭議:有人盛贊它是「精通Ruby的必經之路」,也有人批評它沉溺於奇技淫巧缺乏實用價值。但無論褒貶,更多的讀者正在逐一挑戰其中的謎題——這本書就是James Edward Gray所著的Best of Ruby Quiz。這本書(目前出版的是第一卷)列舉了25道題目,讀者大多可以想出一種辦法來解決這些問題,往往還能 通過思考和重構找到第二種優雅的設計,但這本書卻給你列出了第三種、第四種真正精巧的解決方案——充分利用Ruby技巧才能得出的解決方案。這些題目的最終解法之巧妙,常常令人拍案叫絕(或是破口大罵)。不過這些「奇技淫巧」也並非全無用處,例如書中很多題目在解答時都用到了正則表達式,理解這些解答對於深入學習正則表達式的用法是很有幫助的
⑸ 關於Ruby
Ruby on Rails是一個用於編寫網路應用程序的框架,它基於計算機軟體語言Ruby,給程序開發人員提供強大的框架支持。Ruby on Rails包括兩部分內容:Ruby語言和Rails框架。
什麼是Ruby?
Ruby 語言是一種動態語言,它與Python、Smalltalk和Perl這3種編程語言有些類似。Ruby語言起源於日本,它的研發者是日本人松本行弘(Matsumoto Yukihiro)。松本行弘在1993年開始著手Ruby語言的研發工作,他開發Ruby語言的初衷是為了提高編程的效率。 1995年12月Matz推出了Ruby的第一個版本Ruby 0.95。
Ruby語言的主要特點如下。
1.純的面向對象語言
在Ruby中,一切皆是對象。下面舉一個例子來更直觀地說明Ruby語言的這一特點。
在Java中,求一個數的絕對值的代碼如下。
int c = Math.abs(-20);
而在Ruby語言中,一切皆是對象,也就是說「-20」這個數也是一個對象,因此,求一個數絕對值的Ruby代碼形式如下。
c = -20.abs
這樣的代碼編寫方式是不是更形象一些呢?
2.解釋型腳本語言
Ruby 語言是解釋型腳本語言,它既有腳本語言強大的字元串處理能力和正則表達式,又不失解釋型語言的動態性。一方面,在最初設計Ruby語言時,Ruby的研發者松本行弘考慮到文字處理方面的需要,他借鑒了Perl語言在文字處理方面的成功經驗。另一方面,松本行弘將Ruby語言設定為一種解釋型語言,Ruby 的動態性使得由Ruby語言編寫的程序不需要事先編譯即可直接運行,這為程序的調試帶來了方便。同時,這一特點可以實現開發過程中的快速反饋。
3.其他特點
(1)動態載入。可以在運行時候重定義自己,類也可以在運行時繼承或取消繼承。
(2)自動內存管理機制。
(3)多精度整數。
(4)迭代器和閉包。
(5)開源項目。有大量活躍的社區支持Ruby語言。
什麼是Rails?
雖然Ruby語言有很多優點,但是一直以來,其流行的范圍也僅限於日本。直到2004年,Ruby才逐漸被世界上其他地區的人們所認識,那麼是什麼讓Ruby語言走向世界的呢?是Rails。
Rails 框架首次提出是在2004年7月,它的研發者是26歲的丹麥人David Heinemeier Hansson。不同於已有復雜的Web 開發框架, Rails是一個更符合實際需要而且更高效的Web開發框架。Rails結合了PHP體系的優點(快速開發)和Java體系的優點(程序規整),因此, Rails在其提出後不長的時間里就受到了業內廣泛的關注。
Rails框架主要有如下的6大特點。
1.全棧式的MVC框架
Rails是一個全棧式的MVC框架,換句話說,通過Rails可以實現MVC模式中的各個層次,並使它們無縫地協同運轉起來。
在實際開發一個MVC模式的Web應用項目時,如果使用Java開發,需要用到Struts(Model層)、Hibernate (Controller 層)和Spring(View層)3個框架,而且需要額外整合3個框架開發出的內容。而使用Ruby語言開發相同的項目時,只需要用到Rails框架就可以完成。
2.約定優於配置
為了說明各個對象之間的關聯關系,一般的Web應用開發框架往往採用寫入XML配置文件的方法。這種方式雖然可以解決一些問題,但是卻帶來了管理上的混亂。
Rails 對此的態度是約定優於配置,這意味著在Rails中不會出現XML配置文件。Rails使用Web應用多年來積累的各種常見約定(更具體地說是命名規則)來代替XML配置文件,而在Rails內部的映射與發現機制根據這些約定可以實現對象之間的關聯。在第1章中,通過Rails的映射與發現機制實現了數據表與Ruby對象之間的關聯。
3.更少的代碼
使用約定來代替XML配置文件說明Rails本身完成了大量的底層工作,這意味著使用更少的代碼來實現應用程序是極有可能的。此外,代碼量的縮減也減小了出現bug的可能性,降低了維護程序和升級程序的難度。
4.生成器
Rails 使用的實時映射技術和元編程技術,免去了開發人員在開發過程中編寫大量樣板文件代碼的煩惱。在少數需要使用樣板文件代碼的時候,開發人員可以通過 Rails內建的生成器腳本實時創建,而不再是通過手工編寫。Rails的這個特點可以使開發人員更專注於系統的邏輯結構,而不必為一些瑣碎的細節所煩擾。
5.零周轉時間
對已有的Web應用系統進行修改後,其一般需要經過配置、編譯、發布、重新設置、測試等一系列步驟才能投入使用,這明顯浪費了許多時間。而使用Rails開發Web應用系統,可以通過瀏覽器即時查看程序運行結果,從而節約了大量的時間。
6.支架系統
Rails的支架系統可以自動為任何相關的資料庫表創建一套包含標准CRUD操作和前台視圖的系統。通過支架系統,開發人員可以方便快捷地操縱資料庫中的數據表。此外,Rails也允許開發人員使用自己設計的代碼或視圖來替換自動生成的代碼和視圖。
目前,Rails的最新版本是2005年12月13日發布的v1.0.0。從RoR正式提出到v1.0.0的發布,RoR在一年多的時間里受到了業內人士的廣泛關注。RoR受到廣泛關注主要有如下兩個原因:首先,RoR的開發效率高(部署容易)、功能豐富(支持Ajax等流行應用),有消息稱對於相同的 Web開發項目,使用RoR開發比使用Java體系架構開發快5~10倍;此外,令人不可思議的高性能是其受到關注的另一個重要原因,根據CSDN上轉載的新聞稱使用RoR開發出來的項目性能,比基於Struts+Hibernate+Spring的Java應用還要高15%~20%。
RoR 當前遇到的主要問題是使用RoR搭建的大型商業應用還很少,究其原因可以概括為兩點:第一,從開發能力的角度,RoR是一個基於Ruby語言的輕型Web 開發框架,很多開發者對其是否適合大型應用難以把握。第二,本身使用RoR開發的大型商業應用較少,使得後來者持觀望態度。
綜合分析來看,RoR的發展前景還是很光明的。RoR在短時間內取得了巨大的成就,它打破了Web開發領域的固有觀念,方便快捷的開發方式使其被廣泛接受。而事實上,現在已有幾家跨國公司正在使用RoR開發自己的Web應用程序,並且有多家大型公司在考慮使用RoR進行Web應用開發。
⑹ 學習Ruby 語言,有哪些值得推薦的好書
我認為Ruby基礎教程+Ruby元編程是比較好的組合。
Ruby基礎教程 是一本快速入門的書。但是很多語法沒有講到。
Ruby元編程是一種很像編程珠璣風格的書。用來學習Ruby的奇技淫巧。
我覺得上述兩本配合用可以幫助題主快速的學習Ruby編程語言。
不過很遺憾的是目前我還沒有找到Ruby虛擬機方面的書。
⑺ 為什麼python的元編程能力沒有ruby強
Ruby的確是比Python更干凈的OOP,這也不奇怪,Ruby根本就是Smalltalk換了點語法而已。
但這個更干凈並不是a.length vs. len(a),名詞在前還是動詞在前的問題,否則OOP也未免太膚淺了。
在Python里,對於a.f()可能是調用a所屬的類的方法f,也可能是調用a的屬性f。這個二義性在metaprogramming時帶來很多不一致和麻煩,比如Python對__xxx__ magic method lookup的特殊規定。
⑻ 我為什麼棄用Objective-C而選擇RubyMotion
關於Ruby語言
Hendrik以前不僅從未用過
Ruby,還沒少嘲笑過它。而現在Hendrik卻認為,Ruby絕對是一種有著清晰漂亮語法的編程語言。Ruby是一種讓你靈活機動的編程語言。
有時我們可能會對某種語言嗤之以鼻,然後說:「我絕不會在這種語言上浪費時間。」但Ruby一定不會讓你這么說。Ruby強大的元編程特性能夠幫助建立
領域專用語言(DSL);Ruby精煉的語法能幫助我們有效解決一些特定問題和處理許多復雜問題的細節。
Ruby語言具有強大的反射機制與元編程功能
更重要的是,Java、PHP、Perl以及Objective-C都不具備的,而Ruby具備的特徵是:Ruby有一群追求完美的鐵桿粉
絲。Ruby程序員們選擇Ruby,意味著他們不僅僅選擇了一種編程語言,還選擇了一種生活方式。Ruby粉絲們所追求的是一種極簡的、精緻的編程體驗。
RubyMotion的優勢
RubyMotion是完全由Ruby語言編譯的二進制實現,它基於iOS構建並直接與iOS
API封裝,開發者可以訪問所有公開的iOS
API,也可以使用第三方的Objective-C庫和Gems。RubyMotion能夠讓Rails開發者編程時感到得心應手。
Rake是RubyMotion的創建和執行工具,它的程序是在
REPL環境下執行的。應用程序可在iOS模擬器上運行,RubyMotion提供一個互動式的Shell用來即時編碼和調試,能夠方便地實現互動式檢查和修改。
Hendrik對於RubyMotion是這樣評價的:在iOS開發方面,RubyMotion的核心思想是用優美的Ruby語言代替醜陋的Objective-C語言。
RubyMotion為Ruby程序員(尤其是那些因Objective-C和Cocoa Touch犯難的Ruby程序員)提供了一個iOS開發的入口。盡管RubyMotion誕生還不到一年的時間,但它為使用Ruby語言進行高效開發提供了很大便利。
RubyMotion的劣勢
1. 不提供免費版本。許多開發者不願嘗試RubyMotion多半是因為它不免費,盡管199美金的價格物有所值,但是開發者們往往需要先體驗產品,再考慮付費購買。如果未來RubyMotion能夠提供免費或試用版本,將會吸引更多的開發者前來參與。
2. 缺少Ruby高手。正因為RubyMotion比較年輕,所以RubyMotion社區(
RubyMotion community)缺少Ruby編程高手,社區中許多開發者的作品都比較簡單,比較初級。
3. 不能徹底擺脫Xcode。使用RubyMotion還是需要Xcode提供的SDK、模擬器以及數字簽名功能,只不過不需要全程使用Xcode,尤其是在撰寫代碼的時候。
正確看待RubyMotion
在一些蘋果開發社區中,我們時不時會看到一些污衊RubyMotion的言論。如果你經常瀏覽
HackerNews上對於RubyMotion的討論,你會很容易發現人們對RubyMotion不加遮掩的蔑視。
RubyMotion創始人Laurent Sansonetti
Rails也好,RubyMotion也好,都是前輩們嘔心瀝血的作品,是從知識、代碼、編程技巧等多個層面的經驗總結,他們的目的無非是
幫助大家用更精煉的代碼進行編程,使得程序開發更為簡便。所以對於新興的編程語言、工具,大家大可不必投以藐視的態度,這也是對前輩們勞動成果的一種尊
重。
⑼ python有類似《Ruby元編程》這樣的講些設計模式的書嗎
《Learning Python》這是我最早入門的書。當時我還專門去電力出版社(是由陳革、馮大輝翻譯)去購買,還有優惠。
當時是第一版,翻譯得很不錯,現在是第三版了,就沒看過了。
還有就是Python自帶的《Python Tutorial》,長期由劉鑫義務翻譯,也是非常不錯的入門。
再有就是看Python自帶的庫說明手冊。
⑽ RUBY元編程怎麼樣
在java的時代,因為不滿面向類/對象的復雜機制,自己借鑒研究了對象裝備模式,後來發現就是spring的原理。當時不知spring的情況下,還自己實現了利用運行時反射機制來動態的給對象設置空類,拼裝方法共享實例對象屬性,做出來雖然很欣慰,但是很難看,很慢,不可能到生產環境。 後來了解了js的函數原型prototype,可以動態的定義方法和傳遞閉包,簡直口水直流,直接轉成了web前台開發,只做ajax,直到ruby的出現。大概是06年,那時候資料賊少,全是日文,英文的都不多,學了皮毛就擱置了。 今年,因為自己回歸開發,想實現一些想法,嘗試了php之後,毅然決定打死不用php,與其深入研究php不如決心搞ruby,打眼一看,發現中文資料太多了,太幸福了,當看到這本元編程的時候,馬上想起java時候的辛酸啊。 Ruby讓人快樂,元編程更是快樂的魔法,創造出令人興奮激動的東西。 計算機不再是僕人,而是朋友,我能理解你,你也能理解我。 如果說寫java就像寫論文,那麼用js就像寫英文詩,而ruby像五言絕句。 所以不學元編程,不如用java