Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Reinventing the wheel
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== In software development == {{main|Code reuse}} In [[software development]], reinventing the wheel is often necessary in order to work around [[software licensing]] incompatibilities or around technical and policy limitations present in parts or modules provided by third parties.{{Citation needed|date=January 2016}} An example would be to implement a [[quicksort]] for a script written in [[JavaScript]] and destined to be embedded in a web page. The quicksort algorithm is well known and readily available from [[Library (computing)|libraries]] for software developers writing general-purpose applications in [[C++]] or [[Java (programming language)|Java]], but some JavaScript implementations do not provide this specific algorithm. Hence, if a developer wants to reliably use quicksort on their web page, they must "reinvent the wheel" by reimplementing the algorithm. They could conceivably copy it from another web page, but then they could run into [[copyright]] and software licensing issues. Reinventing the wheel in this case provides the missing functionality and also avoids copyright issues. Additionally, those new to a language (and especially those new to programming) will often attempt to manually write many functions for which a more robust and optimized equivalent already exists in the [[standard library]] or other easily available libraries.{{Citation needed|date=January 2016}} While this can be useful as a learning exercise, when done unknowingly the result is often less [[Computer programming#Readability of source code|readable]], less reliable, less tested and less optimized software which takes longer to write, test, maintain, and [[Debugging|debug]].
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)