PicoLisp
Paradigm | Funktionell , procedurell , objektorienterad , deklarativ , reflekterande , meta |
---|---|
Familj | Läspa |
Designad av | Alexander Burger |
Dök först upp | 1988 |
Stabil frisättning | 23.2 / 8 februari 2023
|
Maskinskrivningsdisciplin | anka , dynamisk , stark |
Implementeringsspråk | LLVM , PicoLisp |
OS | POSIX |
Licens | MIT |
Filnamnstillägg | .l |
Hemsida | |
Dialekter | |
Ersatz PicoLisp, miniPicoLisp |
PicoLisp är ett programmeringsspråk, en dialekt av språket Lisp . Det körs på operativsystem inklusive Linux och andra som är kompatibla med Portable Operating System Interface ( POSIX ) . Dess mest framträdande egenskaper är enkelhet och minimalism . Den bygger på en intern datatyp : en cell. På språknivå kan en programmerare använda tre olika datatyper (siffror, symboler och listor) som representeras av celler och differentieras av bitar i slutet av cellen. Det är gratis och öppen källkod som släpps under en MIT-licens (X11).
Funktioner
Funktioner kan acceptera godtyckliga typer och antal argument. Makron behövs endast i sällsynta fall och implementeras med hjälp av citatfunktionen. PicoLisp inkluderar inte Lisps lambdafunktion . Detta beror på att citatfunktionen ändras för att returnera alla dess argument outvärderade, inte bara den förstas bil .
En speciell funktion är den inneboende funktionen för att skapa, läsa, uppdatera och ta bort ( CRUD). Beständiga symboler är förstklassiga medborgare (objekt), de laddas automatiskt från databasfiler när de öppnas och skrivs tillbaka när de ändras. Ansökningar skrivs med hjälp av en klasshierarki av enheter och relationer .
Andra funktioner inkluderar: Prolog- motor, databasmotor och databasfrågor, distribuerade databaser, inlining av C- språkfunktioner och inbyggda C-funktionsanrop, underordnad processhantering, interprocesskommunikation , webbläsargrafiskt användargränssnitt (GUI) och internationalisering och lokalisering .
Historia
På 1980-talet började PicoLisp utvecklas på Macintosh och användes i kommersiella tillämpningar [ vilken? ] utveckling sedan dess. [ citat behövs ] Designen av PicoLisp är mest lik den första versionen av MacLisp, Interlisp och främst Portable Standard Lisp. Den portades till DOS och SCO Unix . Sedan 1993 har det använts främst på Linux. I mitten av 1990-talet tillkom databasfunktioner.
De första versionerna skrevs i en blandning av C och assemblerspråk . 1999 gjordes en första omskrivning från grunden, helt i C. 2002 släpptes den versionen under en GNU General Public License (GNU GPL). 2010 ändrades den till en MIT/X11-licens.
2009 släpptes 64-bitarsversionen , ytterligare en omskrivning, denna gång skriven i generisk sammansättning, som i sin tur är implementerad i PicoLisp. Denna version lägger till stöd för coroutines .
I december 2010 släpptes en Java- version med namnet Ersatz PicoLisp .
I september 2014 tillkännagav Burger PilMCU-projektet på PicoLisps utvecklingslistserv , ett försök med George Orais att implementera PicoLisp i hårdvara direkt.
I juli 2015 tillkännagav Burger PilOS - PicoLisp Operating System, en minimal prototyp baserad på modifieringen av PilMCU riktad mot inbäddade applikationer. Den körs på standard x86-64 PC-hårdvara, direkt från BIOS och inkluderar alla funktioner i 64-bitars PicoLisp (minus inbyggda funktionsanrop, eftersom det inte finns någon annan inbyggd miljö som C-standardbiblioteket); i princip fungerar det som ett eget operativsystem.
Sommaren 2016 startades utvecklingen av PilBox ("PicoLisp Box") – en generisk Android- app som gör det möjligt att skriva appar i ren PicoLisp. Det utvecklas och underhålls fortfarande.
2021 återimplementerades PicoLisp i LLVM och släpptes som pil21 . Källspråket som kompileras till LLVM-IR är också i PicoLisp-syntax.
1955 | 1960 | 1965 | 1970 | 1975 | 1980 | 1985 | 1990 | 1995 | 2000 | 2005 | 2010 | 2015 | 2020 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
LISP 1, 1.5, LISP 2 (övergiven) | ||||||||||||||
Maclisp | ||||||||||||||
Interlisp | ||||||||||||||
MDL | ||||||||||||||
Lisp Machine Lisp | ||||||||||||||
Schema | R5RS | R6RS | R7RS liten | |||||||||||
NIL | ||||||||||||||
ZIL (Zork Implementation Language) | ||||||||||||||
Franz Lisp | ||||||||||||||
Vanlig Lisp | ANSI standard | |||||||||||||
Le Lisp | ||||||||||||||
MIT Scheme | ||||||||||||||
T | ||||||||||||||
Chez Scheme | ||||||||||||||
Emacs Lisp | ||||||||||||||
AutoLISP | ||||||||||||||
PicoLisp | ||||||||||||||
Gambit | ||||||||||||||
EuLisp | ||||||||||||||
ISLISP | ||||||||||||||
OpenLisp | ||||||||||||||
PLT-schema | Racket | |||||||||||||
GNU Guile | ||||||||||||||
Visual LISP | ||||||||||||||
Clojure | ||||||||||||||
Arc | ||||||||||||||
LFE | ||||||||||||||
Hy |