参考网络文章,……html
如何 学习C语言 时间:2007-1-5 17:23:03 做者:梁肇新 程序员
梁肇新先生谈编程 — 舒愈的博客 (2007-02-14 01:20:01)编程
从C语言程序员入手,实现个人梦想:在 GNU 领域作出突出贡献,像华人小子李小龙同样。怎么学习C语言?(这里我遵从“梁肇新”先生指路。)网络
① 学习编写程序“规范的格式”编程语言
长标识符命名(命名规则),代码缩进,一对大括号范围不超过一屏,……ide
我在干什么,让人人都能看得明白。函数
② 耐心工具
个人足球,颠球从0到10,从10到30,从30到50,……到100,……性能
双脚内侧拨球,双脚拨球次数30万次。(双脚内侧拉球一样)学习
……
③ “重复权威是成熟的必经之路”
学习书本上的源代码,亲自敲出来,编译、调试……,一本接着一本调试。
熟悉功夫套路——练习师傅的拳路子
④ 学习师傅的代码后,本身有想法,……
先在纸、笔之间演练本身的思路,以人脑做为电脑,处理一边,调整好了上机测试。
练就绝世武功(编程)
① 能熟练地使用某种编程语言
练习套路阶段
② 熟悉平台的接口、语言自身的函数库
系统调用函数、库函数;
完成后便可以擂台决战。
③ 深刻了解某个平台的底层
开始练习内功,达到必定功力;依赖于环境。
④ 在平台上进行较深层次的开发
对系统的核心能作出修改;
摆脱对于具体语言的束缚,能够作到举一反三;
内功修炼的高级阶段。
⑤ 再也不着眼与技术上的问题了,能从全局上把握和设计一个比较大的软件系统。
⑥ 该阶段的全部问题,仅仅是一个思路。
①②:经过自学彻底能够实现。
③: 开始依赖环境
5年时间走完①②③。
初级程序员和高级程序员的区别
通常对于一个问题,初级程序员和高级程序员考虑这个问题的方法绝对是不一样的。好比,在初级程序员阶段时,他会以为vb也能作出应用来,且看起来也不错。
但到了中级程序员时,他可能就不会选择vb了,可能会用mfc,这时,也能作出效果不错的程序。
到高级程序员时,他绝对不是首先选择以上工具,vb也好,vc也好,这些都不是他考虑的问题。这时考虑的绝对是什么才是具备最快效率、最稳定性能的解决问题的方法。软件和别的产品不一样。好比,在软件中要达到某个目标,有n种方法,可是在n种方法中,只有一种方法或两种方法是最好的,其余的都很次。因此,要作一个好的系统,是很须要耐心的。若是没有耐心,就不会有细活,有细活的东西才是好东西。我以为作软件是这样,作任何事情也是这样的,必定要投入。
程序员到达最高境界的时候,想的就是“我就是程序,程序就是我”。这时候我要作一个软件,不会有本身主观的思路,而是以机器的思路来考虑问题,也就是说,就是以程序的思考方式来思考程序,而不是以我去设计程序的方式去思考程序。这一点若是不到比较高的层次是不能明白的。
你设计程序不就是你思考问题,而后按本身的思路去作程序吗?
其实不是的。在我设计这个程序的时候,至关于我“钻”入这个程序里面去了。这时候没有我本身的任何思惟,个人全部思惟都是这个程序,它这步该怎么走,下步该怎么走,它可能会出现什么状况。我动这个部分的时候,别的部分是否要干扰,也许会动一发而牵全身,它们之间是怎么相互影响的?
也只有到达这个境界,你的程序才能真正地写好,绝对不是作个什么可视化。可视化自己就是“我去设计这个程序”,而真正的程序高手是“我就是程序”,这两种方法绝对是不一样的。好比,我要用vb去设计一个程序,和我自己就是一个程序的思惟方式,是不同的。别人也许以为操做系统很深奥,很复杂,其实,若是你到达高手状态,你就是操做系统,你就能作任何程序。
对待软件要有一个全面的分析方法,光说理论是没有用的。若是你没有通过第1、第2、第3、第四这四个阶段,则永远到达不了高境界。由于空中楼阁的理论没有用,而这些必须是一步一步地去作出来。
一个高级程序员应该具有开放性思惟,从里到外的全部的知识都能了解。而后,看到世界最新技术就能立刻掌握,立刻了解。实际上,技术到达最高的境界后,是没有分别的。任何东西都是相通的,只要你到达这个境界之后,什么问题一看就能明白,一看就能抓住最核心的问题,最根本的根本,而不会被其余的枝叶或表象所迷惑,作到这一步后才算比较成功。
从程序员自己来讲,若是它到达这一步之后,他就已经造成了开阔的思惟。他有这种开放性思惟的话,他就能作战略决策,这对他未来作任何事情都有好处。事实上,会作程序后,就会有一种分析问题的方法,学会怎么样把问题的表象剖开,看到它的本质。这时你碰到任何具体的问题,只要给点时间,都能垂手可得地解决。实际上,对开发计算机软件来讲,没有什么作不了的软件,全部的软件都能作,只是看你有没有时间,有没有耐心,有没有资金作支撑。
这几年,尤为是这两三年,估计到2005年前,中国软件这个行业里面大的软件公司就能造成。如今就已经在造成,例如用友,它上市后,地位就更加稳固了。其余大的软件企业会在这几年内迅速长大。这时候,包括流通渠道、经销商的渠道也会迅速长大。也就是说,到2005年之后,中国软件这个行业的门槛比如今还要高不少,与美国不会有太大的差异。此时,中国软件才真正体现出它的威力来。若是你是这些威力中的一员,就已经很厉害了。
别人可能知道比尔?盖茨是个谈判的高手,是卖东西的高手,其实,比尔?盖茨从根本上来讲是个程序高手,这是他根本中的根本。他对全部的技术都很是敏感,一眼就看到本质,并且他自己也能作程序,时常在看程序。如今他不作董事长,而作首席设计师,这时他就更加接近程序的本质。由于他自己就有很开阔的思惟,又深刻到技术的自己,因此他就知道技术的方向。这对于一个公司,对他这样的人来讲,是很是重要的。
若是他判断错误一步,那公司之后再回头就很难了。计算机的竞争是很是激烈的,不能走错半步。不少公司之前看上去很火,后来就销声匿迹了,就是由于它走错一步,而后就不行了。为何它会走错?由于他不了解技术的本质在哪里,技术的发展方向在哪里。
比尔?盖茨由于父母是学法律的,因此他自己就很能“侃”,颇有说服力,而他又是作技术的,就很是清楚技术的方向在哪里,因此他才能把方向把握得很准确,公司愈来愈大。而别的公司只火一阵子,他却火了还会再火。就算微软再庞大,你若是不把握好软件技术的最前沿,同样也会玩完。就像intel时刻把握着cpu的最新技术,才能保证本身是行业老大。技术决定它的未来。
因此,程序员要能达到这样的目标,就要有很是强的耐心和很是好的机遇才有可能。事实上,如今的机会挺好的,2005年之前机会都很是大,之后机会会比较小。可是,若是有耐心的话,你仍是会有机会的,机会都是出在耐内心。我记得有句话说“雄心的一半是耐心”,我认为雄心的三分之二都是耐心。若是你越有野心,你就越要有耐心,你的野心才有可能实现。若是你有野心而没有耐心,那都是胡思乱想,别人一眼就能看穿。最后在竞争中,对手一眼就看到你的意图,那你还有什么可竞争的?