quinta-feira, 25 de junho de 2009

História Pessoal - parte 1, CWI

Publicação original: http://python-history.blogspot.com/2009/01/personal-history-part-1-cwi.html
Autor original: Guido van Rossum

O desenvolvimento inicial de Python começou em instituto de pesquisa em Amsterdam chamado CWI, uma sigla holandesa para uma frase que se traduz em português como Centro para Matemática e Ciência da Computação. CWI era um local interessante; financiado pelo Departamento de Educação do governo holandês e outros fundos de pesquisa, conduzia pesquisa acadêmica em ciência da computação e matemática. Em qualquer época havia vários estudantes de doutorado andando pelo local e veteranos na profissão ainda devem lembrar do nome original, o Centro de Matemática. Sob esse nome, provavelmente o centro ganhou fama pela invenção de Algol 68.

Comecei a trabalhar no CWI no final de 1982, recém saído da universidade, como um programador do grupo ABC liderado por Lambert Meertens e Steven Pemberton. Depois de 4 ou 5 anos, o projeto ABC foi encerrado devido à óbvia falta de sucesso e eu fui para o grupo Amoeba liderado por Sape Mullender. Amoeba era um sistema distribuído baseado em microkernel desenvolvido conjuntamente pelo CWI e Vrije Universiteit de Amsterdam, sob liderança de Andrew Tanenbaum. Em 1991, Sape deixou o CWI para lecionar na Universidade de Twente e eu terminei no recentemente formado grupo de multimídia do CWI liderado por Dick Bulterman.

Python é um produto direto da minha experiência no CWI. Como explicarei depois, ABC me deu a inspiração crucial para Python, Amoeba a motivação imediata e o grupo de multimídia fomentou seu crescimento. Entretanto, pelo que eu sei, nenhum fundo no CWI foi oficialmente reservado para seu desenvolvimento. Em vez disso, Python meramente se desenvolveu como uma ferramenta importante tanto para o grupo Amoeba quanto para o grupo multimídia.

Minha motivação para a criação de Python foi a percepção da necessidade de uma linguagem de alto nível no projeto Amoeba. Percebi que o desenvolvimento de utilitários para administração de sistema em C estava tomando muito tempo. E fazê-los no shell Bourne não funcionaria por diversas razões. O mais importante foi que, sendo um sistema distribuído de microkernel, as operações primitivas do Amoeba eram bem diferentes (e refinadas) que as operações primitivas disponíveis no shell Bourne. Portanto, havia necessidade de uma linguagem que "preencheria o vazio entre C e o shell". Por um tempo longo, esse foi o principal lema de Python.

Nesse ponto, você poderia perguntar "por que não adaptar uma linguagem existente?" No meu ponto de vista, não havia linguagens adequadas à época. Eu era familiar com Perl 3, mas essa estava ainda mais ligada ao Unix que o shell Bourne. Eu também não gostava da sintaxe de Perl -- meu gosto por sintaxes de linguagens de programação foram fortemente influenciadas por linguagens como Algol 60, Pascal, Algol 68 (todas eu havia aprendido anteriormente), e finalmente, ABC, na qual eu passei quatro anos da minha vida. Portanto, decidi projetar uma linguagem por mim mesmo a qual poderia pegar tudo que gostei de ABC enquanto, ao mesmo tempo, consertar todos seus problemas (como os percebia).

O primeiro problema que decidi consertar foi o nome! Da forma que ocorreu, o time ABC teve alguns problemas ao escolher um nome para a linguagem. O nome original, B, teve que ser abandonado por causa de ma confusão com outra linguagem chamada B, que era mais velha e melhor conhecida. De qualquer modo, a ideia era usar B como título de projeto apenas (a piada era que B era o nome da variável contendo o nome da linguagem -- daí o itálico). A equipe lançou uma competição pública para escolher o novo nome, mas nenhuma das submissões levou e, no fim, a segunda opção interna prevaleceu. O nome era para transmitir a ideia de uma linguagem que faria programação "tão simples quanto ABC", mas nunca me convenceu a tanto.

Portando, em vez de analisar demasiadamente o problema de nomenclatura, decidi subanalisá-lo. Escolhi a primeira coisa que me veio à cabeça, que foi Monty Python’s Flying Circus, um dos meus grupos de comédia favoritos. A referência era convenientemente irreverente para o que era essencialmente um "projeto skunkworks" (N.T.: diz-se de um projeto desenvolvido por um grupo fracamente estruturado e com alto grau de autonomia, sem equivalente em português). A palavra "Python" também era cativante, um pouco irritante e, ao mesmo tempo, encaixava na tradição de nomear linguagens em homenagens a pessoas famosas, como Pascal, Ada e Eiffel. O grupo Monty Python pode não ser famoso pelos avanços em ciência ou tecnologia, mas certamente é um favorito dos geeks. Também se encaixou na tradição do grupo Amoeba no CWI de batizar programas com nomes de programas de TV.

Por muitos anos eu resisti à tentação de associas a linguagem com cobras. Finalmente desisti quando O'Reilly queria colocar uma cobra na capa de seu primeiro livro de Python "Programming Python". Era tradição da O'Reilly usar imagens de animais e, se deveria ser um animal, que fosse uma cobra.

Com o problema do nome resolvido, eu comecei a trabalhar em Python no fim de dezembo de 1989 e tinha uma versão operacional nos primeiros meses de 1990. Eu não anotava, mas lembro vividademente que o primeiro trecho de código que escrevi para implementação de Python era um simples gerador de parser LL(1) que chamei de "pgen". Esse gerador de parser ainda é parte do código-fonte de Python e provavelmente o menos modificado em todo o código. Essa versão inicial foi usada por uma pequena quantidade de pessoas no CWI, mas não exclusivamente pelo grupo Amoeba em 1990. Desenvolvedores chave além de mim eram meus colegas de escritório, os programadores Sjoerd Mullender (irmão mais novo de Sape) e Jack Jansen (que permaneceu um dos desenvolvedores líderes da versão para Macintosh vários anos depois que eu saí do CWI).

Em 20 de fevereiro de 1991, eu liberei Python para o mundo pela primeira no grupo de notícias (N.T.: newsgroup, no original) alt.sources (em 21 partes codificadas com uuencode que deveriam ser reuniadas e decodificadas com uudecode para compor um arquivo tar comprimido). Essa versão foi numerada como 0.9.0 e liberada sob uma licença que era quase uma cópia exata da licença MIT usada pelo projeto X11 na época, substituindo "Stichting Mathematisch Centrum", organização pai do CWI, como entidade legal responsável. Então, como quase tudo que eu escrevi, Python era de código aberto (N.T.: open source, no original) antes que o termo fosse inventado por Eric Raymond e Bruce Perens ao final de 1997.

Imediatamente houve muito retorno e com esse encorajamento eu mantive um fluxo constante de lançamentos pelos próximos anos. Comecei a usar CVS para rastrear mudanças e facilitar compartilhamento de responsabilidades sobre a codificação com Sjoerd e Jack (coincidentemente, CVS foi originalmente desenvolvido como um conjunto de scripts shell por Dick Grune, que era um membro anterior do grupo ABC). Eu escrevi um FAQ, que era regularmento publicado em algum grupo de notícias, como era costume para FAQs naqueles dias antes da web, iniciei uma lista de discussão por e-mail e em março de 1993 o grupo comp.lang.python foi criado com meu encorajamento, mas sem meu envolvimento direto. O grupo e a lista de e-mails foram unificados através de um gateway bidirecional que ainda existe, embora atualmente implementado como uma funcionalidade do mailman - o gerenciador de listas dominante de código aberto, escrito em Python.

No verão de 1994, o grupo estava agitado com uma discussão entitulada "Se Guido fosse atingido por um ônibus?" sobre a dependência da crescente comunidade de Python em relação às minhas contribuições pessoais. Isso culminou em um convite por Michael McLay para que eu passasse dois meses como pesquisador convidado no NIST, o Instituto Nacional de Padrões e Tecnologias dos EUA, anteriormente o Escritório Nacional de Padrões (N.T.: National Bureau of Standards, no original), em Gaithersburg, Maryland. Michael possuía uma certa quantidade de "clientes" no NIST que estavam interessado em usar Python para vários projetos relacionados a padrões e os fundos para minha estadia foram motivados pela necessidade de ajudá-los a melhorar as habilidades com Python, bem como melhorar Python para suas necessidades.

O primeiro workshop de Python ocorreu enquanto eu estava lá em novembro de 1994, com o programador do NIST Ken Manheimer provendo assistência e encorajamento importantes. De aproximadamente 20 participantes, por volta da metade ainda são participantes ativos na comunidade Python e uns poucos se tornaram grandes líderes de projetos de código aberto (Jim Fulton do Zope e Barry Warsaw do GNU mailman). Com o suport do NIST eu também dei uma palestra para aproximadamente 400 pessoas na conferência Usenix Little Languages em Santa Fe, organizada por Tom Christiansen, um adovgado de Perl de mente aberta que me apresentou ao criador de Perl, Larry Wall, e ao autor de Tcl/Tk, John Ousterhout.

Próxima parte: como obtive um emprego nos EUA...

N.T.: peço desculpas à comunidade pela demora na tradução.

3 comentários:

  1. Cara, está demais. Estou adorando a iniciativa, em especial esta postagem me foi bastante útil. Quanto a erros, eu percebi um e mesmo assim de digitação que foi a palavra públca ao invés de pública.

    ResponderExcluir
  2. @Entendendo o Mundo: Obrigado. Erro corrigido. Abraços

    ResponderExcluir
  3. NoVCasino Casino - NOVCASINO.COM
    NoVCasino.com offers a novcasino no deposit bonus of 토토사이트 100% up to €150. febcasino No Deposit Bonus is given to new players only. No 출장안마 deposit bonuses expire dental implants

    ResponderExcluir