Wikipedia

Exploratory programming

Exploratory 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, C#,[1] Dylan, Factor, Forth, F#, J, Java,[2] 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.

Formal 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.

Similarity 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.


See also

Notes

  1. ^ through Microsoft Visual Studio
  2. ^ through its JShell read-eval-print loop interpreter introduced in version 9

References

  • Rajib Mall (1 August 2004). Fundamentals of Software Engineering. PHI Learning Pvt. Ltd. p. 32. ISBN 978-81-203-2445-9.


This article is copied from an article on Wikipedia® - the free encyclopedia created and edited by its online user community. The text was not checked or edited by anyone on our staff. Although the vast majority of Wikipedia® encyclopedia articles provide accurate and timely information, please do not assume the accuracy of any particular article. This article is distributed under the terms of GNU Free Documentation License.

Copyright © 2003-2025 Farlex, Inc Disclaimer
All content on this website, including dictionary, thesaurus, literature, geography, and other reference data is for informational purposes only. This information should not be considered complete, up to date, and is not intended to be used in place of a visit, consultation, or advice of a legal, medical, or any other professional.