我不是科班出身的程序员,就着实用主义,来学习编程的。从小爱好无线电,电脑也不里外,只是早期无法接触到电脑,因为电脑低廉和普及也是最近几年的事。我现在已经买过两台pc和一台笔记本了。

QQ群请加: 6539042(powerbuilder11&SQL)   

以前学校里学习的是dos,CCDOS,莲花软件,wps,c,basic这些。而且专业不是电脑。

2002年买了电脑,想学习编程,vb,delphi,c#,vc的书买了一堆,都由于太难懂而无法入门。甚至看到vc的变量我几乎绝望。对于编程来讲,没入门也就意味着永远无法跨入程序员行列。这个时期主要熟悉sql,erp流程,电脑维护,邮件server,vpn网关,voip网关等杂七杂八的。

2004年。就因为我们公司的erp是用pb6写的,所以开始想办法学习pb,当然在这之前,为了维护ERP系统,学习了sql很长时间。其实说,sql语言是我入门的第一语言。虽然在很多人眼里,sql算不得什么,但是简单的group by在第一步是最难于理解的。随后还有触发器,存储器都不是很简单的事。直到现在,学习sql后的四年后,我才真正有信心独立的毫无畏惧的开发一个完整系统,并运用到包括sql维护,跟踪,调试,备份,压缩,分离,触发器,存储器,DTS,索引,锁,job等全部知识。现在看到很多asp程序员对系统怎么会被锁住还是很茫然,大概就是没有足够的使用经验。我在工厂时,开始学习pb10,并写了一些报表和生产线的简单测试系统,以及扫描条码的小软件。这时,我感觉到pb可能是最容易入门的编程语言了。我在学习pb六个月就接了一个单子而且居然能写出来,而且还有模有样的。现在想了一下都有些万幸。如果没有pb,恐怕我无法入门了。现在总结其实是pb的4GL特性降低了入门门槛的高度并降低了恐惧感。(PB并不是想basic那样的玩具,是有非常丰富的函数,并能定义控件和类,结构,函数,com等的复杂语言)。而且pb真的让我在一周就写出了界面,这让我惊奇,象块磁铁吸引我继续学习。因为vb我也用过,写一个编辑界面恐怕也不下300行代码。

2005,2006,2007年我作了两个软件,使用的是sql2000+pb代码没统计有多少,界面有400多个,表有500多个。存储器有一百多。特别是在写业务提成部分因为要涉及到复杂而灵活的参数公式设置,让我足足构思了一个多月。写库存部分时非常多的trigger来更新多个表,这在没有任何经验的条件下,困难难于逾越;写电讯报表时,遇到数据过亿的新问题和数据完全同步的问题;最初写出的存储器由于索引的问题执行几个小时都执行不完。这是我学习的最困难的时候,还好客户签合同拖了很久,而我提前拿到数据结构和测试数据并快速作出了原型并不紧不慢地作了N次优化。到我给客户装好系统并初步运行成功时,客户才把合同签下来,所以是万幸。(原来拖拖拉拉也不是坏事)这两个系统写完,系统菜单管理,权限管理,自由报表,库存管理,职员提成结算,代理商提成结算,录入编辑删除审核这些基本界面我形成了一个框架,常用的操作我已经进行了封装,所以代码越来越简捷,速度越来越快。到这个时候,我感觉我入门了。至少对当初看vc书时的恐惧感消除了。我感觉自己要弄个长远地计划和产品定位,我决定学习java和c++。

我决定学习java和c++是因为我打算以后成立工作室开发数据库类的运用软件,而主要请人兼职来写,自己最多作些前期的判断。我想学习lucene这样的全文检索技术并进军垂直搜索。我想到java和c++,因为lucene是java实现的。但我认为应该用c++来实现它,java对效率不是太好,而且分词和大量的重复处理用c++是正统。而且c++是我以后的主要使用语言。而且随着年龄增长和时间的不充分,以后可能不会学习其它的新语言,而是集中在一些自己感兴趣的范围作一些深入。

说到c++,我想我以前是被vc误导了。我买过几本vc的书,最终都被吓倒了。直到今天我才发现,我学习c++未来也不可能是作桌面软件的,而是会更多的用纯c++作一些运用,甚至全部在linux下。原来我要学习的是标准c++,而不是vc或者c#。当然前段时间自己用java写了一些测试程序(java就看了一下孙鑫的教材就入门了),用c#写过一个蜘蛛和抽取程序。突然感觉,原来学习编程的门槛不是某个语言有多难,而是在于你有没有入门一种面向对象的语言。如果你掌握了一门语言,哪怕是pb这样的脚本语言,学习其它语言也是有感觉的,几乎完全新的成份不到30%。至少象对象,函数,派生,重载,变量这些都是一样的。所以我回头去看,刚开始学习的时候真是昏天黑地,但现在终于入门了,还是值得的。

c++现在我也差不多掌握了一些。直接看的是c++primer,因为我能看懂它并在机器上调试例子,所以那些其它教材就不用看了。因为在ibook8上下载了很多教材,最后还是觉得c++primer三版和四版最好。如果确实没一点编程语言的经验,那可能c++入门视频是最好的(pconline和56上很多)。但视频讲到类的时候就嘎然而止了,可能是老师们参考的教材太旧了。或者是老师们除了照本宣科外自己并不喜欢编程,也不可能象lippman一样参与c++核心,否则会讲得比孙鑫还好。大学老师的毛病就是落伍和陈旧,空洞是对他们的总结。

C++入门经典(第3版)是讲得比较透彻。c++primer太过于专家化,在选择书的时候有个由浅入深的必要。

c++或者其它语言,最好的入门方法就是看书,先看几遍,拉通而不作练习,也不写例子,只求概念。然后在详细看书时才练习。比如操作符号的重载可能是比较难的,我就练习了很久。以前一直很奇怪,现在终于明白原来如此。

我遇到很多人,买了书:c#,vc,vb,delphi,java的书,有的人一年甚至三年都无法入门的,到最后就是放弃。实在可惜。作为计算机的控制手段和实现。我想凡是涉及到计算机的人都应该能运用一门语言。因为总会有机会用到的。而且至少需要对这个有一个了解。否则在这个领域自己还有什么分量呢。在软件公司,分析员看不起程序员,程序员看不起搞系统的。如果真对这个一点了解都没有,只怕只能停留在it很低的一个层次了。

我的方法:

1.从一门语言入门。心不要多。学会一门,其它都容易。至少有兴趣和信心了。

2.找本好教材。最好是洋人写的。国内的教材总是低水平而且版本太旧。视频方面象孙鑫的那种讲法还可以。其它都是搞空事。有的板书都没有。

补充: 我最初学电脑的基本入门时和学习protel时最好的教材其实是视频教材,还有一种是界面抓屏的那种教材。编程方面也是一样。可以在56,163,pconline等地方找一找。http://www.cozol上有些教材比如电子科大段锦山和陈文宇老师的视频我看不错。书方面如果有电脑买书是个浪费。我现在几乎是书非下载而不能读。编程教材很多电子书,虽说版本不新,但学习并不要看最新的书。一般我想快速入门和练习+手册+一本深入提高的书是必须的。其实最好的教材一定是实践和项目。练习题只能作到基本概念的练习。比如你写下数万行代码后,自然明白为什么要进行抽象,封装和继承。也能明白接口的意义以及怎么提高开发速度。

3. 曲线入门法。其实对很多非计算机专业人员来说,基础差,但不失对编程的兴趣而且会有建树,我就提曲线入门。挑一种工作中用到,接触到,或者可以给你工作带来成果的语言(比如PB对ERP维护人员,实施,以及他公司本身使用PB开发ERP的人有用。)来入门。入门之后,变量,循环,继承,类,这些都了解了。可以说倒回去学c++,java这些也是可以的,新的知识点不超过30%。还可以倒回去,看看算法和计算机原理这些。都可以啊。正应了一句话,兴趣是老师。但可以知道,非专科的人用编程,主要是从实践需求来的,他们带着更多行业经验,再掌握编程技术从而运用计算机作为工具,这个价值是无限的。而专科人员是职业本身就是计算机领域,他们在接触不同项目时学习不同的行业知识并转化为软件。

4.教材掌握概况时拉通读,了解多少是多少。无所谓。

5.在电脑上作练习,配合仔细读教材,每个例子都自己输入和练习。调试错误等。

6.卖油翁曰:唯手熟。的确。当你试着构件一个类,试着多写程序,真正累计到一定的代码数时,程序也就学会了

7.不懂的地方最好在google里搜索而不是跑去网上发帖子。效率低而且没人能解释清楚。从五年前学pcb-layout软件,电路设计到网络管理,再到今天的编程写软件。我都是一个人学习,从来没找过师傅,主要就是靠搜索来解答问题。

8.编程跟学游泳一样。最开始入水,总是浮不起来。但是过了一个门槛期。一切就很顺溜了。很多人也许就是被栏在门槛之外了。需要的就是坚持而已。

9.足够多的写代码和作项目是入门和提高的唯一方法。看书不能解决入门和提高的问题。没有足够的经验积累总是写出低水平的代码或者效率不高。

10.学习编程一定要作一个软件出来,或者找一个共享软件(简单点)或者那种描述完整项目的书,把书合起来,让困难冲击脑子,自己写,实在写不出来,看一下书,看google搜索,看论坛的帖子,合上书,再写。记住:只有贴近实际的方式才能让你学会,练习题永远是无法学会的,切记切记!

11.对于看书就想睡觉的人来说。那就放弃吧。因为你的神经元适合形象思维,比如人际交往,业务拓展等。学点其它的吧。

更多推荐

自学编程的过程和体会[原创]