thegoodfellas/blogset-br huggingface dataset:
Abaixo, a entrevista que fiz com Larry Wall, criador da linguagem Perl em sua ultima passagem no Brasil, durante uma conferencia de Perl. A traducao e de Rina Noronha.Lancada em 1987, Perl e uma linguagem que tem como objetivo ser flexivel e capaz de fazer codigos funcionais. Seu criador, Larry Wall, fez praticamente todo o processamento de texto em sistemas baseados em Unix, utilizando diversas ferramentas, como AWK, sed, C e linguagens shell script. A ideia era juntar as principais vantagens de todas essas linguagens: expressoes regulares do sed; a identificacao de padroes de AWK; a profundidade de C; alem da sintaxe baseada tanto em C quanto em Shell Script.Fonte: http://bit.ly/11jS26r Nessa entrevista, Larry Wall fala sobre Perl, seus objetivos iniciais e sobre Perl 6, a nova versao da linguagem.Qual e a sua formacao, o que voce estudou na faculdade?Eu estudei muitas coisas, diversas, e quase nao consegui concluir nada porque nao tinha creditos suficientes para nenhum curso. Mas, no final das contas, consegui fazer com que a faculdade deixasse eu me formar. Entre as coisas que estudei estao programacao e linguistica, dois assuntos que foram primordiais para que eu chegasse ao Perl. Mas tambem fui bem alem disso, passando por quimica e musica, por exemplo.Por que voce decidiu estudar computacao? O que te chamava a atencao?Bom... voce pode conseguir que os computadores facam coisas que as pessoas acham interessantes!A verdade e que eu provavelmente estou em algum lugar dentro do espectro do autismo. Sendo assim, eu tenho uma enorme dificuldade em lidar com pessoas. Eu consigo fazer isso, mas e um grande estresse para mim. Entao, poder se relacionar atraves de algo que eu faco e que os outros vejam o que eu fiz, mas sem necessariamente ter que discutir com alguem sobre o tempo ou outros assuntos assim, e uma forma de me tornar social.Meu pai e um pastor de igreja crista e eu cresci nesse ambiente. Como o filho do pastor, eu nao podia ser timido, mesmo sendo assim naturalmente. Entao, ao longo dos anos, eu aprendi a me relacionar com as pessoas, mas foi algo que eu tive que aprender, que desenvolver, e por isso as vezes nao e facil. Para alguem como eu, isso nao e facil. Para mim, e mais gratificante fazer alguma coisa que as pessoas vao achar util. Por isso, eu tenho a tendencia de medir o meu proprio trabalho nao pelo que eu vou conseguir com ele, mas pelo que eu posso oferecer a partir dele. E eu entendo que isso e o que define uma pessoa, nao quanto dinheiro ela tem.Foi por isso que o Perl entrou na sua vida?Foi quase um acidente. Eu apenas queria oferecer uma coisa para os outros. E isso era bem dificil porque nao havia uma cultura desse tipo. Entao eu pensei em uma forma de oferecer coisas aos outros livremente. E algumas dessas coisas, como o programa patch, acabaram por ajudar a iniciar o movimento de software livre, porque muitas pessoas passaram a trocar patches.Ha anos, no tempo em que as redes tinham uma largura de
banda muito pequena, as pessoas nao podiam simplesmente enviar uma nova copia dos recursos. Mas se isso fosse um arquivo de patch, as pessoas poderiam manter seus softwares sincronizados.Eu realmente nao consegui fazer com que as pessoas aplicassem os patches na primeira versao que eu enviei. Eu enviava os patches e as pessoas nao aplicavam um ou outro, porque nao era necessario na maquina deles. Mas ai um terceiro patch viria e baguncaria tudo, porque ninguem tinha aplicado o outro anterior. Entao eu percebi que precisava achar uma forma para encorajar as pessoas a manterem seus softwares sincronizados, assim, quando um outro patch fosse enviado eles aplicariam a mesma versao. Entao, uma das coisas que foi internalizada pelo programa de patch desde o inicio foi um pre-requisito que determinava que uma certa versao do patch deveria estar instalada.A segunda versao foi muito mais facil de manter porque que as pessoas ja estavam usando, ao menos ate quando chegamos ao ponto delas comecarem a colocar repositorios na rede e a fazer isso de forma bastante automatica. E o programa Patch ajudou a fazer o bootstrap, mais ou menos da mesma forma que o Perl ajudou a fazer o bootstrap na web do inicio; hoje, mesmo que muitos sites nao usem mais a linguagem, muitos foram prototipados em Perl.Acho que sou uma dessas pessoas que escrevem prototipos para depois joga-los fora!Por que voce decidiu escrever o Perl?Para matar uma vontade! Na verdade, eu estava com um problema que precisava de processamento de texto para gerar relatorios.Eu estava em um projeto para a NSA (National Security Agency, a agencia de seguranca do governo americano), a empresa tinha um contrato la e eu estava desenvolvendo uma rede segura por toda a costa entre Santa Monica, na California, e a Pensilvania. Nos trocavamos informacoes por meio de arquivos de texto sobre o projeto, mas eles queriam relatorios sobre os arquivos de textos e o sistema Unix com o qual trabalhavamos tinha uma versao muito antiga do awk.A gente estava fazendo um trabalho de processamento de textos e eu nao conseguia fazer o que queria nos relatorios. Entao eu pensei: eu ja havia escrito compiladores, eu sabia o que queria, entao prototipei uma linguagem, algo como um Perl zero, e isso foi um laboratorio secreto porque a gente trabalhava numa especie de cofre, e alguns meses depois eu tive que discretamente tirar essa linguagem dali para chegar ao que seria o Perl 1, a versao que seria distribuida para o mundo. Eu queria apenas conseguir repassar alguns arquivos de texto e extrair algumas informacoes de algumas expressoes regulares em um formato de texto meio aleatorio e colocar no relatorio e buscar por aquilo online.Como isso se transformou no Perl que temos hoje?Quando eu comecei nao existia ainda a nocao de um administrador de sistemas. Havia o que a IBM chamava de Programador Chefe o cara numero um, que sabia como tudo funcionava. E eu meio que ja havia estado nessa posicao em meu trabalho na Seattle Pacific University e tambem quando trabalhei em uma empresa de desenvolvimento de
sistemas. Eu fui contratado para essa posicao, mas o ideal desse cargo e meio diferente do que e um administrador de sistemas, quando voce tem outras pessoas fazendo a programacao e gerenciar o sistema de um ponto de vista operacional torna-se um trabalho de tempo integral. Nessa epoca meu cunhado me falou ah, voce nao quer se tornar um administrador de sistemas, isso e um trabalho morto.Mas enquanto eu estava fazendo isso, eu continuei desenvolvendo o Perl, entao nao era apenas uma linguagem para fazer analise de texto, eu decidi que queria tambem fazer uma parte de administracao de sistema, como renomear arquivos e todas as funcoes de um admin. Entao eu tive isso bastante no Perl tambem. E nas varias interfaces do sistema.E ai as pessoas comecaram a adicionar interfaces aos bancos de dados, atraves de versoes especiais do Perl. Entao havia o OraPerl, para o Oracle, o SybPerl para Sybase. E foi entao que eu percebi que havia um problema: o que aconteceria se voce quisesse usar Oracle e Sybase no mesmo programa? Seria preciso ter extensoes que ajudassem a coloca-los juntos no mesmo programa.Entao, acho que o Perl mudou um pouco com essa ideia de ter varias caras, o que o levou a ter extensoes que conversassem com varios backends de bancos de dados. A ideia de fazer uma interface com objetos de forma que fosse possivel falar mais sensivelmente com pessoas.Foi dessa nocao que o Perl 5 nasceu, com uma boa dose de extensibilidade. Como resultado, eu descobri que muitas outras pessoas queriam fazer extensoes, incluindo eu, e foi entao que chegamos a questao de montarmos uma rede com milhoes de partes do Perl para serem distribuidas (CPAN).E isso tudo foi feito no Perl 5. Voce poderia adicionar texto como em um programa em C voce ate podia incluir texto em Perl 4, mas isso nao funcionava direito para modelos de interface, e isso a versao 5 tem. Nao havia uma forma de fazer uma interface para niveis mais baixos como codigos em C e C++, entao isso comecou com Perl 5.Fonte: http://bit.ly/1e6kJWYEnquanto voce criava o Perl, que linguagens voces tinha em mente?A maioria delas. Basicamente as linguagens com as quais eu era familiarizado ou que eu pensava que fosse foram as que me influenciaram. Algumas pessoas pensam que havia influencia de linguagens como SmallTalk, mas nao e verdade. Ao menos ate o Perl 6 agora, sim, teremos alguma influencia do SmallTalk.SmallTalk foi a primeira linguagem orientada a objetos, nao e?Bom, voce pode dizer que sim... Mas existiam outras antes. SmallTalk realmente levou isso para um outro extremo, do ponto de vista que um objeto e algo para o qual voce envia uma mensagem, nao apenas uma funcao de call engracadinha. Entao, eles tinham uma visao mais global.Mas nao havia uma influencia direta da SmallTalk, ao menos nao ate o Perl 6.O Perl influenciou varias linguagens mais novas que tem sido muito usadas hoje, criando um paradigma para linguagens interpretadas. Como voce enxerga isso?Com certeza Ruby e Python tiveram uma influencia inicial do Perl. Na verdade isso nao
foi planejado no Python.O Perl meio que estabeleceu, ao menos no mundo do Unix, esse genero de linguagens de script. Havia Shell e voce podia escrever em Shell Script mas na verdade isso sempre foi pensado como uma forma de unir os programas em C. E porque elas eram construidas dessa forma? Era bem dificil de fazer um programa decente com elas. Era dificil fazer com que as coisas se relacionassem. E como todo mundo tinha um cliente Unix diferente, era bem dificil escrever um Shell Script naquela epoca.E por que escolher uma linguagem de script?Porque e muito mais rapido em termos de tempo de programacao. Pode nao rodar tao rapidamente, mas para operacoes de chamada, funciona rapido o suficiente.Em alguns benchmarks uma linguagem de script poderia ate bater um programa em C mais bobo porque voce teria que trabalhar muito para otimiza-lo e o Perl ja tem isso, entao pode fazer um array associativo que provavelmente sera mais eficiente que uma tabela feita em C. Assim, em operacoes comuns, e possivel otimizar o codigo em C para o codigo em Perl.O problema primordial que queriamos resolver era a perda de tempo dos programadores em ter que manter anotacoes de ponteiros, strings, arrays, gerenciamento de memoria e tamanhos de buffer; as ferramentas do Unix, na epoca, tinham limites muito arbitrarios.Uma das maiores motivacoes para comecar o Perl foi eu quero que as strings me digam o que elas sao. Nao ha limites arbitrarios ai. E nos levamos esse conceito para outras areas tambem. Para comecar, nos queriamos tipos de string que voce simplesmente nao precisasse se preocupar.Quais sao as maiores mudancas no Perl 6?Provavelmente a maior de todas e que fizemos o Perl ser poderoso o suficiente para se autocompilar. E eu espero que isso aconteca em qualquer VM. Ja temos compiladores de Perl 6 para Mono e .Net, estamos trabalhando no Java. E existem algumas ideias para usar isso no LLVM.Queremos que a linguagem seja poderosa o suficiente para isso e o seja de forma eficiente, para quebrar a si mesma, para que possa mudar a linguagem quando decidirmos muda-la, para ter novas versoes de Perl e para ser capaz de escrever em outras linguagens de dominio especifico que sejam melhores que o Perl.As gramaticas inseridas no Perl 6 sao poderosas e muito expansiveis. Provavelmente se voce tiver que colocar uma unica coisa no topo da lista, seria isso. Mas ha muitas outras coisas que nos percebemos no Perl 5, e tambem varias outras coisas que adicionamos, como orientacao a objetos, de forma que demos os principios***, mas nao fornecemos nenhum tipo de padrao, de boas praticas. Entao as pessoas fizeram as suas proprias regras. Foi um otimo laboratorio de testes, mas entao existiam 30, 40 formas de escrever objetos e eles nao se comunicavam, nao trabalhavam um com o outro.Gostamos da flexibilidade de ter esses laboratorios para os principios, mas no Perl 6, quando vemos que ha muitas formas de se fazer algo no Perl 5, decidimos que vamos escolher uma dessas formas como padrao. Continuaremos com os principios, mas
eles ficarao por baixo de uma camada de padroes, entao teremos uma forma padrao de declarar classes, de incorporar classes abstratas, que chamamos roles genericos, que sao formas padroes de fazer varias cosias, que podem ser modificadas se voce realmente quiser ou precisar, mas esperamos que os padroes ajudem as pessoas a escreverem codigos melhores quase que por acidente.Nao vai ser preciso entender porque aquele e o padrao, mas quando as pessoas tentam fazer suas coisas, na metade do tempo eles decidem pela forma errada... entao nao e que queremos chegar ao nivel do Python, dizendo que ha apenas uma forma de fazer aquilo, mas vamos tentar facilitar a forma correta, a melhor forma, para fazer aquilo, meio que por acidente.Bom, eu meio que estou levando o processo do Python para o Perl 6. O modelo e realmente pegar emprestado o novo modelo de objetos de varias fontes. E na verdade, trata-se de pegar diretamente da literatura de orientacao a objetos, mais do que de alguma linguagem especifica.Voce acha que seu background em linguistica ajuda nisso?Acho que sim, mas muito alem disso e o sentimento de que uma linguagem de programacao deve refletir a forma como falamos sobre isso, entao se voce quer falar que um objeto esta relacionado (has a relationship) a um determinado atributo, voce deve realmente usar o termo have para declarar isso no Perl 6. Se ele e um relacionamento (is a relationship) voce usa o is.E uma questao de sensibilidade linguistica, entao, ao inves de chamar coisas por outros nomes, usamos a construcao que temos no Ingles. E algo mais natural do que usar palavras funcionais, como acontece em outras linguagens.Mas isso muda muito a sintaxe da linguagem? O Perl 6 vai ser muito diferente? E como fica a retrocompatibilidade?Ha um grande numero de diferencas. No geral, a sintaxe do Perl 6 e um super set do Perl 5. Se voce escreve em Perl 5 e isso nao funciona normalmente, vai estar bem perto de funcionar, porque voce pode escrever em Perl 6 dentro do sub set que e muito parecido com Perl 5.Nao e exatamente a mesma coisa, mas o que fizemos no Perl 6 foi intencionalmente quebrar a retrocompatibilidade. Queremos quebrar tudo o que for possivel, essa foi a ideia inicial. Entao, vamos precisar de alguma estrategia de migracao, uma combinacao de emulacao, interpretacao cooperativa ou traducao, por exemplo. Existem varias formas de fazer com que os codigos das versoes 5 e 6 da linguagem interajam. Teremos ai um caminho.Mas quando voce comecar a ver as novidades que o Perl 5 nao suporta diretamente, entao vai comecar a usar a sintaxe, mas nos tentamos adicionar as novidades de uma maneira bem sistematica, de forma que todas as declaracoes sejam similares.O Perl 6 tem muito mais sintaxe a ser declarada que o Perl 5, mas funciona de uma forma bem diferente. Na versao 5, voce pode declarar as classes, mas tem que usar a palavra package. Voce pode dizer que classes sao pacotes, entao usa a palavra package. Isso tambem acontece no Perl 6, uma classe
e um pacote, mas voce usa class. Entao, em vez de ir para a palavra-chave do principio, tendemos a distinguir a palavra-chave e entao falar que uma classe e um tipo. Isso torna as coisas mais claras.Ao mesmo tempo, muitas coisas que voce faz ao executar codigo no Perl 5 parecem declaracoes no 6, mas na verdade nao esta rodando um codigo por baixo, entao quando voce roda uma declaracao de classe, esta na verdade fazendo uma chamada do protocolo do meta objeto enquanto compila, e pode ate fazer um hook se quiser.Portanto, voce ainda tem toda a flexibilidade, mas nos a escondemos sob um nivel de declaracao. Assim, ha um mapeamento mais natural entre o que as pessoas pensam e o que a sintaxe se parece. Nesse nivel, e uma linguagem mais complicada, sintaticamente, mas em termos de conceito nao e, porque exitem os mesmos conceitos.Entao, o estado da arte da programacao em Perl 5 tem um conjunto de conceitos que se encontram muito bem no Perl 6, mas na nova versao eles estao mais bem elaborados, como em aqui temos um padrao que voce deve usar, a nao ser que voce realmente saiba o que esta fazendo.Qual a importancia de Perl hoje, e como voce espera que a linguagem esteja no futuro?Bom, e claro que eu quero que Perl domine o mundo! Eu adoraria ver Perl 6 se tornar poderoso o suficiente de forma que o Google algum dia dissesse ah, nos nao precisamos mais de Python ou algo assim. Mas e claro que isso e um objetivo a longo prazo. E provavelmente nunca chegaremos la, mas, ainda assim, e bom ter objetivos impossiveis contanto voce entenda que eles sao impossiveis. Eu quero continuar trabalhando neles de qualquer forma. Mesmo que voce saiba que o que esta fazendo ira, de alguma forma, falhar, voce deve fazer tudo o que puder para isso. O mundo esta cheio de coisas uteis que tiveram grandes falhas e eu acho que Perl 6 vai ser muito util! Mas estamos realmente pensando no longo prazo. Desde que comecamos, pensamos em fazer parte do progresso no inicio. Mas o Perl 5 estava reconhecidamente estavel e tinha muito apoio da comunidade, o que nos permitiu gastar um bom tempo no redesenho. Como e o relacionamento da comunidade de desenvolvedores brasileiros com Perl?Os brasileiros sao envolvidos com Perl ha bastante tempo. Temos muita gente contribuindo com Perl 5 e 6 no Brasil. E os brasileiros tem a grande vantagem do fuso horario: voces estao entre EUA e Europa, o que facilita muito o trabalho!Texto de minha autoria, publicado no portal iMasters: http://imasters.com.br/linguagens/perl/entrevista-larry-wall/
Neste ultimo Sabado, participei mais uma vez do Flisol Sao Paulo e, como sempre, foi muito interessante. Desta vez o evento aconteceu nas Faculdades Sumare. Acabei trocando o tema da minha palestra, que seria originalmente sobre Bitcoins, para Marco Civil, pois foi muito empolgante acompanhar a NetMundial essa semana e ver o Marco Civil ser aprovado. Entao, pedi permissao para a organizacao do evento para mudar a minha palestra.Para quem acompanhou o Marco Civil desde o inicio, deu aquela sensacao de que o pais esta fazendo historia de que de, alguma forma, participei dela. Entao, nao tinha como perder a chance de colocar esse tema tao importante em pauta e fazer um balanco do tema. Me assustei um pouco ao ver que muita gente nao conhecia o assunto, mas no final, creio que o balanco tenha sido bastante positivo.Abaixo, disponibilizo os slides da palestra. Sugestoes e comentarios, sao sempre bem vindos.Se voce ainda nao participou do Flisol, nao deixe de participar no ano que vem; o evento acontece sempre em Abril. No ultimo dia 14 eu apresentei uma palestra sobre Bitcoin no FISL 15 (Forum Internacional de Software Livre de Porto Alegre). Chegar la foi um evento epico, gracas ao auxilio da Avianca, que fez de tudo para que eu nao chegasse. Mas eu consegui e cheguei a tempo de dar a minha palestra no horario marcado.Foi uma experiencia bem legal, pois eu nunca havia falado sobre Bitcoin anteriormente e o interesse demonstrado pelo publico foi bastante grande, com sala cheia e muitas perguntas ao final da apresentacao. Houve ate um destaque no portal do FISL, o que me deixou muito feliz.Abaixo, e possivel conferir o video com a gravacao da palestra dada no FISL. Mas se voce quiser conferir pessoalmente, eu tambem apresentarei o mesmo tema (e ja estou preparando algumas mudancas) no Sesc Interlagos, dia 24 de maio. Quem quiser, pode ir la conferir. Dropbox, o pioneiroQuase todo mundo ja deve ter ouvido falar do Dropbox, o programa que sincroniza facilmente os seus arquivos entre multiplos dispositivos e com a nuvem. Se voce nao ouviu, deveria, pois ele facilita muito o trabalho em grupo e o compartilhamento de arquivos com conhecidos.Da proxima vez que precisar enviar aquele video de 78Mb para o seu amigo, pense duas vezes antes de anexar o arquivo por email. Enviar pelo Facebook pode ser uma alternativa melhor, mas tambem esta longe do ideal.Enfim, programas como o Dropbox sao utilizados por milhoes de pessoas diariamente e fica dificil ate mesmo pensar em como vivemos tanto tempo sem isso: facilidade para acessar seus arquivos via web ou de ter a ultima versao do documento magicamente disponivel em todos os seus dispositivos, sejam eles laptops, desktops, smartphones ou tablets.Contudo, parece que todo mundo quer ter um programa deste tipo: Google Drive, Microsoft OneDrive, SugarSync, Box.com e alternativas livres como o ownCloud e o SparkleShare surgiram para fazer frente a lideranca do Dropbox. Ate mesmo a brasileira Locaweb possui um servico semelhante, o GoDrive.UbuntuOne, meu favorito (ate agora)Contudo, um dos servicos que eu mais gostava sera extinto em breve.
Trata-se do UbuntuOne. Os motivos para isso eram simples:assim como o Dropbox, ele tem clientes para multiplas plataformas incluindo Windows, Android, iOS, Mac OS e obviamente, GNU/Linux.ele tem a vantagem de fazer streaming das suas musicas salvas no servico.as musicas compradas na loja do Ubuntu One Music Store eram salvas no seu Ubuntu One, ficando assim automaticamente disponiveis sem que isso fosse descontado do seu espaco de armazenamentoo cliente tem o codigo fonte aberto.Mas alem de tudo isso, o que eu mais gostava nele era a possibilidade de escolher quais seriam as pastas do sistema seriam sincronizadas, sem que todas elas estivessem que estar dentro de uma pasta especifica, como acontece com o Dropbox.Contudo, foi anunciado recentemente que o servico UbuntuOne sera descontinuado. As justificativas sao de que o mercado se tornou muito competitivo para esse tipo de produto e que para continuar no jogo, a Canonical teria que fazer investimentos pesados na area, coisa que eles parecem nao estar dispostos a fazer neste momento.A noticia boa disso tudo e que eles anunciaram que vao liberar o codigo fonte do programa. Uma vez que o cliente ja e aberto, isso so pode se tratar do server-side, o que seria bastante interessante.Copy, a alternativa peso-pesadoPor coincidencia, soube recentemente de um servico que tem tudo que o Dropbox tem, com uma vantagem muito importante: mais espaco gratuito. Trata-se do Copy da fabricante de discos rigidos Barracuda. Com ele, alem do acesso web e de aplicativos para as diversas plataformas, voce ja comeca com 15Gb logo de cara e recebe mais 5Gb por recomendacao. E tres vezes mais do que oferece o Dropbox e no caso de indicacoes, 10 vezes mais.Nao e a toa que eu passei a usa-lo e estou bastante contente. Vendo essas e outras caracteristicas, nao e a toa que a Canonical decidiu parar de competir nesse mercado.Se voce ficou curioso e resolver dar uma chance ao programa, utilize esse link https://copy.com?r=lLJ26T e ganhe os 5Gb extras apos instalar o programa, de forma a comecar ja com 20Gb. Depois, nao se esqueca de deixar um comentario aqui e dizer o que achou da experiencia.Editado 09/04/2014: algo que eu havia deixado de fora e que considero importante, e dizer que o Copy tambem roda no Raspberry Pi, algo que eu sempre quis que o Dropbox fizesse.