首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

软件(2)-体系(资源、分形几何学、微服务、面向对象)

软件的开发一开始就限制在硬件资源的框架内,要考虑如何合理运用资源,避免出现错误与耗尽资源,但在开发过程中,显性的问题容易解决,往往是隐性问题导致整体出现不稳定的情况,如条件未考虑清楚(逻辑错误)、微小误差在时间累积下导致的严重错误(错误累积)、系统及软件版本差异导致的兼容问题(资源异常)。因此,在程序开发前,要分析程序需面对哪些资源,如何应用好资源。

为了减少错误,软件工程引入了一个非常要的思想,”分形几何学“,这个由自然演化出的体系能高效的利用资源进行多线程运算。衍生出资源池、线程、拓展性、模块化等架构思想,例如使用windows系统,安装的各种软件处理各自的问题,应用层的软件不是直接和硬件交互,而是通过windows的核心主干与硬件交互,删除软件不影响其他程序与核心层,就像分形的末枝被消除。并且分形的末枝还可以继续衍化,例如chrome浏览器安装插件,桌面的应用启用新模块,都是以分形的思路往下衍化。

如果有疑问,可以以人来类比,人类的族群衍化出不同的人种,寻求生存之道,每个人走上各自的生存之路,而生命给予了繁衍的能力,使得人们可以将知识传授给子孙,循着自己的路继续延伸下去。

目前的软件微服务架构也是基于分形的思想。其核心思想是,一个应用是由多个小的、相互独立的、微服务组成,这些服务运行在自己的进程中,开发和发布都没有依赖。不同服务通过一些轻量级交互机制来通信,例如 RPC、HTTP 等,服务可独立扩展伸缩,每个服务定义了明确的边界。这样的架构易于拓展、维护、稳定性也强很多。

定好架构后,软件代码的编写也衍生出很多规则,面向对象是人们总结出来的一个比较高效的编程范式。原理也与分形有关,面向对象主要思维特点是逻辑分析思维,认为万物皆有边界,如同世界这个词语一样,通过寻找边界封装定义一个事物,然后再探究这个事物内部的组成部分,通过封装不变性,开放变化性,增强系统的柔韧性和灵活性。例如动物的定义包括吃东西、可以活动,食草动物就继承了动物的特点,并且有自己只吃草的特性,子类又有各自的特点形成了不同的物种。

编程设计模式则是思维抽象化的重要经验,处理一些问题,使用一些模式或者说套路可以更简洁高效的完成。就像生活中人与人相处也有很多套路,具体内容读者可以自行查阅。

代码与计算机,对应着自然界的思维与肉体,简洁高效的代码,意味着更快的思考、反应与更少的消耗。当数量级大到一定程度,差异就比较明显。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210316A04MAV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券