Talk:Literate programming

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
WikiProject Computing / Software / CompSci (Rated C-class, Low-importance)
WikiProject iconThis article is within the scope of WikiProject Computing, a collaborative effort to improve the coverage of computers, computing, and information technology on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
C-Class article C  This article has been rated as C-Class on the project's quality scale.
 Low  This article has been rated as Low-importance on the project's importance scale.
Taskforce icon
This article is supported by WikiProject Software (marked as Mid-importance).
Taskforce icon
This article is supported by WikiProject Computer science (marked as Mid-importance).

Remove Syntax Highlighting?[edit]

As noticed by, the source code listed is not quite C, as promised to the syntax highlighter. It's unlikely the highlighter will ever support something like lang="noweb#c", so it may be best to just use "<pre>" or custom formatting instead. But the former looks plain and the latter is labor intensive... — Preceding unsigned comment added by Daggerbox (talkcontribs) 02:20, 7 January 2011 (UTC)

Who uses literate programming?[edit]

The article would be improved if it contained a list of software programs that have been written in a literate programming style. From what I gather, this is still a small number, so a list would not be out of place. I know of TeX (which was even published as a book TeX: The Program) and METAFONT by Knuth, and I've heard about Axiom, but are there any ("big") programs or software projects written in literate programming? (talk) 07:32, 22 March 2011 (UTC)

Good question. I glanced at the official discussion group for Literate Programming, which is now a Google Group. These discussions might be useful to read, in order to gain further insight regarding your question, and corresponding inclusion in the article, What is the future of literate programming? (July 2011) and Is Literate Programming useful? (March 2011). Note that comp.programming.literate has been active through October 2012. --FeralOink (talk) 15:14, 1 January 2013 (UTC)

Removed tagging.[edit]

Nothing here to make clear what action to take in nearly a year so removed. Please replace if you can give specfics. (talk) 15:21, 6 May 2012 (UTC)

EHC/ UHC and Web68 update[edit]

I updated external references but tried to include external links in my revision comment. Guess what: It didn't work!

This is what my edit was: I revised URLs due to the transition of EHC content to UHC per the UHC Wiki Project News, (Sept 2010). I also removed red link/ non-existent wikilinks. Also, I updated and cited properly, the Web68 reference. --FeralOink (talk) 14:41, 1 January 2013 (UTC)

Project Jupyter needs adding[edit]

Project Jupyter should probably be added to the list of examples.

Best wishes. RobbieIanMorrison (talk) 22:50, 21 November 2016 (UTC)

What horrible thing.[edit]

The article is totally missing any discussion of the failings and shortfalls of WEB or even Literate Programming as concept. Instead it reads as The Gospel according to Saint Knuth. The fact that even proponents of this abortive concept struggle to find examples of relevant software written in it (other than by Knuth himself) should alert to the many reasons that make it next to useless for any proper software project outside of the software lab of Knuth & His Acolytes. Allow me to mention a few: Substituting 'natural language' for properly defined programming languages can only lead to increased ambiguity, not less; proficient programmers should have no difficulty conveying (and understanding) meaning through properly written code in a well-known programming language; this is especially true for the most complex parts of algorithms (ie, where it matters most), and even the WEB examples provided for Unix's 'wc' program (a relatively simple application) amount to a load of comments around blocks of traditional code that carry out the actual work; ie, it increases verbosity ungainfully.

I should probably work these objections into the article myself, but i can't be bothered. If this Literate Programming nonsense mattered to anyone other than Knuth's uncritical followers, the article would already have plenty mention of these issues, and others. (By the way, this Knuth fellow is the guy who, not so long ago, lambasted the hell out of microprocessor designers for 'persisting' in making multicore architectures, claiming that it is incumbent upon them to build fast single-threaded processors instead of trying to 'force' programmers to learn parallel programming. WTF?) — Preceding unsigned comment added by (talk) 20:52, 12 January 2017 (UTC)

You seem to have strong opinions on the topic (and many others).
To add anything to this article (or any others), you will need reliable sources. - SummerPhDv2.0 03:20, 13 January 2017 (UTC)
From your offensive language about Knuth, on can infer that you certainly know nothing about computer science, and are a total ignorant about Knuth's seminal work.
You have no idea of what a robust program is, nor what a good style is.
Do not confuse a simple example, not a good one, with the literate style, it is essential to write real maintainable software. — Preceding unsigned comment added by (talk) 22:19, 28 March 2017 (UTC)

While I agree that LP has serious flaws, your comments seem to indicate that you have entirely missed the point. It is in mo way a 'natural language programming' attempt, and the fact that you seem to think it is shows that you haven't read the explanation carefully.

The goal with LP is code documentation (as differentiated from either code comments or the code itself), a practice that is generally ignored in the industry at large. While the typical LP system such as noweb involves the writing of the code and documentation together, the intent is not that they be read together; rather, the LP document is processed into separate source code ('tangling') and prose documentation ('weaving') files. The crux of the idea is to ensure that the documentation remains in sync with the source code. The intention - flawed though it is - is to have a document the programmer can read before looking into the code proper.

The problem, of course, is that hardly any real-world programs have any code documentation at all, for reasons completely unrelated to the technical merits or flaws in the idea. The real reason LP fails is because managers don't care about code documentation (or code maintenance in general), and trying to write any would be career suicide for a working programmer. This is the sad, idiotic reality of the IT industry, and is unlikely to change any time soon.

I do think the idea has more merit than it is usually credited, but I do not consider the approach as given by Knuth to be adequate - what it really calls for is a hypertextual approach, and one not tied to using inline markup as seen in HTML, at that. However, even that won't ever get most programmers to adopt it, because it runs counter to the running-in-place nature of the industry at large. It is yet another sign of how programming as a field is Lewis Carroll's Red Queen - it runs at full speed without advancing, always moving but going nowhere new despite the appearance of change. All the advancements of the past four decades have been down to hardware - the software, while radically different than in the past, is not actually innovative. The last truly new things in the field were the LZ compression algorithms and the Bricklin spreadsheet model - both of which date to 1977. The rest is just rehashing things that were too hardware-intensive to be practical before. Schol-R-LEA (talk) 18:48, 17 March 2018 (UTC)

Haskell was designed to write literate programs[edit]

Haskell is a very formal language, it supports algebraic data types and is a purely declarative language. A programmer use algebraic laws to transform code into a more efficient equivalent one. For that reason I rewrote that point. — Preceding unsigned comment added by (talk) 22:23, 28 March 2017 (UTC)

I am not sure that you have actually understood the idea or intent of LP. The key idea is not to try to write 'self-documenting' code, but to write the prose documentation for the code (which is a separate concept from both code comments and code clarity - and one almost always ignored in practice) together with the code itself, with the tangle and weave tools then separating them for alternate presentations. The goal is to ensure that the code documentation - which, as I already said, is not widely practiced in the first place - is updated at the same time as the code. The source code itself is automatically extracted from the LP document once it is written - the LP document is not itself source code.

While the idea is sound when approached in a vacuum, in practice it has serious problems, primarily in that, like Test-Driven Development, in it's classic form it is really only suited for example programs - projects which have a clear goal at the outset, where the design does not change during the initial coding process and is never updated afterwards. While the intent was to ensure that the code documentation is synchronized to the source code itself, the assumption that documentation is going to be written at all entirely ignores meat-grinder the reality of commercial code development - if a programmer were to take the sort of time to meticulously document their code in this manner, they would be dismissed out of hand as being unable to keep their schedule.

This is unfortunate, but the primary forces at work are economic ones, not technical ones - good engineering practices in software development are the exception rather than the rule, because the people responsible for deciding the 'best practices' are not themselves software developers, and usually hold programmers in contempt as mere factory laborers. The entire point of things like Agile Development (before they too got corrupted) was to find a way to cope with this reality.

However, the fact that the idea is so poorly understood has made those problems irrelevant - it gets ignored because no one except academics have bother to look at it in the first place. It could well have merit if a way to adjust it to fit the reality were found (unlikely as that is), but the truth is that no one cares enough to try. Schol-R-LEA (talk) 17:18, 17 March 2018 (UTC)

External links modified[edit]

Hello fellow Wikipedians,

I have just modified one external link on Literate programming. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:

When you have finished reviewing my changes, you may follow the instructions on the template below to fix any issues with the URLs.

As of February 2018, "External links modified" talk page sections are no longer generated or monitored by InternetArchiveBot. No special action is required regarding these talk page notices, other than regular verification using the archive tool instructions below. Editors have permission to delete the "External links modified" sections if they want, but see the RfC before doing mass systematic removals. This message is updated dynamically through the template {{sourcecheck}} (last update: 15 July 2018).

  • If you have discovered URLs which were erroneously considered dead by the bot, you can report them with this tool.
  • If you found an error with any archives or the URLs themselves, you can fix them with this tool.

Cheers.—InternetArchiveBot (Report bug) 16:28, 3 January 2018 (UTC)