Jump to content

Programming idiom

From Wikipedia, the free encyclopedia

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

[edit]

Writing to standard output

[edit]

Writing to standard output is generally something covered early when learning a language; often presented to the learner as a task to write 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

[edit]

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

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

See also

[edit]

References

[edit]
  1. ^ Allamanis, Miltiadis; Sutton, Charles (2014). "Mining idioms from source code". Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering. pp. 472–483. arXiv:1404.0417. doi:10.1145/2635868.2635901. ISBN 9781450330565. S2CID 2923536.
  2. ^ Samudio, David I.; Latoza, Thomas D. (2022). "Barriers in Front-End Web Development" (PDF). 2022 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC). pp. 1–11. doi:10.1109/VL/HCC53370.2022.9833127. ISBN 978-1-6654-4214-5. S2CID 251657931.
  3. ^ "Print Hello World". www.programming-idioms.org.
[edit]