HOME

TheInfoList



OR:

Exploratory programming, as opposed to implementation (programming), is an important part of the
software engineering Software engineering is a systematic engineering approach to software development. A software engineer is a person who applies the principles of software engineering to design, develop, maintain, test, and evaluate computer software. The term '' ...
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 Cecil may refer to: People with the name * Cecil (given name), a given name (including a list of people and fictional characters with the name) * Cecil (surname), a surname (including a list of people with the name) Places Canada *Cecil, Alberta, ...
, C#, Dylan,
Factor Factor, a Latin word meaning "who/which acts", may refer to: Commerce * Factor (agent), a person who acts for, notably a mercantile and colonial agent * Factor (Scotland), a person or firm managing a Scottish estate * Factors of production, suc ...
,
Forth Forth or FORTH may refer to: Arts and entertainment * ''forth'' magazine, an Internet magazine * ''Forth'' (album), by The Verve, 2008 * ''Forth'', a 2011 album by Proto-Kaw * Radio Forth, a group of independent local radio stations in Scotla ...
, F#, J,
Java Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mos ...
,through its
JShell JShell is a Java read-eval-print loop which was first introduced in the JDK 9. It is tracked by JEP 222 ''jshell: The Java Shell (Read-Eval-Print Loop)''. One reason why JShell was proposed for Java 9 is the lack of a standard interactive environ ...
read-eval-print loop interpreter introduced in version 9
Julia Julia is usually a feminine given name. It is a Latinate feminine form of the name Julio and Julius. (For further details on etymology, see the Wiktionary entry "Julius".) The given name ''Julia'' had been in use throughout Late Antiquity (e.g ...
, Lisp, Mathematica,
Obliq Obliq is an interpreted, object-oriented programming language designed to make distributed, and locally multithreaded, computing simpler and easier to program, while providing program safety and an implicit type system. The interpreter is wr ...
, Oz,
Prolog Prolog is a logic programming language associated with artificial intelligence and computational linguistics. Prolog has its roots in first-order logic, a formal logic, and unlike many other programming languages, Prolog is intended primarily ...
,
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (pro ...
, REBOL,
Perl Perl is a family of two high-level, general-purpose, interpreted, dynamic programming languages. "Perl" refers to Perl 5, but from 2000 to 2019 it also referred to its redesigned "sister language", Perl 6, before the latter's name was offic ...
, R,
Ruby A ruby is a pinkish red to blood-red colored gemstone, a variety of the mineral corundum ( aluminium oxide). Ruby is one of the most popular traditional jewelry gems and is very durable. Other varieties of gem-quality corundum are called ...
, Scala,
Self The self is an individual as the object of that individual’s own reflective consciousness. Since the ''self'' is a reference by a subject to the same subject, this reference is necessarily subjective. The sense of having a self—or ''selfhoo ...
, Smalltalk,
Tcl TCL or Tcl or TCLs may refer to: Business * TCL Technology, a Chinese consumer electronics and appliance company **TCL Electronics, a subsidiary of TCL Technology * Texas Collegiate League, a collegiate baseball league * Trade Centre Limited ...
, and
JavaScript JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of websites use JavaScript on the client side for webpage behavior, of ...
, 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 In systems engineering and software engineering, requirements analysis focuses on the tasks that determine the needs or conditions to meet the new or altered product or project, taking account of the possibly conflicting requirements of the ...
and a formal
specification A specification often refers to a set of documented requirements to be satisfied by a material, design, product, or service. A specification is often a type of technical standard. There are different types of technical or engineering specificati ...
. 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

*
Live coding Live coding, sometimes referred to as on-the-fly programming,Wang G. & Cook P. (2004"On-the-fly Programming: Using Code as an Expressive Musical Instrument" In ''Proceedings of the 2004 International Conference on New Interfaces for Musical Expr ...
*
Software Prototyping Software prototyping is the activity of creating prototypes of software applications, i.e., incomplete versions of the software program being developed. It is an activity that can occur in software development and is comparable to prototyping ...


Notes


References

* Programming paradigms User interface techniques {{Soft-eng-stub