隐喻是什么?

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

我给你举个例子:

我想做一种操作,先定义一个整数数组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. joomla 3.4.5 php版本,Joomla3.4.6漏洞最强总结
  2. 一般屏幕的3D模型是公开的吗?
  3. 交换机网络嗅探方法之欺骗交换机缓存
  4. map型字段 mongodb_MongoDB极简教程
  5. 机器学习之线性回归 损失函数、代价函数、目标函数
  6. 年底送书活动:送出6本技术书籍,价值372元!
  7. py2exe打包pyqt程序
  8. PS 菜单栏显示与隐藏 - 快捷键
  9. xml和html是兄弟还是父子?
  10. python中不同进制的整数之间可以直接运算_python学习第三天总结(进制与位运算,)...
  11. Vue CLI安装 Vue项目创建 Vue Devtools安装
  12. NFS, web,负载均衡,Nginx yum 源码安装
  13. 结构化CSS设计思维
  14. mysql 开发进阶篇系列 13 锁问题(关于表锁,死锁示例,锁等待设置)
  15. MATLAB编程实例
  16. 计算机网络考研408计算机134分笔记!超级详细!23最新考纲
  17. 成都Uber优步司机奖励政策(2月29日)
  18. Kettle spoon 工具实战分享
  19. 为什么新网站上线一个月都没有收录?
  20. 《云计算》shell高级编程-正则表达式

热门文章

  1. java手机号,身份证号,卡号,姓名 正则表达式脱敏
  2. 【项目实战】WaveNet 代码解析 —— train.py 【更新中】
  3. php - 前端表单上传文件并保存到指定服务器目录
  4. 各省市经济情况分析——基于SAS软件
  5. TCP的四次挥手及为什么要等待2MSL
  6. vue 中input的输入验证
  7. Node.js实现登陆注册
  8. 回溯专题——leetcode47. Permutations II medium(有重复数字的全排列)
  9. 【C++】1080:余数相同问题(信息学奥赛)
  10. NGUI_Panel(clipped panels must have a uniform scale)