找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1846|回复: 0
收起左侧

由软件的抽象引发的思考(管理学)

[复制链接]
ID:108935 发表于 2016-3-15 02:29 | 显示全部楼层 |阅读模式
    在我刚开始学习编程的时候,我就意识到一个问题。抽象在使用软件解决问题时的重要工具。解决问题的过程其实是把问题抽象成模型,然后将模型还原成代码。代码是对问题也就是问题的模型的一种描述,由处理器的运行把描述好的问题解决掉。这种抽象一直在我学习编程的路上发挥着重要的作用。
在之后的学习编程的过程中,我一直对各种编程上的东西进行抽象思考。例如,操作系统,面向对象,API,分层,模块化等概念。在偶然间,我突然发现在程序中抽象出的模型和现实中的一些大型系统竟然有着很大的相似之处。例如,公司的结构,交通运输系统,一座商场,乃至这个世界。首先,分层的概念在编程中是极其重要的。有位计算机科学家甚至说过:分层可以解决一切计算机软件问题。然而,现实中的一些大型的组织结构也是分层的。并不是软件专有的。比如国家的管理,是划分区域,然后在区域之下再细分。公司的组织管理结构也是分层,底层员工,管理层等。如果再把编程中的一些其他概念代入进来就更有意思了。部门经理其实就是这个部门模块相对于上层的API函数。需要部门做的事,只需要跟主管沟通,后续的工作执行主管再去依次安排。


    面向对象和面向过程并不局限于编程语言,而是两种不同的代码组织方式或者解决问题的思路。而面向对象语言提供的一些用语言本身的特性来体现这种编程思想,而面向过程的语言去实现面向对象的思想的时候需要编程者的思路去实现。两种方式各有好坏,面向过程效率很高,但是处理复杂情况就不如面向对象更好。我想到,面向过程相当于出租车,面向对象相当于公交车。出租车能把人更快更方便地送到目的地,但是缺陷同时很多人要坐车,每条路线都需要有一辆车,当人非常多的时候需要的出租车资源就很大。反应到编程上来说就是需要些很多函数并且很杂乱。而公交车会走一条大多数人走的路线,只要和坐车人的路程相近就可以上车,但是需要坐车人走到车站,下车后再走到目的地。这样的话,可以运送很多人,但是人需要走到车站。反应到编程上来说就是,建立一个尽量通用的类,然后对于不同的对象赋予不同的属性来使用这个类。这样的话只要和这个类相近的要求都可以用这个类来解决。再往深入思考,一座城市如果人非常少的话,出租车是效率比较高的。人非常多的话,公交车是效率比较高的。在编程上面就是小型系统使用面向过程,效率高,速度快,方便。而大型系统使用面向对象,能够用尽量少的代价去完成大量的工作。整体的效率高。
位于底层之上的非常重要的操作系统其最本质的功能其实是各种资源的管理,内存的管理,文件系统是对硬盘的管理,驱动程序是对外设的管理,而操作系统最核心的功能:任务调度,其实是对处理器的时间的管理。而处理器的时间就是处理器的最重要资源。因为处理器的功能是运算,而运算量和时间是成正比的。也可以说是在自己管理自己。我认为在做裸机编程和位于操作系统之上的编程之中很大的一个区别就是,在做裸机编程时一定要对时间有深刻的意识,因为没有操作系统来帮助你管理时间,需要编程者自己管理好。必须在编程时抽象出程序运行时的模型,而运行时的模型是会在时间的维度上变化的。

    于是,我得出结论。编程,归根到底是一种管理学,对电子系统资源的管理。这些系统的相似性让我想起道家所讲的,一生二,二生三,三生万物。所有的东西的核心是同根同源的,然后分化为不同的形式显现出不同的事物形态

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表