gildot

Topo
Sobre
FAQ
Tópicos
Autores
Preferências
Artigos
Sondagens
Propor artigo


8/3
gildicas
9/30
jobs
10/9
perguntas
10/25
press

 
Documentação em português.
Contribuído por AsHeS em 15-12-00 12:34
do departamento made-in-portugal
Perl cgd escreve "Caros, a propósito de uma pequena formação que dei por cá na Teleweb, acabei por escrever eu mesmo o "manual". Como ficou tão bom :) , aqui fica para quem quiser dar o seu feedback, ou até aprender algumas coisinhas. O documento é sobre perl, e ainda faltam uns nichinhos, mas 98% já está :) urls: pdf e txt "

nota: se puderem ver PDFs, tentem esse primeiro.

O Dubya vem ai! | dominio .eu no bom caminho...  >

 

gildot Login
Login:

Password:

Referências
  • Teleweb
  • pdf
  • txt
  • Mais acerca Perl
  • Também por AsHeS
  • Esta discussão foi arquivada. Não se pode acrescentar nenhum comentário.
    erros comuns (Pontos:1)
    por pedro em 15-12-00 14:17 GMT (#1)
    (Utilizador Info)
    a 1a frase:
    Perl é uma scripting language.

    o perl é uma linguagem de programação.

    a 2a frase:
    O código é escrito textualmente em ficheiros,
    e interpretado por um programa (o interpretador perl).


    o perl é compilado, não é interpretado. não existe um interpretador de perl, existe um compilador de perl.

    -- bgp is for those who can't keep it static long enough
    Re:erros comuns (Pontos:1)
    por pedro em 15-12-00 14:24 GMT (#2)
    (Utilizador Info)
    nas desvantagens, fazes referência a um mito que não há maneira de desaparecer:
    o código é difícil de ler/perceber e pode tornar-se demasiado obscuro
    que eu saiba isto é verdade em qq linguagem. todo o código pode ser difícil de ler/perceber, isso depende do programador (excepto no intercal :)

    os obfuscated c contests existem há mais tempo do que eu me consigo lembrar... os programadores devem ser disciplinados, e os preguiçosos que culpam as linguagens, despedidos.

    -- bgp is for those who can't keep it static long enough
    Re:erros comuns (Pontos:1)
    por leitao em 15-12-00 15:35 GMT (#3)
    (Utilizador Info)
    Yo!

    o perl é compilado, não é interpretado. não existe um interpretador de perl, existe um compilador de perl.

    Isso e' um bocado falacioso -- o Perl nem e' interpretado *nem* compilado. E' uma especie de hibrido que esta' muito mais proximo de uma linguagem interpretada do que uma compilada.

    Basta verificares que o modo normal de execucao do perl e' substituindo a shell com o *interpretador* de perl. O que podes dizer e' que o *interpretador* de perl compila o codigo num bytecode qualquer e depois o executa.

    Para mim uma linguagem *compilada* e' algo que produz um resultado final que e' um binario que corre numa plataforma qualquer usando um conjunto minimo de bibliotecas comuns do sistema.

    Que eu saiba nao podes correr o compilador de Perl de forma a gerar um binario que nao precisa de mais nada para correr (e que nao inclua o *interpretador* de bytecode de Perl dentro dele).

    Nesse aspecto o Perl esta' mais proximo do Java do que, digamos, o C++.

    Se fizeres man perlfaq1 les:

    Perl programs are (usually) neither strictly compiled nor strictly interpreted. They can be compiled to a byte-code form (something of a Perl virtual machine) or to completely different languages, like C or assembly language. You can't tell just by looking at it whether the source is destined for a pure interpreter, a parse- tree interpreter, a byte-code interpreter, or a native- code compiler, so it's hard to give a definitive answer here.

    Regards,

    -- "Why waste negative entropy on comments, when you could use the same entropy to create bugs instead?" -- Steve Elias

    Re:erros comuns (Pontos:2)
    por chbm em 15-12-00 16:03 GMT (#6)
    (Utilizador Info) http://chbm.nu/
    >o perl é compilado, não é interpretado. não existe um interpretador de perl, existe um compilador de perl.

    Eu escrevo /usr/bin/perl perl_script.pl. O /usr/bin/perl lê o código fonte do script e gera uma representação interna semi-compilada da estrutura do programa. O /usr/bin/perl interpreta essa estrutura semi-compilada do script.
    Que parte deste processo é que se assemelha à execução de um bytecode que foi previamente compilado a partir de um código fonte e é executado pelo hardware ?

    O compilador de perl que existe actualmente pega na estrutura semi-compilada do script e traduze-a para C. Depois compilas esse código C com um compilador de C.
    Re:erros comuns (Pontos:1)
    por pedro em 15-12-00 17:26 GMT (#7)
    (Utilizador Info)
    O /usr/bin/perl interpreta essa estrutura semi-compilada do script.
    errado. o /usr/bin/perl compila o teu programa e depois executa-o.

    programming perl 3rd edition, capítulo 18 (compiling). já agora, a 1ª frase desse capítulo:

    If you came here looking for a Perl compiler, you may be suprised to discover that you already have one - your perl program (tipically /usr/bin/perl) already contains a Perl compiler.

    -- bgp is for those who can't keep it static long enough
    Re:erros comuns (Pontos:2)
    por chbm em 15-12-00 19:11 GMT (#9)
    (Utilizador Info) http://chbm.nu/
    Deixa-me adivinhar, tipicamente executas a forma compilada dos teus scripts ? Como é que fazes ?
    Não vale responder mod_perl.
    Re:erros comuns (Pontos:1)
    por leitao em 15-12-00 23:36 GMT (#11)
    (Utilizador Info)
    Hamm... acabo de "compilar" (com o perlcc) o seguinte "programa" de perl:

    % cat > hello.pl
    print "Hello World!\n";
    ^D
    % perlcc hello.pl -o hello

    Agora repara:

    % ldd hello
    /usr/lib/perl5/5.00503/i386-linux/auto/Fcntl/Fcntl.so => /usr/lib/perl5/5.00503/i386-linux/auto/Fcntl/Fcntl.so (0x40015000)

    Humm, isto imediatamente diz-me que o binario nao vai correr a nao ser que tenha o Perl instalado ou leve comigo a Fcntl.so...

    Outra curiosa:

    % nm hello
    ...
    08063230 T Perl_assertref
    080776c0 T Perl_av_clear
    08076ea0 T Perl_av_extend
    08077630 T Perl_av_fake
    080772d0 T Perl_av_fetch
    080781b0 T Perl_av_fill
    08078190 T Perl_av_len
    08077590 T Perl_av_make
    08077a10 T Perl_av_pop
    08077800 T Perl_av_push
    ...
    entre os outros 947 simbolos no binario que tambem se encontram em /usr/bin/perl. Ja' para nao falar no facto de que o binario tem ~500Kbytes -- se o Perl e' um compilador entao e' um compilador muito pouco optimizado!!

    Can you see the light ?

    Regards,

    -- "Why waste negative entropy on comments, when you could use the same entropy to create bugs instead?" -- Steve Elias

    Re:erros comuns (Pontos:2)
    por chbm em 16-12-00 11:37 GMT (#12)
    (Utilizador Info) http://chbm.nu/
    Na realidade o perlcc não é um compilador de Perl. Usa o B::C para gerar um .c que descreve o estado do /usr/bin/perl antes de começar a interpretar o script, ie., a representação interna semicompilada do programa. Depois chama o gcc para compilar e linkar o .c. Por isso é que linka contra /usr/lib/perl5/5.00503/i386-linux/auto/* e tem montes de simbolos Perl_*.
    O B::C não faz optimizações nenhuma se a memória não me falha. Existe o B::CC que faz optimizações mas ainda não está muito .. perfeito ;) e quando gera código não está garantidamente certo.
    Obrigado. (Pontos:1)
    por TarHai em 15-12-00 15:38 GMT (#4)
    (Utilizador Info)
    Isto pode ser bem o q estava a procura. Um pequeno tutorial tiro&queda sobre o perl. Ainda por cima
    em pdf, para imprimir e levar no comboio :)

    TH

    PS: Imprimi o pdf com sucesso. So obtive uns erros na pag 11 (q tenha visto) em q alguns exemplos se sbrepoem ao texto normal.


    Cool! (Pontos:1)
    por leitao em 15-12-00 15:50 GMT (#5)
    (Utilizador Info)

        By the way -- o artigo esta' muito porreiro!

        Cheira-me e' a LaTeX... :)

        Regards,


    -- "Why waste negative entropy on comments, when you could use the same entropy to create bugs instead?" -- Steve Elias
    Diversos (Pontos:2, Esclarecedor)
    por cgd em 15-12-00 18:20 GMT (#8)
    (Utilizador Info) http://cgd.teleweb.pt

    Em relação a alguns pontos focados:

    Interpretado vs compilado: nao interessa realmente se o perl é interpretado ou compilado. Quem sabe mais, percebe o que realmente se está a passar quando se faz 'perl xpto.pl'. A minha forma de ver as coisas, é que o perl interpreta um texto e produz acções baseadas no que está escrito nesse texto (um compilador de C, pega num texto, e gera assembler --nao executa nada). A forma como o faz, nao é realmente interessante: se o perl compila o texto (script) para bytecode, e em seguida faz um switch (*bytecode++) {...} ou se faz if (strcmp(text,"chomp")==0) {} nao é muito importante, a não ser para os puristas.

    A ideia a passar é a seguinte: o meu programa perl, é um texto que contêm instruções, e existe um executável que as interpreta (pôr aqui "e compila", quem quiser) e executa.

    Quanto ao ser dificil de entender, é uma realidade: eu próprio, que já sou um velhotes destas coisas, ainda me custa a olhar para certas construções perl... (basta o facto das variáveis serem prefixadas por símbolos, para uma boa parte da legibilidade ir para o caraças)

    Por exemplo, vejam isto, digam-me se é legível, e digam-me a seguir como podia ter sido melhor escrito.

    Quanto ao problema de formatação: essa da página 11 apanhou-me! De qq forma, ainda tenho que rever algumas tabelas, que não parecem estar a sair bem... Mas o principal, é que falta adicionar uma ou outra função (length, exists), e melhorar um pouco a parte de módulos.

    Quanto ao LaTeX: errado! Não iam conseguir adivinhar: foi escrito em ROFF (usando o groff, inclusivé algumas extensoes), com as macro -me.

    O sistema de "table of contents" e índice, é feito automaticamente (o índice precisa adicionalmente que cada palavra interessante seja marcada ao longo do texto), e existem duas ou três facilidades para fazer exemplos, e resultados (aqueles "»" tb são postos automaticamente)

    Se alguem estiver interessado, posso-lhe mandar as sources, mas aquilo ainda é mais crítico do que perl (ou então sou eu que devo ser despedido :)

    Finalmente, para ser sincero, a parte que eu achei melhor, foi o cap12 (cuidados a ter, exemplos e truques), que normal não aparece muito, e sempre pode poupar muito tempo a alguma gente...


    -- carlos

    Bem Fixe... (Pontos:1)
    por dbf em 15-12-00 22:36 GMT (#10)
    (Utilizador Info)
    Bem Fixe, não esta tão aprofundado, como mt provavelmente, alguns livros ou docs que por ai andam, mas para um perl beginer como eu é uma ajuda.
    Penso que é de louvar iniciativas destas, porque realmente é isto que eu procuro ao ler o gildot diariamente, artigos para um autodidacta, que me mantenham actualizado, e preferencialmente com que possa aprender mais qq coisinha, e mt honestamente flames como as que tenho visto ultimamente, mt sinceramente dispenso, e é realmente pena que a maior parte das vezes, quando necessito pesquisar, sobre determinados assuntos que necessito numa situação ou outra, tenha de recorrer a docs em inglês , não q tenha dramas em ler em inglês, mas realmente prefiro docs na lingua lusitana, e com uma explicação facil de entender, e convenhamos, q nem toda gente é um perl guru, e realmente este tipo de posts ajudam.
    E já sei q existe pra ai mt documentação traduzida, Poli, etc, mas se puder juntar o util ao agradavel melhor ainda, e mt sinceramente, como linux user e com pouca experiencia ainda, tenho ao longo destes 2 anos que venho a aprender linux, tentar introduzi-lo no meio empresarial, e posso dizer com algum sucesso, é pena que quando tenho algumas duvidas tenho sempre algum receio de as vir colocar aqui no gil, pois tenho muitas vezes a sensação que isto é so experts, e pequenas duvidas e posts deste genero não são mt bem vindos.
    Best Regards
    Bom trabalho (Pontos:1)
    por cyberoni em 18-12-00 15:21 GMT (#13)
    (Utilizador Info)
    Eu sou um velho utilizador de C e gostei muito do tutorial de Perl. Para quem vem do C até que o Perl se torna simpático. No meu ponto de vista as partes das expressões regulares, dos operadores especiais e variáveis especiais pareceu-me um pouco mais obscura. Talvez seja meu handicap, mas aqui fica a sugestão de mais exemplos e detalhe nesta área. De todos os modos, parece-me um excelente quick start à área em questão.

     

     

    [ Topo | Sugerir artigo | Artigos anteriores | Sondagens passadas | FAQ | Editores | Preferências | Contacto ]