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.

gollark: A bunch of configuration files would have to be updated to point to those.
gollark: Oh yes, the new ones just directly reify matter via universe direct memory access.
gollark: Those mostly just need to be a long tungsten rod and maybe GTechâ„¢ telemetry uplink, so a few seconds.
gollark: Yes, but they're expensive. It takes as much as *2 minutes* on some of the old GTechâ„¢ autofactories to make a replacement.
gollark: We don't deorbit entire orbital facilities, just mostly-passive projectiles.

See also

  • Software Prototyping

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 issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.