一、概述
两千多年前, 亚里士多德对于第一性原理是这样表述的:在每一系统的探索中,存在第一原理,是一个最基本的命题或假设,不能被省略或删除,也不能被违反。
“第一性原理是超越因果律的第一因,且是唯一因,同时第一性原理一定是抽象的。”可以理解为:第一性原理是事物惟一的源头,是抽象的,而且比因果律更高级。这个理论告诉我们,看透事物的本质,要把事物分解成最基本的组成,从源头解决问题。
事物:人认识的对象是为事物。自然先有物,再有人物,再才有事物。自然物无人存在也就无法呈现出根本,人少了自然物更无法生存,人少了对事的描述就少了发展的认识,自然社会少了人对事物的呈现就难有进步和发展。
二、程序的第一性原理
我们先看生物学的第一性原理是什么呢?自然选择,适者生存。
地球上,亿万年的生物进化史,无数生物都在大自然这个伟大的生态系统里面生衍繁息,优胜劣汰,适者存留,这是自然运行的根本规律。
而在计算机中,先熟悉应用程序、操作系统、物理硬件三者之间的关系。
1、操作系统对计算机硬件设备进行操作,如控制声卡发出声音,控制显卡绘制图形等。
2、操作系统可以感受到用户对输入设备的操作,如鼠标的移动,键盘的按键被按下等,并且可以知道鼠标移动的位置,被按下键盘的字符,Windows将这些信息包装成一个消息,来由操作系统会将这个消息发送到消息队列当中,应用程序会调用消息响应函数进行相应的处理
3、表示应用程序可以通知操作系统执行某个具体的动作,以便使应用程序间接的通过OS对硬件操作,其实程序员只需要关注应用程序与操作系统的交互即可,对于操作系统是怎样控制硬件设备的只需大致了解即可,此过程即为应用程序对Windows api调用的过程,这一过程称为系统调用,通过系统提供的接口函数就可以指挥操作系统来干活了。
4、表示操作系统能够将输入设备的变化上传给应用程序,widows并不对产生的某一事件进行相应,而是将这一消息传递给消息队列或者直接传递给某一对象进行处理。
由上可以知道我们知道软件程序是运行在操作系统上。因此根本上讲我认为程序的第一性原理是运行在操作系统的二进制指令。
三、程序员学习第一性原理的价值
学习最少必需知识以节约时间:
在知道了第一性原理后,我们就知道为什么大学要讲计算机导论,操作系统等课程作为学位课,并且长久不衰的原因了,因为他们都是讲解计算机软件知识原理本质性的书籍。特别是越往深入研究,就会越发显现出它们的重要性。此外在进入一个陌生的领域、学习一门陌生的技能和学科时,这是一个行之有效、最节约时间的方法:删繁就简,直击核心,掌握最少必需知识,快速入门。
2、抓住本质,重新定义规则和竞争
运用第一性原理颠覆式创新,将过程化简为最基本的部分,这些基本部分又恰好是构成整体的基础。因而能够真正使人去思考一些基础的真理,并且从中去论证,而不是类推。过去,我们绝大多数时候都是类推地思考问题,也就是模仿别人做的事情并加以微幅更改。但当你想要做一些全新的东西时,必须要运用第一性原理来思考。”
附:
java代码是如何执行的?
当程序被加载进内存后,指令就在内存中了,这个时候说的内存是独立于 CPU 外的主存设备,也就是 PC 机中的内存条,指令指针寄存器IP 指向内存中下一条待执行指令的地址,控制单元根据 IP寄存器的指向,将主存中的指令装载到指令寄存器,这个指令寄存器也是一个存储设备,不过他集成在 CPU 内部,指令从主存到达 CPU 后只是一串 010101 的二进制串,还需要通过译码器解码,分析出操作码是什么,操作数在哪,之后就是具体的运算单元进行算术运算(加减乘除),逻辑运算(比较,位移).而 CPU 指令执行过程大致为:取址(去主存获取指令放到寄存器),译码(从主存获取操作数放入高速缓存 L1 ),执行(运算)。

网友评论