<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Noweb</id>
	<title>Noweb - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Noweb"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Noweb&amp;action=history"/>
	<updated>2026-05-30T19:46:23Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Noweb&amp;diff=2837707&amp;oldid=prev</id>
		<title>imported&gt;Phzh: Form, typo</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Noweb&amp;diff=2837707&amp;oldid=prev"/>
		<updated>2025-10-16T12:50:16Z</updated>

		<summary type="html">&lt;p&gt;Form, typo&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Software&lt;br /&gt;
|Name                 = Noweb&lt;br /&gt;
|Logo                 = &lt;br /&gt;
|Erscheinungsjahr     = 1989&lt;br /&gt;
|Hersteller           = Norman Ramsey&lt;br /&gt;
|AktuelleVersion      = 2.12&lt;br /&gt;
|AktuelleVersionFreigabeDatum= 28. Juni 2018&lt;br /&gt;
|Programmiersprache   = [[C (Programmiersprache)|C]], [[Awk]], und Icon&lt;br /&gt;
|Betriebssystem       = Plattform unabhängig&lt;br /&gt;
|Deutsch              = nein&lt;br /&gt;
|Website              = http://www.cs.tufts.edu/~nr/noweb/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Noweb&amp;#039;&amp;#039;&amp;#039; (Eigenschreibweise: &amp;#039;&amp;#039;&amp;#039;noweb&amp;#039;&amp;#039;&amp;#039;) ist ein [[Programmierwerkzeug]] für [[Literate programming]], das in den Jahren 1989 bis 1999 von Norman Ramsey entwickelt wurde.&amp;lt;ref&amp;gt;[http://www.cs.tufts.edu/~nr/index.html Website von Norman Ramsey] abgerufen am 29. Dezember 2012.&amp;lt;/ref&amp;gt; Entwurfsziele waren Einfachheit, einfache Erweiterbarkeit und Sprachunabhängigkeit.&lt;br /&gt;
&lt;br /&gt;
Wie in [[WEB (Programmiersprache)|WEB]] und [[CWEB]] sind die Hauptkomponenten von noweb zwei Programme: „&amp;#039;&amp;#039;Notangle&amp;#039;&amp;#039;“, das  aus den Quelltexten &amp;#039;Maschinen&amp;#039;-Quelltext extrahiert, und „&amp;#039;&amp;#039;noweave&amp;#039;&amp;#039;“, das formatierte druckbare Dokumente produziert.&lt;br /&gt;
&lt;br /&gt;
Noweb unterstützt [[TeX]]-, [[LaTeX]]-, [[HTML]]- und [[Troff]]-Backends und arbeitet mit jeder Programmiersprache. Außer Einfachheit ist dies der Hauptvorteil gegenüber WEB, das verschiedene Versionen benötigt, um andere Programmiersprachen als [[Pascal (Programmiersprache)|Pascal]] zu unterstützen. (Daher war CWEB notwendig, das [[C (Programmiersprache)|C]] und ähnliche Sprachen unterstützt.)&lt;br /&gt;
&lt;br /&gt;
== Nowebs Input ==&lt;br /&gt;
&lt;br /&gt;
Ein Noweb-Inputtext enthält Programmquellcode unterbrochen durch Dokumentation. Er besteht aus sogenannten &amp;#039;&amp;#039;Chunks&amp;#039;&amp;#039;, die entweder &amp;#039;&amp;#039;Dokumentations-Chunks&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;Code-Chunks&amp;#039;&amp;#039; sind.&lt;br /&gt;
&lt;br /&gt;
Ein Dokumentations-Chunk beginnt mit einer Zeile, die mit einem [[At-Zeichen]] (@) gefolgt von einer Leertaste oder einem Zeilenvorschub beginnt. Ein Dokumentations-Chunk hat keinen Namen. Dokumentations-Chunks enthalten normalerweise [[LaTeX]], aber man kann auch [[Hypertext Markup Language|HTML]], einfaches [[TeX]] oder [[Troff]] verwenden.&lt;br /&gt;
&lt;br /&gt;
Code-Chunks sind benamt. Ein Code-Chunk beginnt mit&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;&amp;lt;chunk name&amp;gt;&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
in einer eigenen Zeile. Die doppelte linke spitze Klammer (&amp;lt;&amp;lt;) muss in der ersten Spalte stehen.&lt;br /&gt;
&lt;br /&gt;
Jeder Chunk wird durch den Anfang des nächsten Chunks beendet. Wenn die erste Zeile einer Datei nicht den Anfang eines Chunks markiert, wird davon ausgegangen, dass sie die erste Zeile eines Dokumentations-Chunks ist.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Code-Chunks&amp;#039;&amp;#039; werden nicht besonders behandelt durch die Werkzeuge von Noweb; sie können in beliebiger Reihenfolge platziert werden und werden, wenn nötig, in richtiger Reihenfolge zusammengefügt. Chunk-Verweise im Code werden aufgelöst und der ganze erwünschte Quellcode extrahiert.&lt;br /&gt;
&lt;br /&gt;
=== Beispiel eines einfachen Noweb-Programms ===&lt;br /&gt;
&lt;br /&gt;
Dies ist das Beispiel eines einfachen &amp;#039;&amp;#039;„hello world“&amp;#039;&amp;#039;- Programms mit Dokumentation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
\section{Hello world}&lt;br /&gt;
&lt;br /&gt;
Heute wachte ich auf und beschloss zu coden.&lt;br /&gt;
Also begann ich mit einem Hello World in \textsf C.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;hello.c&amp;gt;&amp;gt;=&lt;br /&gt;
/*&lt;br /&gt;
   &amp;lt;&amp;lt;license&amp;gt;&amp;gt;&lt;br /&gt;
*/&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[]) {&lt;br /&gt;
   printf(&amp;quot;Hello World!\n&amp;quot;);&lt;br /&gt;
   return 0;&lt;br /&gt;
}&lt;br /&gt;
@&lt;br /&gt;
\noindent \ldots Dann machte ich dasselbe in PHP.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;hello.php&amp;gt;&amp;gt;=&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
  /*&lt;br /&gt;
 &amp;lt;&amp;lt;license&amp;gt;&amp;gt;&lt;br /&gt;
  */&lt;br /&gt;
  echo &amp;quot;Hello world!\n&amp;quot;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
@&lt;br /&gt;
\section{License}&lt;br /&gt;
Dann erinnerte mich mein Anwalt an die Lizenz.&lt;br /&gt;
So, da ist sie nun:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;license&amp;gt;&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
             Copyright (C) 2012 Erika Mustermann&lt;br /&gt;
&lt;br /&gt;
This program is free software: you can redistribute it and/or modify it&lt;br /&gt;
under the terms of the GNU General Public License as published by the&lt;br /&gt;
Free Software Foundation, either version 3 of the License, or any later version.&lt;br /&gt;
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;&lt;br /&gt;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;br /&gt;
See the GNU General Public License for more details.&lt;br /&gt;
should have received a copy of the GNU General Public License along with this program.&lt;br /&gt;
If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Angenommen, der vorstehende Code befindet sich in einer Datei namens &amp;#039;&amp;#039;hello.nw&amp;#039;&amp;#039;, dann lautet der Befehl, ihn in ein menschenlesbares Dokument im [[HTML]]-Format zu extrahieren:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;noweave -filter l2h -index -html hello.nw | htmltoc &amp;gt; hello.html&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;htmltoc&amp;#039;&amp;#039; fügt ein Inhaltsverzeichnis („&amp;#039;&amp;#039;&amp;#039;t&amp;#039;&amp;#039;&amp;#039;able &amp;#039;&amp;#039;&amp;#039;o&amp;#039;&amp;#039;&amp;#039;f &amp;#039;&amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;#039;ontent“) hinzu.&lt;br /&gt;
&lt;br /&gt;
… und ins [[LaTeX]]-Format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;noweave -index -latex hello.nw &amp;gt; hello.tex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um den Quellcode zu extrahieren:&lt;br /&gt;
&lt;br /&gt;
Zuerst den [[C (Programmiersprache)|C]]-Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;notangle -Rhello.c hello.nw &amp;gt; hello.c&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
… dann [[PHP]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;notangle -Rhello.php hello.nw &amp;gt; hello.php&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und nun das Ganze in [[Hypertext Markup Language|HTML]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Hello world&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;tableofcontents&amp;gt;&amp;lt;/tableofcontents&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Programme&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Heute wachte ich auf und beschloss zu coden.&lt;br /&gt;
Also begann ich mit einem Hello World in C.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;hello.c&amp;gt;&amp;gt;=&lt;br /&gt;
/*&lt;br /&gt;
   &amp;lt;&amp;lt;license&amp;gt;&amp;gt;&lt;br /&gt;
*/&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[]) {&lt;br /&gt;
   printf(&amp;quot;Hello World!\n&amp;quot;);&lt;br /&gt;
   return 0;&lt;br /&gt;
}&lt;br /&gt;
@&lt;br /&gt;
&amp;lt;p&amp;gt;Dann machte ich dasselbe in PHP.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;hello.php&amp;gt;&amp;gt;=&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
  /*&lt;br /&gt;
 &amp;lt;&amp;lt;license&amp;gt;&amp;gt;&lt;br /&gt;
  */&lt;br /&gt;
  echo &amp;quot;Hello world!\n&amp;quot;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
@&lt;br /&gt;
&amp;lt;h2&amp;gt;License&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Dann erinnerte mich mein Anwalt an die Lizenz.&lt;br /&gt;
So, da ist sie nun:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;license&amp;gt;&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
             Copyright (C) 2012 Erika Mustermann&lt;br /&gt;
&lt;br /&gt;
This program is free software: you can redistribute it and/or modify it&lt;br /&gt;
under the terms of the GNU General Public License as published by the&lt;br /&gt;
Free Software Foundation, either version 3 of the License, or any later version.&lt;br /&gt;
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;&lt;br /&gt;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;br /&gt;
See the GNU General Public License for more details.&lt;br /&gt;
should have received a copy of the GNU General Public License along with this program.&lt;br /&gt;
If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTML extrahieren (und Inhaltsverzeichnis erzeugen) durch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;noweave -index -html hello-html.nw |htmltoc &amp;gt; hello.html&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Kompatibilität ==&lt;br /&gt;
Noweb legt ein bestimmtes Dateiformat fest und eine Datei verschachtelt wahrscheinlich drei verschiedene Formate (Noweb, LaTeX und die verwendete Programmiersprache). Dies wird durch andere Softwareentwicklungswerkzeuge nicht verstanden und konsequenterweise schließt die Verwendung von Noweb den Gebrauch von UML oder Codedokumentationswerkzeugen aus.&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.cs.tufts.edu/~nr/noweb/ Offizielle Website]&lt;br /&gt;
* [http://www.cs.tufts.edu/~nr/index.html Norman Ramseys Homepage]&lt;br /&gt;
* [http://github.com/JonathanAquino/noweb.py noweb.py – ein freier Noweb-Klon geschrieben in Python]&lt;br /&gt;
* [http://github.com/bergie/noweb.php noweb.php – Noweb-Klon in PHP]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmierwerkzeug]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Phzh</name></author>
	</entry>
</feed>