天天看点

技术在进步,思想在轮回

最近,随着美国对中国基础性IT技术发起了制裁,从某种意义上讲,这是一件好事,让我们知道,需要重视基础了。

目前,Linux基本上已经成为云服务器的事实上的标准化操作系统,大量服务软件只需要支持Linux就基本满足中国用了,跨windows平台的需求可以短期不用考虑了。中国很可能会以Linux操作系统作为基础,对各种基础性软件的重新开发。这将会导致一波C语言的热潮。C语言,那可是我们上世纪90年代刚上大学时候的热门语言,当然现在在国外依然很热,只不过在中国大家都用跨平台的Java语言了。真是天道好轮回啊!

另外,很多当前的热门技术都是古老思想的轮回,比如:

NO SQL数据库是层次性数据库的轮回。

并行计算的热门框架Akka Actor源自1973年,那时是用古老的 Lisp语言编写的Actor框架。

所以,在校的大学生们,一定要学好基础接近计算机底层的汇编语言、C语言这些语言可以让你更好地了解计算机运转机制。

一定要学好数学,无论是高数还是离散数学,数学的思维教会我们以抽象的方式描述客观世界,也就是计算机里面最重要的“建模”。

一定要学好数据结构、操作系统原理、编译原理这些基础专业课,它们对你今后编程有莫大帮助。

切莫盲目追求热点技术,如果你把精力放在追逐这些热点技术上,短期或许可以让你更容易找到饭吃,长期而言无助于你的成长,也无助于中国整体IT技术的发展。

当我们看Unix或Linux操作系统中的各种概念和实现思路后会发现,这里面很多关于程序的定义,程序之间的通信,程序内部不同模块之间的交互模式。我们当前所接触的

微服务架构,分布式,消息通信,声明式API,命令式API等都可以在操作系统中找到类似的实现思路和对应的场景。

为什么会这样?

因为信息从根本上讲来自于人的意识,是意识的概念化。一切被人认识的信息都是已经存在的,都是过去的东西,都不应该被改变。哪怕这些意识是你对未来的幻想,那这些关于未来的幻想也是在过去产生的。所谓软件,就是意识活动在数字化世界中的映射。企业的所有的物理性业务活动都必须有意识性活动的参与,在意识的指引下完成。

因此,数据和软件是人的意识和意识活动在数字化世界里的映射。

几千年来,人类的生活方式发生了很大变化,但是在哲学方面,也就是认识世界方面的突破并不大,所以软件在思想方面没有也太多的突破,只是我们是对现实世界原理认识更深刻后反应在软件设计之上而已。而且,简单朴素的认识往往最后被证明最有效。

所以软件设计者和架构师多少应具备一些哲学思维,尤其是辩证法。比如拆解于集成的辩证统一关系,分布与集中的辩证统一关系。当你把系统拆解成了多个微服务,那么这些微服务必须得能够集成,必须有承载集成的设施来体现。当你把微服务分布式部署,必须有集中的管理机制和设施来体现,否则就会出现问题。当我们的提出了理念明显不符合哲学认识或朴素生活常识的时候,就一定会存在巨大的隐患。比如“大中台,小前台“来解决应变的问题,这样的思维,明显存在哲学上缺陷。因为,大的东西很难适应变化,适应变化的东西往往很小。再比如,先有事实还是先有抽象?对于人类而言,先有事实后有抽象,抽象是人对多种不同事实的共性的提炼,所以在一个领域中,对多种事实进行抽象所产生的概念本身不应该被实例化,只有那些表达事实的概念可以被实例化。我们抽象的目的是为了把握共性,根据共性对多种事实进行统一处理,在软件上就能产生可复用的代码。而把多种事实全部或部分信息拼在一起的叫做视图,视图的作用与抽象的作用是不同的,视图解决的是信息全面展示的问题,不是为了统一处理。所以,对于架构师,一定要清楚“事实”,“抽象”和“视图”之间的关系。最重要的是,我们要知道“抽象”和“视图”都来自于“事实”,那么你能分得清哪些是事实吗?坦率地讲,我没有十足的把握。