Besides its many advantages, the WEB system also has a bunch of serious drawbacks. Many of them apply only to the original WEB implementation of Knuth and have been corrected or worked around in numerous WEB clones implemented thereafter. In this section I will present some of them1 and discuss their enhancements.
One of the biggest disadvantages of WEB was the fact that it was so closely tied to TEX as typesetting system and to Pascal as implementation language. So one of the first flavors of WEB was CWEB [CWeb] which extended WEB to C as implementation language. It was implemented by Knuth himself together with Silvio Levy. CWEBx[CWebx] is a CWEB with some extensions by Marc van Leeuwen. CWEB suffers from the same problems like WEB, it is closely coupled to TEX and the C programming language.
To overcome this language dependencies, noWEB[noWeb] (which evolved from spiderWEB) and nuWEB[nuWeb] have been developed by Norman Ramsey and Preston Briggs respectively. They are both language independent concerning the programming language whereas they still use LATEX for typesetting. nuWEB is a rather minimalistic but fast WEB approach with only as few as four control sequences. Both noWEB and nuWEB offer no pretty printing by default but noWEB is based on a system of tools (called filters) which are connected through pipes and the current version comes with pretty printing filters for C and Java (see the actual documentation).
Another descendant of an early version of cWEB is fWEB [fWeb]. fWEB initially was an abbreviation for ``Fortran WEB'', but meanwhile fWEB supports not only Fortran, but C, C++, Ratfor and TEX as well. This languages can be intermixed in one project, while fWEB still supports pretty printing for the different languages. On the other hand, fWEB is a rather complex piece of software with a 140 page users manual.
Ross Williams' funnelWEB [funnelWeb] and Uwe Kreppels webWEB [webWeb] are not only independent of the programming language, but of the typesetting language as well. They define own format macros, which can be bound to arbitrary typesetting commands. As of now, they both come with HTML and LATEX bindings respectively.