Web开发的入门建议

前几天,一位网友boovit 留言,提出了关于后台(服务器端程序)开发的一个问题,一直有不少读者有类似的问题,因此,我结合我自己的一点体会,介绍一下。需要指出的是,后端技术和前端技术(HTML/CSS/Javascript)相比,要复杂得多,范围也广得多,因此学起来肯定是需要更多的精力和时间的。boovit网友的问题说到:

“老师:我现在已经开始看有关asp开发后台的书了,我想先把这个搞清楚。老师能不能给我建议一些好的图书或着是网站。还有给我一些学习上的指导,使我更快、更好的掌握后台开发。 谢谢老师了!”

下面我来谈谈体会。

1:必不可少的理论基础

我曾经写的一篇小文章《Web开发杂谈(1) —— 学习开发的三个层次》中,已经谈到了学习开发,应该有三个层次。

今天主要谈的是第二个层次,不过这里先稍微说说第一个层次的问题——大学计算机专业的基础课。 其实这个层次就是靠上学解决的,如果自学,也同样就是买一些教科书,回家苦读,做习题,把几本书的习题都会做了,就算过关了。具体课程各个大学也都是大同小异的。这里也可以列出一些基本的专业基础课,都应该学习一遍的:数据结构、计算机组成原理、汇编语言、数据库基础、操作系统原理、编译原理 。可以看到我列出的这5门课,大都是“原理”,就是在于这是让学生真正了解计算机内部机制的课程。其他一切应用都是在这些原理的基础之上的。因此,想做一名合格的开发人员,至少要把这基本吃透。当然实际上,大学4年的课程远不止这些,如果有兴趣,不妨都学一下,但是上面列的这5们,实在是太基础了,一定是必修的。

如果说再基础一些,就涉及到“数学”的问题了,实际上,计算机专业的课程表中,大致上会有5门左右的数学课:高等数学、线性代数、概率论与数理统计、离散数学、数值分析。可以说,这些课程就是上面的基础课的基础课了。如果是理工科专业的学生,大致上也都学过,如果没学过,最好也下点功夫,数学不仅是专业的基础,而且是思维方式的基础。大多数人,对数学都很头疼,不过还是应该尽可能多学一些的。

好了,因此建议你至少把这10门课程踏踏实实学下来。用武侠小说的说法,这些都是“内功”,有了这些内功,再去学一些“招式”,就容易太多了,可参考《虚竹的人生启示》。用中国文化的说法,叫做“道”与“技”之间的关系。用自然辩证法的说,叫做“科学”与“技术”之间的关系。都一个道理。

2:下面再说说第二个层次——开发必备的工具

有了上面第一个层次的“内功”,而没有一些实际的招数,就好象虚竹空有无涯子70年的内功,却不会使用。因此,还需要掌握一些实际的开发工具,这样就可以做出很多实际的项目了,就好象武林高手可以上阵了。

对于Web开发来说,大致分为前端和后端,前端就是在浏览器上运行的程序,主要是Javascript程序,后端就是在服务器运行的程序,种类就非常多了。目前,Web开发的主流的“三巨头”是.net、Java和PHP。

首先要注意的是,不用过于花精力探讨哪个更好。没有哪一个是最好的,只有最适合你的那一个。至少在5年内,他们都会存在并发展,你只要把任何一个掌握精通,都有绝对的实力去赢得胜利,就像无论那本武侠小说,”少林”和”武当”都是大门派。只要选择一个适合你的就可以了,比如你周围有个PHP高手,你可以随时请教,那你就学PHP就好了。能随时请教,比任何事情都重要,对你的帮助一定是最大的。

下面分几个方面来说一说:

1:过硬地掌握一门编程语言:比如你用 ASP.net ,那就掌握C#或者VB,用PHP,就掌握PHP。语言的掌握,就是靠不断的实践,写够了5万行代码,自然就掌握了。

2:掌握一个开发环境:当然说到开发环境,比如Windows上的Visual Studio是超级强大的,实际上这里说的开发环境,除了能够写程序之外,更重要的是掌握足够的调试经验,这个同样也是需要实践经验磨练的,和上一条一样,写够了足够多的行数,自然你的调试经验就丰富了。

3:过硬的SQL语言基本功:Web开发,绝大多数离不开数据库,所谓Web程序,绝大多数都是根据需要,把一堆数据,按照要求存储到数据库中,在需要的时候,再取出来,并显示的好看一些(怎么存取由后台决定,怎么显示好看,由前后台共同决定),就可以了。因此,小到一个留言簿,大到一个超级大系统,都离不开数据库的支持。因此,SQL语言,一定要搞熟,要能够根据各种稀奇古怪的要求,写出正确的SQL查询语句,这也是个功夫,需要不断积累一些经验。

4:基本的数据库的配置、管理经验:上面第3条说的是能够用SQL语句在程序中访问数据库,此外,还需要一些对数据库的配置、管理经验,理论上说,有一个专业的说法,叫做DBA,数据库管理员,专门做这个,但是作为开发人员,多少也需要了解一些,至少基本的配置管理操作要了解,至少要熟悉一种数据库系统,比如SQL Server、My SQL等。

5:对网络机制的理解:要做Web开发,和以前开发的单机运行的程序相比,一个最大的区别,就是有存在客户端和服务器的分别。用户在浏览器上,按了一个按钮,可能的结果是先在客户端运行了一些Javascript代码,然后又传到服务器上,服务器又开始运行一些代码,然后把一些数据传回到客户端,结果客户端又开始运行另一些Javascript代码,最后才给用会显示出正确的结果。那么这个过程,你就必须要非常清楚,在什么时刻,什么条件下,在哪里,运行了哪个程序的哪行代码。 这和以前在一台计算机上一个程序,从第一行运行到最后一行,是很不一样的。

这里的关键问题是,一定要对HTTP协议,有一定的了解,比如你一定要清楚 “请求”和“响应”分别是怎么回事,服务器和浏览器之间是如何传递数据,并协同工作的。这个不用了解的非常深入,但是至少要在概念上非常清楚,否则无法深入理解Web开发的实质。

6:对“领域问题”有比较好的理解力:所谓“领域问题”,就是你要开发的系统,实现的具体功能是什么,比如你做一个“学生学籍管理系统”,那么就要对学校管理学生的具体方法、制度、规则深入、完整地理解,然后才能设计出一个合适的系统,适合这个需求,理论上来说,这个工作就比较“高级”了,在一个团队中,常常有“系统分析员”或者“系统架构师”的说法,其实也没有那么玄乎了,只是一定要真正能够理解用户的需求,才能做出一个正确的选择。因为客户并不懂技术,就要靠系统分析人员,来理解用户的需求。这一步做不好,结果将会导致整个项目陷入泥潭,后果不堪设想。

7:本质上来说,有了上面前5点,已经完全可以做一名很好的Web开发人员了。第6点已经不仅仅限于技术层面了。我们这里当然主要谈技术,就技术层面来说,还有两点值得一提,对于Web开发特别有用。

下面两点的重点都是提供开发人员的开发效率。都是对于广大战斗在第一线的“码农”来说,基本上没有什么其他成本,唯一的成本就是你的时间,所以要想尽办法提高你的生产效率。用这几天时髦的说法:“哥卖的不是代码,卖的是时间!”

A:Web开发框架。所谓框架,就是根据一些相对通用的、固定的开发模式,设计出的一套程序库,开发人员可以直接利用这些框架提供的程序进行开发,从而大大减少工作量。在上面说的“三巨头”中,各自都有很多不同的框架,适用于不同类型的开发需求。在对Web开发有了一定的经验以后,就可以使用一些框架,来加速你的开发效率,即所谓提高你的“生产力”。比如在.net平台上,最近微软推出的 ASP.net MVC ,就属于这样的一个Web开发框架,实现了MVC模式的开发,当然MVC在JAVA上,和在Ruby on Rails前几年已经有了相应的框架。在这种框架上做开发,具体为什么可以提供生产效率,就不是本文篇幅可以说完的了,有兴趣的读者,可以自己了解一下。

B:数据访问层的开发效率加速。实际上,统计表明,现在大多数Web开发工作,绝大部分工作是围绕着数据库中的数据的增、删、改、查来进行的。这些工作本质上都是通过SQL语言实现的,因此上面的第3点中,特别提到了“过硬的SQL语言”的功夫,对一个开发人员的重要性。然而,最近几年出现了不少数据访问层的开发框架,有一个通用的名称叫做“ORM”即“对象关系映射”框架,它的作用就是通过易于理解的高级语言支持的面向对象的操作方式,避免或减少编写难于理解、管理的SQL语句,从而可以大大提高开发和调试效率。同样,在“三巨头”上,有各自的不同的实现。比如.net上的 Linq To SQL,以及Entity Framwork都是这样的工具,使用他们以后,可以使开发人员不再直接编写,或减少直接编写SQL,可能会少量地降低运行的效率,但是可以大大提升开发效率。因此,对于开发人员来说,这些工具,也是值得关注的。还是那句话:对于程序开发来说,基本上没有什么其他成本,唯一的成本就是你的时间,所以要想尽办法提高你的生产效率。

当然,ORM不是万能的,大多数情况下,如果没有SQL基础,使用ORM还是会有问题,特别是效率问题。这就好像如果你有汇编语言的基础,再写C语言的代码,和不懂汇编的人写出来的,肯定是不一样的。

=====================

最后谈一下关于boovit提到的 ASP还是ASP.net的问题,这个我还是多少有些了解的。从ASP入门也是一个不错的选择,因为ASP和ASP.net相比,更接近于Web的本质,ASP.net(非MVC)的WebForm模式,已经使得他的开发不像是Web开发了,尽管省事,但是封装了太多的细节,使得上手很容易,深入很难。

而如果你使用纯的ASP做一些开发,更容易了解Web的本质机制。有了这个了解之后,再使用更方便的开发方式,比如ASP.net MVC,甚至是 WebForm模式的ASP.net,都会更容易深入到本质层面。特别是是如果从ASP转到 ASP.net MVC,你会发现你的感觉好像扔了自行车,换成了法拉利。

3,259
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值