我看到“编程成语”这个短语被大家所理解。然而,在搜索结果和stackoverflow中,我看到了一切......
从微:
增加一个变量
代表一个无限循环
交换变量值
中等:
PIMPL
RAII
格式、评论、风格……
宏:
编程范式或常用库功能作为成语
流程模型作为成语
成语集合等于新范式
“编程习语”有一个单一的通用定义吗?由于“编程习语”在许多范围内使用:
微观:句法细微差别或通用句法
介质:常见的样式和图案
宏:作为成语的编程范式
在任何这些范围内使用该短语是否有效?到目前为止,答案都集中在句法习语上。其他的也有效吗?
编程习惯是用特定语言编写任务的常用方法。例如,在 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
用这些语言编写循环有很多可能性。使用这个成语可以让有经验的读者立即识别它。然后他们可以把时间花在更重要的问题上。
(非编程)语言中的“成语”是特定语言独有的说法或表达。通常一些不遵循语言“规则”的东西,只是因为母语人士“知道”它的意思而存在。 (例如,在英语中我们说“in line”但“out of line”——这是惯用语)
将其移至编程领域,我们得到如下内容:
if(c=GetValue())
{...}
这实际上意味着:
c = GetValue();
if (c != 0)
{....}
每个 C/C++ 程序员都理解,但会让来自不同编程语言的人完全困惑。
请参阅http://en.wikipedia.org/wiki/Programming_idiom
编程习语是一种模式、算法或结构化代码的方式。谈论编程习语就是谈论那些在代码中经常出现的模式或提出新的模式。
熟悉惯用语,尤其是较大的惯用语的好处是,在查看代码时,您可以看到几行代码,但由于它是一个特定的惯用语,因此您可以在心理上将代码表示和思考为单个惯用语,而不是必须单独阅读和理解每一行。
说代码不是惯用的,就是说它没有以允许人类读者有效思考代码的方式构建自身。
成语是语言学的一个术语。它是一组字面意思不是字面意思的词。例如,当某人感觉不舒服时,说他们“不舒服”。这个特殊的短语来自水手们谈论乘客,晕船的乘客会去到船舶运动较少的“天气”甲板下面。但我们大多数人都不是水手,也不知道这句话的字面意思。
在编程中,即使是大多数指令,即使是英文单词,普通大众也无法理解。例如“for循环”。虽然它们对程序员有意义,但对大多数其他人来说却没有。
由于大型程序是从小型程序发展而来的,因此至关重要的是,我们开发一个标准程序结构的库,我们已经确定其正确性——我们称之为惯用语——并学习使用经过验证的组织技术将它们组合成更大的结构。
程序员应该掌握好的算法和习语。
艾伦 J. 玻璃市 - SICP Foreword
成语是可以在多个地方识别的“模式”。
我不会说它与特定的编程语言有任何关系。
Iterator foo;
foo.reset();
while (foo.next())
{
print(foo.value());
}
这是我称之为“for each”成语的片段,它在多种语言中的表达方式略有不同。
另一个很好的习语例子是 Socket。所有声称拥有套接字的平台,在概念上都以相同的方式工作,也就是说,它们都具有大致相同的接口。
尽早陷入困境:以相同的方式执行相同的过程。积累成语。标准化。莎士比亚和你的唯一区别(!)是他的成语列表的大小——而不是他的词汇量。
ALAN PERLIS,编程中的警句
http://www.cs.yale.edu/quotes.html
它来自idiomatic,编程中idiom这个词的含义可以概括为一个短语,其含义和含义超过了单词的总和。在编程中,大多数代码片段实际上都是惯用的。 '属于或符合一种语言的自然表达方式'
编程习语可以被认为是对可转移到不同情况的一类解决方案的描述。考虑 while { ... }
与 do {} while
这些是惯用的,它们包含相同的词,但顺序有一个重要的区别。确切的措辞会因语言而异,但基本含义和含义会有所不同;例如 do {} while
将始终执行一次,无论使用什么语言或语句来实现它。作为一个成语,它是一个想法的可转移形式。它可以在许多情况下使用,并用不同的词(语句/命令)表示,但基本结果将始终相同。
不定期副业成功案例分享