Топ питань
Часова шкала
Чат
Перспективи

Ідіома (програмування)

стійкий спосіб вираження деякої складеної конструкції в одній або кількох мовах програмування З Вікіпедії, вільної енциклопедії

Remove ads

Ідіома програмування — стійкий спосіб вираження деякої складеної конструкції в одній або кількох мовах програмування. Ідіома є шаблоном розв'язання задачі, запису алгоритму чи структури даних шляхом комбінування вбудованих елементів мови.

Ідіому можна вважати найбільш низькорівневим шаблоном проєктування, що застосовується на стику проєктування та кодування мовою програмування. Ідіома приписує конкретний спосіб реалізації певних деталей та відношень між ними засобами конкретної мови. Набір ідіом залежить від мови програмування, і та сама ідіома може у двох різних мовах виглядати по-різному, або в ній може не бути потреби в одній із них.[1]

Ідіома може являти собою відтворення в мові елементів семантично іншої мови, які в цій мові теж можна застосувати, але сама мова до цього не спонукає (тобто, вони в ній не є ідіомами). З цієї позиції багато шаблонів у об'єктно-орієнтованому проєктуванні розглядаються як ідіоматичне відтворення елементів функційних мов.[2][3]

Remove ads

Приклади простих ідіом

Узагальнити
Перспектива

Інкремент

У мовах типу BASIC ідіома для збільшення на 1 значення змінної виглядає так:

 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);

Нескінченний цикл

Pascal :

 while true do begin
  do_something();
 end;

У C-подібних мовах є багато способів організації нескінченних циклів, але наведений нижче приклад найочевидніший:

 for (;;) {
  do_something();
 }

Perl підтримує як C-синтаксис, так і інші варіанти:

 do_something() while (1);   # вкорочений нескінченний цикл
 while (1) { do_something() }; # аналогічно
 # Використання "голого блоку" та інструкції redo
 {
  do_something();
  redo;
 }

Ada :

 loop
  do_something;
 end loop;

Python :

  while True:
    do_something()

Вибірка з асоціативного масиву

Багато мов мають реалізацію асоціативного масиву, т. зв. хеш-таблицю.

Реалізація асоціативного масиву в Perl:

 my %elements = map { $_ => 1 } @elements;
Remove ads

Критика

Автор книги «Learn Ruby The Hard Way» Зед Шоу зазначає, що ставлення до ідіом у спільнотах розробників свідчить, що застосування ідіом слід віднести до категорії звичаїв, оскільки на письмі природною мовою, що вимагає чіткості викладу, ідіом слід уникати. Він наводить такий приклад із «Ruby Styleguide»:

arr = [1, 2, 3]

# bad
for elem in arr do
 puts elem
end

# good
arr.each { |elem| puts elem }

Використання циклу for, згідно з офіційним стилем Ruby, не схвалюється, а замість нього слід використовувати конструкцію .each. Позиція Шоу полягає в тому, що той, хто вивчає мови програмування, має вивчати не тільки ідіоми конкретної мови програмування, але й альтернативні способи кодування — це дає змогу уникнути індоктринації та полегшує перехід на інші мови.

Remove ads

Див. також

Посилання

Примітки

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads