隐喻是什么?

隐喻其实就是比喻,把一件比较陌生的事情,用一个形象的思维来描述。

我给你举个例子:

我想做一种操作,先定义一个整数数组A,再定义整数B = 0。

定义如下的操作:

1  向数组里边保存数值的操作:

得到一个整数C0,就在A[0]处保存C0,B加1。再得到一个C1,在A[1]处保存C1,B加1.

2 从数组取值的操作:

必须先从A[0]处取值,然后删除A[0]的值,A[0]后面的数值依次向前面窜一位,B减1.

上面的操作应该是看明白了吧,我的描述应该也没什么问题。按照我的描述,你也可以写出相应的代码来。但是

上面的描述是不是显得很啰嗦,并且不是一目了然。说白了,上面的操作无非是一个队列,先进来的先出去。这个队列,就是我们

说的隐喻,用现实我们的生活经验,来模拟虚拟的代码世界的规则。看起来确实是一目了然呀。

我们为什么要用隐喻呢?

因为我们人类,已经习惯了形象化思维,我们有推理的能力,从相似的事物规则推理我们不很熟悉的规则的能力。并且在很多时候

是非常有效的。这就是我们说话的时候,总喜欢打比方的原因。怎么讲你也听不明白,那我就给你打个比方,恩,看来你听明白了。

代码的世界,是一个很虚拟的世界。在这里你定义的一些规则,如果能和现实的规则有什么联系的话,理解起来就简单多了。并且,

还可以利用现实的经验来推断你的代码。

据个例子:

定义一个布尔变量 LampSwitch,代表这是一个灯的开关。现在有两个函数亮灯()和灭灯()。

1 LampSwitch =On的时候,应该是调用什么函数呢?

2 LampSwitch =Off的时候,应该调用哪一个函数呢?

八成没有人可以回答错了。

但是如果我定义一个 整数 Abc

1  Abc =1的时候,应该是调用什么函数呢?

2  Abc =2的时候,应该调用哪一个函数呢?

你还真说不上来,这个Abc是什么呀?嗯,,,先不管是什么,我就规定Abc等于1的时候,调用亮灯(),等于2的时候调用灭灯()。

这个程序也可以运行,估计你做的程序也不会有什么太大的问题。不过我敢保证3个月以后,单独拿出来Abc来,你肯定忘记了应该怎么

设置了。它太不形象了。现在还好,调用的2个函数还比较形象,如果是函数是A1()和Fgh()呢。或者别人看你的程序呢?

别人-----恩,这家伙写的什么呀,什么意思呀?怎么Abc等于1的时候就调用A1()。

作者------你就照着上面的规则用吧,不是已经写得很清楚了吗?

别人----- 但是,想不明白你为什么这样写。。。。

作者------代码就是这样,慢慢就习惯了。

我敢肯定,你现在写的代码,肯定那一天就是bug的隐患。

设想你来到一个大楼,想用一下电梯,上面的按钮表示着[1]和[2],你知道是干什么的吗?

你要是不知道的话,你的代码里边还是少了一些不很形象的变量和函数要好一些,你说呢?

总结:

代码很难懂,最好你用一个形象的比喻把它表现出来。就像我们的生活中间一样。

转载于:https://www.cnblogs.com/kimhao/archive/2009/02/15/1390937.html

隐喻是什么?我们为什么需要它相关推荐

  1. 软件隐喻的本质与模式

    1.引言 隐喻思维具有普遍性,是人类认知得以深化的前提之一,隐喻是丰富人类语言的有效手段. 然而,一直以来,对于隐喻的讨论主要限于语言学和修辞学,从而将隐喻狭隘化,局限化,使得隐喻在其他领域中的作用未 ...

  2. 动效设计中的隐喻-2

    这次我们再看一些别的有关隐喻(或曰明示)的设计. 示意关系 所谓示意关系,就是通过特定的动作来表明界面中控件之间的某些关系,包括包含关系.前后关系和位置关系.其实就是我们以前讨论过的连接的一种.有一些 ...

  3. 动效设计中的隐喻-1

    界面中静态视觉语言有隐喻,这个我们都知道. 这些隐喻有些是常识中的某些共识,有些则是设计师通过长年累月的传达,让用户逐渐培养出的一种习惯.这种习惯看似是理所当然的.设计师们也乐于在各个设计角落布置诸多 ...

  4. enfp工具箱怎么用_隐喻:你的工具箱

    分享一些在心理咨询中好用的隐喻.在帮助家庭学习新的沟通方式时,我喜欢「工具箱」这个隐喻.顾名思义,工具箱里装着各种各样的工具,不同工具适用于不同场合.有些工具你装备了未必用得上,但你不会嫌工具太多.别 ...

  5. 中文幽默语料库构建与计算项目(幽默等级识别,幽默类型识别,隐喻类型识别,隐喻情绪识别)

    ChineseHumorSentiment chinese Humor Detection or Computation based on corpus and nlp methods, 基于语料库与 ...

  6. kcp 介绍与源代码分析_Mendel:基于遗传隐喻的源代码推荐

    引用:Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering, ...

  7. 用隐喻来更充分地理解软件开发

    隐喻是启示而不是算法.因此它们往往有一点随意(sloppy). 隐喻把软件开发过程与其他你熟悉的活动联系在一起,帮助你更好地理解. 有些隐喻比其他一些隐喻更贴切. 通过把软件的构建过程比作是房屋的建设 ...

  8. socket、listen 等函数的打电话隐喻

    如果用电话来隐喻 TCP 的连接过程中用到的函数, 那么: 1. socket 函数意味着有电话可用: 2. bind 告诉其他用户自己的号码, 以便其他用于打给它: 3. listen 是电话的响铃 ...

  9. 计算机设计思想 —— 类比、建模与隐喻(同构)

    一切有意义的事物皆有历史,有迹可循.-- <真探> 将知识首先简单划分为已知和未知两个互斥的类别,然而已知和未知之间并非完全地泾渭分明,井水不犯河水.重要的科学发现常常来自 analogy ...

  10. 元宇宙都市传说02:《头号玩家》的隐喻

    撰文 / 白欧 编辑 / 沈洁 到底什么是元宇宙? 可能很多人在回答这个问题时,会自然而然地联想到2018年上映的<头号玩家>.斯皮尔伯格在他的科幻故事中,并未提及"元宇宙&qu ...

最新文章

  1. 物联网技术正颠覆传统医疗行业
  2. python interpreter 中没有torch_PyTorch扩展自定义PyThon/C++(CUDA)算子的若干方法总结
  3. iOS 中二维码扫描(zxingObjc和原生)
  4. python源文件后缀_Python怎样获取文件扩展名
  5. Python 获取 网卡 MAC 地址
  6. do_initcalls 的原理
  7. 最好用的屏幕录像软件,三步实现高清录制?
  8. PHP自学笔记 ---李炎恢老师PHP第一季 TestGuest0.8
  9. 屏幕录像软件无法录制电脑视频解决办法
  10. 支持iCloud的html文本编辑,人人都可用 iCloud网页版iWork完全开放
  11. 惯性导航原理(2):导航基础知识
  12. 需要很多邮箱怎么办?分享几个不错的办法可无限安全生成多个邮箱
  13. 中职计算机教育 论文题目,中职学校计算机教育论文
  14. vba不能提取服务器上文件名,从全路径文件名中获取文件名(不含路径)
  15. [附源码]计算机毕业设计JAVA社区健康服务平台管理系统lunwen
  16. GOSSIP PROTOCOL(又被称为反熵Anti-Entropy, 一种弱一致性, 同步信息交换通信的协议)...
  17. windows server 2012 下载中文语言包
  18. ios设置微信分享信息不生效
  19. matlab安装遇到的许可证问题
  20. B2c购物网(一) 数据库关系图

热门文章

  1. Oracle列转行函数LISTAGG() WITHIN GROUP ()的使用方法
  2. 最全的官方中文教程来了,NumPy结合深度学习,还有防脱发指南
  3. 什么是pyc文件,把python的py文件编译成pyc文件,把pyc文件反编译成py文件。以及python编译的如何设置不生成pyc文件
  4. 【内存】scoped_array
  5. 深入理解Qt线程moveToThread与run
  6. Qt之线程的使用(moveToThread方式)
  7. Python——使用生成器生成斐波那契数列
  8. springmvc实现留言回复功能
  9. 使用域名转发mqtt协议,避坑指南
  10. 图像识别AGV小车的技术原理、特点