Big ball of mud
Encyclopedia
In computer programming
, a big ball of mud is a system or computer program that appears to have no distinguishable architecture.
's 1999 paper of the same name, which defines the term thus:
"Big ball of mud" systems have usually been developed over a long period of time, with different individuals working on various pieces and parts. Systems developed by people with no formal architecture
or programming
training often fall into this pattern.
Foote and Yoder do not universally condemn "big ball of mud" programming, pointing out that this pattern is most prevalent because it works — at least at the moment it is developed. However, programs of this pattern become maintenance nightmares.
Programmers in control of a big ball of mud project are strongly encouraged to study it and to understand what it accomplishes, and to use this as a loose basis for a formal set of requirements for a well-designed system that could replace it. Technology shifts – such as client-server to web-based or file-based to database-based – may provide good reasons to start over from scratch.
the term big ball of mud is used differently, in this case to describe the malleability of a Lisp system. In Lisp, it is generally possible to:
The programming language Forth has also been described as a ball of mud because it too has many of these properties.
Joel Moses
may have coined the phrase in the 1970s:
Joel Moses strongly denies saying this, claiming he instead called Lisp a bean bag
because it always returns to its original shape.
Computer programming
Computer programming is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs. This source code is written in one or more programming languages. The purpose of programming is to create a program that performs specific operations or exhibits a...
, a big ball of mud is a system or computer program that appears to have no distinguishable architecture.
In computer programs
The term was popularized in Brian Foote and Joseph YoderJoseph Yoder (computer scientist)
Joseph W. Yoder is a founder and principal of The Refactory, Inc., a company focused on software architecture, design, implementation, consulting and mentoring on all facets of software development. Joseph is an international speaker and pattern author and longstanding member of The The Hillside...
's 1999 paper of the same name, which defines the term thus:
"Big ball of mud" systems have usually been developed over a long period of time, with different individuals working on various pieces and parts. Systems developed by people with no formal architecture
Software architecture
The software architecture of a system is the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both...
or programming
Computer programming
Computer programming is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs. This source code is written in one or more programming languages. The purpose of programming is to create a program that performs specific operations or exhibits a...
training often fall into this pattern.
Foote and Yoder do not universally condemn "big ball of mud" programming, pointing out that this pattern is most prevalent because it works — at least at the moment it is developed. However, programs of this pattern become maintenance nightmares.
Programmers in control of a big ball of mud project are strongly encouraged to study it and to understand what it accomplishes, and to use this as a loose basis for a formal set of requirements for a well-designed system that could replace it. Technology shifts – such as client-server to web-based or file-based to database-based – may provide good reasons to start over from scratch.
In programming languages
In discussion of the Lisp programming languageLisp programming language
Lisp is a family of computer programming languages with a long history and a distinctive, fully parenthesized syntax. Originally specified in 1958, Lisp is the second-oldest high-level programming language in widespread use today; only Fortran is older...
the term big ball of mud is used differently, in this case to describe the malleability of a Lisp system. In Lisp, it is generally possible to:
- Easily write macros that give you control over the language syntaxSyntaxIn linguistics, syntax is the study of the principles and rules for constructing phrases and sentences in natural languages....
, so that the notation looks closer to the problem's domain - Use a data-directed programmingData-directed programmingData-directed programming is a programming technique mentioned in Structure and Interpretation of Computer Programs. Essentially it is a "dispatch" technique on procedures for integrating separately developed data-type modules, based on the programmers manual setup of dynamic tables for procedure...
style - Execute parts of a program at compile time rather than runtime
- Save a system imageSystem imageA system image in computing is a copy of the entire state of a computer system stored in some non-volatile form such as a file. A system is said to be capable of using system images if it can be shut down and later restored to exactly the same state...
of a modified Lisp implementation for future use
The programming language Forth has also been described as a ball of mud because it too has many of these properties.
Joel Moses
Joel Moses
Joel Moses is an Israeli-American computer scientist and Institute Professor at the Massachusetts Institute of Technology.Joel Moses was born in Palestine in 1941 and emigrated to the U.S. in 1954. He attended Midwood High School in Brooklyn, New York...
may have coined the phrase in the 1970s:
- "APL is like a beautiful diamond - flawless, beautifully symmetrical. But you can't add anything to it. If you try to glue on another diamond, you don't get a bigger diamond. LispLispA lisp is a speech impediment, historically also known as sigmatism. Stereotypically, people with a lisp are unable to pronounce sibilants , and replace them with interdentals , though there are actually several kinds of lisp...
is like a ball of mud. Add more and it's still a ball of mud - it still looks like Lisp."
Joel Moses strongly denies saying this, claiming he instead called Lisp a bean bag
Bean bag
A bean bag is a sealed bag containing dried beans, PVC pellets or expanded polystyrene, with various applications.-Games:...
because it always returns to its original shape.