2008-11-19 2 views
57

Я вижу выражение «программирование идиомы», брошенное вокруг, как будто его обычно понимают. Тем не менее, в результатах поиска и StackOverflow Я все вижу ...Что такое идиома программирования?

От микро:

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

В среде :

Для макросъемки:

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

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

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

ответ

42

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

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

8

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

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

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

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

2

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

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

+0

Это просто делегирует вопрос "? Что такое * конструкция *" Это микро, среда или макрос? – Pacerier 2014-06-13 23:53:15

1

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

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

+4

-1: Идиома программирования отличается от варианта без программирования. – 2010-01-02 06:22:48

+0

... и все же это не так. – 2017-09-27 04:38:36

12

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

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

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

который actaually означает:

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

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

+1

-1 В то время как на идиомы может влиять синтаксис, я думаю, что им гораздо больше. – 2010-01-02 06:21:53

0

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

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

2

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

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

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

Вот фрагмент того, что я назвал бы «для каждого» идиома, которая выражается немного отличается в ряде языков.

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

1

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

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

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

2

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

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

Alan J. Перлис - SICP Foreword