美文网首页
浅谈计算机世界的透明性

浅谈计算机世界的透明性

作者: 小鲍比大爷 | 来源:发表于2018-09-16 21:04 被阅读0次

    首先声明,这是一个跟具体技术无关的话题,也是之前自己一直感觉很有意思的一个概念。
    初次接触到透明性的概念,是在学习计算机网络时接触到的,第一次听到这个概念,并不能特别深入理解。在学习更多有关计算机相关的多类技术后发现,其实整个计算机体系跟人类的思维模式是相通的,透明性这个概念,人类尤其擅长。
    最简单的例子,中国主席跟美国总统讲话,他俩直接交谈的话,无法知道对方在讲什么,但是他俩只需要各带一个翻译,问题便轻松解决了,他们无需知道对方在讲什么,只需要知道翻译讲什么就OK了,这里相当于多了个中间层,中间层用来解决了双方不匹配的问题,从而使得双方的交流变得透明。
    从上面的例子,可以看到人类可以通过增加层次,让交流变得更透明更简单,其实计算机也是类似。拿计算机网络来讲,我们现在进行网络编程,有很多实现好的协议,像Spring,仅仅加注一个注解,便可以很简单的实现一个http服务,甚至无需了解http到底是如何通讯的,但是实际在计算网络中进行了非常详细层次划分,我们在完成一个非常简单的http接口后,这些通讯数据实际经过了物理层-数据链路层-网路层-传输层-应用层(TCP IP协议层),这些概念对我们现在的高级语言程序员来讲,实际上是透明的,多层的架构设计让编程变的更简单透明。因为这些不同的网络层次,实际上在底层做了非常多工作,包括了网络拥塞控制、目的地址寻址、传输的可靠性等等非常繁重的工作,这些我们看不到的计算网络层次,已经在不同层次帮助解决了这些问题。正因为看不到这些底层工作,所以称之为透明。
    同样,从计算机语言的角度来讲,也存在透明性。因为不管什么程序,跑到最后都是二进制指令,到最后都逃脱不了取指令-执行指令这个循环(因为CPU的工作原理就是这样),最终所有复杂的代码都被化为计算机的基本指令,就像人吃完东西最终都被转化成了葡萄糖一样。其中的奥秘也来源于分层的概念,典型的比如JVM虚拟机,程序员编写了JAVA程序,JAVA程序编译后转换成字节码,字节码跑在C语言编写的JVM虚拟机上,而C语言编写的虚拟机就像一个小型的CPU一样,不断的取指令执行指令,最终二级制的虚拟机hold住全场。而作为程序员,只需要关注JAVA代码即可,不需要关注JVM是怎么写成的。程序员吃的是米和面,最终的葡萄糖他是不需要去了解的,这种透明性让开发变得更为高效。这种透明性概念促进了无数的JAVA框架的诞生,力图让程序编写变得更简单更透明,让程序员思考的更少,了解的更少。从软件工程开发的角度,这是好事,不过真的好吗?
    透明性让计算机编程变得更简单,因为太多的封装设计让程序员已经不需要去写类似机器码的汇编程序,作为程序员,虽然不推荐重复造轮子,但是多关注些底层实现,可以让我们更好的了解各种设计的优点和缺点。透明性,真的是一个值得玩味的话题。

    相关文章

      网友评论

          本文标题:浅谈计算机世界的透明性

          本文链接:https://www.haomeiwen.com/subject/ppbfnftx.html