<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://ddn.pluspedia.org/w/index.php?action=history&amp;feed=atom&amp;title=PicoLisp</id>
	<title>PicoLisp - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://ddn.pluspedia.org/w/index.php?action=history&amp;feed=atom&amp;title=PicoLisp"/>
	<link rel="alternate" type="text/html" href="https://ddn.pluspedia.org/w/index.php?title=PicoLisp&amp;action=history"/>
	<updated>2026-08-13T09:11:35Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in PlusPedia</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://ddn.pluspedia.org/w/index.php?title=PicoLisp&amp;diff=26411&amp;oldid=prev</id>
		<title>82.113.121.96: Init</title>
		<link rel="alternate" type="text/html" href="https://ddn.pluspedia.org/w/index.php?title=PicoLisp&amp;diff=26411&amp;oldid=prev"/>
		<updated>2010-02-14T23:05:41Z</updated>

		<summary type="html">&lt;p&gt;Init&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;PicoLisp&amp;#039;&amp;#039;&amp;#039; ist ein [[Open Source Software|Open Source]] [[Lisp]]-Dialect. Es&lt;br /&gt;
läuft auf [[Linux]] und anderen [[POSIX]]-kompatiblen Systemen.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
Das grundlegende Prinzip von PicoLisp ist &amp;quot;Einfachheit&amp;quot;. Es beschränkt sich auf&lt;br /&gt;
einen einzigen internen [[Datentyp]] (die &amp;quot;Zelle&amp;quot;, engl. &amp;quot;cell&amp;quot;), ohne dabei&lt;br /&gt;
Abstriche an Flexibilität oder Ausdruckskraft zu machen. Auf der Ebene der&lt;br /&gt;
Sprache existieren nur drei Datentypen (Zahlen, Symbole und Listen), die&lt;br /&gt;
wiederum aus den internen Zellen aufgebaut sind.&lt;br /&gt;
&lt;br /&gt;
Da die verkettete Liste der einzige nicht-atomare Datentyp ist, existieren viele&lt;br /&gt;
miteinander kooperierenden Funktionen, die sich ganz auf die Listenverarbeitung&lt;br /&gt;
konzentrieren können. Im Ergebnis sind PicoLisp-Programme oft prägnanter - und&lt;br /&gt;
dabei schneller - als jene in anderen interpretierten Sprachen (siehe&lt;br /&gt;
&amp;quot;Beispiele&amp;quot; unten).&lt;br /&gt;
&lt;br /&gt;
[[Funktion (Programmierung)|Funktionen]] sind frei von&lt;br /&gt;
[[Compiler]]-Beschränkungen, und können somit Argumente jedes Typs und von&lt;br /&gt;
beliebiger Anzahl akzeptieren. Macros werden nur in seltenen Fällen benötigt.&lt;br /&gt;
&lt;br /&gt;
Eine Besonderheit ist die eingebaute [[Datenbank]]. Persistente Symbole sind&lt;br /&gt;
first-class Objekte, sie werden beim Zugriff automatisch aus Datenbankdateien&lt;br /&gt;
geladen, und nach Veränderungen zurückgeschrieben. Anwendungen können auf&lt;br /&gt;
eine [[Vererbung (Programmierung)|Klassenhierarchie]] von&lt;br /&gt;
[[Entity-Relationship-Modell|Entity-Relationships]] zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
Ausserdem: [[Prolog (Programmiersprache)|Prolog]]-Interpreter für deklarative&lt;br /&gt;
Programmierung und Datenbankabfragen, verteilte Datenbanken, direktes Inlining&lt;br /&gt;
von [[C (Programmiersprache)|C]]-Funktionen und nativer Aufruf externer&lt;br /&gt;
C-Funktionen, Verwaltung von Child-Prozessen, [[Interprozesskommunikation]],&lt;br /&gt;
Browser GUI, [[Lokalisierung (Softwareentwicklung)|Lokalisierung]].&lt;br /&gt;
&lt;br /&gt;
== Geschichte ==&lt;br /&gt;
&lt;br /&gt;
PicoLisp wurde ursprünglich in den 1980er Jahren auf dem [[Apple Macintosh]] entwickelt, und wird seitdem in kommerzieller Anwendungsentwicklung eingesetzt. Es wurde bald nach [[MS-DOS]] und [[SCO Unix]] portiert, und seit 1993&lt;br /&gt;
hauptsächlich unter Linux benutzt. Die Datenbankfunktionalität wurde Mitte der 1990er Jahre hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
Während die ersten Versionen in einer Mischung aus C und [[Assembler (Informatik)|Assembler]] geschrieben waren, erfolgte 1999 eine Neu-Implementation ausschließlich in C. Diese Version wurde 2002 unter der [[GNU GPL]] Lizenz veröffentlicht.&lt;br /&gt;
&lt;br /&gt;
2009 wurde die [[64-bit]]-Version veröffentlicht, eine nochmalige Neu-Implementation, dieses Mal in einer generischen Assembler-Sprache welche wiederum in PicoLisp implementiert ist.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
Das folgende Programm implementiert den &amp;quot;Fannkuch&amp;quot; Benchmark, wie er in der&lt;br /&gt;
[http://shootout.alioth.debian.org/u64q/benchmark.php?test=fannkuch Alioth&lt;br /&gt;
Benchmark Suite] beschrieben ist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!bin/picolisp lib.l&lt;br /&gt;
&lt;br /&gt;
(let (N (format (opt))  Lst (range N 1)  L Lst  M)&lt;br /&gt;
   (recur (L)  # Permute&lt;br /&gt;
      (if (cdr L)&lt;br /&gt;
         (do (length L)&lt;br /&gt;
            (recurse (cdr L))&lt;br /&gt;
            (rot L) )&lt;br /&gt;
         (let I 0  # For each permutation&lt;br /&gt;
            (and (ge0 (dec (30))) (prinl (reverse Lst)))&lt;br /&gt;
            (for (P (copy Lst)  (&amp;gt; (car P) 1)  (flip P (car P)))&lt;br /&gt;
               (inc &amp;#039;I) )&lt;br /&gt;
            (setq M (max I M)) ) ) )&lt;br /&gt;
   (prinl &amp;quot;Pfannkuchen(&amp;quot; N &amp;quot;) = &amp;quot; M)&lt;br /&gt;
   (bye) )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es zeigt wie expressiv und prägnant ein PicoLisp-Programm sein kann, im&lt;br /&gt;
Vergleich mit anderen Beiträgen auf der Alioth-Seite.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu dem autonomen Skript oben, hier das gleiche Programm als&lt;br /&gt;
Funktionsdefinition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(de fannkuch (N)&lt;br /&gt;
   (let (Lst (range 1 N)  L Lst  Max)&lt;br /&gt;
      (recur (L)  # Permute&lt;br /&gt;
         (if (cdr L)&lt;br /&gt;
            (do (length L)&lt;br /&gt;
               (recurse (cdr L))&lt;br /&gt;
               (rot L) )&lt;br /&gt;
            (zero N)  # For each permutation&lt;br /&gt;
            (for (P (copy Lst)  (&amp;gt; (car P) 1)  (flip P (car P)))&lt;br /&gt;
               (inc &amp;#039;N) )&lt;br /&gt;
            (setq Max (max N Max)) ) )&lt;br /&gt;
      Max ) )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Ausführungsgeschwindigkeit ist natürlich geringer als die der meisten&lt;br /&gt;
compilierten Sprachen. Wir konnten 18 Minutes auf einem 1.0 GHz Athlon messen;&lt;br /&gt;
es sollte deutlich weniger auf der Intel Q6600 Maschine von Alioth sein. Da es&lt;br /&gt;
sich dort um einen Quad-Core-Rechner handelt, kann es leicht um einen Faktor von&lt;br /&gt;
vier beschleunigt werden, wenn man die parallelisierte Version verwendet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(de fannkuch (N)&lt;br /&gt;
   (let (Res (need N)  Lst (range 1 N)  L Lst  Max)&lt;br /&gt;
      (for (R Res R (cdr R))&lt;br /&gt;
         (later R&lt;br /&gt;
            (let L (cdr Lst)&lt;br /&gt;
               (recur (L)  # Permute&lt;br /&gt;
                  (if (cdr L)&lt;br /&gt;
                     (do (length L)&lt;br /&gt;
                        (recurse (cdr L))&lt;br /&gt;
                        (rot L) )&lt;br /&gt;
                     (zero N)  # For each permutation&lt;br /&gt;
                     (for (P (copy Lst)  (&amp;gt; (car P) 1)  (flip P (car P)))&lt;br /&gt;
                        (inc &amp;#039;N) )&lt;br /&gt;
                     (setq Max (max N Max)) ) )&lt;br /&gt;
               Max ) )&lt;br /&gt;
         (rot Lst) )&lt;br /&gt;
      (wait NIL (full Res))&lt;br /&gt;
      (apply max Res) ) )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
*[http://www.picolisp.org PicoLisp Home]&lt;br /&gt;
*[http://software-lab.de/picoLisp.tgz Latest Version]&lt;br /&gt;
*[http://software-lab.de/down.html Download page]&lt;br /&gt;
*[http://software-lab.de/ref.html Reference manual]&lt;br /&gt;
*[irc://irc.freenode.net/picolisp #picolisp IRC channel]&lt;br /&gt;
*[http://www.mail-archive.com/picolisp@software-lab.de Mailing list archive]&lt;br /&gt;
&lt;br /&gt;
== Quellen ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*[http://software-lab.de/radical.pdf Paper] A Radical Approach to Application Development (PDF)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Lisp]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Andere Wikipedia Sprachen ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Picolisp WPSprache{en}: Picolisp ]&lt;br /&gt;
* [http://eo.wikipedia.org/wiki/PicoLisp WPSprache{eo}: PicoLisp ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Init-Quelle ==&lt;br /&gt;
Entnommen aus der:&lt;br /&gt;
* [http://de.wikipedia.org/wiki/PicoLisp Wikipedia] &lt;br /&gt;
* [http://de.wikipedia.org/wiki/Wikipedia:L%C3%B6schkandidaten/1._Januar_2010#PicoLisp_.28gel.C3.B6scht.29 Löschdiskussion bei Wikipedia]&lt;br /&gt;
&lt;br /&gt;
Erster Autor: [http://de.wikipedia.org/wiki/Benutzer:AlexanderBurger  AlexanderBurger ] angelegt am 01.01.2010 um 18:15,&lt;br /&gt;
&amp;lt;br/&amp;gt; Alle Autoren: [http://de.wikipedia.org/wiki/Benutzer:Freedom Wizard Freedom Wizard], [http://de.wikipedia.org/wiki/Benutzer:Kmhkmh Kmhkmh], [http://de.wikipedia.org/wiki/Benutzer:AlexanderBurger  AlexanderBurger ], [http://de.wikipedia.org/wiki/Benutzer:TheK TheK], [http://de.wikipedia.org/wiki/Benutzer:Weissbier Weissbier], [http://de.wikipedia.org/wiki/Benutzer:Niemot Niemot]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:WikiPedia Deleted]]&lt;/div&gt;</summary>
		<author><name>82.113.121.96</name></author>
	</entry>
</feed>