编程是编写程序的中文简称,就是让计算机代为解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。
为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算体系之间交流的过程就是编程。
编程是什么?也许每个人都有不同的见解。
有人认为编程是一份工作,也有人认为编程是一种爱好,甚至有人认为编程是此生追求。其实,编程就是编写程序。
首先,从“编”字分析,它既可以表示编写,也可以表示按一定的原则、规则或次序来组织或排列。但,都离不开思考。
“程”字,它既可以表示工程,也可以表示行进的距离。但,都离不开执行。
简单来说,编程就是不停的思考,不停的执行。
编程与做别的事情相同,没有执行捷径,只有思考的方式不同。
章节预览:
章节内容:
1. 成功案例
说起编程界的“天才”,我们首先想到的就是Linus Torvalds。
linus Torvalds的成名之作是我们熟知的linux内核,在它的基础上诞生出许多著名的操作系统,比如:Slackware、Debian、RedHat、Fedora、Ubuntu、LinuxMint等。
linux从初期被人们了解,到中期被人们熟知,甚至到后期占据绝大部分内核江山,都离不开linus Torvalds的宏伟目标。接下来,我们一起了解linus Torvalds的成长之路:
上世纪八十年代,Unix开始向商业化方向发展,大部分学生由于支付不起昂贵的授权费用,不得不停止相关的研究。1987年,荷兰有一位大学教授编写了一个类Unix的应用系统并命名为Minix,用于教学使用。Linus Torvalds起初接触Minix是为了学术研究,接触一段时间发现Minix一些设计观念与自己的理解存在一些差异,但是他不能轻易修改和发布该系统的源码(由于Minix的许可证等问题)。
1991年,Linus Torvalds为当时新推出使用Intel 80386微处理器的计算机开发了一款全新的操作系统,并命名为Linux。
期初,Linus只是在自编写的内核中植入gcc编译器和Shell。由于Linux完全遵循GPL协议主题,发布到互联网后得到强烈的反响,很快吸引了众多开发者、黑客对其代码进行修改和维护。
Linux内核从发布到现在经历了4个大版本以及众多小版本更新,linux发行版也从Slackware最初发布到后来的Debian、RedHat、Fedora、Ubuntu、LinuxMint等等。
上述故事中,我们可以分析出一个关键字,就是“成长”。Linus Torvalds刚开始只是为了学术研究,迫不得已编写自己的内核,内核发布后,发现许多人面临同样的问题,这也让他萌发了新的思想——与大家一起完善这个内核。就这样,linux内核从初期只能编译、执行简单程序,到后来一步一步走上正规化,这些都离不开思想“成长”。
其实,并不是只有伟人的想法可以称为思想,我们每一个人的想法都可以称为思想。思想既表示我们未实现的想法,也可表达为我们未来的目标。
有想法是件好事情,它寄托着我们对成功的向往。接下来,我们为自己定制一个小目标,每一次实现都代表着我们在前进、在成长,并离成功更近一步。 然后我们通过数个小目标,完成我们的远大理想。
2. 为自己定制一个小目标
为自己定制一个小目标很简单,可以是学会几个单词,也可以是学会一门语言的基本类型,甚至可以是理解一篇文章。
目标越细越好,也更容易实现,它更能激发我们求知的欲望。因为目标过大,容易使我们退缩,甚至放弃。而目标过小,太容易实现,无法从中得到“成就感”。
定制目标应根据自己的实际情况做决定,定制目标的原则可以分成以下三步:
1. 预算一周或一个月能够完成;
2. 目标分成多部分执行,执行中如果发现某一部分走不通或太难实现,应修改这部分计划甚至重新定制目标。
3. 目标每一部分足够细致,至少在定制过程中每一步在脑海中都能走通。
生活中,我自己也不停的定制新的目标,执行过程中也遇到不少弯路,好在及时纠正,没有造成过多的影响。
我从正式入职工作到现在也接近五年了,这几年也跨越了几个领域,虽算不上光辉事迹,但也作为大家的参考对象,分析一下:
私下里,我一直保留着写博客的习惯,每一篇文章都记录着我的成长经历,这些经历包含着我心酸的往事、也包含着我对编程的激情。
以前的经历从现在来看,都很轻松、随意,但也是我曾经做了好多努力才做到的,这段经历也是我曾经头疼的经历。
最近这段时间,我自己编写的书籍也篇目过半了,我还在继续为我的以后定制着计划。
任何大的目标都是从一个小目标,甚至是一件小事情做起,只有经历过了才明白其中的艰辛和“成就感”。
3. 提升“绝对力量”
绝对力量不是任何负面因素,它代表我们的编程基础。
编程基础非常重要,日常编码中,我们的每一行代码都由它们组成。刚开始,我并不看重基础知识,因为那时候靠想法编程,几乎是异想天开的想法。但经过一次又一次的打击才发现,基础知识深厚才能编写出优质代码,现在我更愿意按照基础知识编程,因为这样的代码更可靠,也更容易理解。
后来,为了学习基础知识,我参考了大量书籍,每一本都非常认真的分析,每当遇到难点都用铅笔或水笔记录在笔记本内。
再后来,基础知识稳定后,参考任何书籍或任何代码都非常轻松,跨平台、跨语言也可以很快上手。
使用基础知识,可以让我轻松分析透STL中每一份完整代码,比如Vector,map,List等,也可以让我分析透甚至编写出每一个设计结构,比如二叉树、红黑树,甚至我自己编写一个多容器框架。
2018年,我通过自己设计的内存池、红黑树、List,结合在一起做出了一个智能框架,设计它的目的是为了突破多线程中读写的限制。比如在我自己设计的内存池中缓存数据,通过红黑树平衡数据,并通过List储存或删除数据,达到数据同时读取和写入完全不用加锁。但最后还是失败了,那时候能力还是不足,只能在少量数据中做到同时读取和写入不用加锁,大量数据时,则会出现数据错误。当然,以后有时间也许我会重新设计这个结构。
基础知识对于我们的代码来说非常重要,不能为了快速提升自己的能力而忽略基础知识,毕竟少走弯路才是最快的路径。
4. 分析每一次“执行”
编写程序的精髓在于每一次失败,每一次失败都会发现很多不足之处,也许是设计思路不对,也许是内存管理不到位导致,也许是算法使用不当。
编写过程中,代码执行结果在意料之外也是常事,不能因为结果不对就否认这份代码。遇到这种情况,首先要做的就是冷静下来,然后仔细分析容易出错误的代码范围。当然,能调试的情况下,尽量调试代码,错误的出现可能是一个条件的优先级问题,也可能是数据未对齐,或是数据溢出,也或是数据访问越位。这几种情况我们通过眼睛很难观察出原因,只有通过不断的调试,一次又一次的分析数据结果来判断问题所在,调试分析也是最省时间的一种方式。
我在设计新结构时,也遇到过眼睛无法检查出的错误,比如之前写完全随机加密算法。我分析了每一个函数,每一个循环结构甚至是每一条语句,都没有检查出错误。后来调试中想起来,四个字节数据向一个四字节单位位移,如果前三个数中有负数,将会得到一个错误数值。根据这种情况,每次位移时都增加了“&”运算,确保数据的准确性。
坦然面对每一次失败,并总结出失败的原因,是我们成长的路上不可缺少的因素。
5. 你已进入“天才”领域
上述2、3、4中,每一条如果你都能做到,或者都能处理好,那么恭喜你,你成功进入“天才”领域。
所谓的“天才”都是通过日积月累的练习,不断的突破自己,最终脱颖而出。
生活中,如果你是一个仔细的人可能会发现,那些看起来笨笨的人经过一段时间的努力,都会有惊人的进步。其实,这部分人并不笨,他们只是更相信自己,更愿意通过自己的实践来证明事情的对错。因为自己努力得到的结果,比别人口头说出的结果更准确。
几年前,我和普通人的想法一样,认为高手就应该比别人更聪明,比别人更强。但这几年努力后发现,高手不愿意与别人比较,他们更愿意与自己比较,突破自己才是正确的方向和目标。
白嫖不好,创作不易,各位的点赞就是小编创作的最大动力,我们下篇文章见。
编程:设计具备逻辑流动作用的一种"可控体系"【注:编程不一定是针对计算机程序而言的,针对具备逻辑计算力的体系,都可以算编程。】
持续更新,未完待续……
你知道的越多,你不知道的越多~~~~
¥399.00
¥399.00
¥299.00
¥699.00