Rewrite (programming)

Rewrite (programming)

A rewrite in computer programming is the act or result of re-implementing a large portion of existing functionality without re-use of its source code. When the rewrite is not using existing code at all, it is common to speak of a rewrite from scratch. When instead only parts are re-engineered, which have otherwise become complicated to handle or extend, then it is more precise to speak of code refactoring.

Motivation

#When the source code to be able to extend an existing program is not available.
#When the source code is available under an incompatible license.
#When the code cannot be adapted to a new target platform.
#When the existing code has become too difficult to handle and extend.
#When the task of debugging the existing code seems too complicated.
#When the programmer finds it difficult to understand the source code.

Controversy

Many prominent software developers warn that this technique rarely leads to the intended success, claiming that rewriting is more fun than debugging, but the rewrite requires more time and will have new bugs. [cite web | url=http://www.ronkes.nl/blog/?2005-04-15-neverrewritecode | title=Never Rewrite Code From Scratch | first=Joost | last=Ronkes Agerbeek | date=April 15 2005 | accessdate=2008-09-11] [cite web | url=http://www.jwz.org/doc/cadt.html | title=Cascade of Attention-Deficit Teenagers | first=Jamie | last=Zawinski | authorlink=Jamie Zawinski | accessdate=2008-09-11]

Advocates of this method instead suggest that with every iteration of the rewrite process an even better version is created, provided the same programmers do the job that already wrote the earlier versions. [cite web | url=http://www.perlmonks.org/?node_id=115511 | title=Rewriting, from scratch, a huge code base | first=Ben | last=Tilly | dat=September 29 2001 | accessdate=2008-09-11] [cite web | url=http://my.opera.com/Vorlath/blog/2007/09/25/code-rewrite-yes | title=Code Rewrite - Yes | author=Vorlath | date=25 September 2007 | accessdate=2008-09-11]

History

Both Borland's Paradox for Windows and Quattro Pro for Windows started development using beta versions of Windows 3.0, in the spring of 1990. Paradox/Windows ended up delayed about a year beyond its original plan, shipping in early 1993.

The reasons were many, but not entirely surprising for a major rewrite, in an object-oriented programming language with new tools, shifting to a GUI paradigm, on what was essentially a first version operating system. Still it was a big problem for the company and Microsoft managed to ship Access a couple of months ahead of Paradox for Windows, a major marketing win to Microsoft.Fact|date=September 2008

It took IBM two years to rewrite OS/2 for PowerPC, and by the time the operating system was ready, the market for OS/2 on PowerPC had evaporated.Fact|date=September 2008

Netscape's rewrite of its browser is popularly considered one of the most dramatic strategic mistakes in the history of the Internet. [cite web | url=http://www.joelonsoftware.com/articles/fog0000000069.html | title=Things You Should Never Do | first=Joel | last=Spolsky | authorlink=Joel Spolsky | date=April 6 2000 | accessdate=2008-09-11] [cite web | url=http://www.jwz.org/gruntle/nomo.html | title=resignation and postmortem | first=Jamie | last=Zawinski | authorlink=Jamie Zawinski | date=March 31 1999 | accessdate=2008-09-11]

References

ee also

*Open source software development
*Development hell

Some projects mentioning major rewrites in their history:
*Apache HTTP Server (1)
*AOL Instant Messenger (1)
*Apple Newton (0)
*BIND (1)
*Freenet (1)
*Fusebox (2)
*Gabber (instant messaging client) (0)
*GRUB (0)
*Majordomo (1)
*MediaWiki (1)
*Mozilla/Netscape (1)
*Icecast (0-1)
*netcat (1)
*OpenRPG (1)
*PHP (1-2)
*Project Xanadu (0-1)
*Sun Secure Global Desktop (1)
*VBulletin (2)
*WebObjects (1)
*Zope (1)

External links

* [http://www.c2.com/cgi/wiki?RewriteCodeFromScratch RewriteCodeFromScratch at C2 Wiki]


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать реферат

Look at other dictionaries:

  • Rewrite — may refer to one of the following: *Rewrite (programming), the act or result of writing new source code to replace an existing program *Rewrite man, a journalist who works in the office, taking information reported by others and crafting it into… …   Wikipedia

  • Constraint logic programming — Programming paradigms Agent oriented Automata based Component based Flow based Pipelined Concatenative Concurrent computing …   Wikipedia

  • List of programming languages by category — Programming language lists Alphabetical Categorical Chronological Generational This is a list of programming languages grouped by category. Some languages are listed in multiple categories. Contents …   Wikipedia

  • Declarative programming — Programming paradigms Agent oriented Automata based Component based Flow based Pipelined Concatenative Concurrent computing …   Wikipedia

  • Concurrent constraint logic programming — is a version of constraint logic programming aimed primarily at programming concurrent processes rather than (or in addition to) solving constraint satisfaction problems. Goals in constraint logic programming are evaluated concurrently; a… …   Wikipedia

  • Fusebox (programming) — Fusebox is a web application framework for ColdFusion and PHP. Originally released in 1997, it is currently in its fifth major incarnation. The current version, Fusebox 5.5, was released to the world at the beginning of December 2007.Fusebox is… …   Wikipedia

  • Defensive programming — is a form of defensive design intended to ensure the continuing function of a piece of software in spite of unforeseeable usage of said software. The idea can be viewed as reducing or eliminating the prospect of Murphy s Law having effect.… …   Wikipedia

  • Concept programming — is a programming paradigm focusing on how concepts, that live in the programmer s head, translate into representations that are found in the code space. This approach was introduced in 2001 by Christophe de Dinechin with the XL Programming… …   Wikipedia

  • Comment (computer programming) — For comments in Wikipedia markup, see Help:Wiki markup#Character formatting and WP:COMMENT. An illustration of Java source code with prologue comments indicated in red and inline comments in green. Program code is in blue …   Wikipedia

  • Criticism of the APL programming language — The APL programming language has been used since the mid 1960s on mainframe computers and has itself evolved in step with computers and the computing market. APL is not widely used, but minimalistic and high level by design, at several points in… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”