- Идиома (программирование)
-
Для улучшения этой статьи по информационным технологиям желательно?: - Дополнить статью (статья слишком короткая либо содержит лишь словарное определение).
- Найти и оформить в виде сносок ссылки на авторитетные источники, подтверждающие написанное.
Программная идиома — выражение, обозначающее элементарную конструкцию, типичную для одного или нескольких языков программирования. Идиомы могут быть зафиксированы в принятом стиле программирования или документации конкретного языка.
Знание идиом языка и правил их применения является одним из показателей свободного владения языком программирования.
Содержание
Примеры простых идиом
Инкремент
В языках типа BASIC идиома для единичного приращения значения переменной выглядит так:
i = i + 1
Укороченный вариант в C-подобных языках:
i += 1; /* i = i + 1; */ ++i; /* тот же результат */ i++; /* тот же результат */
Pascal содержит процедуру аналогичного назначения:
i := i + 1; Inc(i); (* тот же результат *)
Обмен значениями (swap)
В большинстве языков обмен значениями между двумя переменными выглядит следующим образом:
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» Зед Шоу отмечает, что отношение к идиомам в сообществах разработчиков говорит о том, что применение идиом следует отнести к категории нравов, так как при письме на естественном языке, требующем чёткости изложения, идиом следует избегать[1]. Им приводится следующий пример из «Ruby Styleguide»[2]:
arr = [1, 2, 3] # bad for elem in arr do puts elem end # good arr.each { |elem| puts elem }
Использование цикла for, согласно официальному стилю Ruby, не приветствуется, а вместо него следует использовать конструкцию
.each
. Позиция Шоу состоит в том, что изучающие языки программирования должны изучать не только идиомы конкретного языка программирования, но и альтернативные способы кодирования — это позволяет избежать индоктринации облегчает переход на другие языки.См. также
Ссылки
- C++ programming idioms (англ.) в Wikibooks.
- Moshe Zadka, Idioms and Anti-Idioms in Python (англ.)
Примечания
Категория:- Концепции языков программирования
Wikimedia Foundation. 2010.