当前位置:首页 » 网站技术 » 经验之谈

给学习编程的朋友几点建议(1)

...


  本文的观点,主要是针对初学者容易犯的错、容易走的误区和针对编程老手容易犯的旧错误而谈的,也许对你来说本文是多余的。另外,本文不止是讲教条,同时也讲了我自己在编程中的实际应用以及实际思路。如果对你有所帮助,我就没有白写了。

一、学编程要学算法

  大概是因为Visual系列程序设计工具太完美了的缘故,许多人学习编程后发现,原来编程这么好玩,从此就喜欢上了。也同样因为Visual系列程序设计工具太完美了,导致有相当一部分人以为画界面就是编程。

  前两天,我在办公室里有几位同事闲谈,谈到编程时,我笑道:“你到网上去看看,自称是程序员的人不下一亿。”当然这是个过分的夸张了,但是你不得不承认,也许有不止几亿的人亲自用鼠标在Visual Basic中画过界面,现在的小学生、初高中生都开设了Visual Basic程序设计课程。经过了短短的几节课的学习(一学期只有三四十节信息技术课,还不止学VB一个内容),许多学生会说:“我也会编程序了。”——真的吗?

  我不由得想起了多年前的微机学科。那时的微机课不外乎几个内容:DOS、WPS和Basic。那时的Basic语言,除了input和print两个语句可以看到运行结果外,其它的都看不到。全凭脑子想象、组合,去领会什么叫If-Else-Then,什么叫Fore-Next,什么叫Do-loop。由此学到了各种算法。那才叫编程啊。

  前几天居然在《编程空间》看到有一帖,跟人家讨论怎么编程,问的问题是诸如“怎样利用随机函数Rnd( )生成20个在1-100之间的各不相同的正整数”之类的问题,还指明要用VB编。由此可见算法被忽略到什么程度了。现在叫我把这样的程序编出来,无论是用Basic,还是用C,还是用Pascal,甚至用JavaScript,VBScript我都会随手编来,最多去查几个多年不用的单词是怎么拼的。为什么?就因为这些语言的算法是一样的。语法本身只是一个外壳,算法才是其中的灵魂。

  学会了算法之后,你再学几十个单词,就会了一门编程语言。你会发现,Basic、C、ASP、Java……都是一样的。

二、要明确什么是面向对象

  几年前,编程从来不用提对象。那时候在Basic和C中的输入输出是这样编的:

◆Basic:
Rem ----------输入输出---------
input age promapt "请输入你的年龄:"
print "你的年龄是:";age;"岁"

 

◆C:
//------------输入输出---------
printf("请输入你的年龄:");
scanf("%d",&age);
printf("\n你的年龄是:%d岁\n",age);


  那年头学过编程的朋友一定还记得这样的语句(至少我觉得这是终生难忘的),那时至所以不提对象,一是因为没这个必要,输入设备只有键盘,输出设置只有显示器。二是因为那时的程序也差,比如上面这样的程序,设计者先问你姓名后问你年龄,使用者就必须先输入姓名后输入年龄,现在呢?给你几个输入框,随你先填哪个,填好后按个按钮就行了。功能的复杂,导到了对象必然要出现。

  现在的编程一直在喊着“面向对象”,但是许多最近才学习程序设计的人,他们一起步使用的就是面向对象的语言,却反而不知道什么是面向对象。

  我给别人讲Visual Basic第一课时,跟本不就提什么编程,我只这样举生活中的例子:

◆请告诉我 冰箱.外壳颜色(访问对象的属性,用法:对象名.属性名)
◆自行车.颜色=红色(设置对象属性)
◆电视机.开(完成一个工作,用法:对象名.方法名)
◆汽车.行驶(北,100km/s,50km)(带参数的方法)
……

  这样做是不是一定比直接讲Visual Basic好我还不知道,但是这样至少可以让别人先感觉一下将要进行的编程中的一些思路。

  我不建议谁还去学面象过程的编程,我从八年前开始学习Basic,到97年学习结构化的True Basic,到98年开始转向面象对象的Visual Basic。这两次转折的时候,我都遇上了很大的困难:旧的思维方式一直在顽固地抵制着新的东西的进入。其中98年那一次,我花了半年时间才把思维方式转过来了。最近才学习编程的朋友,你们真的很幸运。

继续阅读
程序员应具备的素质
程序员生活(序列文章一)
程序员的下场
程序员生活(序列文章二)
程序员酸楚 谁来关怀程序员?
如何成为一名C++程序员
一名中专生的坎坷程序人生
程序员生活(序列文章三)
程序人生
发表评论

昵称:
最新评论
暂时没有评论!