是简单撑起了计算机世界

170 篇文章 3 订阅
6 篇文章 1 订阅

是简单撑起了计算机世界

原创   公众号:  软件设计活跃区 2019-10-19

是简单撑起了计算机世界

 

你觉得计算机复杂吗?

但今天想告诉你的是——是简单撑起了计算机世界

 

  • 回忆大学的学习时光,计算机或许是最难的一门学科

 

数学让文科的同学头痛,特别是女同学,英语让理科的同学头痛,特别是男同学;而计算机则需要同时学好这两门学科,难度可见不是一般。

学习C语言的时候,还算好;学到C++和面向对象的时候,也还行;但看到MFC类库的时候脑就要炸了。学《数据结构》,简直像天书。当时读大学用的是绿色版那本,只能看懂一大半,有点故作高深的感觉。后来工作了好几年,买了一本新的,简单多了,很容易看懂,行文用通俗易懂的语言也加多些图例说明了。还好没有放弃计算机,没有怀疑自己的智商问题。借用“举重若轻”,感慨:述繁若简真的很重要,能把问题说得简单,就不要说得那么高深。

 

           

 

  • 回忆编码的工作岁月

在大学,学MFC太难了,也没能实现什么强大的功能。后来就学了Java,J2EE,感觉这个还比较实用,能快速做JavaWeb系统。就这样,毕业后就从事这方面的工作。当时jsp,servlet,EJB很流行。小网站,小系统用jsp开发,速度没得说,就是快。但开发企业级的系统,要用到EJB。EJB可是一个很庞大复杂的家伙。虽然有工具帮助生成很多相关代码,但要在生成的代码里加自己的业务逻辑却不是一件简单的事情。以致后来Spring的作者写了一本书《expertone-on-one J2EE Development without EJB》,反对使用EJB。书中列举了部分EJB为什么那么复杂的原因,如想写得更复杂,让别人看不懂,好收取服务费,捆绑销售(卖servlet服务器)等。因为EJB的复杂,最终被号称轻量级的Spring占据了市场。事实告诉我们,计算机世界要的是简单,并不是复杂。

 

  • 是简单撑起了计算机世界

是简单撑起了计算机世界,而不是复杂。就像这个自然界,男女,白天黑夜等简单元素组成了这个美丽的世界。男人和女人组成了人类,白天和黑夜构成了我们过的日子。计算机世界也是由简单的元素构成的。作为开发工程师的你,不管你是用C语言、C++、Java还是python,其实最终都会被转成0和1,计算机底层是简单的,就0和1两种。比我们熟悉的十进制都要简单,十进制还要用0~9十个数字表示。  二进制里,一位0或1可以表示一种状态,如0表示白天,1表示黑夜。

在深圳特区从市民广场去往科技园的路上,被一条河(沙河)隔断,河上有一条桥,桥上有许多0和1的数字。寓示着有着中国硅谷之称的深圳科技园与外界的联系是用0和1的,而用0和1的科技正是IT相关的高新技术。

                              深圳科技园01桥

 

说到进制,大家不要觉得只有十进制。在现实现生活中,除了十进制,还有钟表12进制(转一圈就12小时),装箱的酒水、饮料等也是12进制,每12进1(即12瓶就满一箱啦)。还有纪年的,甲子60轮流转,转一圈就60年,也就60进制了;角度也是60进制。

再来说回二进制。用我们最熟悉的十进制来类比说明。十进制里逢十进一,所以不会出现一个数字是十的,要用两位10表示;二进制,逢二进一,所以也不会出现数字2,要用10来表示2。

十进制0~5,对应的二进制如下表所示。

二进制

十进制

0

0

1

1

10

2

11

3

100

4

101

5

 

通过分析得到规律:21=2=10,22=4=100,…,210=1024=100 0000 0000。

(每个式子里,前两个数是十进制数,后一个是二进制数;指数是多少,即多少次方,对应二进制就有多少个0)

计算机存储单位换算:1024比特=1k, 1024k=1M,1024M=1G。

现在知道硬盘500G,是怎么回事了吧。计算机里,进制千就是1024(商家可能会以各种理由说按1000算)。在计算机行业里的人对1024都是特别有感情,这就是10月24日程序员节日的由来。

 

  • 简单对软件设计的启示与影响

软件设计,需要寻找一种简单的设计方法,而不是复杂的。  写复杂软件的解释就是:1)当时技术水平或认识限制;2)想写得更复杂,让别人看不懂,好收取服务费,捆绑销售等。without EJB这种书就说了EJB当时主要就是基于这种原因。

    下面用JavaWeb开发中,大家都熟悉的ORM工具来说明使用简单思想来设计的软件有什么好处。

在ORM编程中,当用面向对象方式操作一个DB表时,要写一份dao文件;当操作两个表时,要写两份dao;当操作n个表时,要写n份dao。所以这代码老写不完,又感觉似曾相识,没必要这样重复劳动。

为了讨论编码效率问题,采用编码复杂度来衡量。编码复杂度用于描述编码量与所解决问题的规模的关系。则此时编码的复杂度会随着问题规模增长为n,编码复杂度也增长为n。可以回想下,大学岁月学的《数据结构》里的时间复杂度和空间复杂度,用类比来感受下编码复杂度。

下面通过具体使用例子,来看下ORM工具HibernateBee的使用情况。

 

Hibernate ORM使用例子

                   

Bee ORM使用例子

                        

表1 ORM工具编码对比

新ORM框架Bee与Hibernate的对比,如表1所示。从表中可以看出,Bee框架的编码复杂度是O(1),也就是说Bee不会因为要操作更多的数据库表而要编写更多的代码。这样,ORM操作数据库表的工作量由n变为1,生产率也提高了n倍。将任何数据库表对应的实体类型看作是无区别的一种抽象类型,是Bee框架能将编码复杂度从O(n)变为O(1),工作量由n变为1的关键。

 

如果你可以将一件事情做得简单,请不要将它做得复杂!

--------------------------------------------------------------

 

Bee框架已开源,欢迎关注★。

https://github.com/automvc/bee

 

https://gitee.com/automvc/bee

 

软件设计活跃区] 专注:开发速度快、编码少、简单、高效、AI智能的软件设计与开发方法。编码复杂度用来衡量编码量的多少。编码复杂度为O(1)的软件则编码量不受软件规模的影响,类似时间复杂度和空间复杂度为O(1)的效果。

目标:设计具有人工智能(AI),省时/优雅、简易、自动( AI Tea: Timesaving/Tasteful, Easy, Automatic) 风格的软件(AiTeaSoft)。

 

 

          

                    长按二维码可关注

                  更多重磅文章等着你!

 

QQ群:   992650213

 

微信群:    IT软件设计交流群3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值