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

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

С микро:

  • Увеличение переменной
  • Представляя бесконечный цикл
  • Обмен значениями переменных

На средний:

В макрос:

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

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

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

Идиома программирования - это идиома, написанный на языке программирования.

jaco0646 12.10.2018 23:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
76
1
26 560
10
Перейти к ответу Данный вопрос помечен как решенный

Ответы 10

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

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

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

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

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

Я предполагаю, что вы уже прошли этот путь!

Это просто делегирует вопрос «Что такое строить?» Это микро, средний или макро?

Pacerier 14.06.2014 03:53

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

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

-1: Идиома программирования отличается от варианта без программирования.

Thomas Eding 02.01.2010 09:22

... и все же это не так.

Jason S 27.09.2017 07:38

«Идиома» в языке (не программировании) - это поговорка или выражение, уникальное для конкретного языка. Обычно то, что не следует «правилам» языка, а существует просто потому, что носители языка «просто знают», что это означает. (например, по-английски мы говорим «in line», но «out из line» - это было бы идиоматическим)

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

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

что на самом деле означает:

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

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

-1 Хотя идиомы могут зависеть от синтаксиса, я думаю, что это еще не все.

Thomas Eding 02.01.2010 09:21

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

Sridhar Sarnobat 01.09.2016 01:05

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

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

Ответ принят как подходящий

Идиома программирования - это обычный способ написать задачу на определенном языке. Например, цикл на 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». Я не считаю это идиомой - шаблоны существуют в разных языках, тогда как (как описано большинством других респондентов) идиомы, как правило, зависят от языка.

Tom 11.02.2011 07:51

Я не дал свой конкретный ответ как попытку различить «идиому» и «шаблоны», что должно быть ясно, если вы прочитаете первые пять слов. Это был информативный и пояснительный ответ.

Zuu 22.02.2011 21:29

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

  • АЛАН ПЕРЛИС, Эпиграммы в программировании

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

Поскольку большие программы вырастают из маленьких, крайне важно, чтобы мы разработали арсенал стандартных программных структур, в правильности которых мы убедились (мы называем их идиомами), и научились объединять их в более крупные структуры, используя проверенные организационные методы.

Программист должен владеть хорошими алгоритмами и идиомами.

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

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

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

Другие вопросы по теме