Для улучшения этой статьи по информационным технологиям желательно: |
Идиома программирования — устойчивый способ выражения некоторой составной конструкции в одном или нескольких языках программирования. Идиома является шаблоном решения задачи, записи алгоритма или структуры данных путём комбинирования встроенных элементов языка.
Идиому можно считать самым низкоуровневым шаблоном проектирования, применяемым на стыке проектирования и кодирования на языке программирования. Идиома предписывает конкретный способ реализации определённых деталей и отношений между ними средствами конкретного языка. Набор идиом зависит от языка программирования, и одна и та же идиома может выглядеть в двух разных языках по-разному, либо в ней может не быть надобности в одном из них[1].
Идиома может представлять собой воспроизведение в языке элементов семантически иного языка, которые в данном языке тоже могут быть применимы, но не провоцируются самим языком (то есть не входят в число его идиом). С этой позиции многие шаблоны в объектно-ориентированном проектировании рассматриваются как идиоматическое воспроизведение элементов функциональных языков[2][3][нет в источнике].
В языках типа BASIC идиома для единичного приращения значения переменной выглядит так:
i = i + 1
Укороченный вариант в C-подобных языках:
i += 1; /* i = i + 1; */
++i; /* тот же результат */
i++; /* тот же результат */
Pascal содержит процедуру аналогичного назначения:
i := i + 1;
Inc(i); (* тот же результат *)
В большинстве языков обмен значениями между двумя переменными выглядит следующим образом:
temp = a;
a = b;
b = temp;
В Perl это выглядит элегантнее:
($a, $b) = ($b, $a);
while true do begin
do_something();
end;
В C-подобных языках есть много способов организации бесконечных циклов, но нижеследующий пример наиболее очевидным образом показывает это:
for (;;) {
do_something();
}
Perl поддерживает как C-синтаксис, так и другие варианты:
do_something() while (1); # Укороченный бесконечный цикл
# аналогично
while (1) { do_something() };
# Using a "naked block" and the redo operator
{
do_something();
redo;
}
Ada:
loop
do_something;
end loop;
while True:
do_something()
Во многих языках имеется реализация ассоциативного массива, т. н. хеш-таблица.
Реализация ассоциативного массива в Perl:
my %elements = map { $_ => 1 } @elements;
Автор книги «Learn Ruby The Hard Way» Зед Шоу отмечает, что отношение к идиомам в сообществах разработчиков говорит о том, что применение идиом следует отнести к категории нравов, так как при письме на естественном языке, требующем чёткости изложения, идиом следует избегать[4]. Им приводится следующий пример из «Ruby Styleguide»[5]:
arr = [1, 2, 3]
# bad
for elem in arr do
puts elem
end
# good
arr.each { |elem| puts elem }
Использование цикла for, согласно официальному стилю Ruby, не приветствуется, а вместо него следует использовать конструкцию .each
. Позиция Шоу состоит в том, что изучающие языки программирования должны изучать не только идиомы конкретного языка программирования, но и альтернативные способы кодирования — это позволяет избежать индоктринации и облегчает переход на другие языки.
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .