Подтвердить что ты не робот

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

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

От микро:

  • Приращение переменной
  • Представление бесконечного цикла
  • Изменение значений переменных

Среднее значение:

В макрос:

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

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

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

4b9b3361

Ответ 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

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

Ответ 2

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

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

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

что обычно означает:

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

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

Ответ 3

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

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

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

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

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

Идиома - это шаблон, который может быть идентифицирован в нескольких местах.

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

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

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

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

Ответ 7

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

Программист должен получить хорошие алгоритмы и идиомы.

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

Ответ 8

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

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

Ответ 9

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

  • ALAN PERLIS, Эпиграммы в программировании

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

Ответ 10

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

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