文档章节

电源插座和软件设计

 普罗旺斯的啊
发布于 2016/11/12 11:15
字数 1334
阅读 5
收藏 0

  2002年的冬天,我在北京联通出差。刚参加工作,有点小紧张,给电脑接电源,插三孔插座的时候错位60度,噗哧一下冒起了火花。没有酿成事故,但是这件事情一直没能忘记。其实国标的三孔操作在设计规范上已经考虑了这种错误,三个插孔的开口方向是不一样的。问题出在插座上面,当时用的是万能接线板,除了国标,欧标和美标也能插进去,因此国标插头即便错开60度,用点力气也能插进去。此后到其他地区出差,特别留意他们的插座,发现最安全的是欧标,三相插孔的设计两阴一阳,根本没有错位的可能。

  

 

  欧标插头和插座

  欧标插座还有其他优点,比如最多调整90度就可以对准;插头作为整体嵌入插座,不用担心金属部分暴露漏电;圆柱状金属头加球面前端设计,省力且牢固。这些暂且按下不表,今天想谈的是程序设计语言中的安全措施。

  程序语言的插座–类型系统

  最近用python开发过几个小工具,颇为趁手。原因之一是python支持duck typing。可以把任意类型的对象赋值给变量,运行时系统在访问到这个对象的时候才会判断其类型是否正确。换句话说,实现了类级别的运行时多态(对比一下,C++/JAVA通过接口和虚函数支持函数级的运行时多态,而模板支持类和函数级别的编译时多态)。

  首先,不要求提前定义接口。可以边思考边写代码,不用在接口部分和实现部分之间来回切换。

  其次,不要求统一的对象界面。实现多态的时候不需要对象都是从统一接口上扩展出来的,对象可以拥有只在某些特定分支下会被调用的接口,其他对象,如果不会命中这些分支,就可以不用定义这些接口。如果习惯了c++/java,这种风格就是脑残,但是对快速开发真的很有效。想象一下,在静态语言的OOD中,如果原来设计的统一接口满足不了需求,通常意味着概念抽象出了问题。乐观情况下,要么扩展原有接口方法的内涵,并在调用者和被调用者之间重新分布职责;要么把无法涵盖的部分抽取出来,增加一个接口方法。

  凡事必有两面,首先是正确性不易验证。类型错误只有程序运行时才能检测出来,通电以后才能发现抽头插错了,用静态语言,同样的错误最晚编译时就能检查出来。

  其次是理解代码费力。阅读静态语言,看看数据结构、函数原型(C语言),或者类型/接口定义(C++/JAVA),对程序结构能了解个八九不离十。动态语言,非得把对象间的调用代码读完,才能把握程序的设计结构。

  JAVA是相反风格的代表,典型的“欧标插座”。不支持动态类型,更不支持内存这种“万能插座”。做一件事情,JAVA只给你一种方法。

  语言设计和程序设计要考虑两个认知因素,一是方便写,一是方便读。动态类型方便写,静态类型方便读。动态语言编写结构复杂,确定性要求高的程序还是面临挑战。语言没有内置“欧标插座”,必然要求语言的使用者自律,尤其是团队协作开发时必须遵循一致的设计策略。

  提升安全的语言特性

  更多阅读请点击:郑州白癜风医院

  更多阅读请点击:郑州牛皮癣医院

  程序设计语言一直在往里面添加安全特性。比如ANSI C添加对函数原型的支持(最古老的C语言只关心函数名字,不检查返回值和参数类型,C的链接器现在还保留这样的设计),const和static修饰符;C++链接器的隐式函数类型检查,引用类型,类成员的可见性修饰;java对指针的弃用,package,等等。恰当使用这些特性,可以把错误捕获在编码阶段。

  不止是软件设计

  但凡人会犯糊涂的地方,都是“欧标插座”的用武之地。只能单向打开的消防门,电脑机箱里的各种接线缆接头,优秀软件的人机界面等等。程序设计语言和API,本质上是一种抽象的人机界面。程序语言是人和计算机之间的界面,API是人和另外一堆代码的界面。记得读大学的时候,学校里有个工业心理学实验室,主任是现在阿里的王坚,他们的主要方向就是各种人机界面设计问题。

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 7
码字总数 6339
作品 0
郑州
怎么做办公室网络布线

怎么做办公室网络布线 浏览:1144 | 更新:2014-10-07 17:43 1 2 3分步阅读 网络布线实现广域网或者局域网的链接和应用。 工具/原料 网线 光纤 路由器 方法/步骤 一、办公室网络布线设计原则...

james_laughing
2016/02/26
21
0
攒机号外之三

呵呵,为了复习一些基础知识,网上到处游 一、主板图解    一块主板主要由线路板和它上面的各种元器件组成   1.线路板   PCB印制电路板是所有电脑板卡所不可或缺的东东。它实际是由几层...

match2000
2011/12/12
0
0
设计模式——适配器模式(adpter模式)

适配器模式:按照字面理解可以理解为要适应要配合才能一起很好的工作。 专业定义:把一个类的API转换成用户期望的另一种API,让原本不能在一起工作的类能够在一起工作。如果理解起来不是很明...

姬鑫
2015/05/16
0
0
Arduino可穿戴开发入门教程LilyPad和LilyPad Simple的介绍

Arduino可穿戴开发入门教程LilyPad和LilyPad Simple的介绍 LilyPad和LilyPad Simple的介绍 LilyPad和LilyPad Simple是LilyPad微控制器板的两个主要变型。他们是本书的核心,所以在开始使用之...

大学霸
2016/06/03
77
0
戴森召回逾11万台进口空气净化器,曾被质检总局通报,宣扬的中产标签是否符实?

日前,戴森贸易(上海)有限公司向国家质检总局提交了召回计划,从2017年12月12日起召回部分进口空气净化暖风器。据统计,中国大陆地区受影响的产品数量共计116283台。 据澎湃新闻报道,本次...

智科技
2017/12/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

区块链教程以太坊源码分析core-state源码分析(一)

兄弟连区块链教程以太坊源码分析core-state源码分析,core/state 包主要为以太坊的state trie提供了一层缓存层(cache) database主要提供了trie树的抽象,提供trie树的缓存和合约代码长度的缓...

兄弟连区块链入门教程
14分钟前
0
0
使用putty上传文件

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: 使用putty上传文件 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::linux 用户名 set linux_us......

shzwork
15分钟前
1
0
摹客首家发布Adobe XD插件

10月19日,摹客iDoc发布了支持Adobe XD的插件,这是中国国内首款基于Adobe XD 正式API的插件。 设计师在Adobe XD 中安装并使用此插件,可以将设计稿上传到摹客iDoc,并使用iDoc的全部协作设计...

mo311
15分钟前
0
0
MetInfo最新网站漏洞如何修复以及网站安全防护

metinfo漏洞于2018年10月20号被爆出存在sql注入漏洞,可以直接拿到网站管理员的权限,网站漏洞影响范围较广,包括目前最新的metinfo版本都会受到该漏洞的攻击,该metinfo漏洞产生的主要原因是...

网站安全
16分钟前
0
0
git统计代码行数

$ npm install -g cloc$ cloc . 2193 text files. 1533 unique files. 760 files ignored.github.com/AlDanial/cloc v 1.78 ......

moon888
16分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部