向非程序员解释抽象

时间:2010-05-27 03:39:08

标签: programming-languages abstraction

抽象是一个似乎难以解释的概念,而不回复使用编程术语。我已经考虑了很多,但我无法得出满意的答案。有没有人有任何非常一般但非常相关的解释?

隐喻,similes等都是受欢迎的。

12 个答案:

答案 0 :(得分:21)

一辆车。

您通过抽象与汽车互动 - 油门踏板,方向盘,用于隐藏车辆的复杂性。

使用油门踏板的抽出来控制发动机转速,您无需手动将气体注入发动机并控制活塞。

方向盘是另一种抽象。你转动方向盘,它同时转动两个前轮,大大简化了你作为驾驶员的任务。您可以在保留界面的同时用另一个替换基本实现(例如,较新的汽车具有动力转向)。

自动变速器是另一个很好的例子。

答案 1 :(得分:7)

抽象

忽略某些事情的细节。

例如,转动汽车中的钥匙启动汽车,这样可以提取起动电机,电池,防盗装置,汽油箱等细节......

答案 2 :(得分:6)

大多数人整天都会从复杂的事情中抽象出相关的细节,所以我认为找到一个例子并不是非常困难。

如果我告诉你我会给你10秒钟画一些东西,那么当我说“开始画一个房子”时,你不可能想出一些与我的画有任何不同的东西:

 /\
/  \
|  |
 --

因为你的大脑抽象了关于你房子最相关的细节:屋顶,墙壁 - 如果你有时间 - 门,窗户。

我们从一切中抽象细节只是因为它使理解更容易。我们没有了解椅子如何构造的每一个细节 - 我们只是去宜家购买一个看起来不错的椅子。有很多很好的例子。

答案 3 :(得分:4)

抽象可能意味着编写可应用于更广泛情况的规则(或程序)。

你可以为玛格丽特披萨写一份食谱,要求:西红柿,马苏里拉奶酪,白面粉,水,罗勒,糖,盐,特级初榨橄榄油和酵母。

或者你可以制作披萨配方,这需要面团和馅料。这是一个抽象的食谱。

然后你可以选择用白面粉,水,糖,盐,特级初榨橄榄油和酵母制作面团。

您还可以选择制作西红柿,马苏里拉奶酪,罗勒和特级初榨橄榄油。

但您也可以选择使用其他配料(例如意大利辣香肠和辣椒)和其他类型的面团(如全麦面粉或玉米面)。

答案 4 :(得分:3)

手机就是一个很好的例子。当你给某人打电话时,你不需要知道你按某些号码之间的所有技术步骤,然后拨打"拨打"并与你正在打电话的人联系。所有你知道的是,当你按下他们的号码并拨打电话时,你就连接了。细节被抽象出来。

答案 5 :(得分:1)

如果你指的是抽象,就像它由库/框架提供的那样:

使用提取某些东西的软件层可以看作雇用为你工作的人,你不能或不想自己做。

将事物抽象为典型的软件结构(如类和对象)有点难以解释......

答案 6 :(得分:0)

我要说,抽象是将复杂概念概括为相对简单的概念,重点关注概念的哪些部分在当前环境中是重要的。

答案 7 :(得分:0)

我建议抽象是关注相关细节而忽略其余细节。

假设你想雇一位厨师。

想要关注

  • 培训
  • 他/她可以做什么样的食物
  • 食物的呈现有多好
  • 他/她将如何与团队的其他成员互动
  • 食物的烹饪效果如何

但是,你需要注意

  • 头发颜色
  • 刺青
  • 他画得多好
  • 鼻毛
  • 他/她女友的穿孔

等等。

答案 8 :(得分:0)

为什么不做“住所”。

正如在“24a Posh Towers”中所说的“码头区四卧室复式公寓”是一个“伦敦公寓”,是一个“家”,是一个住宅。

“埃塞俄比亚野生动物食品帐篷旁边的蓝色帐篷”是“我在格拉斯顿伯里的帐篷”是一个“临时住所”,也是一个“住宅”

答案 9 :(得分:0)

抽象是一种与任何特定实例无关的概念或想法

答案 10 :(得分:0)

标记。

三头奶牛,三把椅子和三棵樱桃树有什么共同之处?这些共同点有什么问题?你不能画它,甚至解释这个概念很难,但它仍然是一个有用的概念。

刘易斯卡罗尔引用爱丽丝梦游仙境:

    "[doormice that were drawing everything that begins with an M, 
such as mousetraps, and the moon and memory, and muchness — [..]
 did you ever see such a thing as a drawing of a muchness ?"

答案 11 :(得分:-1)

对我来说,汽车太先进了。购物车怎么样?你推,它移动。