Por que esse documento?
Como editor do Jargon File,
freqüentemente recebo pedidos por email de entusiasmados iniciantes,
perguntando (de fato) "como eu posso aprender a ser um grande hacker?".
Estranhamente, parece que não existem FAQs ou documentos na Web que
se refiram a essa importante questão, então aqui está
o meu.
Caso você esteja lendo um trecho deste documento off-line, a versão
atual fica em
http://www.ccil.org/~esr/faqs/hacker-howto.html.
O que é um hacker?
O Jargon File contém um monte de
definições do termo "hacker", a maioria deles tendo a ver com aptidão
técnica e um prazer em resolver problemas e superar limites. Se você quer
saber como se tornar um hacker, entretanto, apenas duas são realmente
relevantes.
Existe uma comunidade, uma cultura compartilhada, de programadores
experts e gurus de rede cuja história remonta a decadas atrás,
desde os primeiros minicomputadores de tempo compartilhado e os
primeiros experimentos na ARPAnet. Os membros dessa cultura
deram origem ao termo "hacker". Hackers construíram a Internet.
Hackers fizeram do sistema operacional Unix o que ele é hoje.
Hackers mantém a Usenet. Hackers fazem a World Wide Web funcionar.
Se você é parte desta cultura, se você contribuiu a ela e
outras pessoas o chamam de hacker, você é um hacker.
A mentalidade hacker não é confinada a esta cultura do hacker-de-software.
Há pessoas que aplicam a atitude hacker em outras coisas, como eletrônica
ou música -- na verdade, você pode encontrá-la nos níveis mais
altos de qualquer ciência ou arte. Hackers de software reconhecem
esses espíritos aparentados de outros lugares e podem chamá-los
de "hackers" também -- e alguns
alegam que a natureza hacker é realmente independente da mídia particular
em que o hacker trabalha. Mas no restante deste documento, nos
concentraremos nas habilidades e dos hackers de software, e nas
tradições da cultura compartilhada que deu origem ao termo `hacker'.
Existe outro grupo de pessoas que se dizem hackers, mas não são.
São pessoas (adolescentes do sexo masculino, na maioria)
que se divertem invadindo computadores e fraudando
o sistema telefônico. Hackers de verdade chamam essas pessoas de
"crackers", e não tem nada a ver com eles. Hackers de
verdade consideram os crackers preguiçosos, irresponsáveis, e não muito
espertos, e alegam que ser capaz de quebrar sistemas de segurança torna
alguém hacker tanto quanto fazer ligação direta em carros torna alguém um
engenheiro automobilístico. Infelizmente, muitos jornalistas e escritores
foram levados a usar, errôneamente, a palavra "hacker" para descrever
crackers; isso é muito irritante para os hackers de verdade.
A diferença básica é esta: hackers constróem coisas, crackes as destróem.
Se você quer ser um hacker, continue lendo. Se você quer ser um cracker,
vá ler o newsgroup alt.2600 e se prepare para
se dar mal depois de descobrir que você não é tão esperto
quanto pensa. E isso é tudo que eu digo sobre crackers.
A Atitude Hacker
Hackers resolvem problemas e constróem coisas, e acreditam na liberdade e
na ajuda mútua voluntária. Para ser aceito como um hacker, você tem que se
comportar de acordo com essa atitude. E para se comportar de acordo com essa
atitude, você tem que realmente acreditar nessa atitude.
Mas se você acha que cultivar a atitude hacker é somente um meio para
ganhar aceitação na cultura, está enganado. Tornar-se o tipo de pessoa que
acredita nessas coisas é importante para você -- para ajudá-lo a
aprender e manter-se motivado. Assim como em todas as artes criativas, o modo
mais efetivo para se tornar um mestre é imitar a mentalidade dos
mestres -- não só intelectualmente como emocionalmente também.
Então, se você quer ser um hacker, repita as seguinte coisas até que
você acredite nelas:
1. O mundo está repleto de problemas fascinantes esperando para serem resolvidos.
Ser hacker é muito divertido, mas é um tipo de diversão que necessita de muito
esforço. Para haver esforço é necessário motivação. Atletas de sucesso retiram
sua motivação de uma espécie de prazer físico em trabalhar seus corpos, em
tentar ultrapassar seus próprios limites físicos. Analogamente, para
ser um hacker você precisa ter uma emoção básica em resolver problemas,
afiar suas habilidades e exercitar sua inteligência.
Se você não é o tipo de pessoa que se sente assim naturalmente, você precisará
se tornar uma para ser um hacker. Senão, você verá sua energia para "hackear"
sendo esvaída por distrações como sexo, dinheiro e aprovação social.
(Você também tem que desenvolver uma espécie de fé na sua própria
capacidade de aprendizado -- crer que, mesmo que você não saiba tudo
o que precisa para resolver um problema, se souber uma parte
e aprender a partir disso, conseguirá aprender o suficiente para resolver
a próxima parte -- e assim por diante, até que você termine.)
2. Não se deve resolver o mesmo problema duas vezes.
Mentes criativas são um recurso valioso e limitado. Não devem ser
desperdiçadas reinventando a roda quando há tantos problemas novos e
fascinantes por aí.
Para se comportar como um hacker, você tem que acreditar que o tempo de
pensamento dos outros hackers é precioso -- tanto que é quase um dever moral
compartilhar informação, resolver problemas e depois dar as soluções, para que
outros hackers possam resolver novos problemas ao invés de ter que se
preocupar com os antigos indefinidamente.
(Você não tem que acreditar que é obrigado a dar toda a sua produção
criativa, ainda que hackers que o fazem sejam os mais respeitados pelos outros
hackers. Não é inconsistente com os valores do hacker vender o suficiente
da sua produção para mantê-lo alimentado e pagar o aluguel e computadores.
Não é inconsistente usar suas habilidades de hacker para sustentar a
família ou mesmo ficar rico, contanto que você não esqueça que é um
hacker.)
3. Tédio e trabalho repetitivo são nocivos.
Hackers (e pessoas criativas em geral) não podem ficar entediadas ou ter que
fazer trabalho repetitivo, porque quando isso acontece significa que eles não
estão fazendo o que apenas eles podem fazer -- resolver novos problemas. Esse
desperdício prejudica a todos. Portanto, tédio e trabalho repetitivo não
são apenas desagradáveis, mas nocivos também.
Para se comportar como um hacker, você tem que acreditar nisso de modo a
automatizar as partes chatas tanto quanto possível, não apenas para você como
para as outras pessoas (principalmente outros hackers).
(Há uma exceção aparente a isso. Às vezes,
hackers fazem coisas que podem
parecer repetitivas ou tediosas para um observador, como um exercício de
"limpeza mental", ou para adquirir uma habilidade ou ter uma espécie
particular de experiência que não seria possível de outro modo.
Mas isso é por opção -- ninguém que consiga pensar deve ser forçado
ao tédio.
4. Liberdade é uma coisa boa.
Hacker são naturalmente anti-autoritários. Qualquer pessoa que lhe dê
ordens pode impedi-lo de resolver qualquer que seja o problema pelo qual você
está fascinado -- e, dado o modo em que a mente autoritária funciona,
geralmente arranjará alguma desculpa espantosamente idiota isso.
Então, a atitude autoritária deve ser combatida onde quer que você
a encontre, para que não sufoque a você e a outros hackers.
(Isso não é a mesma coisa que combater toda e qualquer autoridade. Crianças
precisam ser orientadas, e criminosos, detidos. Um hacker pode aceitar
alguns tipos de autoridade a fim de obter algo que ele quer mais que
o tempo que ele gasta seguindo ordens. Mas isso é uma barganha restrita
e consciente; não é o tipo de sujeição pessoal que os autoritários
querem.)
Pessoas autoritárias prosperam na censura e no segredo. E desconfiam de
cooperação voluntária e compartilhamento de informação -- só gostam de
"cooperação" que eles possam controlar. Então, para se comportar como um
hacker, você tem que desenvolver uma hostilidade instintiva à censura, ao
segredo, e ao uso da força ou mentira para compelir adultos
responsáveis. E você tem que estar disposto a agir de acordo com
esta crença.
5. Atitude não substitui competência.
Para ser um hacker, você tem que desenvolver algumas dessas atitudes. Mas
apenas ter uma atitude não fará de você um hacker, assim como não o fará
um atleta campeão ou uma estrela de rock. Para se tornar um hacker é
necessário inteligência, prática, dedicação, e trabalho duro.
Portanto, você tem que aprender a desconfiar de atitude e respeitar todo tipo
de competência. Hackers não deixam posers gastar seu tempo, mas eles
idolatram competência -- especialmente competência em "hackear", mas
competência em qualquer coisa é boa. A competência em habilidades que poucos
conseguem dominar é especialmente boa, e competência em habilidades que
involvem agudeza mental, perícia e concentração é a melhor.
Se você reverenciar competência, gostará de desenvolvê-la em si mesmo -- o
trabalho duro e dedicação se tornará uma espécie de um intenso jogo, ao invés
de trabalho repetitivo. E isso é vital para se tornar um hacker.
Habilidades básicas do hacker
A atitude hacker é vital, mas habilidades são ainda mais vitais. Atitude não
substitui competência, e há uma certo conjunto de habilidades que você
precisa ter antes que um hacker sonhe em lhe chamar de um.
Esse conjunto muda lentamente com o tempo, de acordo com a criação de novas
habilidades. Por exemplo, costumava incluir programação em linguagem de
máquina, e até recentemente não incluía HTML. Mas agora é certo que
inclui o seguinte:
1. Aprenda a programar.
Essa é, claro, a habilidade básica do hacker. Em 1997, a linguagem que você
absolutamente precisa aprender é C (apesar de não ser a que você deve aprender
primeiro). Mas você não é um hacker e nem mesmo um programador se você souber
apenas uma linguagem -- você tem que aprender a pensar sobre problemas de
programação de um modo geral, independentemente de qualquer linguagem. Para
ser um hacker de verdade, você precisa ter chegado ao ponto de conseguir
aprender uma nova linguagem em questão de dias, relacionando o que está no
manual ao que você já sabe. Isso significa que você deve aprender várias
linguagens bem diferentes.
Além de C, você também deve aprender pelo menos LISP e Perl (e Java está
tentando pegar um lugar nessa lista). Além de serem as linguagens mais
importantes para hackear, cada uma delas representa abordagens à programaçaão
bem diferentes, e todas o educarão em pontos importantes.
Eu nao posso lhe dar instruções completas sobre como aprender a programar
aqui -- é uma habilidade complexa. Mas eu posso lhe dizer que livros e cursos
também não servirão (muitos, talvez a maioria dos melhores hacker
são auto-didatas). O que servirá é (a) ler código
e (b) escrever código.
Aprender a programar é como aprender a escrever bem em linguagem natural. A
melhor maneira é ler um pouco dos mestres da forma, escrever algumas coisas,
ler mais um monte, escrever mais um monte, ler mais um monte, escrever... e
repetir até que seu estilo comece a desenvolver o tipo de força e economia que
você vê em seus modelos.
Achar bom código para ler costumava ser difícil, porque havia poucos programas
grandes disponíveis em código-fonte para que hackers novatos pudessem ler e
mexer. Essa situação mudou dramaticamente; open-source software
(software com código-fonte aberto), ferramentas de
programação, e sistemas operacionais (todos feitos por hackers) estão
amplamente disponíveis atualmente.
2. Pegue um dos Unixes livres e aprenda a mexer.
Estou assumindo que você tem um computador pessoal ou tem acesso a um (essas
crianças de hoje em dia tem tão facilmente :-)). O passo mais importante que
um novato deve dar para adquirir habilidades de hacker é pegar uma cópia do
Linux ou de um dos BSD-Unixes, o instalar em um PC, e rodá-lo.
Sim, há outros sistemas operacionais no mundo além do Unix. Porém, eles são
distribuídos em forma binária -- você não consegue ler o código, e você não
consegue modificá-lo. Tentar aprender a "hackear" em DOS, Windows ou MacOS é
como tentar aprender a dançar com o corpo engessado.
Além disso, Unix é o sistema operacional da Internet. Embora você possa
aprender a usar a Internet sem conhecer Unix, você não pode ser um hacker sem
entendê-lo. Por isso, a cultura hacker, atualmente, é fortemente centralizada
no Unix. (Não foi sempre assim, e alguns hackers da velha guarda não gostam
da situação atual, mas a simbiose entre o Unix e a Internet se tornou
tão forte que até mesmo o músculo da Microsoft não parece ser
capaz de ameacá-la seriamente.)
Então, pegue um Unix -- eu gosto do Linux, mas existem outros
caminhos. Aprenda. Rode. Mexa. Acesse a Internet através dele. Leia o
código. Modifique o código. Você terá ferramentas de programação
(incluindo C, Lisp e Perl) melhores do qualquer
sistema operacional da Microsoft pode sonhar
em ter, você se divertirá, e irá absorver mais conhecimento do que perceber,
até que você olhará para trás como um mestre hacker.
Para aprender mais sobre Unix, veja The
Loginataka.
Para pegar o Linux, veja Where To Get Linux.
3. Aprenda a usar a World Wide Web e escrever em HTML.
A maioria das coisas que a cultura hacker tem construído funciona
"invisivelmente", ajudando no funcionamento de fábricas,
escritórios e universidades sem nenhum óbvio na vida dos
não-hackers. A Web é a grande exceção, o enorme e
brilhante brinquedo dos hackers que até mesmo políticos admitem que
está mudando o mundo. Por esse motivo (e vários outros também) você precisa a
aprender como trabalhar na Web.
Isso não significa apenas aprender a mexer em um browser (qualquer um faz
isso), mas aprender a programar em HTML, a linguagem de markup da Web. Se
você não sabe programar, escrever em HTML lhe ensinará alguns hábitos mentais
que o ajudarão. Então faça uma home page.
Mas apenas ter uma home page não chega nem perto de torná-lo
um hacker. A Web está repleta de home pages. A maioria delas
é inútil, porcaria sem conteúdo -- porcaria muito bem apresentada,
note bem, mas porcaria mesmo assim (mais sobre esse assunto em The HTML Hell
Page).
Para valer a pena, sua página deve ter conteúdo -- deve ser
interessante e/ou útil para outros hackers. E isso nos leva ao
próximo assunto...
Status na Cultura Hacker
Como a maioria das culturas sem economia monetária, a do hacker
se baseia em reputação. Você está tentando resolver problemas
interessantes, mas quão interessantes eles são, e se suas soluções
são realmente boas, é algo que somente seus iguais ou superiores
tecnicamente são normalmente capazes de julgar.
Conseqüentemente, quando você joga o jogo do hacker, você aprende
a marcar pontos principalmente pelo que outros hackers pensam da
sua habilidade (por isso você não é hacker até que outros hackers lhe
chamem assim). Esse fato é obscurecido pela imagem solitária que se faz
do trabalho do hacker; e também por um tabu hacker-cultural que é contra
admitir que o ego ou a aprovação externa estão envolvidas na motivação
de alguém.
Especificamente, a cultura hacker é o que os antropologistas chamam
de cultura de doação. Você ganha status e reputação não
por dominar outras pessoas, nem por ser bonito, nem por ter coisas
que as pessoas querem, mas sim por doar coisas. Especificamente,
por doar seu tempo, sua criatividade, e os resultados de sua
habilidade.
Há basicamente cinco tipos de coisas que você pode fazer para ser
respeitado por hackers:
1. Escrever open-source software.
O primeiro (o mais central e mais tradicional) é escrever programas
que outros hackers achem divertidos ou úteis, e dar o código-fonte
para que toda a cultura hacker use.
(Nós costumávamos chamar isto de "free software", mas isso confundia
muitas pessoas que não sabiam ao certo o significado de "free".
Agora, muitos de nós preferem o termo "open-source" software).
[nota do tradutor: "free" significa tanto "livre" como "gratuito",
daí a confusão. O significado que se pretende é "livre".]
Os "semi-deuses" mais venerados da cultura hacker são pessoas que
escreveram programas grandes, competentes, que encontraram uma
grande demanda e os distribuíram para que todos pudessem usar.
2. Ajude a testar e depurar open-source software
Também estão servindo os que depuram open-source software. Neste mundo imperfeito,
inevitavelmente passamos a maior parte do tempo de desenvolvimento
na fase de depuração. Por isso, qualquer autor de open-source software
que pense lhe dirá que bons beta-testers (que saibam descrever sintomas
claramente, localizar problemas, tolerar bugs em um lançamento apressado,
e estejam dispostos a aplicar algumas rotinas de diagnóstico) valem
seu peso em ouro. Até mesmo um desses beta-testers pode fazer a diferença
entre uma fase de depuração virar um longo e cansativo pesadelo, ou
ser apenas um aborrecimento saudável.
Se você é um novato, tente achar um programa sob desenvolvimento em
que você esteja interessado e seja um bom beta-tester. Há um progressão
natural de ajudar a testar programas para ajudar a depurar e depois
ajudar a modificá-los. Você aprenderá muito assim, e criará
um bom karma com pessoas que lhe ajudarão depois.
3. Publique informação útil.
Outra boa coisa a se fazer é coletar e filtrar informações úteis e
interessantes em páginas da Web ou documentos como FAQs ("Frequently
Asked Questions lists", ou listas de perguntas freqüentes), e
torne-os disponíveis ao público.
Mantenedores de grandes FAQs técnicos são quase tão respeitados quanto
autores de open-source software.
4. Ajude a manter a infra-estrutura funcionando.
A cultura hacker (e o desenvolvimento da Internet, quanto a isso)
é mantida por voluntários.
Existe muito trabalho sem glamour que precisa ser feito para mantê-la
viva -- administrar listas de email, moderar grupos de discussão, manter
grandes sites que armazenam software, desenvolver RFCs e outros padrões
técnicos.
Pessoas que fazem bem esse tipo de coisa são muito respeitadas,
porque todo mundo sabe que esses serviços tomam muito tempo e não
são tão divertidos como mexer em código. Fazê-los mostra dedicação.
5. Sirva a cultura hacker em si.
Finalmente, você pode servir e propagar a cultura em si (por exemplo,
escrevendo um apurado manual sobre como se tornar um hacker :-)).
Você só terá condição de fazer isso depois de ter estado por aí
por um certo tempo, e ter se tornado conhecido por uma das primeiras
quatro coisas.
A cultura hacker não têm líderes, mas têm seus heróis culturais,
"chefes tribais", historiadores e porta-vozes.
Depois de ter passado tempo suficiente nas trincheiras, você pode
ser tornar um desses. Cuidado: hackers desconfiam de egos espalhafatosos
em seus "chefes tribais", então procurar visivelmente por esse tipo
de fama é perigoso. Ao invés de se esforçar pela fama, você tem que
de certo modo se posicionar de modo que ela "caia" em você, e
então ser modesto e cortês sobre seu status.
A Conexão Hacker/Nerd
Contrariamente ao mito popular, você não tem que ser um nerd para ser
um hacker. Ajuda, entretanto, e muitos hackers são de fato nerds.
Ser um proscrito social o ajuda a se manter concentrado nas coisas
realmente importantes, como pensar e "hackear".
Por isso, muitos hackers adotaram o rótulo "nerd", e até mesmo usam
o termo (mais duro) "geek" como um símbolo de orgulho -- é um modo
de declarar sua independência de expectativas sociais normais. Veja The Geek Page para
discussão extensiva.
Se você consegue se concentrar o suficiente em hackear para ser bom nisso,
e ainda ter uma vida, está ótimo. Isso é bem mais fácil hoje do que
quando era um novato nos anos 70; atualmente a cultura mainstream é muito
mais receptiva a tecno-nerds. Há até mesmo um número crescente de pessoas
que percebem que hackers são, freqüentemente, amantes e cônjuges de
alta qualidade.
Girl's Guide to Geek
Guys.
Se hackear o atrai porque você não vive, tudo bem -- pelo menos você
não terá problemas para se concentrar. Talvez você consiga uma vida
normal depois.
Pontos Sobre Estilo
Para ser um hacker, você tem que entrar na mentalidade hacker.
Há algumas coisas que você pode fazer quando não estiver na frente
de um computador e que podem ajudar. Não substituem o ato de hackear
(nada substitui isso), mas muitos hackers as fazem, e sentem que elas
estão ligadas de uma maneira básica com a essência do hacking.
- Leia ficção científica. Freqüente convenções de ficção científica (uma boa maneira de encontrar hackers e proto-hackers).
- Stude o Zen, e/ou faça artes marciais. (A disciplina mental parece similar em pontos importantes).
- Desenvolva um ouvido analítico para música. Aprenda a apreciar tipos peculiares de música. Aprenda a tocar bem algum instrumento musical, ou a cantar.
- Desenvolva sua apreciação de trocadilhos e jogo de palavras.
- Aprenda a escrever bem em sua língua nativa. (Um número surpreendente de hackers, incluindo todos os melhores que eu conheço, são bons escritores.)
Quanto mais dessas coisas você já fizer, mais provável que você tenha
naturalmente um material hacker. Por que essas coisas em particular
não é completamente claro, mas elas são ligadas com uma mistura
de habilidades dos lados esquerdo e direito do cérebro que parece
ser muito importante (hackers precisam ser capazes de tanto raciocinar
logicamente quanto pôr de lado, de uma hora para outra, a lógica aparente
do problema).
Finalmente, algumas coisas a não serem feitas.
- Não use um nome de usuário ou pseudônimo bobo e grandioso.
- Não entre em flame wars ("guerrinhas") na Usenet (ou em qualquer outro lugar).
- Não se auto-intitule um "cyberpunk", e não perca seu tempo com alguém que o faça.
- Não poste ou escreve email cheio de erros de ortografia e gramática.
A única reputação que você conseguirá fazendo alguma dessas coisas é
a de um twit [um chato, geralmente filtrado nos grupos de discussão].
Hackers tem boa memória -- pode levar anos antes que você se reabilite
o suficiente para ser aceito.
Outros Recursos
O Loginataka tem algumas
coisas a dizer
sobre o treinamento e a atitude adequados a um hacker de Unix.
Eu também escrevi A Brief History Of
Hackerdom.
Peter Seebach mantém um excelente
Hacker FAQ
para gerentes que não sabem como lidar com hackers.
Eu escrevi um documento,
The Cathedral and the Bazaar ("A Catedral e o Bazar"),
que explica muito sobre como o Linux e as culturas de open-source software
funcionam.
Perguntas Freqüentes
Q: Você me ensina como "hackear"?
Desde que publiquei essa página, recebi vários pedidos por semana
de pessoas querendo que eu "ensinasse tudo sobre hacking". Infelizmente,
eu não tenho tempo nem energia para isso; meus próprios projetos hackers
tomam 110% do meu tempo.
Mesmo se eu fizesse, hacking é uma atitude e uma habilidade na qual você tem
que basicamente ser auto-didata. Você verá que, embora hackers de verdade
queiram lhe ajudar, eles não o respeitarão se você pedir "mastigado" tudo
que eles sabem.
Aprenda algumas coisas primeiro. Mostre que você está tentando, que
você é capaz de aprender sozinho. Depois faça perguntas aos hackers
que encontrar.
Q: Onde eu posso encontrar hackers de verdade para conversar?
Bem, não no IRC, com certeza -- lá só existem flamers e crackers.
A melhor maneira é encontrar um grupo de usuários local de Unix ou Linux,
e freqüentar as reuniões (você pode encontrar links para várias listas
de grupos de usuários na página da
LDP em Sunsite).
Q: Que linguagem devo aprender primeiro?
HTML, se você ainda não souber. Existe um monte de livros sobre HTML
lustrosos, modistas e ruins por aí e, infelizmente,
pouquíssimos bons. O livro de que mais gosto é HTML: The Definitive
Guide.
Quando você estiver pronto pra começar a programar, eu recomendaria
começar com Perl ou Python. C é realmente importante,
mas muito mais difícil.
Q: Mas o open-source software não deixará os programadores incapazes de ganhar a vida?
Parece improvável -- até agora, a indústria de open-source software parece
estar criando empregos ao invés de tirá-los. Se ter escrito um
programa é ganho econômico em relação a não tê-lo escrito,
um programador será pago independentemente de o programa ser livre
depois de feito. E, independentemente de quanto open-source software
é feito, sempre parece haver mais demanda por aplicações novas
e personalizadas.
Q: Como eu começo? Onde posso pegar um Unix livre?
Em outro lugar da página eu incluí ponteiros onde pegar o Linux.
Para ser um hacker você precisa de motivação, iniciativa e capacidade
de se educar. Comece agora...
Tradução de Rafael Caetano dos Santos
Nenhum comentário:
Postar um comentário