Я вижу, как фразу «идиома программирования» бросают так, как будто ее все понимают. Но в результатах поиска и stackoverflow я все вижу ...
С микро:
На средний:
В макрос:
Есть ли единое общее определение «идиомы программирования»? Поскольку "идиома программирования" используется во многих областях:
Допустимо ли использовать эту фразу в любой из этих областей? Пока что ответы сосредоточены на синтаксических идиомах. Остальные тоже действительны?





См. http://en.wikipedia.org/wiki/Programming_idiom
Идиома программирования - это шаблон, алгоритм или способ структурирования кода. Говорить об идиомах программирования - значит говорить о тех шаблонах, которые часто повторяются в коде, или предлагать новые.
Преимущества знакомства с идиомами, особенно с более крупными, заключаются в том, что, глядя на код, вы можете видеть несколько строк кода, но поскольку это знакомо как конкретная идиома, вы можете мысленно представить и думать о коде как об этой единственной идиоме вместо обязательно читать и осмысливать каждую строчку в отдельности.
Сказать, что код не является идиоматическим, - значит сказать, что он не структурирует себя таким образом, чтобы люди-читатели могли эффективно думать о коде.
Из Википедия: Идиома программирования - это средство выражения повторяющейся конструкции на одном или нескольких языках программирования.
Я предполагаю, что вы уже прошли этот путь!
Это просто делегирует вопрос «Что такое строить?» Это микро, средний или макро?
Идиома - это термин из лингвистики. Это группа слов, которые буквально не означают то, что они говорят. Например, сказать, что кто-то «не в себе», когда он плохо себя чувствует. Эта фраза пришла от моряков, говорящих о пассажирах: пассажиры, страдающие морской болезнью, спускались ниже «погодных» палуб, где движение судов было меньше. Но большинство из нас не моряки и не знают буквального значения этой фразы.
В программировании многие, даже большинство инструкций не понимаются широкой публикой, даже если они являются английскими словами. например, для цикла. Хотя они имеют смысл для программистов, но не для большинства других людей.
-1: Идиома программирования отличается от варианта без программирования.
... и все же это не так.
«Идиома» в языке (не программировании) - это поговорка или выражение, уникальное для конкретного языка. Обычно то, что не следует «правилам» языка, а существует просто потому, что носители языка «просто знают», что это означает. (например, по-английски мы говорим «in line», но «out из line» - это было бы идиоматическим)
Перемещая это на арену программирования, мы получаем такие вещи, как:
if (c=GetValue())
{...}
что на самом деле означает:
c = GetValue();
if (c != 0)
{....}
который понимает каждый программист на C / C++, но совершенно сбивает с толку кого-то, кто использует другой язык программирования.
-1 Хотя идиомы могут зависеть от синтаксиса, я думаю, что это еще не все.
Мне нравится этот ответ. В естественном языке идиома - это нечто, значение которой не может быть построено из значений составляющих ее терминов. Другими словами, это семантически неделимый атом, хотя синтаксически он может быть разделен. Итак, в программировании идиомы - это то, что вы не ставите под сомнение, а просто запоминаете наизусть и можете эффективно использовать.
Идиома - это способ сказать что-то особенное для данного языка. Например, вот несколько английские идиомы.
Вы можете экстраполировать это, чтобы применить концепцию к программированию.
Идиома программирования - это обычный способ написать задачу на определенном языке. Например, цикл на 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
Есть много возможностей написать цикл на этих языках. Использование идиомы делает ее незамедлительно узнаваемой опытными читателями. Затем они могут тратить свое время на более важные проблемы.
Идиома - это «шаблон», который можно идентифицировать в нескольких местах.
Я бы не сказал, что это как-то связано с конкретным языком программирования.
Iterator foo;
foo.reset();
while (foo.next())
{
print(foo.value());
}
Это отрывок того, что я бы назвал идиомой «для каждого», которая выражается немного по-разному в разных языках.
Еще один отличный пример идиомы - Разъем. Все платформы, претендующие на наличие сокетов, концептуально работают одинаково, то есть все они имеют примерно одинаковый интерфейс.
Когда я слышу «Socket», я думаю «I / O pattern». Я не считаю это идиомой - шаблоны существуют в разных языках, тогда как (как описано большинством других респондентов) идиомы, как правило, зависят от языка.
Я не дал свой конкретный ответ как попытку различить «идиому» и «шаблоны», что должно быть ясно, если вы прочитаете первые пять слов. Это был информативный и пояснительный ответ.
Пораньше войдите в колею: проделайте то же самое тем же способом. Накапливайте идиомы. Стандартизируйте. Единственная разница (!) Между Шекспиром и вами заключалась в размере его списка идиом, а не в размере его словарного запаса.
Поскольку большие программы вырастают из маленьких, крайне важно, чтобы мы разработали арсенал стандартных программных структур, в правильности которых мы убедились (мы называем их идиомами), и научились объединять их в более крупные структуры, используя проверенные организационные методы.
Программист должен владеть хорошими алгоритмами и идиомами.
Алан Дж. Перлис - Предисловие к SICP
Это происходит от идиоматический, значение слова идиома в программировании можно суммировать как фразу, которая несет в себе значение и значение, которое больше, чем сумма слов. В программировании большинство фрагментов кода на самом деле идиоматичны. 'Принадлежащие к естественному способу выражения языка или соответствующие ему'
Идиому программирования можно рассматривать как описание класса решений, применимых к различным случаям. Считайте, что while { ... } и do {} while - это идиоматика, они содержат одни и те же слова, но их порядок имеет важное различие. Точная формулировка будет отличаться в зависимости от языка, но основное значение и значения будут отличаться; например, do {} while всегда будет выполняться один раз, независимо от того, какой язык или операторы используются для его реализации. Как идиома, это переносимая форма идеи. Его можно использовать во многих случаях и выражать разными словами (операторами / командами), но основной результат всегда будет одним и тем же.
Идиома программирования - это идиома, написанный на языке программирования.