编程是现实世界的抽象

在我们的现实世界中,复杂而繁芜。然而,总会有聪明的人将现实世界具有相同特性的特征进行一定程度的抽象总结。这种抽象后的一种理解,能够被运用到各个方面。机器作为人类各种活动的放大器,能够更加方便或者高效的帮助我们完成一定的工作,特别是计算机的出现和快速发展,使人类的计算效率放大了无数倍。随着计算机的产生,编程也应运而生。编程作为一种规范和指引计算机行为的一种语言,能够让计算机按照我们的意愿去完成相应的计算工作。从这个方面说,编程可以是现实世界中的某种行为的抽象体现。在学习编程过程中,总能在一些框架或者编程模型上,找到一些类现实的影子。
计算机的语言,从某个时刻如雨后春笋,蓬勃发展。如同人类世界的语言,英语,汉语,阿拉伯语,西班牙语,葡萄牙语等,对应着计算机的语言的发展C,C++,Java,Python,Scala,Ruby等。人类的语言是人类的交流工具,那么计算机的语言就是人和计算机的交流工具,特别是大规模的并行化计算流行,大数据的快速发展,计算机语言更是计算机与计算机之间交流传递信息的一种重要载体。正如二进制是计算机的基础,那么对应到人类的语言,可能就是人类的声带发声系统。计算机之间的通信而言,TCP、UDP、HTTP的通讯协议,分布式通信框架,Akka、Netty等,都是一种计算机与计算机或者进程与进程之间的一种交流方式。在学习Akka的时候,我们会将此种通信框架比如成一种类似邮件收发系统,而我也经常会把其拿到现实中比对成邮局,这种类似性很强。Netty无独有偶,作为通信框架,也是类似于一种快递方式,比如快递有大件小件之分,各种邮寄品类之分,Netty中Scala实现也会有case class的模式匹配,有endPoint的端对端的建立连接。
从现在广泛使用的大数据组件而言,资源调度系统Yarn、Moses、Sparkstandalone,计算系统MapReduce、Spark,存储系统的HDFS、S3、谷歌的Dfs,以及存储方式演变的MySQL、Oracle、Redis、HBASE、以及各种nosql数据库系统,离线计算的工具hive,流式计算的storm,sparkstreaming,flink,协调服务的zookeeper等。对应的现实中,各个组件的核心功能,总会从现实中找到缩影。一个工程项目部,会有项目经理层,负责资源的调度,但不会从事具体事务,只会做资源的分配,那么就有点类似Yarn的功能。计算框架Spark,可能就是类似于项目的工程部。具体的切分Stage可能就相当于工经部。而协调服务zookeeper,做为命令的传达或者共享部分,也可以看成是项目办公室。各种材料仓库是如HDFS的存储系统,作为材料的管理部门类似于物资部。最终的工程结果可能就是计算结果。这种对应是很粗浅的,仅仅是作为一个类比。根据实际的施工图纸施工,可能程序员是一个设计图纸的工程师,工程的具体执行依赖机器和工人,程序的执行依赖于计算机和进程。
所以在进行编程开发或者框架的思考的时候,可以从现实世界抽象某种逻辑,而后加以抽象化,再运用编程知识将其语言化,使得某一类工作交由计算机帮助执行。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值