软件发展过程及现状
电脑软件的发展史第一代软件(1946-1953)第一代软件是用机器语言编写的,机器语言是内置在计算机电路中的指令,由0和1组成。第二代软件(1954-1964)当硬件变得更强大时,就需要更强大的软件工具使计算机得到更有效地使用。汇编语言向正确的方向前进了一大步,但是程序员还是必须记住很多汇编指令。如今使用这些底层语言开发产品的软件公司少之又少,现在有一大堆高级语言推到了开发者的面前,而且这些高级语言简单易懂、功能强大。但与此同时,一大堆的软件技术层出不穷,让开发者无所适从,因为软件技术实在太多,不知道从何学习,今天学了可能明天又落伍了。那么身为程序员的我们如何跳出这个左右为难的境地呢?
跳出向上学习的陷阱
何为"向上学习",向上学习在这里是指跟踪学习当前技术热点,比如在大数据方面,今天学hadoop,明天学spark,搞得自己都好累,可能过一段时间这些技术又落伍了,又要学新的技术了,想想现在还有多少人还去学Struts呢,当年可是很火的。向上学习很累,我们为何不往回看看,回到我们学习软件最初的核心呢。
从本质上来说,程序员写软件就是写自己对世界的认知,是程序员的思想映射,那些各种各样的高级语言只是一个工具,仅此而已。所以说提高我们的认知而增加对世界本源的理解才是我们应该去做的,用白话来说就是提高底层的思想。我们可以用软件系统中高可用高并发的存储集群来举个例子。如下图
如上图,分片保证了高并发,副本保证了高可用。我们可以回忆一下,我们用到的redis、hadoop、ElasticSearch等底层的设计是不是都是这思想呢?可能具体的表现和中间件本身的侧重稍有不同,但底层的思想却是大同小异,这样我们还需要一个一个去学习这些中间件吗?毫无疑问,当我们学好了这些思想后,在实际使用时注意他们的差别就行了,这些中间件只是这些思想的不同呈现而已。
下面再举个例子来证明程序员编程行为是自我的认知和生活体现。单体系统进化到分布式系统可能是每个架构师都会遇到的问题。但是在生产生活中类似的例子屡见不鲜,最突出的就是小作坊到工业流水线。二者都是因为需要将处理能力提高,而将不同的处理节点独立出来,如下图
如上图,我们还能说编程有什么神秘的吗?不就是实际生活中一些思维方式的体现吗?
写在最后
向上走太累,那就停下来,回到原点去了解他本质的东西,也就是所谓的第一性原理。
我们可以在一两周学会一门编程语言,但是认知才是决定了程序员能力的关键,而个人认知提升需要长期的积累。所以老铁们,我们需要好好再看看那些计算机底层的思想、好好体验生活、培养良好的价值观和哲学思想。与君共勉。
软件学习之追本溯源
于 2022-09-02 17:45:15 首次发布