语言|几种主流网页开发语言的思考 [转]

在开始学网页开发的时候,我学的是ASP。 后来,慢慢的,总是对php想入非非。
书也买了不少,可惜,偶笨笨的,总是搞不太订php的安装,一看到需要自己手动修改文件、配置,就觉得头大。
相比之下,在windows下,玩ASP则是太简单了,安装一下IIS/PWS,一路next,便可以玩了。
对于很多windows用户,是很不能习惯直接修改ini文件这样的配置方式的,包括我。
或者,可以这么说吧,php的初学者会逼asp的初学者高级那么一点点。玩php的,好歹会懂得如何自己折腾着安装php。
php安装上的折腾过程,可以说是一个学习的过程,也可以说是入门的一个很小很小的门槛吧……偏偏这么个小门槛,有些人,可能永远都不能够、或者是不愿意跨过去。
不过,现在也应该有一些apache/php/mysql的安装包,应该也是一路next就可以玩了。
用jsp的人比较少,偶虽然偶尔也对jsp有点好奇,但是一直没有理由、心情去学习它。
今天,因为自己摆了个大乌龙,终于还是把tomcat 5.5.8当下来,居然,也就一路next之后便可以用jsp了。
而且,好像还是apache tomcat。
well,这也许是说明asp/php/jsp这三种网站开发语言的“门槛”都已经变得一样低了。
asp.net也是差不多低,windows 2003是默认支持asp.net,反倒是asp需要做过设置之后才可以支持。
或者,我应该这样子划分一下,asp跟php(php 4,不讨论php 5)是属于同一个档次,而jsp与asp.net在另一个档次。
asp跟php其实还称不上是语言,他们只是脚本,并且是弱类型的脚本。
他们都是不分数字与字符串不分。
变量a,b的值都是1,那么a+b究竟应该是“11”这个字符串,还是2这个数字?
(我知道asp有&,php有.这两个操作符,但请看下去。)
在asp/php里面,是没有严格的方式对这些情况做很好的控制,有的时候,便会出现这样那样的问题。
我们经常可以看到结尾类似“?id=1”的网址,asp/php的初学者,便经常犯没有验证id是否为数字的错误,给SQL注入攻击大开方便之门。
这一方面是初学者没有经验或者是说懒惰;但另一方面造成这样问题的根源之一是asp/php是弱类型语言的缘故。
asp/php都是脚本,所以,他们背后有着强大的函数库。
很多事情,直接调用相应的函数名称就是。
代码短小、精悍。
对asp/php熟悉了之后,巧妙的将他们的代码插入在html代码中,便可以做出很多精彩的动态网页了。
asp/php与html的代码混和在一起,看起来很乱,但是,熟练的asp/php程序员是不会觉得乱的,他们知道应该在哪里插入些什么,并且这样子的插入、混和代码有的时候是很方便的。
杀鸡焉用牛刀?
不过,企图使用鸡刀杀牛的时候,便很痛苦了。
原因之一,asp/php都是脚本,你没有办法编译他们。
compile error/run time error/warrning等等,都是要等到你在浏览器中查看的页面的时候才会知道。
并且,浏览器给出的错误信息并不是非常有用。
特别是asp,有的时候,便只是一个笼统的500 error,开发者是没有办法很快的知道错误究竟在哪里,只能依靠血与泪换来的经验。
“ASP会使人疯狂”在很长的时间里面是我在各种论坛上的签名,指的便是这个问题。
php相对而言,会比asp好一点,但也只是一点而已。
举个例子吧……
在默认情况下,asp/php里面变量是不需要声明的。
当你第一次调用的时候,便会自动生成。
那么在程序中,你不小心把变量data或者是$data打成了deta或$deta。
当这个错误的变量名隐藏在数以百行计的代码中时,你有可能抓狂至死也没法把它揪出来。
asp与php各有支持者。
个人觉得php好一些。
第一个理由::比容易输入。
我不知道天杀的asp/asp.net/jsp设计者们为什么要选如此难以输入的:。
第二,php默认带的函数库比asp丰富。
至少,它可以处理文件上传。asp便需要组件,或者写无组件上传类了。
对于asp/php这样的脚本来说,函数库的丰富与否,是相当重要的。它决定了什么事情是你可以做的,什么事情是你不可以做的。我是说,不是每个人都会懂得如何写asp的无组件上传类。
我所指的是默认的函数库,大多数asp/php开发者使用的是虚拟主机,他们是没有办法要求服务商给他们在服务器上安装他们需要的组件/extension的。
asp跟php在分别加上了组件/extension的支持后,能作的事情便很多很多了,没法怎么比较了。
第三,默认数据库支持。
asp一般都是使用Access的,而php则是mysql的。
做web development,数据库是至关重要的,它也可以说是决定了你可以做的事情的范围。
一个日浏览量数万IP的网站是没有可能用asp+Access做出来的。Access支持不了这样数量级的访问量。而mysql则没有这样的问题。
用asp+access的网站做大了以后,一定需要转移到别的数据库上,比方说,MS SQL。php+mysql的网站要做大到需要转移到php+Oracle的情况便少见很多很多了;这个转移有可能不会出现,即使出现也会比access到MS SQL的转移迟很多很多。
不是说Access不争气,而是说Access本来就不是作来给网站用的。靠Access吃饭的程序员跟靠asp+access吃饭的程序员是两个不同的概念。
微软的数据库产品MS SQL与Access之间似乎还应该有多一个东西,这个东西应该是MSDE吧……问题是,MSDE出来得晚,并且非常不普及,微软也似乎从来没有怎么推广过MSDE。
如果,现在普遍的是asp+MSDE网站开发而不是asp+Access;我应该会更加喜欢asp一些。
之前写过一篇《几种主流网页开发语言的思考(上)》 ,有一位属名“cai”的朋友回复说:“只能说一句,太肤浅了...”,我现在完全的同意他/她的观点……
不知道他/她有没有机会看到我这篇blog,如果看到的话,希望他/她能够顶句“现在不那么肤浅”之类的话……
【语言|几种主流网页开发语言的思考 [转]】在国内泡网的人们,应该对动网论坛很熟悉,曾经有一段时间,动网论坛几乎就成了中文论坛系统的代言词。
它是一个ASP + Access或MS SQL的论坛系统。我也一直在用,不泡论坛很多年,不过我知道的使用动网的论坛有:狮城论坛 、蓝色河畔 、瑞丽女性 。
这三个论坛,同时在线人数应该都有数千逾万的记录。
动网论坛曾经很流行,很好用,问题是,只要一旦它被发现有什么漏洞,相信所有使用它的网站都会深受其害,相信也包括刚刚列举的这三个论坛。
我想,这说明asp的两个问题。
第一:ASP程序种类比较少,动网论坛从来就不是一个最好的论坛程序,虽然,它很不错,但是也不至于好到全世界都在用它的程度。以致它一有漏洞被发现,中文论坛就天下大乱。动网之所以流行,是因为除了它以外,没有其他太多好用的ASP论坛系统了,特别是中文的。
ASP在国内之所以流行,是因为在国内windows流行。我是说,盗版的windows。而且,大家习惯性的认为asp比较容易学。很多初学者刚学做网页开发的时候,默认的就冲着asp去了,毕竟windows/IIS/PWS/ASP这些东西都来自熟悉的微软。好歹脸熟,学起来“快”。
而在国外,微软往往是臭名昭著的,php才是初学者们的选择。
而且,国内的严重缺乏开源的气氛。国内的程序员,很难有条件去做一些开源的事情。好不容易写出来一套系统,自然是要拿出去卖钱的,怎么可能免费放在网上让全世界的人去用呢?他们需要靠这个来养活自己。而,国外的程序员,并不存在一个这么个生存的问题。
认识两个在汕头的asp程序员,中专毕业而已,他们应该算是很努力, 很上进的中专生了。他们的asp水平是很好很好的,因为,他们的工作要求他们很好的去掌握asp。我的asp是跟其中一个人学的,到现在,我的asp水平也绝对在他们之下。但是,现在的我所知道很多与网页开发相关但是又不是属于asp的知识,他们便不知道了。他们是不会有闲情逸致来写blog的,更不可能去开发一套开源的程序,尽管,他们有这样的能力。
不妨看看:http://en.wikipedia.org/wiki/List_of_wiki_software
这个网页里面搜集了基于不同各种技术的wiki系统,其中使用微软技术(包括asp/asp.net/C++)的只有7个,而基于asp的,更是只有2个。而php base的,则有二十余个!
而且,基于asp的那两个都不是中国人写的。动网的流行,其实是一间很悲哀的事情。国内ASP程序员的悲哀。
我们或许友爱,但是我们缺乏一个互助的大环境……
我要做一个支持多模板的网站系统,如果,我是php程序员的话,我会考虑使用 smarty 。但是,如果我是一个asp程序员,有什么可以给我用的呢?
不是说asp在技术上做不到这些,而是说,没有人愿意并且能够去做。
动网论坛泛滥说明的第二个问题,我觉得则是安全方面的。
作为一个微软的fans,我不愿意说微软平台的安全性很差;事实上,它并不是十分的差。但是,当动网论坛的漏洞被发现,连一个大学都考不上的中学生凭着几本所谓的“黑客”杂志便可以将整台服务器的所有数据摧毁,那么,即使微软平台的安全性不是十分的差,这些服务器的管理人员的技术水平则绝对是差到了极点!
幸好,asp.net的情况,要比asp好很多了……
至少,我在博客园 、博客堂感觉到的技术交流气氛还是很不错的……亦时不时有人愿意分享一些技术上的心得,乃至一些开源的代码。
当然,这两个博客网站还只是个起步,跟老外的 source forge , code project 等比起来,还是有着天渊之别。
所以,学电脑是一定要会英文的。事实上,学什么不需要会英文呢?
国人似乎对大学教育中的四、六级英文考试怨声载道。但是,连英文都没法学好的所谓大学生,难道就真的能够在学术上获得些什么么?去读专科算了……
扯远了……
本来,我一直都是很抗拒java的……我一直认为类似的技术,学一种就好了,学太多对自己是没有好处的……我已经选择了.net,那么,我就要对java说不……最近,我是迫不得已才去学j2ee的……
学了之后,我才猛然发现,原来还有这么这么多精彩的事情我之前完全不知道……
首先,类似的技术不是学一种就好的……且不论学太多是否有好处,学太多是绝对没有坏处的……
事实上,我慢慢发现,身边便是有很多精通多种技术的人……同时精通C++/J2EE的人有……同时精通C#/J2ME的人有……注意,我说的是精通,真的是精通……
当然,这些人是属于少数……但是,作为大多数的普通程序员,对不同技术有一定了解,应该还是很有必要的……
能够做到精通,这看各人的选择与环境。但是,了解是绝对有必要的,否则就是井底之蛙。
我一直是做asp.net + ms sql的开发的,我很习惯于使用N-Tiers的设计模式以及ms sql的储存过程,博客风使用的存储过程已经有超过百条了。
我曾经对于数据类的这种的东西很迷惑 ……“数据类”其实是我自己起的名词,因为我以前不知道它究竟是什么……学了J2EE之后,我才知道了……那样的做法正确的名称应该是ORM-Object Relation Mapping,在j2ee里面,这些类叫做Entity Bean。
初步了解J2EE之后,对asp/php的感觉可以用两个字来表达:“玩具”。
J2EE才是用来做大项目的,asp/php就是给那些只需要一台服务器用的小网站玩的。
没有J2EE里面所坚持的框架,没有EJB,asp/php怎么把一个网站分布到多台服务器上?
是的,也许会有办法,但是,不成系统,做出来的是作坊式的东西,在J2EE刚出来的时候,大的项目,便只能使用J2EE了……没有别的选择。
微软的.Net出来得太慢了……
在我的心目中,java没有什么好的地方……慢……所谓的夸平台有的时候,根本就是个笑话,特别是在J2ME上面……C/C++才是夸平台的……但是,它出来得即时,市场有这些需求,而在java刚出来的时候,除了java,没有别的什么东西可以满足这些需要……java即使再慢,开发效率再低,你也只能用它……
问题是,sun似乎很不争气……就好像IBM创造了PC,但是,IBM的PC却卖的没有别人好……
Sun的Application Server,在收费的时候,干不过BEA的web logic;在免费的时候,又干不过JBoss……
IBM算是java阵营的中流砥柱……不过,最近,我却在它的网站上面看到这样的文章:
Ruby on Rails 和 J2EE:两者能否共存?
连Ruby on Rails这种日本人搞出来的开源框架都能够在Java阵营中引起轩然大波……IBM都在将它与J2EE相提并论,java还有前途么?
跟不要说虎视耽耽的微软以及它企图“ One runtime to rule them all! ”的.Net了……
这是一个纷乱的战国……业界的巨头,以及开源的志士们都在争斗……他们的东西,都有各自的优点……
记得我曾经看过一个MSDN webcast……具体名称以及下载地址找不到了……不过,印象还是很深刻的……是演示如何在VS.Net 2005里面使用DataGrid,通过简单的鼠标拖放以及极少数的代码实现对一个数据库表格的显示、修改、删除。
当时,我看后觉得很震撼……原来,一些我曾经反复做过的事情,可以变得如此简单……
最近,我则看了Ruby on Rails的介绍视频:Show, don't tell!
同样很震撼……
其实,ruby的这个视频跟我之前看过的MSDN webcast没有什么不同,它们都企图向程序员们说明使用他们的技术将会使对数据库进行CRUDS( (Create)、 读取(Read)、 更新(Update)、 删除(Delete)和搜索(Search) )操作是多么惬意的事情。
他们背后的技术完全不同;但是,他们所实现的事情是一样的;他们想要达到的目的也是一样:给自己的技术打广告,让更多的程序员使用他们的技术。
Well……其实,技术只是用来实现一些实际的东西而已。这些技术视频,其实纯粹的就是广告,它们相对于程序员;就跟电视里面 “好记星”的广告 相对于学生们一样。
用了VS.Net 2005或者Ruby on Rails的程序员,就好像买了好记星的学生一样,一时间似乎无比牛X……背单词从来没有如此轻松过……CRUDS也突然间简单无比……
问题是,背好单词不代表着学好英文……会CRUDS亦不代表着会做网站……
不知道怎么继续了……
对了,说漏了一点……在国内JAVA阵营的论坛中,比方说 Hibernate.org.cn (哎……忘了说hibernate了),Jdon等……都有很好的技术讨论气氛……比博客堂、博客园的氛围还要好些……而且,讨论的技术深度亦要比.Net的阵营的要深……不过,这个现象,记得在博客园上,曾经有过蛮激烈的讨论了……

    推荐阅读