• [原创]面向生命(Life Oriented 简称 LO)编程


    序言:

    软件是个生命体!

    万事万物皆变化!

    为什么我会提出"面向生命(Life oriented)"编程的思想,因为我们一直以来以建筑学的角度来审视软件工程,将软件定义为一种无生命的产品,而事实是外界的需求的无时无刻都在变化 要求我们做出来的软件也随之变化,你难道想让一所盖好的房子会每时每刻根据外界的环境变化吗?而有生命的植物和动物则可以,会依据环境的变化而变化,一株 草会根据压在上方的石头而改变自身的生长形态而曲折生长,软件应该也会为适应变化而调整自身的结构和功能来避免被变化的环境所淘汰!没错这是个适者生存的 世界,软件也一样。

    还有一个原因就是软件和人一样是有生、老、病、死的,诞生的时候具有面向对象思想中人类的基本属性和行为,但是还很 弱,就像婴儿一样,但是面向对象的思想将世界万物都抽象成类,类的实例创建了对象,但是根本没有发现一类的对象之间是存在差异的,难道你看到过世界上长的 完全一模一样的人吗?没有,因为每个人都是鲜活的生命体,尽管具有人类的共同属性和行为,但是每个人都有自己的性格、学习能力、、、、、、、,同时每个人 的成长历程是根据环境的不同而不同,也就是适应变化,刚生下来的婴儿是最原始的对象,然后通过人类具有的基本行为嗅觉、听觉、视觉、味觉、触觉、学习能力 来获得信息不断完善对世界的认识,从而形成不同的性格,也逐渐成长起来从需要外界服务,到能够对外界提供服务,而每个人接受的知识和自己的能力决定了最终 他能够为外界提供哪种服务,随着时间周期和自身的消耗慢慢老化,直至死亡,软件也是如此,开始我们只是依据目前的静止的需求将其创建出来,可我们错就错在 用一种静止的眼光去看待软件,其实它是在我们的不断提供信息的过程中,不断成长,同时从我们提供的信息中它在学习强化了自身的功能,并能够提供给我们更多 功能,也就是目前各大网站提供的对外接口服务,其实yahoo或google开始这些网站系统是没有能力提供这些服务的,为什么是因为它们没有足够支持这 些服务的信息,就好比它们开始只是婴儿还需要我们提供信息给它,让它成长一样,当它在我们不断的信息营养下成长成为一个巨人的时候,它们反过来能够为我们 做更多以往我们都没有想过能做的事,这就是一个软件生命体,而不是我们传统意义上的建筑,建筑的功能是有限的而生命体的功能是无限的,因此你硬要将一个不 变的软件去适应不断变化的环境那是种错误!因此,我们需要一种全新的思想去指导我们去设计软件那就是“面向生命”!

    第一章:什么是面向生命编程

       面向生命编程是以面向对象为基础,将对象赋予生命特质的一种编程思想。

       面向生命编程将世界中具有相同属性和行为的事物化为为”类“,”类“的具体实例称为”对象“,每个对象都具有“繁殖”能力,繁殖的定义是同类的一个或多个 对象通过“结合”产生”亲子对象“,”亲子对象“具有父类的”遗传“属性和行为,同时具有特有的”个性“的属性和行为,“生命体”是独立的个体,它具有“学习”、“分析”、“判断”、“成长”、“创造”能力,它通过对外界提供给它的信息内容利用“判断”和“分析”后,经过“学习”然后“创造”出”自制“的功能,以”服务“的方式提供给外界进行使用。"生命体"具有“模仿”能力,它通过外界提供的对某种功能的“描述”然后对描述进行“分析”、“判断”然后结合自身的“信息”资源进行“创造”出具有同等功能的能力从而达到“模仿”。

    生命与应用系统的对应关系图:


    生命体:就是最终的应用软件系统

    骨骼:等同于应用系统的目录结构,用于支撑整个系统运行的整体的存储结构。

    神经系统:就是大脑,是整个软件系统的核心,用于支配和调度各个”服务单元“运行实现”能力“的中枢,本身具有”记忆“、”学习“、”分析“的能力。

    器官:对应软件系统中的服务单元,只具有某种能力的独立单元,通过对外界提供服务来实现某种能力,同时也具有自己的学习、分析、能力,对采集到的外界信息进行汇总分析并进行学习,来完成新能力的实现过程。

    血液:对应软件系统中流淌的信息元,也就是独立的信息实体对象,每个信息对象也是独立的生命体,就像社会中的人一样,它具有独立的能力,承载独立的个性,穿行与整个系统中,并在神经系统的控制下在各个器官间穿行,为器官提供信息,同时获得器官处理后的信息。是整个系统的动力源泉,没有血液的系统是个死生命体,有了血液才能让生命体不断的成长。

    皮肤:对外的表现形势,可以是页面、xml、、、等等用户易于操作的形势,甚至是视频或是图片、声音、信号等媒体



    作者:mikel
    出处:http://www.cnblogs.com/mikel/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    该文章也同时发布在我的独立博客中-www.mikel.cn

  • 相关阅读:
    ExtJS 基础解析之【Ext.Window】
    螺旋队列算法分析 (转载)
    字符串NSString中去掉空格
    iOSCocos2d使用Zwoptex生成plist文件
    获取网上流视频总时长和当前播放时长
    popToViewController导航条跳转的用法
    iOS: Device token and registerForRemoteNotificationTypes, didReceiveRemoteNotification
    UILabel的详细使用及特殊效果
    UITextView使用sizeWithFont:计算自适应文本高度
    iPhone开放播放gif动画
  • 原文地址:https://www.cnblogs.com/mikel/p/1188604.html
Copyright © 2020-2023  润新知