什么是编程习语?

时间:2008-11-19 16:21:33

标签: language-agnostic idioms

我看到“编程习语”这句话被抛出,就像通常被理解一样。然而,在搜索结果和堆栈溢出中,我看到了一切......

来自微观:

  • 增加变量
  • 代表无限循环
  • 交换变量值

中等:

要宏:

“编程习语”是否有单一的通用定义?由于“编程习语”在许多范围内使用:

  • Micro:句法细微差别或通用语法
  • 媒介:常见的风格和模式
  • 宏:编程范例为习语

在任何这些范围内使用短语是否有效?到目前为止,答案主要集中在句法习语上。其他人也有效吗?

10 个答案:

答案 0 :(得分:48)

编程习惯用法是用特定语言编写任务的常用方法。例如,循环通常在C:

中这样写
for (i=0; i<10; i++)

PHP将理解类似的结构:

for ($i = 1; $i <= 10; $i++)

但是在PHP中循环使用数组是不鼓励的。在这种情况下,您将使用:

foreach ($arr as $value)

在Ruby中,你会使用:

(1..10).each

表示循环,或者:

array.each

在这些语言中编写循环有很多种可能性。使用这个成语使经验丰富的读者可以立即识别。然后他们可以把时间花在更重要的问题上。

答案 1 :(得分:16)

(非编程)语言中的“习语”是特定语言所特有的说法或表达。一般来说,某些东西不符合语言的“规则”,只是存在,因为母语人士“只知道”它意味着什么。 (例如,在英语中我们说“在线”但是“ 行” - 这将是惯用的)

将其转移到编程领域,我们得到如下内容:

 if(c=GetValue())
 {...}

这意味着:

 c = GetValue();
 if (c != 0)
 {....}

每个C / C ++程序员都能理解,但会完全困扰来自不同编程语言的人。

答案 2 :(得分:10)

请参阅http://en.wikipedia.org/wiki/Programming_idiom

编程习语是一种模式,算法或结构化代码的方式。谈论编程习语是谈论那些在代码中频繁出现或提出新代码的模式。

熟悉习语,特别是较大的习语,其中的好处是,在查看代码时,您可以看到几行代码,但因为它是一种特殊的习惯用语,您可以在心理上代表并思考代码。成语而不是必须单独阅读和理解每一行。

要说代码不是惯用的,就是说它不会以允许人类读者有效思考代码的方式构建自己。

答案 3 :(得分:2)

来自WikiPedia:编程习语是用一种或多种编程语言表达重复结构的一种方法。

我猜你已经走了那条路了!

答案 4 :(得分:2)

成语是来自语言学的术语。这是一组单词,并不是字面上的意思。例如,当他们感觉不舒服时说某人“天气不好”。这个特殊的短语来自水手们谈论乘客,晕船乘客会在船只运动较少的“天气”甲板下面。但我们大多数人都不是水手,也不知道这句话的字面含义。

在编程很多时,即使大多数指令都是英文单词,也不为大众所理解。例如“for loop”。虽然它们对程序员有意义,但对大多数人来说并非如此。

答案 5 :(得分:2)

成语是一种'模式',可以在多个地方识别。

我不会说它与特定的编程语言有任何关系。

Iterator foo;
foo.reset();
while (foo.next())
{
    print(foo.value());
}

这是我称之为'for each'成语的片段,在许多语言中表达略有不同。

成语的另一个优秀例子是 Socket 。声称拥有套接字的所有平台都在概念上以相同的方式工作,也就是说,它们都具有大致相同的接口。

答案 6 :(得分:2)

由于大型程序从小程序发展而来,因此我们必须开发一套标准程序结构库,我们已经确定它们的正确性 - 我们称之为成语 - 并学习使用组织技术将它们组合成更大的结构。证明价值。

程序员应该获得好的算法和习语。

Alan J. Perlis - SICP Foreword

答案 7 :(得分:1)

成语是一种说出特定语言特定内容的方式。例如,这里有一些english idioms

您可以推断这一点,将概念应用于编程。

答案 8 :(得分:1)

尽早进入市场:以同样的方式做同样的过程。积累习语。标准化。莎士比亚和你之间的唯一区别(!)就是他成语列表的大小 - 而不是他词汇量的大小。

  • ALAN PERLIS,编程中的箴言

http://www.cs.yale.edu/quotes.html

答案 9 :(得分:0)

它来自idiomatic,在编程中,单词idiom的含义可以概括为短语,其含义和含义比单词的总和还重要。在编程中,大多数代码片段实际上都是惯用语。 '保持或符合语言的自然表达方式'

一个编程习惯可以被认为是对可以转移到不同情况的解决方案的描述。考虑while { ... }do {} while这两个习惯用法,它们包含相同的词,但顺序具有重要的区别。确切的措词会因语言而异,但是基本含义和含义会有所不同。例如do {} while将始终执行一次,无论使用哪种语言或语句来实现它。作为习语,它是思想的可移植形状。它可以在许多情况下使用,并用不同的词(语句/命令)表达,但基本结果始终是相同的。