78

我看到“编程成语”这个短语被大家所理解。然而,在搜索结果和stackoverflow中,我看到了一切......

从微:

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

中等:

宏:

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

  • 微观:句法细微差别或通用句法
  • 介质:常见的样式和图案
  • 宏:作为成语的编程范式

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

4

10 回答 10

61

编程习惯是用特定语言编写任务的常用方法。例如,在 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

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

于 2008-11-19T16:49:26.820 回答
25

(非编程)语言中的“成语”是特定语言独有的说法或表达。通常一些不遵循语言“规则”的东西,只是因为母语人士“知道”它的意思而存在。(例如,在英语中我们说“in line”但“out of line”——这是惯用语)

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

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

这实际上意味着:

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

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

于 2008-11-19T16:31:15.983 回答
14

http://en.wikipedia.org/wiki/Programming_idiom

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

熟悉惯用语,尤其是较大的惯用语的好处是,在查看代码时,您可以看到几行代码,但由于它是一个特定的惯用语,因此您可以在心理上将代码表示和思考为单个惯用语,而不是必须单独阅读和理解每一行。

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

于 2008-11-19T16:24:17.230 回答
3

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

在编程中,即使是大多数指令,即使是英文单词,普通大众也无法理解。例如“for循环”。虽然它们对程序员有意义,但对大多数其他人来说却没有。

于 2008-11-19T16:29:57.403 回答
3

由于大型程序是从小型程序发展而来的,因此至关重要的是,我们开发出一套标准程序结构库,我们已经确定其正确性——我们称它们为惯用语——并学习使用经过验证的组织技术将它们组合成更大的结构。

程序员应该掌握好的算法和习语。

Alan J. Perlis - SICP 前言

于 2013-05-14T04:35:45.933 回答
2

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

我猜你已经走上了这条路!

于 2008-11-19T16:25:27.100 回答
2

成语是可以在多个地方识别的“模式”。

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

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

这是我称之为“for each”成语的片段,它在多种语言中的表达方式略有不同。

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

于 2009-06-15T12:12:17.713 回答
1

成语是一种表达特定语言特定内容的方式。例如这里有一些英语习语

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

于 2008-11-19T16:33:25.337 回答
1

尽早陷入困境:以相同的方式执行相同的过程。积累成语。标准化。莎士比亚和你的唯一区别(!)是他的成语列表的大小——而不是他的词汇量。

  • ALAN PERLIS,编程中的警句

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

于 2012-01-13T02:38:23.060 回答
0

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

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

于 2018-06-20T17:35:35.743 回答