分享

如何步入程序设计之门

 lxqgood 2011-06-09
即使你没有一点编程经验,只要你愿意,并理解本文介绍的学习方法,你也可以象作者一样轻松、愉快地步入程序设计之门。让我们一起开始激动人心的VS.NET之旅。
在26岁的时候,给自己定下目标,35岁之前必须掌英语和程序设计。至今刚过而立,程序和英语都学得不怎么样,对学习方法倒是有所体悟,愿与大家分享。
  在此先介绍一下我的情况。26岁前主要从事语文教学,对计算机及英语可以说一窍不通。说出来可能让您笑话:计算机不会上网;英语不认识音标。我这人水平虽然不怎样,志向却比天高,下决心改变自己,说干就干,花7000大洋购来电脑,开始自学计算机。26岁,人生翻开新篇章。
  首先把自家电脑来个开膛破肚,把硬件拆了装,装了拆(可怜我的主板,修了几次,还是报废;显卡由于带电插拔烧断了“脚”,还是手机店的朋友帮忙焊接上的)。为了从网上快速查找到需要的教程文章,忍痛每月花100大洋窄带包月,想当时Down个X片足足用了两天两夜,结果下集只有声音没有图像,还把他听完,呜乎!
  我一向提倡在工作中学习,学的东西要和工作相关,工作和学习互相促进。做语文教师虽也可以自学计算机,但我觉得进程太慢了(那时我所在学校还未设计算机课程)。于是,刚学计算机不到半年的人“一不小心”就成了电脑教师。还好基本是入门级培训,不过也逼着我学得更快。本来我是用拼音加加输入法的,因为工作关系,只好改用五笔。全国计算机等级考试要考DOS,于是又学了DOS。本来用FrontPage做网页,现在改用Dreamweaver MX,还有FireWorks MX,Flash MX也懂一点。对着主板随机手册和英文词典尝试几次,开机CMOS也可以进出自如。什么系统优化,GHOST系统备份都不在话下。做的网页虽然界面不怎么样,IP日访问量却是每天300以上。直到29岁,对Windows应用编程却还是一点不懂,VB6删了装,装了删,反复几次,觉得很难,始终未跨过编程第一道门槛。
前日跟在嵊州信息港工作的MM交流,言及在自学Visual Studio .NET编程,MM问:你在闭关学习吗?我回答:你“赞助”学费的话我也许会考虑考虑。是的,网络是所大学,最大的大学,网络可以改变世界,终将改变世界。网络更可以改变人生,可以让我们的学习生活无比精采,只要你懂得利用,善于利用。现在已是网络时代,网络交流基本弥补了自学的不足,网络交流更有学校教育无可替代的优点。
  你看到这里,如果你没有接触过程序语言,想了解一下Visual Studio .NET是个什么“东东”,你会如何做?
  第一,查手头书籍,个人开个计算机图书馆是不现实的,要查找的知识往往在手头书籍中找不到;
  第二,打电话问朋友,朋友懂不懂是个问题,即使懂,他有没有空?他有空,他不清楚你这边的实际情况,他说的并不一定是你想要的,或者你不一定听得懂;
  第三,上图书馆查资料;
  第四,上书店;
  第五,跑去问老师;
  第六,……
  是的,传统是这么做的。但现在是网络时代了。你完全可能在不到一分钟之内找到你想要的答案。现在开启你的电脑(前提是你不认为购买电脑是极大的浪费),拨号上网(前提是你认为有必要给电脑配置Modem并接入网络),打开Internet Explorer,在地址栏输入http://www.google.com,然后回车,在打开的页面中间输入框中敲入Visual Studio .NET 编程,注意中、英文中间有个空格。然后再回车,页面显示:共有 12,800 项查询结果,这是第 1 - 10 项。
搜索用时 0.28 秒,怎么样,还用我给你介绍Visual Studio .NET是什么东东吗。你就尽情地点击标题,查看您需要的知识吧。

“软件是一个过去的时代,Web Service将要来临。”微软高级副总裁李开复说,“Web Service本身可以说是一个赌博,一个风险;因为你可以相信,也可以不相信这件事情的发生。我只能说微软把整个公司都赌下去了,我们赌的未来就是Web Service。” 你可不要告诉我你比盖茨厉害多了。我们追求超越盖茨不一定现实,但我们可以早一步接触网络,利用网络。
  第一点体会:掌握计算机的基础知识,学会利用网络来进行学习,特别是利用搜索引擎(如http://www.google.com)来查找你所需要的答案。
29岁,开始从事企业管理工作。由于工作的关系,要用到MicroSoft Office办公软件,Office办公软件中有个 Visual Basic For Application (VBA)语言,是VB的一个子集,具备VB的所有优点,内置于Office中,只能在Office中创建、编程和运行,可以录制宏并自动转换为代码。由于初次接触编程语言,感到自学VBA有难度。每逢在学习中遇到难题、困惑的时候,我就到会到网上寻找学习资源,寻找答案。很快就找到关于MicroSoft Office的极好社区,如OfficeFans(http://www.) , ExcelHome([url]http://club./) ,于是立即在社区注册名字,学习VBA时中碰到疑问就到社区去问,每次都有网友热心解答。[/url]
  比如我的工作需要经常在Excel工作表第十行前插入空白行,要先选取工作表,鼠标指针定位到指定行,然后单击右键,选“插入”。重复操作,不胜其烦。于是在OfficeFans提问,经版主kengzeng指点,得到如下VBA代码:
Sub insert()
    Sheets("sheet2").Rows("10:10").Insert
  End Sub
原来要四步操作,现在一按快捷键就完成了。我原来并不懂VBA,对“集合”、“对象”、“方法”、“属性”、“事件”、“枚举”等编程概念也不甚了了,但由于有网上高手的指点、帮助,我仍旧可以在工作中应用VBA,多次应用下来,用到的一些VBA代码不去死记也差不多会背了,对VBA的一些概念、理论开始有所了解。
 

  万事开头难。学习一开始碰到难题,如果解决不掉,就可能从此放弃学习了,如果这时有热心人解答他的疑问,然后在实际中立即可以应用新知识,新知识得到了即时巩固,学习的兴趣得到激发和增强,学习就得以继续和深化。当然,对于有“悬梁刺股”精神的朋友,自己看书刻苦钻研也可能会解决所有疑难问题,但那毕竟是极少数,我想多数人是象我这样的普通人。
  来而不往非礼也。在网上得到诸多大侠的指点,总感到好像欠了谁什么似的,就想到编一本电子书,把常见的Excel VBA学习教程集中到一起,可以帮助初学者快速入门。 2003年6月较空闲,刚好自己对Html语法也懂一点,就花了二周的时间,搜集整理了一本电子书,叫《Excel 应用宝典》,其中重点内容是Excel VBA。把电子书放到OfficeFans上供网友下载,极受欢迎。我为什么编这本电子书呢?真的是比较空闲的缘故?有空去泡MM不是很好,何必去做枯燥的文字整理工作,其实我是存有“私心”的?
  什么“私心”?这叫帮人即帮己,助人即助己。“佛”渡人其实也是为了渡己啊。我为了领悟这个道理,诸子百家,佛道儒易医,无所不涉,并在生活中曲折浮沉,这样还是用了“30年”时间(太夸张了,一出生就……?呵呵),各位比我聪明,应该早就明白此理。
  为什么助人即助己?
  
在学术上帮助别人,指点别人,就要站在别人的角度考虑,思考别人的思考,打破了小我的思维局限。
  
从信息角度讲,个人自修,知识的附加信息量较小,而在帮助别人过程中,存在人与人的信息交流,在信息交流中,知识信息得到强化。
  举一个例子,小孩子生活在英语环境中,3岁即口语流利,而我们的学校教育,大学毕业,英语学了十多年,还是哑巴英语的大有人在,为什么?
  小孩子记一个单词或句子,是在和外界信息交流中记忆的,确切地说,小孩子记住了当时信息交流的情境,通过情境的自然记忆实现单词或句子的自然记忆。学习口语如此,学习编程何尝不如此呢?你在某个问题上指点过别人,你的记忆印象可能就特别深,如果是个人看书自学,对于某个问题当时虽然理解,但附助记忆的情境信息量很小,时间长了就容易遗忘。
  所以,在学习编程的过程中,多和别人交流,多向高手虚心求教,多指点初学者,是在人为创造学习情境,在情境中强化记忆,强化理解。
  李阳提倡“疯狂英语”学习法,我则提倡“疯狂编程”学习法,也就是创造一切机会和别人交流编程经验,从交流中进行强化训练和学习。也要注意,交流是手段不是目的。
  交流编程经验的途径有很多:如论坛交流,媒体投稿,QQ、icq等通讯软件交流。个人觉得CSDN为我们提供的“个人专栏”非常好,您可以一边学习编程,一边记下心得,通过个人专栏和大家交流。
  VBA是VB的应用分支,我在工作中应用VBA,并自然地对VBA的概念、理论有了初步了解,这时再去看VB的教程,就感到分外亲切。因为VBA和VB在本质上是没有区别的。我终于可以跨入VB编程之门了。
 第二点体会:学习编程的过程中,既要善于向高手寻求帮助,更要乐于指导初学者。在交流中学习编程,这决不是宗教式道德说教,而是极其重要的学习方法和学习手段。
  
程序语言种类很多,Pconline的工具平台就列有VB/VB.NET、VC/C#、Delphi、Java、C++Builder等。到底学什么语言好呢?在Google输入语言
比较,查到一篇文章《编程语言的宗教狂热和十字军东征》,第一段就是:
  业余程序员最喜欢做的一件事就是对不同的语言进行比较。Java是否比C++好?C#是否会成为终极语言?凡此种种。从专业程序员的角度看来,这是最低级无趣的游戏。其一,在项目诸元确定之后,通常并没有选择语言的余地;其二,语言的生存本身就是一个达尔文主义的问题:设若两种语言有明确的可比较性,其中较劣的那一种必定早已被淘汰出局,又何来比较的必要?
  
我基于两个原则选择编程语言:
  
其一,适用自己的就是最好的。
  
其二,如果不知道什么适用自己(业余程序员开发软件基于个人爱好,往往有此困惑),那么优先选择MicroSoft的开发语言。
  我选的是VB(每个人的具体情况不,我的选择不一定适合你),我目前只考虑开发普通Windows应用软件,并希望Windows应有软件的开发和MicroSoft VBA的应用互相促进,说穿了,是精力有限,最好是一种语言,到处应用。
  于是在网上Down了N多的电子书,收藏夹里VB网站一大堆。常去的VB网站有1000VB ,AppleVB , cnDevx ,51DoNET等,但我发现,除了CSDN,VB社区论坛的人气大多不旺。
    
第一次接触VB,没有基础,业余自学,如何快速掌握VB编程?
  
如果我有足够的时间(业余自学,时间显然不足),有足够的耐心(恰恰我是耐心不那么足的人),可以按照教程一个一个控件学习、练习,这个过程无疑是有益的,但对我来说显然是过于枯燥的。或许如此下去,半年以后,我的VB基础比较好了,但可能不到半年,早就被我放弃。这就要另辟蹊径。我的设想是,一开始就定下一个软件项目,带着目的去学,以一个控件为核心,在完成项目的过程中,逐步掌握VB控件的使用和编程基本理论。项目基本完成的时候,VB编程也就入门了。由于是带着项目去学,目的明确,学习过程就不会枯燥。如果你做共享软件,你的项目创意又比较好,你VB编程入之门之日,也许你的软件也就可以为你带来Money了,呵呵!
  开发一个什么样的软件呢? SUN提出了激动人心的口号:“网络就是计算机”。计算机的应用主要在于网络,于是定位于开发网络软件。我经常到网络社区论坛交流,注册时要一项项填写信息,发言时也要一项项填写信息,感觉很费时间,打算自己编软件来实现自动注册,自动发言。  
   2003年5月学VBA时想用VBA实现在论坛自动注册和发言,实现起来有难度,就在网上找替代软件,找到了“按键精灵”(http://www./cn/qmacro),按键精灵是一个模拟鼠标键盘动作的软件。通过制作脚本,可以让按键精灵代替您的双手,自动执行一系列鼠标键盘的动作。
觉得很不错,就编写了一个脚本,用按键精灵自动实现如下功能:打开Internet Explorer,输入并打开网址,移动鼠标到指定座标,输入字符,然后按回车完成注册发言。比起手工输入,用按键精灵省力不少,但是不同网站,输入框的座标不同,要手动抓取,有没有更方便的软件呢?按键精灵社区里有人讲到EzScript(http://ezscript./)功能更多,试用后发现在WindowsXP里反应不灵敏,再在Google狂搜,找到了比按键精灵更好的软件PCWorker(http://www.)
。PCWorker配合网络填表软件FORMGHOST ,再加上MyIE,可实现双击注册或发言,需要的话,还可在标题加上随机数,而且在PCWorker中代码的可读性较强,且作者能及时听取网友意见对软件加以改进。

  PCWorker虽然好用,但要读取识别码图片上的数字,这是PCWorker类软件不能胜任的。于是决心用VB6来实现所有自己想要实现的功能。2003年10月开始学习VB6,到11月半,项目基本完成。我是怎么做的呢?
  首先浏览各VB网站有关文章,发现用WebBrowser控件能实现我所欲求的功能。
  其次,大量搜集WebBrowser控件相关文章和代码。
    
用Google搜寻。如用“WebBrowser”为关键词搜索,共有 216,000 项查询结果

     CSDN论坛搜索。导航到http://expert.csdn.net/Expert/Forum.asp,登陆论坛,点击“搜索”,选“全部论坛”,点选“最新数据搜索”,用“WebBrowser”为关键词,然后点击“对选择的大类进行搜索”,哇,有好几百篇有关“WebBrowser”的问答。
     在CSDN论坛
作全文检索,寻找更多有检值的内容。
     CSDN文档搜索,导航到http://www.csdn.net/develop,在右上角搜索输入框输入"WebBrowser",选择“文档标题”,再单击“搜索”,我得到30篇有关“WebBrowser"相关文档。
  
 在实际编程中遇到困难,还可以到CSDN论坛提问,寻求帮助。我就曾在CSDN论坛问了不下十个有关Webbrowser有关问题,并都得到了解答。
  
由于善于运用以上三步,1个半月时间,我的软件基本出炉,VB编程也已基本入门。软件实现原理是,用WebBrowser控件,先Navigate到指定网址,然后填写表单。主要代码如下:
** Sub cmdfill_click()  '点击按钮开始发言
On Error Resume Next
  Dim vdoc As IHTMLDocument2
  Dim vTag
  Dim i As Integer
  If Not brow.Busy Then '如果下载完成,就执行下面程序

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多