展开

关键词

23条阿西洛马人工智能原则

人工智能发展引人注目,看到波士顿动力公司机器人视频,也会增加人们对于人工智能发展危机感。所以必须有规则限制人工智能发展方向,不可以使其危害人类,所以制定了阿西洛马人工智能原则。 2017年1月,在加利福尼亚州阿西洛马举行Beneficial AI会议上,近干名人工智能和机器人领域专家,联合签署了阿西洛马人工智能23条原则,呼吁全世界在发展人工智能同时严格遵守这些原则,共同保障人类未来伦理 阿西洛马人工智能原则(Asilomar AI Principles)是著名阿西莫夫机器人三大法则扩展版本。 这个组织专注于由新技术和问题构成潜在威胁,如人工智能、生物技术、核武器和气候变化等。 目前为止,已经有多达1273名人工智能 /机器人研究人员和其他领域2541人签署支持这些原则原则目前共23项,分为三大类,分别为:科研问题(Research Issues)、伦理和价值(Ethics and values)、更长期问题(Longer-term Issues)。

68820

人工智能发展,需要遵守四个AI伦理原则

人们享受着AI智能生活同时也开始对此感到担心。人们开始担心人工智能是不是一种仿生学,它会不会最终威胁到人类安全。 人工智能发展,需要遵守四个AI伦理原则: 第一个原则是安全可控是最高原则; 第二个是促进人类平等地获得技术和能力是创新愿景; 第三个则是人工智能存在价值不是超越人、代替人,而是教人学习和成长; 第四个是人工智能终极理想应该是带给我们更多自由和可能 世界上不只有大公司需要AI技术和能力,几千万组织都需要。防止技术不平等,导致人们在生活、工作上不平等,这是我们需要思考。 AI技术使命,就是要通过学习人、从而去忠诚服务于人,让人类生活得更美好,但AI技术发展也需要价值观指引,在AI伦理价值新“红绿灯”指引下,才能迎来“一个更美好AI时代”。

6920
  • 广告
    关闭

    90+款云产品免费体验

    提供包括云服务器,云数据库在内的90+款云计算产品。打造一站式的云产品试用服务,助力开发者和企业零门槛上云。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    面向对象设计原则-开闭原则

    Open-Closed Principle,"开闭原则"百科上是这么说:一个软件实体(如类、模块、函数)应该对扩展开放,对修改关闭。 为什么? 开闭原则是面向对象设计原则中最基础原则,可称之为原则原则,也可以说是原则指导思想,它强调是既稳定又灵活,在不修改源代码情况下又增加了新功能,核心思想是面向抽象编程。 "开闭原则是抽象类,其他五大原则是具体实现类。"对测试影响,可以提高复用性,提高可维护性,面向对象开发要求。 怎么用? (来说说抽象,抽象是对一组事物通用描述,它没有具体实现,也就表示它有很多可能性,在程序语言中抽象表现为在接口或抽象类定义一些可变行为,并且能够实现对扩展开放,其包含三层含义: 第一,通过接口或抽象类约束扩展 最后再说说封装变化,包含两层含义: 将相同变化封装到一个接口或抽象类中; 将不同变化封装到不同接口或抽象类中;

    16140

    面向对象设计原则-依赖倒置原则

    Dependence Inversion Principle,DIP"依赖倒置原则",依赖倒置原始定义是: Hign level modules should not depend ; 高层模块依赖抽象层:高层模块基于抽象层编程; 低层模块依赖抽象层:低层模块继承或者实现抽象层; 细节:实现接口或者继承抽象类而产生类; 模块间依赖通过抽象发生 ,实现类之间不发生直接依赖关系,其依赖关系是通过接口或者抽象类产生;接口或者抽象类不依赖于实现类;实现类依赖接口或者抽象类,核心思想是面向接口编程; 采用依赖倒置原则可以减少类之间耦合性, 提高系统稳定性; 举个例子: ? 最佳实践 依赖倒置原则本质就是通过抽象(接口或抽象类)使各个类或模块彼此独立,不互相影响,实现模块间松耦合,我们在项目中应该尽量做到: 1.每个类尽量都有接口或者抽象类,或者抽象类和接口两者都具备

    23110

    面向对象设计原则-里氏替换原则

    "里氏替换原则"是类设计原则之一,我们使用"3H"学习法对其进行拆解; why(目的):为什么要学习"里式替换原则",我们都知道面向对象三大特性:封装、继承、多态,该原则就是对良好"继承关系 接下来我们开始进行具体学习; 概念:LSP,"里式替换原则",凡是在父类出现场景中,将父类替换为子类,程序逻辑不变,反之则未必可以。 1.子类需要实现父类抽象方法 2.子类尽量不要重写或覆盖父类中已经实现方法 3.子类重载父类方法时,子类输入参数>=父类输入参数&子类输出参数<=父类输出参数 4.子类可以添加自己特有的新方法,原则上不建议 LSP经典例子:正方形和长方形不符合里式替换,设置宽、高后,长方形体积=宽*高,正方形体积=高*高,子类无法替换父类,不符合里氏替换原则; 在策略模式中,客户端类依赖抽象父类,场景类使用时传入具体策略子类 ,子类都实现了父类抽象接口,可以互换,这就符合里式替换原则

    43830

    面向对象设计原则-单一职责原则

    Single Responsibility Principle SRP,"单一职责原则":一个类只负责一组相关事情,对应到代码中就是:一个类有多个方法,这些方法时相关。 对于接口一定要做到单一职责原则: ? ? ? ? 对于类来说,尽量做到单一职责原则,一个多职责类可以通过拆分、抽象、组合来实现单一职责原则。 ? ? ? ? ? ? 单一职责原则只适合那些基础类,而不适合基于基础类构件复杂聚合类,在"办公一体机"中,"打印机"、"复印机"、"扫描仪"、"传真机"都是基础类,每个类承担一个职责,而办公一体机是"聚合类",同事具备四种功能 单一职责原则优点: 1.职责减少,类复杂性降低,职责明确; 2.可读性提高,复杂性降低; 3.可维护性提高; 4.一个接口修改只对相应实现类有影响,对其他接口无影响; 原则虽好,但是还要掌握一个度吧 ,不要过渡设计,原则帮助我们写出更优雅、更具有扩展性、松耦合代码设计,根据具体情况而定,要灵活运用;

    33110

    面向对象设计原则-迪米特原则

    Least Knowledge Principle LKP,"迪米特原则":一个对象应该对其他对象有最少了解。 通俗说就是,一个类应该对自己需要耦合或调用类知道最少,你(被耦合或调用类)内部是如何复杂和我没关系,我就知道你提供这么多public方法,我就调用这么多方法,其他我一概不关心。 迪米特原则核心就是解耦合,它对类低耦合提出一些要求: 只和朋友交流。 朋友定义:出现在成员变量、方法输入输出中类称为朋友类,而出现在方法体内部类不属于朋友类。 ? ? ? ? 以上代码中,Teacher类与入参GroupLeader为朋友关系,但是与方法中Girl也有了交流,破坏了Teacher类健壮性,方法时类一个行为,类竟然不知道自己行为与其他类产生关联,违反了迪米特原则 2.朋友间是有距离

    20610

    设计原则之开闭原则

    所谓对扩展开放,对修改关闭,其实是设计模式里面所重点提倡,后续所有涉及模式介绍其实都是为了程序能够更好扩展,提倡设计模式本质就是为了减少 增加一点功能而修改系统主要逻辑! 尽量通过扩展类操作来实现行为变化,而不是通过修改已有代码来实现修改 错误示范 下面还是老规矩,我们先看一段错误代码! StringFormatUtil.stringFormat(MSG)); } } 程序必须首先让人类理解,然后顺便让机器能执行^_^xxxx Process finished with exit code 0 总结 通过上述代码可以知道,开闭原则是是为了避免过多修改原有的代码逻辑 ,用扩展代替修改而衍生一个原则,不可否认,他也是所有的设计模式都想表达一个结果,高扩展性。 对拓展开放是为了应对变化(需求),对修改关闭是为了保证已有代码稳定性;最终结果是为了让系统更有弹性! 开闭原则也并不是免费。有些情况下,代码扩展性会跟可读性相冲突。

    20430

    设计原则(1)| 开闭原则

    开闭原则是指一个软件实体(模块、类、方法等)应该对扩展开放,对修改关闭 我举一个例子,陀螺是个程序喵,创办了一个生产猫粮公司——跑码场,手下有个小徒弟叫招财,写了一个下单逻辑。 这些操作都是通过「修改」来实现新功能,不符合「开闭原则」。 如果我们要遵循「开闭原则」,必须对修改关闭,对扩展开放。 对于count属性添加而言,在模块或类粒度下,可以被认为是修改,但是在方法粒度下,我们并没有修改之前存在方法和属性,因此可以被认为是扩展。 实际编码过程中怎么遵守开闭原则? 我理解是不需要刻意遵守。 你只需要头脑中有这个印象就行了,你需要知道就是你代码需要具有一定扩展性。所有的设计原则都只有一个最终归宿——不破坏原有代码正常运行,方便扩展。 还是那句话,设计原则和设计模式不是金科玉律,只要适合当前需求,并具备一定弹性设计就是好设计。要平衡代码扩展性和可读性,切勿滥用设计原则和设计模式,牺牲代码可读性。

    7120

    Linkerd设计原则

    作者:William Morgan tl;dr:服务网格需要设计原则吗?我们是这样认为。我们围绕三个核心原则构建了Linkerd 2.0,这些原则旨在降低运行服务网格操作成本,尤其是对人类而言。 从JVM到Rust迁移是Linkerd 2.0成功一个重要部分,但是同样重要是,我们决定为2.0编写一组核心产品设计原则。 这些代价是配置、理解、调优和操作Linkerd 1.x所花费时间。 为了解决这个问题,我们2.0设计过程从写下一组设计原则开始,这些原则将确保我们面向用户做对事。这些原则很简单: 保持简单。 无论它是通过计算资源来度量,还是更重要,在人类花费时间中度量,这些原则都要求Linkerd忠实于保持服务网格运行成本尽可能低目标。 有关这些原则更多细节和一些实际应用示例,请参阅Linkerd设计原则文档。

    22430

    混沌工程原则

    即使分布式系统中所有单个服务都正常运行, 这些服务之间交互也会导致不可预知结果。 这些不可预知结果, 由影响生产环境罕见但破坏性真实事件复合而成,令这些分布式系统存在内在混沌。 系统弱点包括以下形式: 当服务不可用时不正确回退设置;不当超时设置导致重试风暴;由于下游依赖项流量过载导致服务中断;单点故障时级联失败等。 高级原则 以下原则描述了应用混沌工程理想方式,这些原则基于上述实验过程。 对这些原则匹配程度能够增强我们在大规模分布式系统信心。 建立一个围绕稳定状态行为假说 要关注系统可测量输出, 而不是系统属性。 对这些输出在短时间内度量构成了系统稳定状态一个代理。 混沌工程原则为我们大规模创新和给予客户他们应得高质量体验提供了信心。 欢迎加入混沌社区 Google 讨论组和我们一起讨论这些原则应用。

    1.3K30

    3W原则,20H原则,五五原则

    3W原则: 这里3W是线与线之间距离保持3倍线宽。你说3H也可以。但是这里H指的是线宽度。不是介质厚度。 20H原则: 是指电源层相对地层内缩20H距离,当然也是为抑制边缘辐射效应。在板边缘会向外辐射电磁干扰。将电源层内缩,使得电场只在接地层范围内传导。有效提高了EMC。 若内缩20H则可以将70%电场限制在接地边沿内;内缩100H则可以将98%电场限制在内。针对EMC PCB设计中20H原则? 这两个 0V平面向外延伸距离至少要相当于它们各自与电源平面间层距20倍。 3. 在所关心任何频率上,电源总线结构不会产生谐振。 4. PCB总导数至少为8层或更多。 笔面试作答简记: 20H原则是指电源层边缘要比地层边缘至少缩进20倍层与层间距,以抑制边缘辐射效应; 内缩20H可限制70%电场,内缩100H可限制98%电场。

    5210

    软件交付原则

    摘自Jez Humble David Farley《持续交付:发布可靠软件系统方法》 为软件发布创建一个可重复且可靠过程 这个原则是我们写这本书一个目标:让软件发布成为一件非常容易事情。 事实上,它的确应该是件很容易事,因为在发布之前,对发布流程中每一个环节,你都已经测试过数百次了。它就应该像单击一个按钮那么容易。 这种可重复性和可靠性来自于以下两个原则: 几乎将所有事情自动化; 将构建、部署、测试和发布软件所需东西全部纳入到版本控制管理之中。 归根结底,软件部署包括三件事: 提供并管理你软件所需要运行环境,这包括硬件配置、所依赖软件、基础设施以及所需外部服务; 将你应用程序正确版本安装在其之上; 配置你应用程序,包括它所需要任何数据以及状态 将几乎所有事情自动化 把所有的东西都纳入版本控制 提前并频繁地做让你感到痛苦事 内建质量 “DONE”意味着“已发布” 交付过程是每个成员责任 持续改进

    32020

    软件测试原则

    今天是日更 78/365 天(用时22分钟) 话不多说,直接上干货,从事软件测试工作,需要遵循这七大原则: 测试显示缺陷存在 测试有效性(杀虫剂悖论) 测试尽早介入 缺陷集群性(2/8原则) 测试活动依赖于测试内容 不存在缺陷谬论 穷尽测试是不可能 一、测试显示缺陷存在 测试可以显示缺陷存在,但不能证明系统不存在缺陷。 在测试中,同样测试用例被一遍一遍反复使用时,发现缺陷能力就会越来越差。 三、测试尽早介入 IBM一份研究结果表明,缺陷存在放大趋势。 四、缺陷集群性(2/8原则) 1、从功能上来说,一个软件如果有20 %为主要功能,那就需要花费软件测试人员80%时间。 2、再从bug上分析,一个功能模块发现bug越高,那存在未被发现bug也越高,所以发现bug与未发现bug是成正比。“80%错误集中在20%程序模块中”。

    6550

    java设计原则--里氏替换原则

    java核心特性之一:继承,Java中继承时单继承,子类继承了父类后就可以使用父类属性和方法(私有属性和方法以外),子类需要重写父类抽象方法,继承机制在一定程度上提高了代码复用性,提高了代码可拓展性 ,但也是有缺点 继承缺点 缺点一:继承时侵入性,也就是说子类继承了父类就必须拥有父类所有的属性和方法 缺点二:灵活性降低,子类必须拥有父类属性和方法,让子类多了些约束 缺点三:增强了耦合性,当父类常量 、变量和方法被修改时需要考虑子类修改 里式替换作用 Java单继承机制从总体上看是利大于弊,那么,如何让利优势发挥最大,同时减少弊带来麻烦呢,于是就有了里式替换原则,里氏替换原则为良好继承定义了一个规范 我们在做系统设计时,经常会定义一个接口或抽象类,然后编码实现,调用类则直接传入接口或抽象类,其实这里已经使用了里氏替换原则 举一个CS案例: 枪主要职责是射击,如何射击在各个具体子类中定义, 注意 在类中调用其他类时务必要使用父类或接口,如果不能使 用父类或接口,则说明类设计已经违背了LSP原则 本文内容参考设计模式之禅,仅用于个人学习,如有不妥请联系删除

    9720

    面向对象7种设计原则(7)-开闭原则

    开闭原则 开闭原则是面向对象世界里最基础设计原则,它指导我们如何建立一个稳定,灵活,可扩展系统。 什么是开闭原则 开闭原则明确告诉我们:软件实现应该对扩展开放,对修改关闭,其含义是说一个软件应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化。 开闭原则告诉我们应尽量通过扩展软件实体行为来实现变化,而不是通过修改现有代码来完成变化,它是为软件实体未来事件而制定对现行开发设计进行约束一个原则。 为什么使用开闭原则 第一:开闭原则非常有名,只要是面向对象编程,在开发时都会强调开闭原则 第二:开闭原则是最基础设计原则,其它五个设计原则都是开闭原则具体形态,也就是说其它五个设计原则是指导设计工具和方法 依照Java语言称谓,开闭原则是抽象类,而其它五个原则是具体实现类。

    13510

    软件开发原则

    虽说现在软件开发技术难度越来越高,但程序员工作复杂度并没有提高,反倒是轻松一些,从最早面向过程,到面向对象,再到现在面向组件编程思想,是越来越高级了,但也不是像外行眼里“搭积木”那样轻松 以Web系统开发为例,和你讲讲软件现在主流开发模式。现在程序员做开发,首选是二次开发,就相当于你买二手房,不用装修,拎包入住。 但并不是所有需要开发项目都有老产品或开源项目可以用于二次开发,多数都是特定业务流程,这样项目就要选择第二种,基于框架进行开发,框架相当于一个半成品,就像你买是毛坯房,按照你需求装修即可,不仅房屋结构有了 ,就连装修材料都运来了,只需要程序员把精力放在业务流程开发上即可。 除了二次开发或基于框架开发,企业开发中就没有第三种选择,如果你执意从底层地基开始一砖一瓦建造房子,等到能用时候,就算公司没开除你,公司估计也要倒闭了。

    20921

    Material布局原则

    原则 Material Design 指南通过源自印刷领域设计元素 – 例如排版、网格、空白、缩放、颜色,和图像 – 来建立层次结构和传达所要表达含义,并专注于带给用户沉浸式体验。 应用背景类似于一张平坦、不透明质地纸片,应用行为也模仿纸片,可以改变大小、拖动及把多个纸片粘合在一起。 在本规范中,构成应用表面被成为材料或材料片。 应用之外元素,例如系统状态栏,和应用内容是分开,不会被视为材料。 更多关于材料细节,详见材料属性。 接缝 两片材料公共边缘被成为接缝。当通过接缝连接时,它们会一起移动。 两片材料接缝 阶层 两个 Z 轴位置不同材料片重叠时,会形成阶层。这两个材料会相互独立移动。 两片重叠材料构成阶层 浮动操作按钮 浮动操作按钮 浮动操作按钮是和工具栏分离圆形纸片。 它表示单个被提升操作。 如果它和阶层中内容创建有关,则可以跨越一个阶层。 跨阶层浮动操作按钮 如果浮动操作按钮与两个材料内容都有关,则可以跨越接缝。

    36040

    扫码关注腾讯云开发者

    领取腾讯云代金券