PicoLisp - PicoLisp

PicoLisp
PicoLisp Logo.svg
Paradigmas Funcional , procedimental , orientado a objetos , declarativo , reflexivo , meta
Família Lisp
Projetado por Alexander Burger
Apareceu pela primeira vez 1988 ; 33 anos atrás ( 1988 )
Versão estável
21.6 / 27 de junho de 2021 ; 3 meses atrás ( 2021-06-27 )
Disciplina de digitação pato , dinâmico , forte
Linguagem de implementação LLVM , PicoLisp
Plataforma IA-32 , x86-64 , Arm64
SO POSIX
Licença MIT
Extensões de nome de arquivo .eu
Local na rede Internet picolisp .com
Dialetos
Ersatz PicoLisp, miniPicoLisp

PicoLisp é uma linguagem de programação, um dialeto da linguagem Lisp . Ele é executado em sistemas operacionais incluindo Linux e outros que são compatíveis com Portable Operating System Interface ( POSIX ). Suas características mais proeminentes são a simplicidade e o minimalismo . É construído em um tipo de dados interno : uma célula. No nível da linguagem, um programador pode usar três tipos de dados diferentes (números, símbolos e listas) sendo representados por células e diferenciados por bits no final da célula. É um software gratuito e de código aberto lançado sob uma Licença MIT (X11).

Recursos

As funções podem aceitar tipos e números arbitrários de argumentos. As macros são necessárias apenas em casos raros e são implementadas usando a função de cotação. PicoLisp não inclui a função lambda do Lisp . Isso ocorre porque a função quote é alterada para retornar todos os seus argumentos não avaliados, não apenas o cardo primeiro.

Um recurso especial é o funcionamento intrínseco de criação, leitura, atualização e exclusão (CRUD). Os símbolos persistentes são cidadãos de primeira classe (objetos), eles são carregados de arquivos de banco de dados automaticamente quando acessados ​​e gravados de volta quando modificados. Os aplicativos são escritos usando uma hierarquia de classes de entidades e relações .

Outros recursos incluem: mecanismo de Prolog , mecanismo de banco de dados e consultas de banco de dados , bancos de dados distribuídos, inlining de funções de linguagem C e chamadas de função C nativas, gerenciamento de processo filho, comunicação entre processos , interface gráfica do usuário (GUI) do navegador e internacionalização e localização .

História

Na década de 1980, o PicoLisp começou a desenvolver no Macintosh , e foi usado no desenvolvimento de aplicativos comerciais desde então. O design do PicoLisp é mais semelhante ao da primeira versão do MacLisp, Interlisp e principalmente do Portable Standard Lisp. Foi portado para DOS e SCO Unix . Desde 1993, ele foi usado principalmente no Linux. Em meados da década de 1990, as funções de banco de dados foram adicionadas.

As primeiras versões foram escritas em uma mistura de linguagem C e assembly . Em 1999, uma primeira reescrita do zero foi feita, totalmente em C. Em 2002, essa versão foi lançada sob uma GNU General Public License (GNU GPL). Em 2010, mudou para uma licença MIT / X11.

Em 2009, foi lançada a versão 64 bits , outra reescrita, desta vez escrita em assembly genérico, que por sua vez é implementado no PicoLisp. Esta versão adiciona suporte para corrotinas .

Em dezembro de 2010, uma versão Java chamada Ersatz PicoLisp foi lançada.

Em setembro de 2014, Burger anunciou o projeto PilMCU na lista de desenvolvimento do PicoLisp , um esforço com George Orais para implementar o PicoLisp em hardware diretamente.

Em julho de 2015, a Burger anunciou o PilOS - O Sistema Operacional PicoLisp, um protótipo mínimo baseado na modificação do PilMCU voltado para aplicações embarcadas. Ele roda em hardware de PC padrão x86-64, diretamente da BIOS e inclui todos os recursos do PicoLisp de 64 bits (menos chamadas de funções nativas, devido ao fato de não haver outro ambiente nativo como a biblioteca padrão C); em princípio, ele funciona como seu próprio sistema operacional.

No verão de 2016, o desenvolvimento do PilBox ("PicoLisp Box") - um aplicativo Android genérico que permite escrever aplicativos em PicoLisp puro - foi iniciado. Ele ainda está sendo desenvolvido e mantido.

Referências

links externos