Esta discussão foi arquivada. Não se pode acrescentar nenhum comentário. | | | 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 |
| | | | | 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 |
| | | | 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 |
| | | | >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. |
| | | | 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 |
| | | | Deixa-me adivinhar, tipicamente executas a forma compilada dos teus scripts ? Como é que fazes ? Não vale responder mod_perl. |
| | | | 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 |
| | | | 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. |
| | | | 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.
|
| | | | 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 |
| | | | 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, 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 |
| | | | 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. |
| |
|