Talk:Noweb
![]() | This article is rated Start-class on Wikipedia's content assessment scale. It is of interest to the following WikiProjects: | |||||||||||||
|
Neutrality of Impact on Software Quality
[edit]This is an opinion piece. In my opinion the ability to reuse chunks makes the maintenance cost lower, and increases readability if done right - removing a lot of boiler plate.
Both my differing view above, and the fact that neither of these views can be substantiated with evidence, makes me tag this for review by someone else. —Preceding unsigned comment added by 141.219.213.150 (talk) 21:09, 24 January 2011 (UTC)
There is nothing in the piece which I would consider an opinion: - Chunks do not work well in a debugger. The stack trace does not map to chunks and chunks hide previous variable declarations. - Chunks are an unconventional way of factoring source code (rather than into routines and classes). Generating the source code from the chunks can lead to routines which are thousands of lines long or full of duplication. Essentially unmaintainable outside of the noweb tool. - Re-using a chunk across several routines creates additional complexity when one use of that chunk needs to be specialised.
The words "if done right" suggest a different experience of the tool. Day-in-day-out, noweb increases the amount of boiler-plate text in my files (a routine signature needs to be written 7 times instead of 2 because its put in chunk names) and the disconnect between the chunks and the real code adds no value when you have to read a routine top-to-bottom to understand it anyway.
I advocate the text remaining as is.
--82.133.39.195 (talk) 19:15, 2 February 2011 (UTC)
Do you work at a software company? Do you have to document the software you write? Have you only used ancient versions of noweb? If you are writing a language with preprocessor support (C/C++ for example), the noweb interpreter inserts the correct #line definitions to refer back to the original source. - I dont know what compiler you use, but the gstabs output from GCC does very well with variable references in scope, to the correct chunk. - Possibly you see chunks as an excuse to write bad code where every.single.line.or.phrase.becomes.a.chunk. Possibly people working under you do. - Still, I can abuse any language. If I want to make a debugger mess I can define all of my data structure operators in preprocessor macros in C, so that when there is an error the debug output is useless.
It is an opinion piece because the value of the language features is subjective. Write a criticism section that does not state "It degrades software quality", because I am not about to go write in the C page that the preprocessor degrades software quality even though I can abuse it. When average joe comes about and reads this wiki article, this is an excuse for him to tell his literate programming friend "NOWEB is aweful, it leads to bad software".
I propose the name be changed from "Impact on Software Quality" to "Criticisms" at the minimum.
24.213.16.2 (talk) 15:43, 11 February 2011 (UTC)
I don't think the point of literate programming is to structure code in anyway. It is just a method of describing code much in the way it is described in programming books only a bit less didactic. Noweb is just a tool for literate programming. You can literate program with comments (minus the chunk structuring). That said, I think this section should be removed since Noweb has impact on software quality only through its impact on literate programming. If a power screwdriver has a positive effect of the act of screw driving and screw driving has a positive effect on building then power screw driving will not have a negative effect on building (all safety and political issues aside). Hence we should be describing the impact of Noweb on literate programming and not software quality. —Preceding unsigned comment added by 69.119.186.152 (talk) 03:02, 24 February 2011 (UTC)
To respond to the above two comments. I've been employed as a software engineer for 15+ years and now use noweb daily at a software company. To cover each of the sections three paragraphs in this section in turn: 1 - GOTO statements are widely considered bad practice (http://en.wikipedia.org/wiki/Goto#Criticism_and_decline). Noweb is a GOTO-Generator (or GOSUB if you want to be specific). Code using noweb-chunks allows code to jump around without any controlled structure or interface. Based on this point alone, a section titled "Impact on Software Quality" is justified. 2 - This is a refinement of paragraph 1. Re-using chunks in a number of places will create issues when one usage inevitable needs to be specialised. 3 - The factoring of code in chunks rather than routines means that when the pre-processing unwinds the various chunks, code can be repeated, routines too long or complex etc. This is because the developer's thinking went into chunks and not routines. Therefore, moving away from noweb has a huge impact and required re-engineering the code. I'll grant you though, this could be better placed in a "criticisms" section. To add; with noweb, you have to write the content of your document. You also have to add the noweb formatting. So you will always end up with a larger, more complex document than if you didn't use it. If a users aim is to reduce boilerplate material, then this could be solved by other, less complex means. --82.133.39.195 (talk) 13:57, 19 March 2011 (UTC)
Rmd
[edit]This reminds of Rmd (R markdown used with the R programming language), doesn't it? Could this fact be noted inside of the article? Or are there fundamental conceptual differences not to name this similarity?