• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

pedrotuga

Ask P@P - Lisp, perl ou python para um pequeno dicionário?

Qual linguagem usar?   9 membros votaram

  1. 1. Qual linguagem usar?

    • Lisp
      2
    • Perl
      1
    • Python
      6

Please inicie sessão ou registe-se para votar.

12 mensagens neste tópico

Ora viva... para aumentar o meu conhecimento da lingua sueca decidi finalmente por em prática uma ideia antiga que tinha. Um pequeno utilitário que corre numa consola em modo de texto para praticar vocabulário.

O programa será um pequeno utilitário em que o utilizador terá que traduzir algumas palavras para outra língua, eventualmente recebendo pistas. Terá tambem a possibilidade de adicionar palavras, e de fazer mais tipos de exercicios que ainda não decidi ou não me lembrei.

Ora, não estou a ver forma de fazer isto decentemente e em tempo util sem recorrer a um sofware de getão de bases de dados relacionais. Os seguidores do profeta Parantesis acabaram de dizer ou pensar: "O Lisp é um base de dados relacional por si próprio, o Lisp é tudo".

O que é certo é que, a não ser que alguem me elucide àcerca disto, não estou a ver uma forma mais simples de manipular dados, do que usando uma base de dados daquelas que todos conhecemos.

Como é que se aproxima um problema deste tipo em Lisp? Alguem me pode apontar um aspecto tecnico do Lisp que será pratico numa situação pontual qualquer que superará a simplicidade/eficienca de uma base de dados que use SQL?

É que isto está mesmo a pedir pegar no python ou perl, no sqlite e toma lá morangos. Mas por outro lado é este tipo de projecto que eu gostava de usar para experimentar fazer alguma coisa util em Lisp.

Outra coisa que me acabei de lembrar... a distribuição do programa... ah e tal o lisp é poderoso, etc... pois e como é que eu distribuo a aaplicação?

Acho que não andam por aqui muitas pessoas que conhecem bem Lisp e/ou que me possam responder a estas duvidas existenciais, não sei, qualquer informação é bem-vinda.

Em relaçao à votação, por favor votem apenas se estiverem dispostos a explicar a vossa escolha.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Qualquer 1 delas faz o que queres. Eu escolheria Python apenas por ser a que domino.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Qualquer 1 delas faz o que queres. Eu escolheria Python apenas por ser a que domino.

x2, eu usava Python+SQLite. Acho que uma aplicação em python é mais simples de distribuir do que uma em perl ou lisp (corrijam-me se estiver enganado).
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que uma aplicação em python é mais simples de distribuir do que uma em perl ou lisp (corrijam-me se estiver enganado).

Perl encontras em praticamente todas as máquinas *nix, mais do que Python. LISP só tens o inconveniente de ter de compilar. Mas isso não é relevante para o tópico.
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

LISP só tens o inconveniente de ter de compilar. Mas isso não é relevante para o tópico.

Depende da implementação.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Até ao momento fui o único a votar em Lisp, mas como já alguém disse com qualquer uma delas dá para fazer o que queres, escolhi Lisp por ser a que conheço e que já trabalhei

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pessoal, não era para votar na vossa preferencia pessoal, era para dizer qual é que acreditam ser mais aconselhado. Tipo... votar numa por ser a que conhecem não é aconselhar essa linguagem pois não há qualquer comparação com as outras duas.

No caso do Lisp fiz umas perguntas em particular. Por exemplo, lordnins se usasses Lisp como é que guardavas os dados?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Qualquer 1 delas faz o que queres. Eu escolheria Python apenas por ser a que domino.

x2, eu usava Python+SQLite. Acho que uma aplicação em python é mais simples de distribuir do que uma em perl ou lisp (corrijam-me se estiver enganado).

Subscrevo. Python + SQLite, até porque Python já traz de raiz o SQLite.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva Pedro,

Eu acho que devias usar Lisp por ser essa a tua preferência para este projecto. Nem valerá a pena pensares noutras hipóteses.

No entanto, penso que seria mais interessante para ti usares um ficheiro de texto em vez de uma BD. Não porque razões de eficiência, performance ou qualquer outra coisa. Simplesmente porque terás melhores oportunidades para treinar o teu Lisp sem te submeteres a um interface SQLite para Lisp que poderá oferecer-te poucos desafios.

A estrutura do teu ficheiro de texto será relativamente simples, penso eu. Poderás usar então o Lisp para abrires, pesquisares, apagar(?), alterar ou introduzir novos registos.

O Common Lisp Cookbook é um excelente recurso web para arrancares com o teu projecto (calculo que estejas a usar o CL). Não te esqueças também de ler a lista de outros recursos disponíveis na web, mais abaixo na homepage do Cookbook.

Se tiveres qualquer dúvida específica farei o possível por responder. Já não programo em Lisp à uns bons 4 anos. Mas foi uma linguagem que me deu muito gozo aprender e penso ainda ter alguns conhecimentos guardados.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Por exemplo, lordnins se usasses Lisp como é que guardavas os dados?

O Marfig acabou de responder a essa questão:

No entanto, penso que seria mais interessante para ti usares um ficheiro de texto em vez de uma BD. Não porque razões de eficiência, performance ou qualquer outra coisa. Simplesmente porque terás melhores oportunidades para treinar o teu Lisp sem te submeteres a um interface SQLite para Lisp que poderá oferecer-te poucos desafios.

A estrutura do teu ficheiro de texto será relativamente simples, penso eu. Poderás usar então o Lisp para abrires, pesquisares, apagar(?), alterar ou introduzir novos registos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mmmm... não quero ser o gajo chato, mas não respondeu.

Ficheiros de texto são só uma forma de guardar os dados, acho até que os motores de bases de dados convencionais permitem guardar os dados em ficheiros de texto, mas não é o suporte de armazenamento que está aqui em discussão.

Por exemplo: como é que se estabelece uma relação entre dois tipos de dados usando ficheiros de texto?

Ou mais simples ainda... como é que faço uma pesquisa?

A única forma que estou a ver é meter tudo para a memória e pesquisar numa lista. Mas isso não é nenhum ponto a favor do lisp pois isso é uma solução trivial que pode ser usada em qualquer linguagem.

Sim, o dialecto que estou a considerar é o Common Lisp.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bom, se tens lido o link to que te dei e tens ido à secção de Files and Directories. Terias visto lá as funções read-line e file-position que te permitem aceder aos conteúdos de um ficheiro, linha a linha e aleatoriamente, respectivamente.

...

No que diz respeito à relação entre elementos, és tu que decides o modelo ao implementares a tua própria estrutura de dados no ficheiro de texto. Repara que isto é uma forma muito comum de guardar informação em série - desde ficheiros de configuração (conf, ini, etcetera) até xml e mesmo "data files". Para  teu caso poderia ser tão simples como cada linha do ficheiro de texto guardar a cada palavra em sueco e a sua tradução em português separadas por um ponto-e-vírgula ou o símbolo de igual. Ou podes elaborar mais a tua estrutura e tratar o ficheiro texto como se de uma base de dados se tratasse e desenhares o código para o seu motor. Por exemplo...

Guardas os primeiros bytes do ficheiro para guardares o índice dos conteúdos. Poderia ser qualquer coisa como:

"12;134;343;455;678;..." em que cada número representaria a linha em que palavras começadas pelo caracter respectivo começaria. A = 12, B=134, C=343, et cetera; Ou extender esta noção de index e criar algo mais complexo envolvendo registos de tamanha fixo. Naturalmente este é um exemplo bastante simples. As base de dados do SQLite foram em tempos inteiramente textuais. Podes pesquisr a web por "Flat File Database", ou "Text File Database" para conheceres estes fascinantes modelos e como os implementares.

Ou então poderias tentar as abordagens ditas... correctas(?).

- Poderias implementar uma binary-search-tree http://www.cs.usu.edu/~vkulyukin/vkweb/software/bst/bst.html

- Poderias implementar Hash Tables http://cl-cookbook.sourceforge.net/hashes.html

- Poderias usar ambas em conjunto.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora