Reference articles on history, science, culture and more
Encyclopedia

Exploratory programming

Exploratory programming, as opposed to implementation (programming), is an important part of the software engineering cycle: when a domain is not very well understood or open-ended, or it's not clear what algorithms and data structures might be needed for an implementation, it's useful to be able to interactively develop and debug a program without having to go through the usual constraints of the edit-compile-run-debug cycle. Languages such as APL, Cecil, Clojure, C#, Dylan, Factor, Forth, F#, J, Java, Julia, Lisp, Mathematica, Obliq, Oz, Prolog, Python, REBOL, Perl, R, Ruby, Scala, Self, Smalltalk, Tcl, and JavaScript, often in conjunction with an IDE, provide support for exploratory programming via interactivity, dynamicity, and extensibility.

01Formal specification versus exploratory programming

For some software development projects, it makes sense to do a requirements analysis and a formal specification. For other software development projects, it makes sense to let the developers experiment with the technology and let the specification of the software evolve depending upon the exploratory programming.

02Similarity to Breadboarding

A similar method of exploration is used in electronics development, called breadboarding, in which various combinations can quickly be tried and revised, accepting the tradeoff that the result is definitely temporary in nature.

Watch videos about Exploratory programmingExplainers and documentaries on YouTube (opens in a new tab)

Sources and credits

This article is adapted from the Wikipedia article Exploratory programming, written by its contributors and licensed under CC BY-SA 4.0. Fathomly has changed the layout, removed citation markers, navigation and maintenance notices, and adjusted punctuation. This adapted version is shared under the same license. For references, see the original article.

Fathomly is not affiliated with or endorsed by the Wikimedia Foundation. Spotted a problem? Tell us.