编程学习心得和方法(转载,供新手参考)
即便是高级编程人员,像那些为开发软件工作的类库和组件高手,他们也不敢说自己精通每一种语言。 事实就是这样,每一种语言有着它们相似而又不同的语法,它们有着不同的关键字,发展出了各种各样的类库,它们的函数或者方法的声明定义都有不同,更多的差异不为我们所知。
每一种语言,它都有着太多的东西需要我们去理解和记忆,我们没有时间和精力做得太多。 对于初学者,我们最不应该急于求成,更不要试图一次性学习所有语言。事实上,我们可以选取某种语言学习。每一种语言都有着自己的强大功能,好的语言能够完成所有事情,所以,你不要担心学习一种语言不够全面这样的问题。
当你能够得心应手掌控你学习的一种语言后,你回过头来再去学习其他语言时,你可能会发现,原来,这些语言是那么的相近。这个时候,你再去学习它们,我想,那真是很愉快的事情,大概,那个时候,你会笑出声来。
我们知道,从某种意义来说,各种语言都有很多类似的地方,这大概是因为所有的语言开发都是基于已有语言创造的,开发者也出于对大家的尊重,考虑到易于学习等等原因,他们选择了几乎是相同的语法来定义这些新语言。可以说,所有语言都是基于已有语言开发的,没有人能够聪明到突发其想,更不可能一夜之间发明出一种完全不同的外星语。
基于语言再开发语言,这么做能给使用者带来了一次学习,全部学会的好处。当然,最大的好处莫过于新的语言肯定比之前的语言更加好用简单,功能也更全面强大。某种意义上讲,开发新的语言就是在更新旧语言的错误和不足,最后发展出新语言。
其实,每一种语言的区别大多只在于关键字的区别,还有一些语法上的区别。事实就是这样,很多语言之所以不同,就因为它们的关键字不同。就像你吃饭一样,中国人用筷子,外国人却不是。这些都没有改变吃饭的实质,我们都能完成一样的事情,那就是吃饭。
说了这么多,话题也扯得太远了,回过头来吧。说了这么多,我无非是想说,所有的计算机语言都是相通的,你只要学会一种,学习其他的就是轻易而举的事情。所以,你用不着同时学习几种语言。
如果你不按照我的建议这么做,我想劝告你,你将会一样也学不会,至少,你永远不能擅长于编程,更别说精通。每一种语言都是经历了无数年代,最后由开发者总结而来,不是一个人能够轻易学完的,事实上,每一种语言都有开发和支持它们的公司和软件,每一天都有更多的新东西出现,你的时间不应该花在学更多的语言,应该是学习它们的变化。
现在的软件开发早已经不再是手工编程那么复杂化了,大多情况下,我们只要会语法,只要知道类库和开发软件支持的类库和组件,我们就能够编程,但这都只是开发,说不上什么精通不精通。用软件开发软件做软件,很像拼图和画画,你只要学会画就行。
你如果只想开发软件,忽略了语言的基础,我想说的是,你的软件永远不会更好更快。即便如此,你也得花时间去学习你所要用的开发软件的一切,包括那些扩展的组件和类库。另外,请不要忘了,软件开发出来后,还得改进,你是否能够让软件更自动化,能够自己检查错误,也或者,你能让它多线程工作呢?
其实,我们很难在不同的语言相似中区分它们的异同,也不可能同时掌握相同功能下,却有着不同的类库和不同的实现方法中去运用自如。
好了,我现在要说说学习编程的一些简单方法和步骤,今天将是第一章,也是一个开始。大概,你可能会用上小半年的时间去学习它,也或者更久,我希望是这样。
首先,我们应该学习一下计算机的基础,包括硬件基础,特别是计算机的各种发展史。之后,我们要理解计算机的工作原理,我们得知道,计算机依靠什么方法进行运算。
如果一个软件开发者,他开发了众多软件后,回过头还不知道计算机原理,那真好笑的事情,真不知道,他是怎么做软件的。当然,这样的人或许比我们聪明多了,因为他知道什么重要,什么次要。当今的社会,专业才是真,每个行业都有无数学习对象,你能全部学会吗?
其次,你应该着手学习汇编。或许,有人认为这是乎过早了一点。的确,你很有可能会无从下手,这个时候,你可以先大致了解一下,跳过这一步,往后再来学习。
之后,你应该做的是,选择自己想学的语言,或许,应该在C(c++)或者JAVA之间选择一种。当然,你要是只学习网络编程,可以在ASP和PHP之间选择,至于Javascript之类的脚本,你可以最后来学习。
你已经选好要学习的语言了吧?现在,就去选择几本上好的相关基础书籍吧。照我说的去做,你只能选择最为基础的只介绍语法的书,这个时候,你可千万别去看软件设计的书,也别去动那些设计软件。这一点,你千万要做到,朋友,不要急于求成。
好了,选好了书籍了吗?你的书籍一定是最为基础的才行,确定这些后,你应该看书了,对了,看的时候还得记下笔记,最好能够把每一个知识点记下,特别是关键的东西。这个过程是很难熬的,你千万不要急躁,另外,你如果从来没有接触过编程语言,你就更应该慢慢来,你应该花上半天时间学习一个章节。或者,之后的几个章节,你得花上更多时间。我想告诉你,朋友,越到后面越难,编程可不是吃饭那么简单,每个人都得花上很多年的时间学习它。
这个过程中,你还得注意,千万不能跳过看不懂的东西,是的,你可以到网上也或者是找朋友请教,这是很好的办法。只有当你弄明白了一个知识点后,你才能继续学习。 也不要急着就学习用开发软件做软件,千万记住这一点。你现在是在学习语法。 是的,语法这一关,你得用心,而且得认真对待,还得过关。你想不种豆就有豆子收,世上可没这种好事情,除非你偷别人的,那还是自己的吗?更何况,你是要为自己学习。收获都是要时间的,成熟都需要时间。 现在,趁你还在学习语法的时间,你们来简单提一下语法吧。
关于基础语法,大概有几个方面,当然了,每种语言各有不同,不过,大体都一样。
一、语言本身的发展史和特点
其实,这一点,在我们选择某种语言的时候就应该提前了解。我在这里只想给大家说说自己的心得。
其中,JAVA的好处,一次编写,永远运行。它的最大好处不只这些,大家最喜欢的是,它可以在不同的环境下工作。是的,它不只是在计算机上能够运行,它同样能够在数码产品上运行,只要相应的机器上有JAVA虚拟机,JAVA软件就能运行,而且我们不必为不同的机器而修改我们的软件源码。
JAVA这个语言是九十年代才出现的,它由SUN公司开发,它的发展也算是飞快的。它的设计初衷是要在网络上应用。然而,它却不巧的成为了能够运行在更多环境下的语言,可以说,也正因为这一点,它才得以流行。当然,它的确也成就了网络,它的出现为网络编程带来了更多的功能和应用。
事实上,当今的网络应用中,JAVA、FALSH、JS、ActiveX这些小程序或者说是脚本插件,它们真是功不可没。另外,JAVA小程序比其他脚本或者插件都要安全,因为它的运行都在虚拟机下完成,不允许超越出去操控机器本身。
JAVA已经发展到了JAVA2,它已经深入计算机编程,特别是同时应用在网络和数码产品上。没什么好说的,它和C很相似,事实就是,它是基于几大语言开发的,它去除了许多语言中难懂的语法。特别是,它没有了指针,它还能自己检测错误。
如果你觉得C太难,又想制作可以在数码产品上运行使用的软件,比如NOKIA手机的S60系统下的软件什么的,可以学习JAVA。
至于C语言,现在已经有三个版本,C、C++、C#。多的不说,这个语言是现在的主流,大多软件都靠它。三种版本的区别在于,第一个主要是采用旧式的结构化模式编写,C++最大特色是面向对象,至于最后的C#,它基于.net。
C语言成功之处在于,它的出现,简化了软件开发流程,易于学习和编写,另外,它最大的特点在于,它既是基础语言,又是高级语言,或者说,它就是中级语言。作为基础,它能够操控基层的东西,比如内存、计算机硬件本身。事实上,很多硬件驱动都由它制作而成。
另外,UNIX的内核曾经都是用它做的,可见它非同一般。可以说,C几乎能够完成所有的计算机功能,当然,不是太绝对。对于一些更基础的东西,大多用汇编搞定。另外,你还得明白这么一点,越是基础的东西,要用更加基础的语言去实现。各种数码电器包括电脑系统都不会用这些高级语言编写,有着更深的东西不为人知,我们只有继续学习才能搞精这一切。现在,我们只要学习自己的语言就行。
以这里,我还得说说VC,当然,还有VB。事实上VC和VB是微软公司的产品,我个人认为,VB就是在C的基础上产生的。C语言可以轻松更改成其它语言,这也是它很厉害的一个地方。事实上,像大多的基础语言一样,C的本身语言特点让它有这样的能力这么做。我们能够用C的一些关键字设计出各种函数和库,它们当然可以和VB和其他语言的函数和类库同名,某种意义上说,就因为语言之间的类似造就了它们之间的相互转化。
同样的,它也能像高级语言一样工作,前提就是,你要自定义自己的函数库和类库。这一点,就是学习编程语言的难点之一。
VC和VB已经发展成了.net版本,ASP就是从VB而来,如今,也有了ASP.net。
很多初学者大概不知道VC和VB是什么,事实就是,它们是微软的软件,很简单,它们只是软件。这么理解大概会好一些,是这样吧。
C语言的开发软件有很多,最著名的莫过于VC++_NET和C++BUILDER,是的,C语言并非某个公司和个人的专属产品。
DELPHI,这个语言可能没有C和JAVA出名,但事实上,它是一种很不错的高级语言,能够制作各种软件,而且它比我们想象中更加简单。DELPHI属于BOLAND公司的产品,开发软件是DELPHI BUILDER,是的,BOLAND公司的开发软件一直被人们称道,这是因为,它为我们提供了各种各样的组件,可以说,我们只要半天时间就可以用BOLAND公司的软件轻松做出功能强大的软件。包括C和JAVA BUILDER。
VB并不是语言,我把它单独列出来,只是说,我们可以单独学习它来制作软件。事实上,不少的游戏都由它开发,可见它的功能比想象中强大。还有一点,它和BORLAND公司的开发软件真是太像了,它给大家提供了很多基于WINDOWS的组件,可以超快开发软件。
如果是学习网络编程,你可以选择ASP或者PHP,也或者JSP。ASP(NET)的特点是,它出自微软的VB,用VBscript脚本以及VB(DLL)的ActiveX组件构成。它需要运行在安装了IIS的WINDOWS服务器上。ASP(NET)站点的最大好处在于,可以在任何可以显示的浏览器上正常动作,所有的脚本代码运行和数据处理都在IIS服务器上完成,我们不必担心客户端是否支持的问题。另外,ASP源码不会传到客户端,某种意义上可以防止别人看到你的代码。
学习ASP,你还得慢慢学习ActiveX组件,有的人可能会感到惊讶,比如数据库连接或者分页功能,在ASP看来,实现这些东西真是太过简单了。也有的人会搞不明白,为什么语法里没有这些东西,ASP上却有这些,事实上,朋友,ASP支持DLL组件,也就是说,只要你是编程高手,你可以用其他的开发软件,比如VB,为你的ASP自创组件。
组件很像编程中的类库,一般来说,我们不必去细验它们是什么,又怎么工作,我们只要去运用它就行。现在的情况就是,各种语言都有第三方的支持,也就是组件和插件,你可以从别的公司或者网上获取,这样的好处在于,你不必自己编写更多的东西,却能够用别人的成就完成各种工作。比如上传文件和下载等等。
好了,关于怎么做组件什么的,你可以学习编程。但如果是聪明人,你不会这么做,因为你没有时间和精力学太多。要知道,你要吃饭,最多是自己种地买碗筷,你用不着自己造碗筷,更用不着去管什么桌子凳子。只要你会工作,用钱就能搞定一切。编程也是这样,你只要会用就行,除非你真把自己当博士,也或者,你还真想什么都弄精,那不成了神精,或者当神仙或者机器去吧,凡人是没那本事了,你不过几十年的光阴可以用耶。
学习就是学习精要,而不是概要;学习更不是全面,而是专业。八十年代出生的人大多受了蒙蔽,人人只知道当科学家或者天才,也或者都想做事完美。告诉你,完美过气,要完美的,回家种地去吧。
关于PHP和JSP,我个人不是很懂,所以,我不会过多提及。
另外,学习网络编程的朋友,你得选去学习一下XHTML标准,你也要按照这个标准行事。你也不要只学会用网格做网页,要知道,现在大多数情况下在抛弃它了,我们用CSS实现更多功能。
学习是一步步来的,现在,你只管学习语法,在后面,我会提示你怎么做的,每一步,我都有介绍。
另外,不知道有人是不是误会我的意思了,网络编程,可从来没有说,像HTML或者网页设计属于这个范畴。所以,连HTML都不懂的,先回去学习网页制作和设计吧。当然,没必要还学什么FLASH,你又不当美工。当美工的,还是不要学网编的好,学得多了,小心你什么都不精。告诉你,专一才能研究直到精通。
二、数据类型,变量,常量,数组
数据类型是最为基础的语法,每种语言都有相似或者相同的数据类型。我们应该理解什么是数据类型,也就是学习和记住所学的语言里包含哪些数据类型。从某种意义上说,数据类型属于简单的类。
每种语言的数据类型有所不同,你只需记住自己学习的语言的类型定义就行了。通用的基础常用数据类型有字节型、整型、字符型、浮点型、双精度型、布尔型。当然,数据类型还有更多。
其中的C、C++里面,有些类型在不同的系统里有不同的范围,比如在32位和64位系统里,有2字节和4字节长度范围区分。
变量和常量,还有数组,各种语言都基本相同,你只用记住如何声明和初始化。另外,你得养成先声明再初始化的习惯,这符合更多语言的变量声明语法,也更为标准,不易出错。
另外,变量的声明要符合标准,不能用关键字做变量名,一般来讲,变量只能以字母开头,还只能是字母、数字和下划线构成。有的语言区分大小写,千万注意这个问题。
另外,变量还有局部和全局之分,你得搞清楚什么时候属于什么类型。局部变量只会局部存在,有的语言在某些范围内不能有重复相同的变量和局部变量,但有的语言却可以。
我们要理解什么是数组,特别是多维数组。还有一点,数组的超始是零,认识到这一点是非常重要的。最后,字符串属于特殊的数组。
三、运算符
计算机语言的初衷就是用来计算,自然要有运算符。
最常见常用的自然是算术运算符,加减乘除。在这里,我们要记住递增递减,赋值运算,还有模运算。
位运算符:或,与,非,异或,各种位移。
位逻辑运算符:按位或,按位与,按位非,按位异或,
关系运算符:大于,小于,等于,不等于,大于等于,小于等于
布尔逻辑运算符:逻辑或,逻辑非,异或,相等,不相等,三元运算符
赋值运算符:注意有的语言= 和==的区别
之后是运算符的优先级,我们可以用各种括号控制优先级,其实这和数字上的运算很相似。
四、程序控制语句
程序控制语句用于判断和跳转,其中最常见的有以下几种。
条件语句:if-else-if 在这里,有几种不同变化,大体相同
Switch () {case…break….default}
循环语句:do...while while {} for(;;)
跳转语句:Goto break continue return
五、其他。
在这里,我不再过多举例,其实,这里有最重要的东西没有讲,比如类,函数,继承,指针,异常处理,多态,多线程。这中间还有构造函数,解析函数等等。这些可以说是语法中的重点和难点,所有语言之所以成语言,也就是它们有着这些特性。
大概,你已经看完了几个章节内容。现在,你已经对编程有了基础认识。好了,你在这个时候,可以找两本简单事例的书籍了,你可以一边学习一边写程序。
是的,如果可以,你应该用记事本这样的工具来编程。当然,要在自己的电脑上运行你的程序还得安装好相应的软件,比如ASP(NET)的IIS,ASP.net 还得安装.net,JAVA的JDK,至于C语言,你可以安装VC,也或者C++BUILDER,这个时候,你就要学习如何配置自己的电脑并且如何运行这些程序。
千万不要被相应的软件吓住,是的,每种软件开发工具比你想象中还要复杂,告诉你,它们比看起来还可怕。不过,那只是现在的情况下,不用担心,总有一天,你能够轻易运用它们,到时候,不是它吓你,而是你吓它了。
你应该做的范例只是用来显示或者计算,如果是网络编程,你应该提前学习一下网络设计软件,像Dreamweaver。