Programming idiom explained

In programming and in code, an idiom describes a commonly-used way to code a relatively small construct in a particular programming context (i.e. programming language). Many such constructs are found in multiple programming contexts yet tend to vary by context.[1] Like a linguistic idiom, a programming idiom is a commonly-used way to express a concept in a language that exists outside the definition of the language yet is constrained by it.

Similar to a software design pattern, an idiom is a template to be followed, not code that can be copy-and-pasted into a codebase. In this sense, an idiom is a pattern, yet software design pattern is a classification reserved for significantly larger-scale functionality; usually involving the interaction of multiple objects.

Using the idioms for a programming context (instead of using idiosyncratic constructs) helps a team work together since they lower the cognitive load of the resulting code. Such idiomatic use is common in crowdsourced repositories to help developers overcome programming barriers.[2]

Examples

Writing to standard output

Writing to standard output is generally something covered early when learning a language; it is often presented through the task of writing a hello world program.[3]

A common idiom in C++ like:std::println("Hello World");

For Java:System.out.println("Hello World");

For Rust:println!("Hello World");

Using dynamic memory

In C, use the C dynamic memory allocation functions such as malloc and free.

In C++, use the and operators. The C dynamic memory allocation functions are usable in C++, but would generally be considered idiosyncratic.

See also

External links

Notes and References

  1. Book: Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering. Mining idioms from source code . 2014 . 10.1145/2635868.2635901 . 1404.0417 . Allamanis . Miltiadis . Sutton . Charles . 472–483 . 9781450330565 . 2923536 .
  2. Book: https://cs.gmu.edu/~tlatoza/papers/BarriersInFrontendWebDevelopment.pdf. 2022 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC). 2022 . 10.1109/VL/HCC53370.2022.9833127 . Samudio . David I. . Latoza . Thomas D. . Barriers in Front-End Web Development. 1–11 . 978-1-6654-4214-5 . 251657931 .
  3. Web site: Print Hello World. www.programming-idioms.org.