В компьютерном программировании идиома программирования или идиома кода — это группа фрагментов кода , разделяющих эквивалентную семантическую роль , [1] которая часто повторяется в проектах программного обеспечения , часто выражая особую особенность повторяющейся конструкции в одном или нескольких языках программирования или библиотеках . Это определение основано на определении слова « идиома », используемом в лингвистике. Разработчики распознают идиомы программирования, связывая значение (семантическую роль) с одним или несколькими синтаксическими выражениями внутри фрагментов кода (фрагментов кода). Идиому можно рассматривать как действие над концепцией программирования, лежащей в основе шаблона кода, который в реализации представлен смежными или разбросанными фрагментами кода. Эти фрагменты доступны на нескольких языках программирования, фреймворках и даже библиотеках. Вообще говоря, семантическая роль идиомы программирования — это выражение на естественном языке простой задачи, алгоритма или структуры данных , которая не является встроенной функцией используемого языка программирования, или, наоборот, использование необычной или примечательной функции. который встроен в язык программирования.
Знание идиом, связанных с языком программирования, и способов их использования является важной частью свободного владения этим языком. Это также помогает передавать знания в виде аналогий с одного языка или структуры на другой. Такие идиоматические знания широко используются в краудсорсинговых репозиториях, чтобы помочь разработчикам преодолеть барьеры программирования. [2] Сопоставление идиом кода с особенностями может быть полезным способом найти компромисс между обобщением и конкретикой. Выявляя общие шаблоны и идиомы, разработчики могут создавать мысленные модели и схемы, которые помогают им быстро понимать новый код и ориентироваться в нем. Более того, сопоставляя эти идиомы с особенностями и конкретными вариантами использования, разработчики могут гарантировать, что они применяют правильный подход, а не чрезмерно обобщают его. Один из способов сделать это — создать справочник или документацию, в которой общие идиомы сопоставляются с конкретными вариантами использования, подчеркивая, где их может потребоваться адаптировать или изменить для соответствия конкретному проекту или команде разработчиков. Это может помочь гарантировать, что разработчики работают с общим пониманием лучших практик и могут принимать обоснованные решения о том, когда использовать устоявшиеся идиомы, а когда адаптировать их в соответствии со своими конкретными потребностями.
Распространенным заблуждением является использование наречия или прилагательной формы термина как типичного использования языка программирования , что на самом деле относится к идиосинкразии. Идиома подразумевает, что семантика некоторого кода на языке программирования имеет сходство с другими языками или платформами. Например, своеобразным способом управления динамической памятью в C было бы использование функций стандартной библиотеки C malloc и free , тогда как идиоматический относится к ручному управлению памятью как к повторяющейся семантической роли, которая может быть достигнута с помощью фрагментов кода malloc в C или указателя = новый тип [число_элементов] в C++. В обоих случаях семантика кода понятна разработчикам, знакомым с C или C++, как только им будет раскрыто идиоматическое или своеобразное обоснование. Однако, хотя идиоматическое обоснование часто является общим для области программирования, идиосинкразическое обоснование часто связано с конкретной терминологией API.
Одна из наиболее распространенных отправных точек, чтобы научиться программировать или заметить синтаксические различия между известным языком и новым. [3]
Он имеет несколько реализаций, среди них фрагменты кода для C++ :
std :: cout << "Привет, мир \n " ;
Для Явы :
Система . вне . println ( "Привет, мир" );
Эта идиома помогает разработчикам понять, как манипулировать коллекциями на данном языке, в частности вставлять элемент x в позицию i в списке s и перемещать элементы вправо. [4]
Фрагменты кода:
Для Питона :
с . вставить ( я , х )
Для JavaScript :
с . сращивание ( i , 0 , x );
Для Перла :
сращивание ( @s , $i , 0 , $x )