网络编程那些事


引言
经常有人问我同样的问题:动态网站是如何工作的,开发它都需要掌握哪些开发技术,使用哪一门脚本语言最合适等。希望借此机会就这些问题做出回答,使大家对网络,对网络编程,网站建设有一个大致的了解。

1.网络编程的起源与意义

短短数年之间,Web已成为我们生活中非常熟悉的东西,没有它,生活简直难以想象。 随着对浏览器及书签的熟悉,我们对于Web的历史也略知一二。

从默默无闻到一鸣惊人

出现:蒂姆·伯纳斯-李爵士在瑞士日内瓦附近的欧洲粒子物理研究所开发出了Web。一个关键的日子是1991年的8月6日。在这一天,刚刚具备雏形的www计算机代码的链接方式被放进了alt.超文本讨论组,便得其他人可以下载和把玩。 就是在这一天,Web走向了世界。        

90年代初期,用一种简单的方法去获取储存在多台计算机上的信息,听起来很吸引人,保罗·昆斯这么说。保罗·昆斯是斯坦福线性加速器中心(Slac)的正式科学家,他于1991年12月建立起了欧洲之外的第一个Web服务器。 

发展:当1993年4月,互联网历史上第一个获普遍使用的网页浏览器Mosaic出现时,整个万维网工程有了较大的进展。它是由美国伊利诺伊州的伊利诺伊大学厄巴纳的NCSA组织发表的。在当时人气爆发的大受欢迎。Mosaic的出现,算是点燃了后期互联网热潮的火种之一。Mosaic浏览器如此成功,以至于它为Web建立的许多规范,时至今日仍在使用,格洛夫如是说。 例如,他说,在Web最初的概念中,没有设置书签(bookmarks)和收藏夹(favourites)这两个功能,二者的使用都从Mosaic开始。

表达你自己

初期人们开始使用网页作为自我表达的一种方式,而这种方式却是其他技术不容许的。维埃尔迈提说Web代码容错率很高,从而鼓励人们摆弄它。"作为个人而非公司实体,把网址填在这个独特的小地方,你就可以把页面当作自己的东西存放在那儿。"他说。 每次人们对Web兴趣的高涨,都是由此类表达工具的出现驱动的,或者是由比以往更方便的新型工具驱动的,许多早期的网页即使在今天仍然可以查看。

其持久性可以长达几十年

1994年后期,Web的通信量终于超过了Gopher(是Internet上一个非常有名的信息查找系统),并且一直没有回头。目前网址数差不多有1亿,而许多人认为Web与网络难分彼此。然而,葛洛夫说,只是到了今天Web才达到先驱们所预见的景象。 当初的构想是造出一种媒体,供人们阅读并向其提交信息。

随着新的工具,例如照片共享站点、社交网络、博客与维基等等不断涌现,Web昔日的美好愿望正在变为现实。Web已经遍及全球。

现在的web前沿

web1.0是指具有媒体性质的互联网页面表现方式,高度聚集而不产生用户交互,也无法对内容进行数据严密操作的网站模式,BBS、门户网站等是代表。在互联网中是静止的,单向、被动的,就像雅虎、新浪、搜狐、网易初建期,用户是被动的接受内容.时间2003年以前。
   web2.0时代,用户就有了更多的主动权和话语权,可以直接参与制作和发布内容,如可
以把写的文章放到博客上,把录制的视频放到播客上,不再是单向,而是双向,但是Web2.0的“双向”仅仅是在服务提供网站的站内;2.0值得是交互,就是社区博客类的。

web3.0需要充分利用互联网技术,综合1和2的优劣,解构1,做实2,理解3;web1.0的媒体聚合效应和web2.0用户体验更好的结合才是下一个革命性应用的方向。2006年提出的这个概念。

1.网站内的信息可以直接和其他网站相关信息进行交互和倒腾,能通过第三方信息平台同时对多家网站的信息进行整合使用。

2:用户在互联网上拥有自己的数据,并能在不同网站上使用。

3:完全基于WEB,用浏览器即可以实现复杂的系统程序才具有的功能。

2. C/S与B/S体系结构

基本介绍

C/S结构,随着PC机的诞生与应用,计算模式从集中式(数据和应用程序在一台主机上)转向了分布式(数据和应用程序跨越多个节点机),尤为典型的是C/S结构(Client/Server的简称,客户机/服务器模式)。两层结构C/S模式,在上个世纪八十年代及九十年代初得到了大量应用,最直接的原因是可视化开发工具的推广。

C/S是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle或 SQL Server。客户端需要安装专用的客户端软件。早期的软件系统多以此作为首选设计标准。

比如一些聊天软件,是c/s结构的,因为满足这种软件的可维护和升级性,满足不同的人群的个性和喜好,自己制定自己的界面,安装自己喜欢的插件。

在经历C/S的快速发展之后,它开始向三层结构发展。近来,随着网络技术不断发展,尤其是基于Web的信息发布和检索技术、 Java技术以及网络分布式对象技术的飞速发展,导致了很多应用系统的体系结构从C/S结构向更加灵活的多级分布结构演变,使得软件系统的网络体系结构跨入一个新阶段,即B/S体系结构(Browser/Server的简称,浏览器/服务器模式)

B/S模式,客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器安装Oracle、Sybase、Informix或 SQLServer等数据库。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。

浏览器通过Web Server 同数据库进行数据交互。形成所谓3-tier结构。B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript…)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。随着Windows 98 2000 XP/Windows7将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构。

B/S技术特点

WEB编程一般都需要有服务器的支持,据有瘦客户端的优点,客户端只要需要一个能上网的浏览器,就可以来浏览程序,而不需要安装任何的其他然间,这样就解决了C/S需要在客户端安装软件,在更新C/S模式的应用软件的时候常常需要根据不同机器的环境来配置升级,这样很麻烦,所以WEB编程即B/S的模式将是以后的发展方向。

 

下图分析两种体系结构

 

3. 静态,动态网站介绍。

       有人问网站是什么啊?网站就是软件,所以建站也是软件开发中的一种。越来越花俏的个人网站频繁出现,容易让人产生网站制作很简单的理解。通过下面的分析,你将会知道一个商业网站的艰苦卓绝。

       网站的功能性现在已经彻底地变革,我们经历过一种巨大的转变,就是网站从“静态网站”的展示转向“动态内容”的传递。

静态网站:静态网站的用户只是网站内容的浏览者。这种网站内容固定,独立,哪怕一个字符,一个连接或一张图片的修改,都必须通过制作工具重新制作,上传到服务器。在网站制作,维护和更新等方面工作量比较大,而且用户只具有浏览的功能。

对一个静态站点来说,从客户端浏览器向服务器端的Web Server发出请求到显示出所请求的页面,大致经过了一下几个步骤:

       例如:hao123,长风网站。

       开发语言也是最基本的HTML语言。

动态网站:并不是说放几个动态图片gif或flash文件就是动态了,区别静态网站与动态网站的最基本的方法是看它是否采用了数据库的开发模式。

对一个动态站点来说,从客户端浏览器向服务器端的Web Server发出请求到显示出所请求的数据(页面),大致经过了一下几个步骤:

  其差别在于:静态网站中网页代码直接存放在网页文件(.html)中,是事先编辑好不可变的;动态网站中网页代码是脚本程序执行输出的结果,是由程序根据不同的条件动态生成的,是可变的。

4. 网络编程所需web构件

大型的网站就属于WEB编程,现在流行的OA系统,CRM系统,HR系统等很多都应用了WEB编程技术。

代码,开发工具,数据库,服务器架设和网页设计这5部分你都要接触

1.代码分静态代码和动态代码

静态代码是服务器不解析直接发送给客户端的部分,用做布局效果,一般不用于数据库操作。静态代码分html,javascript,css等,其中html语言是基础,要学网络编程就先学html语言.javascript用于实现某些特效,css是样式语言.这3个语言组合起来,可以设计出美妙的网页效果。

动态代码是服务器需要解析的部分,用作数据库连接操作等.有NET,PHP,JSP,ASP这几种语言你只用先学一种就可.如果是想快速入门,建议先学asp,然后可以学习php或jsp等。

2.开发工具有很多种,网络3剑客是大家最常用的工具之一,其中dw是开发代码的,fw是做图的.flash是做动画的.开发不通的语言所使用的开发工具是不一样的。Asp使用Dreamweav就可以了,PHP一般我们用 Zend Studio forEclipse,JSP使用MyEclipse6.5,NET使用Microsoft Visual Studio 2010。

3.数据库要结合你学的动态语言来选择,asp系列的,你可以使用access,大型点使用MySQL等。

Asp+access, php+mySQL是很好的搭档.

4.服务器架设也是结合你学的动态语言的,windows下安装iis很方便,iis可以运行asp,安装.net框架后能运行,这两者架设相对简单,入门学asp有这些就够用了。而php一般安装apache服务器,jsp一般安装tomcat服务器.只有架设好服务器,才能浏览动态语言编写的程序.

5. 网页设计。如何生成漂亮的网页界面,就是靠它了。Html+div+css虽然是编程,但是总会涉及到网页设计部分,还是要去学学怎么简单的作图和动画。一般这是美工的事情了。

5. 网络编程开发平台:

仅使用html代码编写web页面的年代已经一去不复返。随着web技术的发展,为了创建有效、吸引人的web页面,开发人员需要学习很多技术。

目前流行的WEB编程语言有ASP.NET,JSP,PHP,ASP等
数据库技术:MYSQL,MSSQL,ORACLE,DB2等数据库
AJAX技术:AJAX技术主要是来改变客户体验的,有别与传统的WEB编程模式。
脚本技术:VBScript和Javascript技术,Javascript技术应用的比较广。

学习编程语言之前,必须先搭建并熟悉开发环境。正所谓"工欲善其事,必先利其器"。

下面开始逐个解读程序语言

5.1 强大的ASP帝国

在1994年到2000年之间,ASP技术已经成为微软推展Windows NT 4.0平台的关键技术之一,数以万计的ASP网站也是这个时候开始如雨后春笋般的出现在网络上。由于它的简单以及高度客制化的能力,也是它能迅速窜起的原因之一。

ASP身为微软早期的动态网页编程语言以其简单、易学易用的特点吸引了广大网页编程爱好者的青睐,是三种语言中使用最广、影响力最深、从业者最多的一门语言,ASP+ACCESS几乎占据了目前底端WEB开发的主流市场,即使是一些大型的网站也从来没有放弃过用ASP来实现WEB应用程序的开发。同时,ASP与MS SQLSERVER同为微软嫡系产品,它们的结合已经成为动态网页开发的一股新势力,被越来越多地应用于企业级的网站程序开发当中。

开发架构:Windows Server+IIS+access+ asp的组合。所有的组成部分都是基于微软的产品。优点:兼容性好,安装和使用比较方便,不需要太多的配置。简单易学,拥有很大的用户群,也有大量的学习文档。缺点:由于Windows操作系统本身存在的问题,ASP的安全性,稳定性,跨平台性都会大大折扣,并且无法实现跨操作系统的应用,也不能实现企业级应用的功能,不适合开发大型系统。

ASP的应用:

ASP是Microsoft开发的动态网页语言,也继承了微软产品的一贯传统??只能运行于微软的服务器产品,IIS(InternetInformation Server) (windows NT)和PWS(Personal Web Server)(windows 98)上。Unix下也有ChiliSoft的插件来支持ASP,但是ASP本身的功能有限,必须通过ASP+COM的组合来扩充,Unix下的COM实现起来非常困难。

ASP的前景:

ASP不是目前最好的动态网页编程语言但绝对是目前应用最广的一门编程语言,在ASP的基础上,微软构架了ASP.NET,可以说ASP.NET延续了ASP的许多特点但又在很多方面弥补了ASP的不足,ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++ , VB, JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C#(读c sharp),它可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。

5.2 崛起的ASP.NET :

asp.net的前身ASP技术.目前的.NET采用C#作为后台开发技术,C# 是信息系统开发的重要工具。60-70%的C#用于信息系统开发。C#是微软公司发布的一种面向对象的、运行于.NETFramework之上的高级程序设计语言。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显 的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。

开发架构:Windows Server+IIS+SQL Server+ ASP.net的组合。所有的组成部分都是基于微软的产品。优点:兼容性好,安装和使用比较方便,不需要太多的配置。简单易学,拥有很大的用户群,也有大量的学习文档。还有就是开发工具强大,多样,易用,简单,人性化。缺点:由于Windows操作系统本身存在的问题,ASPNET的安全性,稳定性,跨平台性都会大大折扣,并且无法实现跨操作系统的应用,也不能实现企业级应用的功能,不适合开发大型系统。而且Windows和SQLSever软件的价格也不低,平台建设成本比较高。

C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。

C#是面向对象的编程语言。它使得程序员可以快速地编写各种基于MICROSOFT .NET平台的应用程序,MICROSOFT .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。  

C#使得C++程序员可以高效的开发程序,且因可调用由 C/C++ 编写的本机原生函数,因此绝不损失C/C++原有的强大的功能。因为这种继承关系,C#与C/C++具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。

5.3 神速的JSP帝国:

Java有几个意义,第一点,它是信息系统开发的主流技术,第二点,它是Android开发的主流技术。Java这个指标,代表着信息系统开发和移动开发。这里有个拆分的问题,按我的直觉估计(可讨论),它的80%作为信息系统开发的指标,10%作为移动开发的指标,10%作为其它开发的指标。Java主要还是作为信息系统开发的工具。

JSP的内置脚本语言是基于Java编程语言的,而且所有的JSP页面都被编译成为Java Servlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理和安全性。作为Java平台的一部分,JSP拥有Java编程语言“一次编写,各处运行”的特点。随着越来越多的供应商将JSP支持添加到他们的产品中,您可以使用自己所选择的服务器和工具,更改工具或服务器并不影响当前的应用。

      JSP (Java Server Pages)是指:

      在HTML中嵌入Java脚本代码

      由应用服务器中的JSP引擎来编译和执行嵌入的Java脚本代码

      然后将生成的整个页面信息返回给客户端

开发架构:LIUNX +Tomcat+MySQL+ JSP的组合。所有的组成部分都是基于开源的产品。优点:兼容性好,安装和使用比较复杂,需要太多的配置。简单但不易学,拥有较大的学习群,也有大量的英文学习文档。还有就是开发工具更强大,多样。所有的软件都是免费的,网上都可以下载到。缺点开发速度慢,配置复杂,英文要好。软件更新速度太快。

  

  使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来生成页面上的动态内容。生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。如果核心逻辑被封装在标识和Beans中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。 

  JSP的应用:

  JSP同PHP3类似,几乎可以运行于所有平台。如Win NT,Linux,Unix. NT下IIS通过一个插件,例如JRUN或者ServletExec,就能支持JSP。著名的Web服务器Apache已经能够支持JSP。由于Apache广泛应用在NT、Unix和Linux上,因此JSP有更广泛的运行平台。虽然现在NT操作系统占了很大的市场份额,但是在服务器方面Unix的优势仍然很大,而新崛起的Linux更是来势不小。从一个平台移植到另外一个平台,JSP和JavaBean甚至不用重新编译,因为Java字节码都是标准的与平台无关的。

  JSP的前景:

由于JSP具有JAVA开发语言的许多特点,其强大的应用程序开发能力和快速执行能力在这个讲究效率的时代实际上被越来越多的人所关注,相信JSP将会随着它的老大哥JAVA一道风起云涌,成为动态网页编程语言中一个举足轻重的角色。

5.4 开放的PHP帝国

PHP是一种跨平台的服务器端的嵌入式脚本语言。它大量地借用C,Java和Perl语言的语法, 并耦合PHP自己的特性,使WEB开发者能够快速地写出动态生成页面。它支持目前绝大多数数据库。还有一点,PHP是完全免费的,不用花钱,你可以从PHP官方站点(http: //www.php.net)自由下载。而且你可以不受限制地获得源码,甚至可以从中加进你自己需要的特色。

开发架构:LAMP==Liunx+Apache+MySQL+PHP的组合。Liunx操作系统,网站服务器Apache,数据库MySQL和PHP程序模块的连接,形成一个网站数据库的开发平台,是开源免费的自由软件,与J2EE架构和ASP.NET架构形成了三足鼎立的竞争态势,是较受欢迎的开源软件网站开发平台.LAMP组合具有简易性,低成本,高安全性,开发速度快和执行灵活等特点,使得其在全球发展速度较快,应用较广,越来越多的企业将平台架构设在LAMP之上.

  PHP的特点:

  1、强大的数据处理能力

  PHP可以编译成具有与许多数据库相连接的函数。PHP与MySQL是现在绝佳的组合。你还可以自己编写外围的函数去间接存取数据库。通过这样的途径当你更换使用的数据库时,可以轻松地更改编码以适应这样的变化。PHPLIB就是最常用的可以提供一般事务需要的一系列基库。但PHP提供的数据库接口支持彼此不统一,比如对Oracle, MySQL,Sybase的接口,彼此都不一样。这也是PHP的一个弱点。

  2、面向对象的编程构架

  PHP提供了类和对象。基于web的编程工作非常需要面向对象编程能力。PHP支持构造器、提取类等。

  PHP的应用:

  PHP可在Windows,Unix,Linux的Web服务器上正常运行,还支持IIS,Apache等通用Web服务器,用户更换平台时,无需变换PHP代码,可即拿即用。

  PHP的前景:

PHP的特点决定了PHP在动态网页编程语言中的位置,但在这个细分的时代,集团式的大型网站开发并没有显现其被人们接受的深刻性,相反,细分时代给了小型WEB应用程序开发一片广阔的天地,在这个舞台上,相信PHP会越走越好。

6.工作流程

现在特征已经弄清楚了,我们就可以开始定义开发一个web应用程序的整个过程了。当然,这依赖于工程的大小,过程中的某些步骤可能很小,在你的脑海里就能完成这种工作,但把事情整个的了解一下总是有好处的。同时还有一点很重要的你要明白,这篇文章并不会对每个步骤进行深层次的描述。

  步骤一:分析

   开发一个web应用的第一步是分析你的需求。你此时应该定义出一个尽量周全的你的应用应该提供的功能清单。如果是你为一个客户做这些工作,你需要明白他们想要什么(要确保你们对方都知道对方在说些什么)。从你们的讨论中,你能总结出需求和软件规格。你即使是为自己开发,我也建议你把希望这个web应用能够做的功能写下来。

  步骤二:设计

  一旦你弄清楚了这个web应用需要做哪些事情, 你就可以开始设计了。这个步骤通常会反反复复进行很多次,每一次都把设计细化一些。你第一要做的是画出页面流程图(画在纸上,或使用软件工具,凭各自所好 吧。我喜欢用纸,这样我可以做更快速的改变)。页面流程图通常是很抽象的黑白绘画,画出你将要实现的web应用的样子(你可以加一些色彩,但尽量保持简单)。

   这个步骤能够让你知道你的应用最终会是个什么样子。跟37signals倡导的相反,我建议使用一些词语描述,适度细化。当我想到一个很好的想法时,或想到事情该如何做时,我会把它标注到纸上(例如,当点击这个按钮时应该使另外一个元素改变或隐藏,我会把这写在流程图上)。

  当你对做出的草图满意后,你可以开始制作实体模型了。实体模型仍然是些图案,但有色彩和细节。最终的实体模型看起来应该像你将要实现的web应用的一个截屏图。如果你为一个客户开发,他会看看这些东西,并给你他的认可。然而,很多人都喜欢跳过这一步(大多数都是非设计人员),他们喜欢直接奔向网页原型。

   原型是用HTML开发出来,使用CSS渲染(有时也是有Javascript)。页面布局要做出来,链接能够点,颜色,字体,字体大小要设定好(如果你 做了实体模型,这个会很容易)。这一步非常的重要,因为这里所有的东西都能用于你最终的应用中。如果允许的话,在你的原型上做一些可用性测试,从长期的效果来看,这能使你避免大量的失误。

  在这个步骤的最后,你基本上就知道了你的web应用是如何组织到一起的了。登录页面有些什么,用户如何从主页转向到各个页面。

  步骤三:实现 选择一个框架

  现在我们已经知道了要去开发什么东西,那就要把它做出来。这一部分的工作很多,你大部分的时间都要花在这个上面。你第一个要做的决定是如何着手,采用什么样的技术,什么框架。你有很多选择的余地,你需要选出一个适合你的。下面是一个最常用的框架的列表:

ASP.NET

PHP + Zend Framework. Zend Framework 是一个面向对象的,由PHP5写成的框架。其基于一个简洁和友好的许可证协议,并基于了一个经过了相当严酷测试的代码库开发而来。这是一个松散的几乎没有耦合架构设计,你可以方便地把其和其它框架混合使用。

J2EE:

Struts2+Spring+Hibernate是J2EE的最新流行框架.

  没有一个明确的标准说哪个框架最好。它们都各有不同,每个都有自己的长处。最重要的是你要知道它们任何一个都能让你开发出好用的web应用。

  开发

   一旦你知道了如何去开发,那就要甩开臂膀开干了。这个开发工作可以看作有很多块,但说到底,这都是标准的编程活动了。在后台,你要创建类,对象,服务,过程,以及持久层来把这些对象保存到数据库中。后台是整个应用的核心,对任何应用来说,它跟普通的编程没有什么区别。接着是前台的开发,你现在编写的代码才是真正给用户使用的操作界面。你把后台的程序和原型界面集成到一起,把系统各部分集成到一起。你还可以把你在开发过程中想到的一些很炫的小功能用 JavaScript实现。

  再说一次,有很多种途径可以实现后台程序。建议你去读一读跟你选择的框架相关的资料,弄清楚如何实现这一部分的工作。通常,这些知识会跟面向对象编程有关,但有些框架正在慢慢的向领域驱动设计发展。

  步骤四:打磨抛光

   现在应用程序已经开发出来,各个独立的模块也集成到了一起。你需要通过测试来确保你在步骤一中定义的需求和软件规格是否被实现(这个问题在你开发的整个 过程中都要记在脑中)。你要确保那些愚蠢的用户不能通过试图做一些你还没有实现的操作而把你的应用弄坏(参考白盒和黑盒测试)。你同时还要确保你的程序能 够在各种浏览器里(希望不是IE6)都能正确的运行。

  现在也是你做一些小的调整,改进你的应用程序给人的感觉的时候,让它趋于完美。

  步骤五:发布和后续工作

   这最后一步(但不是就此完结)是发布你的应用,让用户能够真正使用它(如果这个应用是个公众开发的应用,别忘了做新闻宣传)。如果你愿意,先发布一个 Beta版,这样只有一小部分用户能够发现你的应用里的大问题(因为你的程序里肯定会有bug),他们会帮助你改进程序的质量。不要忙着增加功能,要专注 于把你目前的程序变的稳固。

  当经过了beta阶段,你的程序已经变得十分的稳固,听取用户反馈的意见,自己试用一下自己的应用,你可以 开始思考如何使应用变的更好。找出不和谐的地方,消除掉。以后每次的迭代都要经过上面所说的五个步骤,但就像我最初说的,你现在已经有了一个可以运行的应用程序,你很容易直接在心里完成这些步骤,直接奔向在代码里测试你的功能。

  恭喜,你已经自豪的成为一个web应用程序的作者了。      

7.额外交流

       当前的流行并不能决定两、三年后的流行,更重要的是他们的发展趋势。使用php、java或c#的人固然比使用python的人多,但是每天都有许多人正 在从这些流行的语言转向python,而不见得有python程序员转去搞java(转php的倒是有,不过多半是为了和别人合作而已)。因此可见,那些最聪明的程序员发现了更好的编程语言,而那些最好的创业项目往往也会选择这些最聪明的人,如果你依然选择java或c#,那么你就比较难得到高手的指点, 这对于你个人的发展是有很大影响的。

1.我该学什么语言?

ASP、 ASP.NET、PHP、JAVA……面对各种各样的WEB编程语言,你是不是被弄昏了头脑呢?该学什么?“学JAVA吧!”许多高手说。并且还举了很有 说服力的例子:“学ASP只要两个月,学JAVA要一年,如果先学ASP再学JAVA,所用时间仍然是一年,但学了JAVA再学ASP,所用时间将不到两 个月。”这句话没错,的确是这样的。但是刚入门的初学者都能学JAVA?把每个人都看得这么高?一些初学者把JAVA当成自己的入门语言,结果能学到最后 的只有少部分人!我们不能奢望所有初学者都是在十分熟悉网站制作的情况下才开始接触WEB编程的,实际上,很多人就是在学习WEB编程的过程中逐渐深入了 解网站制作的,要是所有人都选择JAVA作为“入门级语言”…… 初学者应该根据自身情况来选择语言,如果你刚开始接触网站制作,应该去学ASP、PHP,因为ASP、PHP很好学,基础最重要;当然,还有 ASP.NET,它是微软力推的产品。除非你已经做了很多年的网站对此有些了解,否则别急着学JAVA,你会因此神经衰弱的。

2.切忌同时学习多种语言。

有没有试过同时学英语俄语德语波兰语法语日语?最后八成会变成鸭子。学WEB编程也一样,如果你才高八斗机敏过人玉树临风,那么随便你同时学ASP、ASP.NET、 PHP、JAVA等等等等,没人会拦你,但如果是初学者呢?去做鸭子吧。同时学这么多种语言还不如踏踏实实学好学精一门适合自己的语言!初学者往往什么语言都要去了解一下,更有甚者连一些概念都不熟悉就什么都学,面对他们,我都要自愧不如了,但我还是要劝他们一句:一样一样的学,没有人能一步登天!别以为同时学多种语言就很“光彩”,当心最后仍是七窍通了六窍。 无论学哪门语言,都要把它学好再想其它,别“花心”,如果你是学ASP的,至少要熟悉ASP WEB编程并且能熟练使用它的时候,你才应该去学其它语言,学JAVA、ASP.NET等更要注意,否则最后只能“无所不学,而一无所知”,只学一种语言 时遇到困难还是好处理的,但是同时学这么多种,你保证都不遇上问题?小心几种语言的问题一起来压你!

3.要有主见。

许多初学者爱跟着潮流走,外面流行什么他就跟着做什么(追“猩”族?)今天流行ASP他就学ASP,明天流行PHP他就把ASP忘了,再到ASP.NET、 JAVA人云亦云,随波逐流,“专家”说什么语言好他就投奔什么语言,“走在科技前沿”,但是到最后又能学到什么?不仅丢了西瓜,连个绿豆都没拣着。这年头“世界变化快”,我知道,但是它怎么变就随它去,总不见得把你变成今天张三明天李四吧?“月亮走,我也走”的思想要不得,别管外面流行什么,如果不是大众需要,你只管学好你该学的语言就行。

4.别看轻其他语言。

经常有人说“XX语言差,学了没前途!”要是让我评价一句,恐 怕是你没前途吧?你凭什么说它差?没有一种语言是十全十美的,即使它再“差”,只要它还没有被外界宣布完全淘汰,它就有存在的理由!曾经有人对我说:“我的老师经常教育我,ASP已经快淘汰了,所以我要把以前学过的忘掉。”且不说这家伙随波逐流,单是他老师就够酷了,呵呵,不知道他的老师是圈子里的哪位资深专家呢?只怕是个三角猫吧!ASP虽然存在一些局限性,但它的语法很好理解,数据库WEB编程很方便,也能完成一些复杂工作,这就叫差?多少个优秀程序 不是用ASP这个“没前途”的语言写出来的?多少个程序员不用ASP?再说动网不是也用ASP吗?天涯不是也用ASP吗?你看见他们没前途了吗?

5.不可缺少的教材。

虽然从古到今一直有“尽信书,宁可无书”的遗训,但是我们可别因此“无书”哦!也许你天资聪明,自学电脑不用教材,但是自学电脑可以凭现象和经验,学WEB编程能凭空摸索? 连变量、过程等概念都不知道,还能看懂for(i=1;i<50;i++)的意思?要学WEB编程绝对不能少教材资料,如果连这都不舍得买,那么你 最好别学了。还有一点,关于网络教程,我个人认为它太过于零散了,即使是一本完整的电子书也尽量不要看(除非实在买不到),难道你要一边写代码一边 ALT+TAB?我宁愿慢慢翻一本书,也不愿盯着屏幕看半天!现在市面上的教材参差不齐,光买一本是明显不够的,基础的、高级的都要买回来慢慢研究,至少也要3本吧?市价低于20元的书最好不要考虑了,看看它的厚度!书本的厚度通常与含金量是成正比的(厚厚一本垃圾?你衰),最好选一些比较常见的出版社出版的书籍,尽量别买少见的,质量没得保证!我的一个同学就买了一本20元的垃圾,整本书连个完整的例程都没有,还大言不惭“基本入门”,误人子弟啊!现在 那朋友看的是我借给他的中国水利水电出版社出版的《疯狂站长之ASP》。

一个小窍门:如果你不知道该买什么书,最好找个高手一起去,让他帮你选本好的,如果你身边没有高手,那就找厚点的!或者书名带有“疑难解答”或“事列教学的”,这些书质量一般都可以.

6.关于英语。

由于大多数语言的母语都是英语,这就导致了一些初学者望而却步,但是英语对于WEB编程很重要吗?实际上WEB编程需要的英语很少,都是比较基础的词汇语法,它和一般的英语不一 样,即使你连一篇英语文章都看不下去,但只要有点英语基础的,你就不用怕“不会”!(当然前提是一些基础词汇如If、For、Next、While、 include等必须看得懂,否则先去补习一点英语再说)就算英语再好,没学过WEB编程也不会看得懂程序源码,难道没学过WEB编程能知道 StrComp等于String Compare?学WEB编程与英语水平无关,我们学的是WEB编程而不是英语!

7.WEB编程大忌——修改代码。

ASP 最大的方便之处是它的代码到处都有,并且是公开的,为初学者提供了很好的学习机会,但是一些初学者却满足于此,做一个程序用了一大堆别人的程序,加上一点微不足道的代码,就以为学会了WEB编程,却不知这样根本没有入门!程序是别人写的,自己改改名字或者其他就变成自己的了!会用改代码又有什么了不起?如果在给别人做东西,叫你加上某某功能你会吗?复杂点的代码会写吗?能改动网的论坛吗?做一个小程序,只会用REQUEST方法,却不知道最简单 REQUEST.FROM和REQUEST.QUERYSTRING的区别,而且把程序改得乱七八糟,让你都看不懂哪是哪,加重程序开销,更要命的是还会弄得程序出现错误,把IIS都弄死了,任何一个错误都会让你的程序无法运行,许多初学者搞不清XP系统下为什么不能访问ACCESS数据库,更甚至传不了 文件都不知道。在此提醒各位一句:写程序不是COPY和修改!别以为随便到网上下一个系统,加几个自己的几行HTML代码就学会了WEB编程,你根本连WEB编程的门槛都没入!

8.循序渐进。

许多初学者刚开始接触 WEB编程就急着写一些较高级的代码,却忽略了最重要的基础,他们也许热情高涨,也许有心学WEB编程,但是却没能静下心学WEB编程基础,这将导致付出 时间多而收获少的后果,举个例子吧,你刚入门,连一个简单的程序都不会做,就算我给你个网上流行的论坛系统的全部源代码,你又能看懂多少?学习要一步一步来,没有扎实的基础,谁都不可能写出好程序。当然,学习的方法也不能不提,尽管学ASP、PHP不需要专门学Basic、C等,但是学ASP.NET就不 能不学C#了,否则你会前进得很辛苦!别信什么“速成班”、“24小时学会XXX”,那种是喂猪的!经验要靠练习来积累,不能只学理论,WEB编程不是让 你纸上谈兵的,平时不多练习,别想写出什么好程序!学习时要从简单做起,先熟练简单WEB编程,在这个基础上要写出高级点的程序就不困难了,遇到难题别被 吓着,努力克服它(除非是由于语言的局限性而做不到的),如果暂时做不出来,可以先搁一段时间,但别把它忘了。等你学到更高一层的技术后,再回头研究过去的难题,将会事半功倍。

9.在学好一种语言的基础上,继续学习其他语言。

别误会,这不是让你同时学习N种语言,而是在学好一种语言后,继续学其它语言,例如学好ASP后,可以改学ASP.NET、JAVA等,不要守着ASP不 放,多一种语言就多一条出路,如果你觉得自己学得够好了,那就别犹豫,马上改学另一种语言(喂喂,你怎么把ASP的书给烧了?不是让你放弃已经学会的语言 啊)还是那句话,切忌同时学习多种语言!如果你对自己掌握的水平没信心,最好还是别想其它了! 多学几种语言的好处是显而易见的,一来可以做到几种语言同时配合,二来对扩大知识面也有很大帮助。 注意:学ASP/PHP后马上学ASP.NET是错误的,你必须先学会C#!

10.用多种语言配合,多利用各种语言的长处

前面已经提到过,各种语言都有短处,但是它们一般都能互相弥补,ASP的局限性导致一些复杂工作不能实现,JAVA强大,但是他和C、C++一样难。例如指针、位运算操作等。但是ASP.NET省去了这些东西,你可以先学一下ASP.NET。

11.多收集信息

学WEBWEB编程不能闭门造车,有些知识是书本上没有的,应该多使用搜索引擎,多搜集研究前辈们做的源代码,吸收一些新知识和优秀思路,有助于提高WEBWEB编程水平,另外还应该参与一些论坛的讨论,积累一些经验。

以上是我在学习WEBWEB编程的过程中积累的一些方法,仅作参考,希望大家共同进步。

12.WEB编程与数学的联系

离散数学是在大学开设的,其实初中生也能看得懂,主要是因为它的描述过于严谨,所以看起来有点神圣。但只要明白其本质,也没有什么难的,不过是比较烦。

你不用专门地从头研究数学。如果你学过一点WEB编程,那么建议你学习数据结构,从中你可以了解到学习哪些数学知识能帮你更好地前进;而且在学习过数据结构之后,你的WEB编程水平将大大提高。

掌握一门语言的语法并不需要太多的数学知识。只有在遇到具体问题时,要用到数学上的相关理论,数学才发挥作用,此时完全可以通过查资料来解决。当然,有数学基础自然可以事半功倍。不过通过应用时的临时学习将使你对该理论有更深该的认识也形成了你的实践积累。 

最后给你一条武林秘决(今天你可能无法领悟,到你功力倍进的时候,你就会心领神会了)程序=算法+数据结构。

写在最后。你必须懂C。为哈? 因为出于所有现实的理由,这个世界上你过去,现在,将来会用到的每一台计算机都是一台冯·诺曼机器,而C是一种轻量级的,很有表达力的语法,能很好的展现冯·诺曼机器的能力。

冯·诺曼架构就是你每天都用的计算机的架构的标准:一个CPU,内存,硬盘,一条总线。多核计算机并没有带来本质上的变化。冯·诺曼机是一个很方便,很便宜,上世纪五十年代的实现图灵机的技术,图灵机是执行计算的最知名的抽象模型。

世上还有其他的计算的机器。比如,Lisp机器,是上世纪50年代对Lisp计算模型的实现。Lisp模型是基于lambda代数的一种计算语言表示法,后者是与图灵机同构的一种模型。不像图灵机,lambda代数能被人类读和写。但是这二者是同等能力的。它们同样精确的表示了计算机能干什么。

Lisp机现在不是很流行了,除了在跳蚤市场里。从谁更受欢迎来说,冯·诺曼机器赢了。还有一些其他的计算机,比如神经网络计算机,译者也不知道怎么翻的计算机(cellular automata),但是这些都不够大众化,至少现在是这样的。

所以你必须知道C。

还有一个你必须知道C的原因是,Unix是用C写的。巧的是,Windows也是。基本上所有的其他操作系统都是用C写的。因为这些操作系统都是冯·诺曼机 的操作系统,你还能用别的吗? 任何跟C很不一样的东西都会跟硬件的实际能力相差太远而导致无法满足性能上的需要,至少对一个操作系统来说是这样—至少在上个世纪是这样,碰巧这些系统都 是上个世纪的。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值