Идиома программирования
В компьютерном программировании идиома программирования или идиома кода представляет собой группу фрагментов кода , имеющих эквивалентную семантическую роль . [1] который часто повторяется в проектах программного обеспечения , часто выражая особую особенность повторяющейся конструкции в одном или нескольких языках программирования или библиотеках . Это определение основано на определении слова « идиома », используемом в лингвистике. Разработчики распознают идиомы программирования, связывая значение (семантическую роль) с одним или несколькими синтаксическими выражениями внутри фрагментов кода (фрагментов кода). Идиому можно рассматривать как действие над концепцией программирования, лежащей в основе шаблона кода, который в реализации представлен смежными или разбросанными фрагментами кода. Эти фрагменты доступны на нескольких языках программирования, фреймворках и даже библиотеках. Вообще говоря, семантическая роль идиомы программирования — это выражение на естественном языке простой задачи, алгоритма или структуры данных , которая не является встроенной функцией используемого языка программирования, или, наоборот, использование необычной или примечательной функции. который встроен в язык программирования.
Знание идиом, связанных с языком программирования, и способов их использования является важной частью свободного владения этим языком. Это также помогает передавать знания в виде аналогий с одного языка или структуры на другой. Такие идиоматические знания широко используются в краудсорсинговых репозиториях, чтобы помочь разработчикам преодолеть барьеры программирования. [2] Сопоставление идиом кода с особенностями может оказаться полезным способом найти компромисс между обобщением и конкретикой. Выявляя общие шаблоны и идиомы, разработчики могут создавать ментальные модели и схемы, которые помогают им быстро понимать новый код и ориентироваться в нем. Более того, сопоставляя эти идиомы с особенностями и конкретными вариантами использования, разработчики могут гарантировать, что они применяют правильный подход, а не чрезмерно обобщают его. Один из способов сделать это — создать справочник или документацию, в которых общие идиомы сопоставляются с конкретными вариантами использования, подчеркивая, где их может потребоваться адаптировать или изменить для соответствия конкретному проекту или команде разработчиков. Это может помочь гарантировать, что разработчики работают с общим пониманием лучших практик и могут принимать обоснованные решения о том, когда использовать устоявшиеся идиомы, а когда адаптировать их в соответствии со своими конкретными потребностями.
Распространенным заблуждением является использование наречия или прилагательной формы термина как типичного использования языка программирования , что на самом деле относится к идиосинкразии. Идиома подразумевает, что семантика некоторого кода на языке программирования имеет сходство с другими языками или платформами. Например, своеобразным способом управления динамической памятью в C было бы использование стандартной библиотеки C функций malloc и free , тогда как идиоматический относится к ручному управлению памятью как к повторяющейся семантической роли, которая может быть достигнута с помощью фрагментов кода malloc в C или указателя = новый тип [число_элементов] в C++. В обоих случаях семантика кода понятна разработчикам, знакомым с C или C++, как только им раскрывается идиоматическое или идиосинкразическое обоснование. Однако, хотя идиоматическое обоснование часто является общим для области программирования, идиосинкразическое обоснование часто связано с конкретной терминологией API.
Примеры простых идиом
[ редактировать ]Печать Привет, мир
[ редактировать ]Одна из наиболее распространенных отправных точек, чтобы научиться программировать или заметить синтаксические различия между известным языком и новым. [3]
Он имеет несколько реализаций, среди них фрагменты кода для C++ :
std::cout << "Hello World\n";
Для Явы :
System.out.println("Hello World");
Вставка элемента в массив
[ редактировать ]Эта идиома помогает разработчикам понять, как манипулировать коллекциями на данном языке, в частности вставлять элемент x в позицию i в списке s и перемещать элементы вправо. [4]
Фрагменты кода:
Для Питона :
s.insert(i, x)
Для JavaScript :
s.splice(i, 0, x);
Для Перла :
splice(@s, $i, 0, $x)
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Алламанис, Мильтиадис; Саттон, Чарльз (2014). «Майнинг идиом из исходного кода». Материалы 22-го Международного симпозиума ACM SIGSOFT по основам программной инженерии . стр. 472–483. arXiv : 1404.0417 . дои : 10.1145/2635868.2635901 . ISBN 9781450330565 . S2CID 2923536 .
- ^ Самудио, Дэвид И.; Латоза, Томас Д. (2022). «Барьеры во фронтальной веб-разработке» (PDF) . Симпозиум IEEE 2022 по визуальным языкам и человекоцентричным вычислениям (VL/HCC) . стр. 1–11. дои : 10.1109/VL/HCC53370.2022.9833127 . ISBN 978-1-6654-4214-5 . S2CID 251657931 .
- ^ «Напечатать Привет, мир» . www.programming-idioms.org .
- ^ «Вставить элемент в список» . www.programming-idioms.org .
Внешние ссылки
[ редактировать ]- program-idioms.org показывает короткие реализации идиом на большинстве основных языков.
- Идиомы программирования на C++ из Wikibooks.