概述:

我们经常在论文中看到“鲁棒的算法(robust algorithm)“这个名词,那什么是”鲁棒(robust)“呢?这篇文章从一下几个方面做了介绍。

---鲁棒的定义

******在通常情况和特殊情况下都能表现很好

---如何设计才能达到鲁棒

******从系统一开始设计开始

---Unix系统鲁棒的原因

******简单,可阅读性强,每个函数都很小

******函数可以适应大部分情况,避免增加额外处理的代码(可能会引起更多的bug)

******开源

******Unix组织代码的方式:组合(Composition)

******提供给应用程序私有地址空间

******权限管理

The word robust, when used with regard to computer software, refers to an operating system or other program that performs well not only under ordinary conditions but also under unusual conditions that stress its designers' assumptions.

Software is typically buggy (i.e., contains errors) and fragile, and thus not robust. This is in large part because programs are usually too big and too complicated for a single human mind to comprehend in their entirety, and thus it is difficult for their developers to be able to discover and eliminate all the errors, or to even be certain as to what extent of errors exist. This is especially true with regard to subtle errors that only make their presence known in unusual circumstances.

A major feature of Unix-like operating systems is their robustness. That is, they can operate for prolonged periods (sometimes years) without crashing (i.e., stopping operating) or requiring rebooting (i.e., restarting). And although individual application programs sometimes crash, they almost always do so without affecting other programs or the operating system itself.

Robustness is something that should be designed into software from the ground up; it is not something that can be successfully tacked on at a later date. The lack of advance planning for robustness is a major factor in the numerous security and stability problems that plague some non-Unix-like operating systems.

The Rule of Robustness in the Unix philosophy states that robustness results from transparency and simplicity. Software is transparent when a skilled programmer can examine its source code (i.e., the original version written by a human in a programming language) and soon comprehend how it works. It is simple when its operation is sufficiently uncomplicated that a programmer can visualize with little effort all of the potential situations that it might encounter. The more that programs have both of these qualities, the more robust they will be.

Another important tactic for creating robust software is to write general code that can accommodate a wide range of situations and thereby avoid having to insert extra code into it just to handle special cases. This is because code added just to accommodate special cases is often buggier than other code, and stability problems can become particularly frequent and/or severe from the interactions among several such sections of code.

Linux and other open source software, i.e., software for which the source code is freely available, has a major advantage over closed source software, i.e., software for which the source code is secret (as is the case for most commercial, or proprietary, software) as far as robustness is concerned. It is that the source code can be reviewed by a large number of highly diverse programmers at their leisure via the Internet, and thus it is easier to find and correct errors than when the code is reviewed only by in-house programmers who are often under pressure from deadlines and who might not have strong incentives to find and eliminate all the bugs.

Applying the Unix Philosophy's Rule of Composition (i.e., to design programs so that they can be connected to other programs) also helps result in robust software. This is because it leads to small, modular programs that are easier to comprehend and to correct than are larger ones that attempt to do many things. It is also because input received from other programs (as contrasted to that from humans) can be particularly effective for stress-testing software and thus for helping to provide tolerance for unusual and large inputs.

The robustness of Unix-like operating systems is also the result of several additional deliberate design concepts. One, which has been adopted increasingly by other operating systems as well, is the providing of each application program with its own area of memory and preventing it from interfering with the memory areas for other applications or the kernel (i.e., the core of the operating system).

Another is the system of permissions that are required for accessing all objects (i.e., files and directories) on the system. This system, when administered correctly, can make it difficult for sloppy or malicious (e.g., viruses, worms and trojans) code to affect key parts of the system.

来自linux学习的一个不错的网站:http://www.linfo.org/index.html

Robust Definition相关推荐

  1. 对比学习系列论文SimROD(二): A Simple Adaptation Method for Robust Object Detection

    0.Abstract 0.1逐句翻译 This paper presents a Simple and effective unsupervised adaptation method for Rob ...

  2. Policy Evaluation之Doubly Robust论文讲解

    ● 每周一言 不用担心自己有多努力,因为每个人身边总会有个人比你更努力. 导语 前一篇文章已经铺垫好了增强学习评估的概念,几乎所有对强化学习策略评估的方法都是基于重要性采样展开.其中最经典的方法,莫过 ...

  3. Mentor-dft 学习笔记 day24-Path Definition File

    The Path Definition File 在外部ASCII文件中,必须使用路径定义文件来定义要在测试集中测试的所有路径. Path_name - A unique name you defin ...

  4. 【论文翻译】Mean Shift: A Robust Approach toward Feature Space Analysis

    论文题目:Mean Shift: A Robust Approach toward Feature Space Analysis 论文来源: Mean Shift: A Robust Approach ...

  5. OpenCV中的SURF(Speeded-Up Robust Features 加速鲁棒特征)

    OpenCV中的SURF(加速健壮功能) 1. 效果图 2. 原理 2.1 为什么SURF比SIFT快? 2.3 怎样获取SIFT与SURF? 3. 源码 参考 上一篇博客介绍了用于关键点检测和描述的 ...

  6. conflicts with existing, non-compatible bean definition of same name and class

    Annotation-specified bean name 'xxxxxImpl' for bean class [cn.abc.dao.service.xxxxxImpl] conflicts w ...

  7. CF1471 D - Strange Definition(思维,分类讨论,lcm,gcd的性质,数论)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #694 (Div. 2) D 很好的一道数论思维题 D - Str ...

  8. python使用statsmodels包中的robust.mad函数以及pandas的apply函数计算dataframe中所有数据列的中位数绝对偏差(MAD)

    python使用statsmodels包中的robust.mad函数以及pandas的apply函数计算dataframe中所有数据列的中位数绝对偏差(MAD.Median Absolute Devi ...

  9. R语言广义线性模型函数GLM、R中有几种泊松回归扩展和变异、变时段泊松回归、零膨胀泊松回归、鲁棒泊松回归、pscl包的zeroinfl拟合零膨胀泊松回归、robust包中的glmRob函数拟合鲁棒模型

    R语言广义线性模型函数GLM.glm函数构建泊松回归模型.R中有几种泊松回归扩展和变异.变时段泊松回归.零膨胀泊松回归.鲁棒泊松回归.pscl包的zeroinfl拟合零膨胀泊松回归.robust包中的 ...

最新文章

  1. 孔雀翎----《Programming C# 》中文版 第4版
  2. Xcode 调试的正确打开方式——Debugging
  3. 今日课堂学习笔记01
  4. qunee for html5 api,Qunee for HTML5 - 中文 : 常见问题
  5. 一个将当前目录下HEX文件的第一行数据删除的程序...
  6. 【题解】luogu p1111 修复公路
  7. DEV C++如何不需要通过建项目可以调试程序
  8. 为什么Flink会成为下一代大数据处理框架的标准?
  9. mac mysql 的lb_简单Mysql的lb集群
  10. X86汇编语言从实模式到保护模式13:保护模式程序的动态加载和执行
  11. 【2021牛客暑期多校训练营5】Jewels(建图,最小匹配权,KM乱搞)
  12. 操作系统课程设计 Kernel编译和WinDbg启动 批处理文件
  13. RAC知识更新之-RAC单节点启动(摘自文平书)
  14. Vue之filters传参问题
  15. java解析json天气api,使用Postman获取天气接口API(Json格式)
  16. Android自定义折线图,可设置基准线,不同点颜色
  17. Android开发面试经典题目
  18. Layui.open 弹出上传图片、视频预览
  19. 组态王怎么做进度条_三种方法制作进度条效果
  20. 有关兰州IOC项目 对接华为北向IOT-消息订阅模块的Demo编写以及验证梳理(陈晓阳)

热门文章

  1. 怎么注册美国域名,要注意什么呢?
  2. python运维开发招聘_GitHub - PlutoaCharon/LiunxNotes: 校招-运维开发(Liunx,Python,Golang)面试学习笔记...
  3. 定位及元素的显示和隐藏
  4. 软件体系结构基本概念汇总
  5. 魔术师乔布斯,炼金术士苹果——苹果公司第四季度报表简评
  6. 计算机硬件更新向导,Win7系统提示欢迎使用找到新硬件向导怎么办
  7. Python 实现子域名查询与爆破
  8. 电车识别 电瓶车识别
  9. 大事情!中国限制 AI 算法出口。网友:这是要阻止XX“下跪”
  10. 《扫毒2》火爆来袭,刘德华不要片酬,却要了电影版权,网友:为啥