O LISP ainda é praticado / usado no mundo de hoje ou é uma linguagem herdada
Sim, é, mas você precisa saber para onde procurar. As pessoas que usam o LISP não costumam gritar muito alto, mas há alguns exemplos de algumas startups de alto nível que o usaram com grande efeito nos últimos 20 anos. Também é muito popular entre pequenas empresas na Europa.
Qual é o dialeto mais usado?
Esta é uma pergunta válida, mas não é fácil de responder. Também pode não ser particularmente útil responder: muitas implementações têm um foco específico; portanto, são melhor escolhidas se ajustarem ao seu problema específico, em vez de se basearem em quão amplamente ele é usado. Em vez disso, vou falar um pouco sobre suas opções e você pode decidir por si mesmo.
O LISP é uma família de idiomas e cada um desses idiomas possui uma família de dialetos e implementações. Em geral, os dialetos se enquadram em dois campos "LISPs" e "Schemes".
LISPs: Até relativamente recentemente, o Common LISP era o rei. Foi uma tentativa de unificar todos os LISPs díspares e, sem ser cruel, foi o "C ++" do LISP. Ou seja, era uma linguagem enorme . Tinha tudo. Nos últimos anos, Clojure apareceu. Clojure é um LISP que roda na Java Virtual Machine e tenta se enraizar em uma filosofia de programação funcional. Tradicionalmente, outros LISPs têm sido estritamente multiparadigmas. O Clojure é interessante porque obtém o melhor e o pior do LISP e da JVM. Ainda há um monte da verbosidade de linguagens baseadas em Java e eles têm sido bastante fácil e gratuito com a sintaxe de modo que tem muitos botões e teclas para coisas diferentes, mas eles têm alguns realmenteidéias interessantes sobre tipos de dados, especialmente algumas das formas práticas que eles têm para aplicar idéias da programação funcional.
Esquemas: Esquemas são um subconjunto estrito de LISPs. O esquema foi inventado por Steele e Sussman e, no início da vida, era notável por ser usado no curso de palestras do MIT Computing 101. O esquema é definido no "Relatório Revisado ^ n sobre o Esquema de Linguagem Algorítmica (RnRS)". Sim: eles têm uma piada de matemática lá. O esquema é uma linguagem padronizada de uma maneira que outros LISPs não são. Isso ajuda muito na portabilidade entre implementações, mas não é uma bala de prata. Os esforços de padronização tendem a ser conservadores e as inovações nas implementações, especialmente em torno de módulos, tendem a ser díspares. Há também uma série de SRFIs (solicitações de esquema para implementação) semelhantes ao processo RFC da IETF. As pessoas o usam para padronizar pequenas coisas, conforme necessário.
Os esquemas são diferentes dos LISPs, pois eles têm um conjunto de requisitos rígidos que devem atender, um dos quais é a "otimização da chamada de cauda", que ajuda a tornar a recursão eficiente. Portanto, estilos recursivos de programação são muito mais populares no Scheme do que no LISP. O esquema é, também sem ser cruel, como o "C" do LISP. Ou seja, é um idioma pequeno e você deve manter tudo isso em mente de uma só vez.
Atualmente, existem duas famílias de esquemas: aquelas baseadas na 5ª versão (R5RS) e aquelas baseadas na 6ª versão (R6RS). A complexidade do R6RS era muito maior do que a de qualquer um de seus antecessores, e muitas implementações do R5RS optaram por ignorá-lo, esperando que o R7RS seja mais semelhante ao R5RS do que o R6RS. Atualmente, o processo de padronização do R7RS está em andamento e tentou incluir os desejos dos implementadores do R5RS e os do pessoal do R6RS, padronizando um pequeno idioma de base em seu primeiro grupo de trabalho e, em seguida, contratando um segundo grupo de trabalho para padronizar os recursos maiores. Isso permitirá que o idioma tenha implementações eficientes e úteis tanto em pequenos hardwares incorporados quanto em máquinas mais capazes.
Agora vou ser mais específico:
O PicoLisp é um LISP muito, muito legal. É minúsculo! O autor escreveu para si mesmo e, pelo que entendi, ele vive disso desde a década de 1980. Se você tiver a oportunidade de participar de uma conversa com ele, faça: ele é realmente interessante e realmente conhece as coisas dele, e você não sentirá o menor cheiro de algo mainstream ou chato.
Não estou familiarizado com as implementações do Common Lisp, por isso não comentarei mais sobre elas.
Guile é o esquema oficial do GNU.
O raquete é um esquema do R6RS, mas ultimamente parece ter ampliado a rede e está tentando "servir como plataforma para criação, design e implementação de linguagem".
Frango pretende ser um esquema prático. Ele é baseado no R5RS e é compilado até C. Isso acaba sendo uma vantagem muito, muito importante, pois torna absolutamente trivial o uso de bibliotecas C existentes. Portanto, Chicken é provavelmente o esquema mais útil para substituir Perl, Python, Ruby, etc., como sua linguagem de script do dia-a-dia. Há várias pessoas que o usam exclusivamente para todas as suas necessidades há vários anos. Possui um REPL interativo e um compilador. A comunidade (na lista de discussão e no IRC) é conhecedora, amigável e prestativa.
Procure uma implementação com muitos módulos: isso mostra que é amplamente utilizável e significa que é provável que tenha algo que ajude na tarefa em questão.
Procure uma implementação com um compilador ou, no mínimo, algo que não seja estritamente baseado em IDE ou REPL. Muitas das implementações projetadas para o ensino são muito difíceis de usar para scripts de uso geral.
Eu recomendaria frango como é o que eu uso. Eu o usei em meus projetos pessoais e (e atualmente estou usando) profissionalmente.
Eu não quero investir esforços indevidos em algo que seja totalmente obsoleto - eu ainda o aprenderia se estivesse profissionalmente "morto", mas apenas com uma perspectiva acadêmica ...
O esquema não está profissionalmente morto, mas você pode ter que se esforçar bastante para usá-lo nesse contexto. Algo como Chicken é muito mais do que uma busca acadêmica e pode facilmente cobrir quase todas as bases de qualquer idioma de alto nível usado atualmente.