在開始學(xué)網(wǎng)頁(yè)開發(fā)的時(shí)候,我學(xué)的是ASP。
后來(lái),慢慢的,總是對(duì)php想入非非。
書也買了不少,可惜,偶笨笨的,總是搞不太訂php的安裝,一看到需要自己手動(dòng)修改文件、配置,就覺(jué)得頭大。
相比之下,在windows下,玩ASP則是太簡(jiǎn)單了,安裝一下IIS/PWS,一路next,便可以玩了。
對(duì)于很多windows用戶,是很不能習(xí)慣直接修改ini文件這樣的配置方式的,包括我。
或者,可以這么說(shuō)吧,php的初學(xué)者會(huì)逼asp的初學(xué)者高級(jí)那么一點(diǎn)點(diǎn)。玩php的,好歹會(huì)懂得如何自己折騰著安裝php。
php安裝上的折騰過(guò)程,可以說(shuō)是一個(gè)學(xué)習(xí)的過(guò)程,也可以說(shuō)是入門的一個(gè)很小很小的門檻吧……偏偏這么個(gè)小門檻,有些人,可能永遠(yuǎn)都不能夠、或者是不愿意跨過(guò)去。
不過(guò),現(xiàn)在也應(yīng)該有一些apache/php/mysql的安裝包,應(yīng)該也是一路next就可以玩了。
用jsp的人比較少,偶雖然偶爾也對(duì)jsp有點(diǎn)好奇,但是一直沒(méi)有理由、心情去學(xué)習(xí)它。
今天,因?yàn)樽约簲[了個(gè)大烏龍,終于還是把tomcat 5.5.8當(dāng)下來(lái),居然,也就一路next之后便可以用jsp了。
而且,好像還是apache tomcat。
well,這也許是說(shuō)明asp/php/jsp這三種網(wǎng)站開發(fā)語(yǔ)言的“門檻”都已經(jīng)變得一樣低了。
asp.net也是差不多低,windows 2003是默認(rèn)支持asp.net,反倒是asp需要做過(guò)設(shè)置之后才可以支持。
或者,我應(yīng)該這樣子劃分一下,asp跟php(php 4,不討論php 5)是屬于同一個(gè)檔次,而jsp與asp.net在另一個(gè)檔次。
asp跟php其實(shí)還稱不上是語(yǔ)言,他們只是腳本,并且是弱類型的腳本。
他們都是不分?jǐn)?shù)字與字符串不分。
變量a,b的值都是1,那么a+b究竟應(yīng)該是“11”這個(gè)字符串,還是2這個(gè)數(shù)字?
(我知道asp有&,php有.這兩個(gè)操作符,但請(qǐng)看下去。)
在asp/php里面,是沒(méi)有嚴(yán)格的方式對(duì)這些情況做很好的控制,有的時(shí)候,便會(huì)出現(xiàn)這樣那樣的問(wèn)題。
我們經(jīng)常可以看到結(jié)尾類似“?id=1”的網(wǎng)址,asp/php的初學(xué)者,便經(jīng)常犯沒(méi)有驗(yàn)證id是否為數(shù)字的錯(cuò)誤,給SQL注入攻擊大開方便之門。
這一方面是初學(xué)者沒(méi)有經(jīng)驗(yàn)或者是說(shuō)懶惰;但另一方面造成這樣問(wèn)題的根源之一是asp/php是弱類型語(yǔ)言的緣故。
asp/php都是腳本,所以,他們背后有著強(qiáng)大的函數(shù)庫(kù)。
很多事情,直接調(diào)用相應(yīng)的函數(shù)名稱就是。
代碼短小、精悍。
對(duì)asp/php熟悉了之后,巧妙的將他們的代碼插入在html代碼中,便可以做出很多精彩的動(dòng)態(tài)網(wǎng)頁(yè)了。
asp/php與html的代碼混和在一起,看起來(lái)很亂,但是,熟練的asp/php程序員是不會(huì)覺(jué)得亂的,他們知道應(yīng)該在哪里插入些什么,并且這樣子的插入、混和代碼有的時(shí)候是很方便的。
殺雞焉用牛刀?
不過(guò),企圖使用雞刀殺牛的時(shí)候,便很痛苦了。
原因之一,asp/php都是腳本,你沒(méi)有辦法編譯他們。
compile error/run time error/warrning等等,都是要等到你在瀏覽器中查看的頁(yè)面的時(shí)候才會(huì)知道。
并且,瀏覽器給出的錯(cuò)誤信息并不是非常有用。
特別是asp,有的時(shí)候,便只是一個(gè)籠統(tǒng)的500 error,開發(fā)者是沒(méi)有辦法很快的知道錯(cuò)誤究竟在哪里,只能依靠血與淚換來(lái)的經(jīng)驗(yàn)。
“ASP會(huì)使人瘋狂”在很長(zhǎng)的時(shí)間里面是我在各種論壇上的簽名,指的便是這個(gè)問(wèn)題。
php相對(duì)而言,會(huì)比asp好一點(diǎn),但也只是一點(diǎn)而已。
舉個(gè)例子吧……
在默認(rèn)情況下,asp/php里面變量是不需要聲明的。
當(dāng)你第一次調(diào)用的時(shí)候,便會(huì)自動(dòng)生成。
那么在程序中,你不小心把變量data或者是$data打成了deta或$deta。
當(dāng)這個(gè)錯(cuò)誤的變量名隱藏在數(shù)以百行計(jì)的代碼中時(shí),你有可能抓狂至死也沒(méi)法把它揪出來(lái)。
asp與php各有支持者。
個(gè)人覺(jué)得php好一些。
第一個(gè)理由::<??>比<%%>容易輸入。
我不知道天殺的asp/asp.net/jsp設(shè)計(jì)者們?yōu)槭裁匆x如此難以輸入的:<%%>。
第二,php默認(rèn)帶的函數(shù)庫(kù)比asp豐富。
至少,它可以處理文件上傳。asp便需要組件,或者寫無(wú)組件上傳類了。
對(duì)于asp/php這樣的腳本來(lái)說(shuō),函數(shù)庫(kù)的豐富與否,是相當(dāng)重要的。它決定了什么事情是你可以做的,什么事情是你不可以做的。我是說(shuō),不是每個(gè)人都會(huì)懂得如何寫asp的無(wú)組件上傳類。
我所指的是默認(rèn)的函數(shù)庫(kù),大多數(shù)asp/php開發(fā)者使用的是虛擬主機(jī),他們是沒(méi)有辦法要求服務(wù)商給他們?cè)诜?wù)器上安裝他們需要的組件/extension的。
asp跟php在分別加上了組件/extension的支持后,能作的事情便很多很多了,沒(méi)法怎么比較了。
第三,默認(rèn)數(shù)據(jù)庫(kù)支持。
asp一般都是使用Access的,而php則是mysql的。
做web development,數(shù)據(jù)庫(kù)是至關(guān)重要的,它也可以說(shuō)是決定了你可以做的事情的范圍。
一個(gè)日瀏覽量數(shù)萬(wàn)IP的網(wǎng)站是沒(méi)有可能用asp+Access做出來(lái)的。Access支持不了這樣數(shù)量級(jí)的訪問(wèn)量。而mysql則沒(méi)有這樣的問(wèn)題。
用asp+access的網(wǎng)站做大了以后,一定需要轉(zhuǎn)移到別的數(shù)據(jù)庫(kù)上,比方說(shuō),MS SQL。php+mysql的網(wǎng)站要做大到需要轉(zhuǎn)移到php+Oracle的情況便少見(jiàn)很多很多了;這個(gè)轉(zhuǎn)移有可能不會(huì)出現(xiàn),即使出現(xiàn)也會(huì)比access到MS SQL的轉(zhuǎn)移遲很多很多。
不是說(shuō)Access不爭(zhēng)氣,而是說(shuō)Access本來(lái)就不是作來(lái)給網(wǎng)站用的。靠Access吃飯的程序員跟靠asp+access吃飯的程序員是兩個(gè)不同的概念。
微軟的數(shù)據(jù)庫(kù)產(chǎn)品MS SQL與Access之間似乎還應(yīng)該有多一個(gè)東西,這個(gè)東西應(yīng)該是MSDE吧……問(wèn)題是,MSDE出來(lái)得晚,并且非常不普及,微軟也似乎從來(lái)沒(méi)有怎么推廣過(guò)MSDE。
如果,現(xiàn)在普遍的是asp+MSDE網(wǎng)站開發(fā)而不是asp+Access;我應(yīng)該會(huì)更加喜歡asp一些。
之前寫過(guò)一篇《幾種主流網(wǎng)頁(yè)開發(fā)語(yǔ)言的思考(上)》,有一位屬名“cai”的朋友回復(fù)說(shuō):“只能說(shuō)一句,太膚淺了...”,我現(xiàn)在完全的同意他/她的觀點(diǎn)……
不知道他/她有沒(méi)有機(jī)會(huì)看到我這篇blog,如果看到的話,希望他/她能夠頂句“現(xiàn)在不那么膚淺”之類的話……
在國(guó)內(nèi)泡網(wǎng)的人們,應(yīng)該對(duì)動(dòng)網(wǎng)論壇很熟悉,曾經(jīng)有一段時(shí)間,動(dòng)網(wǎng)論壇幾乎就成了中文論壇系統(tǒng)的代言詞。
它是一個(gè)ASP + Access或MS SQL的論壇系統(tǒng)。我也一直在用,不泡論壇很多年,不過(guò)我知道的使用動(dòng)網(wǎng)的論壇有:獅城論壇、藍(lán)色河畔、瑞麗女性。
這三個(gè)論壇,同時(shí)在線人數(shù)應(yīng)該都有數(shù)千逾萬(wàn)的記錄。
動(dòng)網(wǎng)論壇曾經(jīng)很流行,很好用,問(wèn)題是,只要一旦它被發(fā)現(xiàn)有什么漏洞,相信所有使用它的網(wǎng)站都會(huì)深受其害,相信也包括剛剛列舉的這三個(gè)論壇。
我想,這說(shuō)明asp的兩個(gè)問(wèn)題。
第一:ASP程序種類比較少,動(dòng)網(wǎng)論壇從來(lái)就不是一個(gè)最好的論壇程序,雖然,它很不錯(cuò),但是也不至于好到全世界都在用它的程度。以致它一有漏洞被發(fā)現(xiàn),中文論壇就天下大亂。動(dòng)網(wǎng)之所以流行,是因?yàn)槌怂酝猓瑳](méi)有其他太多好用的ASP論壇系統(tǒng)了,特別是中文的。
ASP在國(guó)內(nèi)之所以流行,是因?yàn)樵趪?guó)內(nèi)windows流行。我是說(shuō),盜版的windows。而且,大家習(xí)慣性的認(rèn)為asp比較容易學(xué)。很多初學(xué)者剛學(xué)做網(wǎng)頁(yè)開發(fā)的時(shí)候,默認(rèn)的就沖著asp去了,畢竟windows/IIS/PWS/ASP這些東西都來(lái)自熟悉的微軟。好歹臉熟,學(xué)起來(lái)“快”。
而在國(guó)外,微軟往往是臭名昭著的,php才是初學(xué)者們的選擇。
而且,國(guó)內(nèi)的嚴(yán)重缺乏開源的氣氛。國(guó)內(nèi)的程序員,很難有條件去做一些開源的事情。好不容易寫出來(lái)一套系統(tǒng),自然是要拿出去賣錢的,怎么可能免費(fèi)放在網(wǎng)上讓全世界的人去用呢?他們需要靠這個(gè)來(lái)養(yǎng)活自己。而,國(guó)外的程序員,并不存在一個(gè)這么個(gè)生存的問(wèn)題。
認(rèn)識(shí)兩個(gè)在汕頭的asp程序員,中專畢業(yè)而已,他們應(yīng)該算是很努力, 很上進(jìn)的中專生了。他們的asp水平是很好很好的,因?yàn)?,他們的工作要求他們很好的去掌握asp。我的asp是跟其中一個(gè)人學(xué)的,到現(xiàn)在,我的asp水平也絕對(duì)在他們之下。但是,現(xiàn)在的我所知道很多與網(wǎng)頁(yè)開發(fā)相關(guān)但是又不是屬于asp的知識(shí),他們便不知道了。他們是不會(huì)有閑情逸致來(lái)寫blog的,更不可能去開發(fā)一套開源的程序,盡管,他們有這樣的能力。
不妨看看:http://en.wikipedia.org/wiki/List_of_wiki_software
這個(gè)網(wǎng)頁(yè)里面搜集了基于不同各種技術(shù)的wiki系統(tǒng),其中使用微軟技術(shù)(包括asp/asp.net/C++)的只有7個(gè),而基于asp的,更是只有2個(gè)。而php base的,則有二十余個(gè)!
而且,基于asp的那兩個(gè)都不是中國(guó)人寫的。動(dòng)網(wǎng)的流行,其實(shí)是一間很悲哀的事情。國(guó)內(nèi)ASP程序員的悲哀。
我們或許友愛(ài),但是我們?nèi)狈σ粋€(gè)互助的大環(huán)境……
我要做一個(gè)支持多模板的網(wǎng)站系統(tǒng),如果,我是php程序員的話,我會(huì)考慮使用smarty。但是,如果我是一個(gè)asp程序員,有什么可以給我用的呢?
不是說(shuō)asp在技術(shù)上做不到這些,而是說(shuō),沒(méi)有人愿意并且能夠去做。
動(dòng)網(wǎng)論壇泛濫說(shuō)明的第二個(gè)問(wèn)題,我覺(jué)得則是安全方面的。
作為一個(gè)微軟的fans,我不愿意說(shuō)微軟平臺(tái)的安全性很差;事實(shí)上,它并不是十分的差。但是,當(dāng)動(dòng)網(wǎng)論壇的漏洞被發(fā)現(xiàn),連一個(gè)大學(xué)都考不上的中學(xué)生憑著幾本所謂的“黑客”雜志便可以將整臺(tái)服務(wù)器的所有數(shù)據(jù)摧毀,那么,即使微軟平臺(tái)的安全性不是十分的差,這些服務(wù)器的管理人員的技術(shù)水平則絕對(duì)是差到了極點(diǎn)!
幸好,asp.net的情況,要比asp好很多了……
至少,我在博客園、博客堂感覺(jué)到的技術(shù)交流氣氛還是很不錯(cuò)的……亦時(shí)不時(shí)有人愿意分享一些技術(shù)上的心得,乃至一些開源的代碼。
當(dāng)然,這兩個(gè)博客網(wǎng)站還只是個(gè)起步,跟老外的source forge,code project等比起來(lái),還是有著天淵之別。
所以,學(xué)電腦是一定要會(huì)英文的。事實(shí)上,學(xué)什么不需要會(huì)英文呢?
國(guó)人似乎對(duì)大學(xué)教育中的四、六級(jí)英文考試怨聲載道。但是,連英文都沒(méi)法學(xué)好的所謂大學(xué)生,難道就真的能夠在學(xué)術(shù)上獲得些什么么?去讀??扑懔?#8230;…
扯遠(yuǎn)了……
本來(lái),我一直都是很抗拒java的……我一直認(rèn)為類似的技術(shù),學(xué)一種就好了,學(xué)太多對(duì)自己是沒(méi)有好處的……我已經(jīng)選擇了.net,那么,我就要對(duì)java說(shuō)不……最近,我是迫不得已才去學(xué)j2ee的……
學(xué)了之后,我才猛然發(fā)現(xiàn),原來(lái)還有這么這么多精彩的事情我之前完全不知道……
首先,類似的技術(shù)不是學(xué)一種就好的……且不論學(xué)太多是否有好處,學(xué)太多是絕對(duì)沒(méi)有壞處的……
事實(shí)上,我慢慢發(fā)現(xiàn),身邊便是有很多精通多種技術(shù)的人……同時(shí)精通C++/J2EE的人有……同時(shí)精通C#/J2ME的人有……注意,我說(shuō)的是精通,真的是精通……
當(dāng)然,這些人是屬于少數(shù)……但是,作為大多數(shù)的普通程序員,對(duì)不同技術(shù)有一定了解,應(yīng)該還是很有必要的……
能夠做到精通,這看各人的選擇與環(huán)境。但是,了解是絕對(duì)有必要的,否則就是井底之蛙。
我一直是做asp.net + ms sql的開發(fā)的,我很習(xí)慣于使用N-Tiers的設(shè)計(jì)模式以及ms sql的儲(chǔ)存過(guò)程,博客風(fēng)使用的存儲(chǔ)過(guò)程已經(jīng)有超過(guò)百條了。
我曾經(jīng)對(duì)于數(shù)據(jù)類的這種的東西很迷惑……“數(shù)據(jù)類”其實(shí)是我自己起的名詞,因?yàn)槲乙郧安恢浪烤故鞘裁?#8230;…學(xué)了J2EE之后,我才知道了……那樣的做法正確的名稱應(yīng)該是ORM-Object Relation Mapping,在j2ee里面,這些類叫做Entity Bean。
初步了解J2EE之后,對(duì)asp/php的感覺(jué)可以用兩個(gè)字來(lái)表達(dá):“玩具”。
J2EE才是用來(lái)做大項(xiàng)目的,asp/php就是給那些只需要一臺(tái)服務(wù)器用的小網(wǎng)站玩的。
沒(méi)有J2EE里面所堅(jiān)持的框架,沒(méi)有EJB,asp/php怎么把一個(gè)網(wǎng)站分布到多臺(tái)服務(wù)器上?
是的,也許會(huì)有辦法,但是,不成系統(tǒng),做出來(lái)的是作坊式的東西,在J2EE剛出來(lái)的時(shí)候,大的項(xiàng)目,便只能使用J2EE了……沒(méi)有別的選擇。
微軟的.Net出來(lái)得太慢了……
在我的心目中,java沒(méi)有什么好的地方……慢……所謂的夸平臺(tái)有的時(shí)候,根本就是個(gè)笑話,特別是在J2ME上面……C/C++才是夸平臺(tái)的……但是,它出來(lái)得即時(shí),市場(chǎng)有這些需求,而在java剛出來(lái)的時(shí)候,除了java,沒(méi)有別的什么東西可以滿足這些需要……java即使再慢,開發(fā)效率再低,你也只能用它……
問(wèn)題是,sun似乎很不爭(zhēng)氣……就好像IBM創(chuàng)造了PC,但是,IBM的PC卻賣的沒(méi)有別人好……
Sun的Application Server,在收費(fèi)的時(shí)候,干不過(guò)BEA的web logic;在免費(fèi)的時(shí)候,又干不過(guò)JBoss……
IBM算是java陣營(yíng)的中流砥柱……不過(guò),最近,我卻在它的網(wǎng)站上面看到這樣的文章:
Ruby on Rails 和 J2EE:兩者能否共存?
連Ruby on Rails這種日本人搞出來(lái)的開源框架都能夠在Java陣營(yíng)中引起軒然大波……IBM都在將它與J2EE相提并論,java還有前途么?
跟不要說(shuō)虎視耽耽的微軟以及它企圖“One runtime to rule them all!”的.Net了……
這是一個(gè)紛亂的戰(zhàn)國(guó)……業(yè)界的巨頭,以及開源的志士們都在爭(zhēng)斗……他們的東西,都有各自的優(yōu)點(diǎn)……
記得我曾經(jīng)看過(guò)一個(gè)MSDN webcast……具體名稱以及下載地址找不到了……不過(guò),印象還是很深刻的……是演示如何在VS.Net 2005里面使用DataGrid,通過(guò)簡(jiǎn)單的鼠標(biāo)拖放以及極少數(shù)的代碼實(shí)現(xiàn)對(duì)一個(gè)數(shù)據(jù)庫(kù)表格的顯示、修改、刪除。
當(dāng)時(shí),我看后覺(jué)得很震撼……原來(lái),一些我曾經(jīng)反復(fù)做過(guò)的事情,可以變得如此簡(jiǎn)單……
最近,我則看了Ruby on Rails的介紹視頻:Show, don‘t tell!
同樣很震撼……
其實(shí),ruby的這個(gè)視頻跟我之前看過(guò)的MSDN webcast沒(méi)有什么不同,它們都企圖向程序員們說(shuō)明使用他們的技術(shù)將會(huì)使對(duì)數(shù)據(jù)庫(kù)進(jìn)行CRUDS((Create)、 讀?。≧ead)、 更新(Update)、 刪除(Delete)和搜索(Search))操作是多么愜意的事情。
他們背后的技術(shù)完全不同;但是,他們所實(shí)現(xiàn)的事情是一樣的;他們想要達(dá)到的目的也是一樣:給自己的技術(shù)打廣告,讓更多的程序員使用他們的技術(shù)。
Well……其實(shí),技術(shù)只是用來(lái)實(shí)現(xiàn)一些實(shí)際的東西而已。這些技術(shù)視頻,其實(shí)純粹的就是廣告,它們相對(duì)于程序員;就跟電視里面“好記星”的廣告相對(duì)于學(xué)生們一樣。
用了VS.Net 2005或者Ruby on Rails的程序員,就好像買了好記星的學(xué)生一樣,一時(shí)間似乎無(wú)比牛X……背單詞從來(lái)沒(méi)有如此輕松過(guò)……CRUDS也突然間簡(jiǎn)單無(wú)比……
問(wèn)題是,背好單詞不代表著學(xué)好英文……會(huì)CRUDS亦不代表著會(huì)做網(wǎng)站……
不知道怎么繼續(xù)了……
對(duì)了,說(shuō)漏了一點(diǎn)……在國(guó)內(nèi)JAVA陣營(yíng)的論壇中,比方說(shuō)Hibernate.org.cn(哎……忘了說(shuō)hibernate了),Jdon等……都有很好的技術(shù)討論氣氛……比博客堂、博客園的氛圍還要好些……而且,討論的技術(shù)深度亦要比.Net的陣營(yíng)的要深……不過(guò),這個(gè)現(xiàn)象,記得在博客園上,曾經(jīng)有過(guò)蠻激烈的討論了……
聯(lián)系客服