mirror of https://github.com/Gnucash/gnucash
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
146 lines
5.6 KiB
146 lines
5.6 KiB
<article id="xacc-scheme">
|
|
<artheader>
|
|
<title> GnuCash e Scheme </title>
|
|
<author>
|
|
<firstname>Christopher</firstname>
|
|
<surname>Browne</surname>
|
|
</author>
|
|
</artheader>
|
|
<sect1 id="scheme">
|
|
<title>Scheme</title>
|
|
|
|
<para> A linguagem de programação Scheme é utilizada como uma linguagem
|
|
de extensão do <application>GnuCash</application>. É particularmente
|
|
utilizada para as seguintes funcionalidades:
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem><para> A <link linkend="xacc-qif-import"> importação QIF </link>,</para></listitem>
|
|
<listitem><para> Geração de <link linkend="xacc-reports"> relatórios </link>,</para></listitem>
|
|
<listitem><para> Apresentar a "dica do dia".</para></listitem>
|
|
|
|
</itemizedlist></para>
|
|
|
|
<para> Scheme é um ``dialecto'' LISP que é relativamente pequeno, suporta
|
|
agradavelmente a recursão, disponibiliza estruturas de bloco e âmbito lexico,
|
|
e dá a uma variedade de tipos de objectos um status de ``primeira-classe''
|
|
(<emphasis>isto é</emphasis> - objectos de primeira classe não nomeáveis e
|
|
podem ser passados como argumentos de funções, resultados, ou elementos de
|
|
listas).</para>
|
|
|
|
<para> <application>GnuCash</application> utiliza a implementação
|
|
chamada <link linkend="guile"> Guile. </link> </para></sect1>
|
|
|
|
<sect1 id="xacc-schemedocs"> <title>Documentação Scheme</title>
|
|
|
|
<para> Existe uma rica literatura de boas referências sobre Scheme,
|
|
incluindo as seguintes:
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem> <para> <ulink url=
|
|
"http://www.swiss.ai.mit.edu/projects/scheme/index.html"> Página principal
|
|
do Scheme </ulink></para></listitem>
|
|
|
|
<listitem> <para> <ulink url="http://mitpress.mit.edu/sicp/"
|
|
id="sicp"> Estrutura e Interpretação de Programas de Computador
|
|
(SICP)</ulink> </para>
|
|
|
|
<para> Este trabalho clássico está agora disponível na web <ulink
|
|
url="http://mitpress.mit.edu/sicp/full-text/book/book.html"> no formato
|
|
de texto completo. </ulink> SICP é utilizado no MIT para ajudar a introduzir
|
|
os estudantes à Ciência Informática; é excelente para tal, mas poderá ser
|
|
demasiado complexo para os que 'apenas querem fazer algo'.</para></listitem>
|
|
|
|
<listitem> <para> <ulink
|
|
url="http://www.scheme.com/tspl2d/index.html"> A Linguagem de Programação
|
|
Scheme, 2ª Edição (Cópia online do livro de Dybvig)</ulink>
|
|
</para>
|
|
|
|
<para> Esta referência excelente apresenta o ANSI standard Scheme,
|
|
incluindo bastantes exemplos. </para>
|
|
</listitem>
|
|
|
|
<listitem id="r5rs"> <para> <ulink
|
|
url="http://www-swiss.ai.mit.edu/~jaffer/r5rs_toc.html"> Especificações
|
|
R5RS do Scheme</ulink> </para> </listitem>
|
|
|
|
<listitem><para><ulink url="http://www.htdp.org/"> Como Definir
|
|
Programas </ulink></para>
|
|
|
|
<para> Este livro, publicado pela MIT Press, e disponível na web,
|
|
disponibiliza aconselhamento tipo tutorial sobre como programar, utilizando o
|
|
excelente ambiente <ulink
|
|
url="http://www.cs.rice.edu/CS/PLT/packages/drscheme/" id="drscheme">
|
|
<application> DrScheme </application> </ulink>.</para>
|
|
|
|
<para> Este poderá ser o livro mais adequado para os chegados ao Scheme
|
|
consultarem já que apresenta um bom número de exemplos de como fazer coisas
|
|
úteis em <link linkend="scheme"> Scheme </link>.</para></listitem>
|
|
|
|
</itemizedlist></para></sect1>
|
|
|
|
<sect1 id="xacc-guile"> <title>Guile Scheme</title>
|
|
|
|
<para> <ulink url="http://www.guile.org/" id="guile"> Guile </ulink>
|
|
é uma implementação de <link linkend="scheme"> Scheme </link> utilizado
|
|
em muitos projectos FSF. Está particularmente destinado a ser prontamente
|
|
embebido em aplicações escritas em C.
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem> <para> <ulink url="ftp://ftp.red-bean.com/pub/guile/">
|
|
Directório de /pub/guile no red-bean.com</ulink> </para>
|
|
|
|
<para> Esta é a localização ``oficial'' onde o código fonte experimental
|
|
do Guile se encontra. </para> </listitem>
|
|
|
|
<listitem> <para><ulink url=
|
|
"http://www.gnu.org/software/goops/goops.html" id="goops"> GOOPS
|
|
</ulink> - CLOS para Guile </para> </listitem>
|
|
|
|
<listitem id="gwrap"> <para> <ulink
|
|
url="http://www.cs.cmu.edu/~chrislee/Software/g-wrap/"> g-wrap
|
|
</ulink> </para>
|
|
|
|
<para> G-Wrap é uma ferramenta portável para facilmente importar tipos,
|
|
funções, e constantes do C para interpretadores <link linkend="scheme">
|
|
Scheme </link>. G-Wrap suporta <link linkend="guile"> Guile
|
|
</link> e RScheme.
|
|
</para>
|
|
|
|
<para> <application>GnuCash</application> utiliza o G-Wrap para conectar
|
|
o Guile e o motor do <application>GnuCash</application>.
|
|
</para> </listitem>
|
|
|
|
<listitem> <para><ulink url="http://srfi.schemers.org/" id="srfi">
|
|
SRFI - Proposta de Implementação Scheme (Scheme Requests For Implementation) </ulink></para>
|
|
|
|
<para> Uma das deficiências mais antigas do Scheme tem sido que a definição
|
|
da linguagem é deliberadamente espartana, faltando-lhe funcionalidades.
|
|
Compare a parca definição do Scheme, <link linkend=
|
|
"r5rs"> R5RS </link> com a do <ulink url= "http://www.cons.org/">
|
|
Common Lisp, </ulink> que tem uma muito maior, mais funcional
|
|
<ulink url= "http://www.harlequin.com/education/books/HyperSpec/">
|
|
especificação HyperSpec. </ulink> (Nota: O HyperSpec é discutivelmente
|
|
um dos melhores e mais sofisticados conjuntos de documentação jamais
|
|
construidos utilizando HTML.)</para>
|
|
|
|
<para> O processo SRFI procura essencialmente adicionar conjuntos de
|
|
funções em bibliotecas para disponibilizar funcionalidades expandidas
|
|
que possam ser portáveis através das implementações Scheme. Isto tem
|
|
incluido bibliotecas para manipular conjuntos, caracteres, texto (strings),
|
|
"pacotes", registos, datas, objectos.</para>
|
|
|
|
<para> <application>GnuCash</application> utiliza o SRFI 1 (Listas),
|
|
8 (ligações de múltiplos valores; utilizado pelo SRFI 1), e 19 (Datas). </para>
|
|
</listitem>
|
|
|
|
</itemizedlist></para></sect1>
|
|
|
|
</article>
|
|
|
|
<!-- Local variables: -->
|
|
<!-- sgml-parent-document: "gnucash.sgml" -->
|
|
<!-- End: -->
|