鄙人大学电气自动化专业,非科班出身,对编程了解不深,但是,经过多年学习以及实践,对它又有了一番新的认识,在这里我想把它说一下。
可能适合刚入门或者即将入门的新人。
所以,编程的本质就在于算法与数据结构的结合。
下面是我自己总结编程的要点。
如果将逻辑和控制有效的分开,那么,代码就变得容易改进和维护。
所以
程序 = 数据结构 + 控制 + 逻辑
实际上的执行描述应该是这样的。
大部分的语言都是基于操作系统的,当一个语言的程序执行了读取文件的操作,他就会先调用操作系统的读取文件的方法,这个方法由操作系统这个程序提前内置。
操作系统是由内核,文件系统,各种驱动,IO,寄存器,硬盘,网络等等组成,实现了对硬件资源的全面掌控或者说是管理。
而,大部分的软件也是基于对硬件或者对数据的管理。
硬件为执行者
忠实的执行由软件生成的机器码,既机器指令,并有条不紊的执行。
对数据进行各种搬移,并发数据按需放到不定的指定位置。
这个其实是我很早就好奇的一件事情,硬件何时与软件建立了沟通,软件如何与硬件进行了联系,又或,啥时候进入了所谓的Main方法。
这就是它的本质,很简单,但是,看书又很枯燥,也许不会有人告诉你,但是,知道了,又感觉那么的简单的事情。
了解和知道整体,才助于有系统化的知识。
碎片的知识是片面的,只有系统化的知识才是整体的,可以让你轻松看到问题的本质,更有效率的处理完事务,也容易让你思考。
我们必当写过一个“操作系统”。
就比如,操作系统里有一个内存管理,我们为了不局限于单体,就出现了Memcached,Redis,等基于内存和硬盘管理的业务型内存管理。
然后,从单体的操作系统,延伸到了,分布式,集群,共用多台计算机资源,分布或共同执行。
所以,操作系统也在从无到有,从单到集中再到分布,合而分之,分而合之。
我曾经面试过一些新人,每个人对问题都有不同的见解,但是,我还是希望有自己的见解,而不是听闻而已。
就比如,windows安全还是linux安全?
稳定的事物必然是趋向于降低变化的,但是,发展,拓展,扩展,都是需要外扩,发展才是硬道理,针对业务的发展,不得不拥抱变化,甚至要主动积极的引入变化,但是,为了保证整体的稳定,又要避免对稳定部分的引入变化,引起整体的震荡。
这种矛盾的局面下,形成了两个极端,一方面要让业务活起来,流动起来,一方面又想让其他核心业务稳定起来,不要影响现有业务。
而这种极端的环境结果,是必然的。
只能针对两种不同的极端情况,对其采纳即可,保持一种平衡。
优秀的语言很多,用的广泛的语言也很多,市场占有率高的语言也有很多,工资高的语言也有很多,但是,真到具体选择的时候,发现还是让人纠结。
入门语言,尽量选择交集,这样,都占有一定的好处,入门之后,还是不要太在意语言本身了,把它当成一种工具,这样,工具多少其实无碍。
毕竟,工具好坏都不太影响你真正成果的产出。
每个人对于一些定论都有各自的见解,但是,我还是希望得有自己的深度思考,就比如,windows安全还是linux安全?,如果尽信网上说的,那就是linux安全,毕竟linux漏洞少。
尽信书,不如无书。
如果我刚毕业,可能会说某某能力很重要,咋的咋的,但是,自己工作多年,所以,也不太好说哪个能力重要,但是,扬长避短,才能让你发展起来。
很多人都会说自己不会啥不会啥,而不会说自己会啥会啥,我想选择另外一边会有不同的人生结果。
按照自然发展规律,以后用汉语(自然语言)来编程指日可待。
这样,各种的AI智能,都是先从理解人类所说的话语的语义开始的,自然语言分析也是一门学科。