Что такое идиома программирования?

Я вижу фразу "идиома программирования", разбросанную вокруг, как будто она обычно понимается. Тем не менее, в результатах поиска и stackoverflow я вижу все...

от micro:

  • увеличение значения переменной
  • представляющий бесконечный цикл
  • обмен значений переменных

средний:

макрос:

есть одно общее определение "языков программирования"? Поскольку "идиома программирования" используется во многих областях:

  • Micro: синтаксический нюанс или общий синтаксис
  • средний: общий стиль и шаблоны
  • макрос: парадигмы программирования как идиома

допустимо ли использовать фразу в любой из этих областей? Ответы пока сосредоточены на синтаксических идиомах. Остальные тоже действительны?

10 ответов


идиома программирования-это обычный способ кодирования задачи на определенном языке. Например, цикл часто пишется так в 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

есть много много возможностей, чтобы написать цикл на этом языке. Использование идиомы делает его немедленно идентифицируемым опытными читателями. Тогда они смогут тратить свое время на более важные проблемы.


"идиома" в (не-программировании) языке-это высказывание или выражение, уникальное для конкретного языка. Как правило, что-то, что не следует "правилам" langauge, и просто существует, потому что носители языка "просто знают", что это значит. (например, на английском языке мы говорим "In line", но " out of строка " -- это было бы идиоматично)

перемещая это на арену программирования, мы получаем такие вещи, как:

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

что actaually значит:

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

который каждый программист C/C++ понимает, но полностью озадачит кого-то, кто приходит с другого языка программирования.


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

идиома программирования-это шаблон, алгоритм или способ структурирования кода. Говорить об идиомах программирования-это говорить о тех шаблонах, которые часто повторяются в коде или предлагают новые.

преимущества знакомства с идиомами, особенно большими, заключается в том, что при просмотре кода Вы можете видеть несколько строк кода, но потому, что он знаком как определенная идиома, вы можете мысленно представляйте и думайте о коде как об одной идиоме, вместо того чтобы обязательно читать и понимать каждую строку индивидуально.

сказать, что код не идиоматичен, значит сказать, что он не структурируется таким образом, чтобы читатели могли эффективно думать о коде.


с Википедия: идиома программирования-это средство выражения повторяющейся конструкции на одном или нескольких языках программирования.

Я предполагаю, что вы уже были на этой дороге, хотя!


идиома 'pattern' , который можно идентифицировать в нескольких местах.

Я бы не сказал, что это имеет какое-то отношение к определенному языку программирования.

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

Это фрагмент того, что я бы назвал идиомой "для каждого", которая выражается немного по-разному в нескольких языках.

еще один отличный пример идиомы -гнездо. Все платформы, которые утверждают, что имеют сокеты, все работают концептуально одинаково то есть все они имеют примерно одинаковый интерфейс.


программист должен приобрести хорошие алгоритмы и идиомы.

Алан Джей Перлис - SICP предисловие


фразеологизм-это термин из лингвистики. Это группа слов, которые буквально не означают то, что говорят. Например, говоря, что кто-то" под погодой", когда он не чувствует себя хорошо. Эта фраза исходила от матросов, говорящих о пассажирах, страдающих морской болезнью, которые спускались ниже "погодных" палуб, где движение судов было меньше. Но большинство из нас не моряки и не знают буквального значения этой фразы.

в программировании многие, даже большинство инструкций являются не поняты широкой публикой, хотя это английские слова. например, "for loop". Хотя они имеют смысл для программистов, они не имеют смысла для большинства других людей.


попасть в колею рано: сделать тот же процесс таким же образом. Накапливайте идиомы. Стандартизировать. Единственная разница(! между Шекспиром и Вами был размер его списка идиом, а не словарный запас.

  • Алан Перлис, эпиграммы в программировании

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


идиома-это способ сказать что-то особенное для данного языка. Например, вот несколько английские идиомы.

вы можете использовать это, чтобы применить концепцию программирования.


сначала рассмотрим значение слова Ideom, его можно суммировать как фразу, которая несет больше смысла и значений, чем сумма слов. В программировании большинство фрагментов кода фактически идиоматичны.

идиома программирования может считаться описательной для класса решений, которые могут передаваться в разных случаях. Считать while { ... } vs do {} while они идиоматичны, они содержат одни и те же слова, но порядок несет важное различие. Точная формулировка будет отличаться по языку, но фундаментальный смысл и последствия будут отличаться; например do {} while всегда будет выполняться один раз, независимо от того, какой язык или операторы используются для его реализации. В качестве идиомы это передаваемая форма идеи. Он может использоваться во многих обстоятельствах и выражаться разными словами (заявлениями/командами), но фундаментальный результат всегда будет одинаковым.