No princípio, havia Multics.
Multics, ou Multiplexed Information and Computing Service, era um conceito muito adiante do seu tempo – ou do nosso. Segundo a visão dos seus criadores, haveria imensos computadores, poderosos e inderrubáveis, rodando Multics, sendo acessados por milhares de pessoas em terminais burros (isso é um termo técnico) espalhadas por todo o planeta. Esses usuários pagariam suas “contas de computador” como hoje pagamos luz, água e TV a cabo. Era um projeto bancado pela ARPA em que MIT (que entrava com cérebros), GE (que entrava com os computadores e alguns cérebros) e Bell Telephone Laboratories – BTL – (que entravam com as linhas de dados e alguns cérebros) trabalhavam juntos.
Diz a lenda que, logo depois da BTL ter deixado o projeto, um grupo de programadores queria continuar jogando Space War em um computador muito menor, um PDP-7 e, para isso, precisava escrever um sistema operacional. O nome foi dado por um colega brincalhão, Uniplexed Information and Computing Service, ou Unics. Ninguém lembra quem sugeriu que mudassem pra Unix.
Desde sempre, Unix teve como prioridade dar o que um programador quer de um sistema operacional: flexibilidade e poder.
Dentes
Poucas pessoas que usam computadores hoje em dia viram ou se lembram de como computadores pessoais eram no começo. Normalmente, assim que você ligava o computador, você caía dentro de um interpretador BASIC. Escrever programas era quase necessário para poder usar o computador. Qualquer usuário daquela época era capaz de escrever programas simples para fazer coisas simples. Uns poucos, faziam enormes e complexos programas apenas para cuidar do seu negócio. Era muito mais uma diversão do que um trabalho. Quem usava um computador sabia escrever programas, pelo menos um pouco.
Com o tempo, surgiram sistemas operacionais independentes de linguagens de programação, mais completos e com o objetivo de tornar computadores mais amigáveis aos leigos. Para isso, acabou se abandonando a programabilidade. Programar computadores, diziam eles, era complexo demais para o usuário comum. Além disso, linguagens interpretadas eram tidas como lentas – programas profissionais eram feitos sempre em linguagens compiladas. Sistemas operacionais passaram a incorporar interfaces gráficas (o que colocou a programação ainda mais longe do alcance de uma pessoa comum – um “Olamundo” tinha centenas de linhas). Por muito tempo, eu mesmo acreditei que abandonar a programabilidade na interface era uma boa idéia. Eu dei as boas-vindas ao Lisa, ao Macintosh, ao OpenLook e, que Deus me perdoe, ao Windows. O resultado disso é que acabamos com computadores amigáveis, mas desdentados.
Poder
Outro dia recebi um e-mail em uma lista, citando a criação de uma ONG, a Sociedade Amigos de Plutão, ligada a amigos do Presidente da República, que teria recebido uma verba nada desprezível para executar sua missão (de garantir o status de planeta à não-tão-grande-pedra-mais-ou-menos-esférica a que chamamos de Plutão). Uma rápida busca no Google me levou a um artigo no site da revista Brasília em Dia, que citava a publicação no Diário Oficial e um curioso vídeo com o Senador Heráclito Fortes repete a história. Resolvi verificar se algo foi mesmo publicado sobre isso no Diário Oficial da União, como dizia o artigo.
O site da imprensa oficial pode ser tudo, menos amigável. Buscas levam uma eternidade, quando funcionam e sempre é necessário fazer algum malabarismo para obter uma informação. Entendo que eles devam precisar proteger os interesses econômicos (pelo que eu entendi, a entrega eletrônica do jornal é cobrada, e relativamente caro), mas afetar meu conforto é, claramente, ir longe demais.
Como eu imagino que seja meu direito de cidadão consultar livremente todos os documentos que meu governo produz com o dinheiro dos meus impostos, eu resolvi que ia extrair do site os documentos que eu queria. Afinal de contas, eu estava investigando o meu governo. Um pouco de investigação nas páginas (que são construídas para dificultar isso) mostrou que as páginas do DOU estão quebradas em PDFs, um por página, seguindo a seguinte convenção:
http://www.in.gov.br/materias/pdf/do/secaoS/DD_MM_2006/doS-P.pdf
Onde S é o número da seção (o DO tem 3), DD e MM são o dia e o mês com 2 dígitos e P é o número da página da publicação.
Antes de tentar resolver o problema com uma arma nuclear, posso tentar algo mais simples. Abro o browser e digito http://www.in.gov.br/materias/pdf/do/ apenas para dar de cara com um “Forbidden”. OK. Armas nucleares, então.
Uma vez aqui, os arquivos poderiam ser facilmente buscados pelo Beagle, pelo Spotlight (se eu estivesse no Mac) ou pelo Windows Desktop Search (se eu ainda usasse Windows). Escolhi fazer isso no nosso servidor de arquivos, que usa o Swish-e para indexar PDFs.
Um usuário típico desistiria nesse ponto. É claramente trabalhoso demais fazer isso, certo?
Errado.
Aqui vale a pena eu chamar a sua atenção para duas coisas:
A primeira: o Unix foi feito para que comandos (que são quase todos programas independentes) pudessem ser encaixados uns nos outros, passando a saída de um para o outro de modo a ser possível (e fácil, para os iniciados) construir comandos (eu às vezes chamo de “encantamentos”) poderosos que fazem coisas ocasionalmente espantosas.
A segunda: aquela janela de comando de que todos têm medo, que volta-e-meia eu ouço ser chamada de “primitiva” é, na verdade, um interpretador de uma linguagem bastante sofisticada. No caso, o meu Linux me oferece o bash. Eu poderia ter escolhido outra (uma instalação padrão traz várias), mas o bash tem me servido bem nos últimos anos.
Se você tem um desses à mão (até os pobrezinhos que usam Windows podem ter um – baixe o seu como parte do Cygwin em http://sourceware.org/cygwin/), experimente digitar:
for i in `seq -w 1 10` ; do echo "Funciona $i" ; done
Pressione Enter, se você ainda não fez.
Doeu?
Não vou entrar em mais detalhes sobre o funcionamento disso. Se você quiser aprender mais, procure no Google por “tutorial bash” que, aposto, você vai encontrar tudo explicadíssimo.
Depois de pronto, meu robô buscador de jornais ficou assim:
#!/bin/bash for mes in 08 ; do for dia in `seq -w 1 31` ; do mkdir 2006$mes$dia cd 2006$mes$dia for secao in 1 2 3 ; do for pagina in `seq 1 200` ; do url="http://www.in.gov.br/materias/pdf/do/secao${secao}/${dia}_${mes}_2006/do$secao-$pagina.pdf" wget $url done done cd .. done done
Isso tudo, gravado em um arquivo texto, quando executado, faz o que eu queria que ele fizesse (buscar todas as edições do mês de agosto e colocá-las em pastas).
Encantamentos e poder
Esse tipo de poder, o de controlar o computador através de programas, foi sendo perdido ao longo dos anos. No começo da nossa história, todos os usuários tinham acesso a esse tipo de ferramenta. Hoje em dia, pode ser preciso uma busca deliberada atrás delas.
Poder fazer coisas é bom.
Poder mandar seu computador fazê-las é infinitamente melhor.
Da utilidade dos boatos
A propósito, não foi publicado nada no Diário Oficial sobre a tal sociedade. Não que eu esperasse. Buscas no Google mais detalhadas mostraram, inclusive, que pelo menos um entre os que divulgaram a notícia escreveu uma retratação. Discreta, tímida (tem que procurar), mas por escrito.
E eu transformei um boato transmitido via e-mail em algo bom. Para algo eles servem. [Webinsider]
.
Ricardo Bánffy
Ricardo Bánffy (ricardo@dieblinkenlights.com) é engenheiro, desenvolvedor, palestrante e consultor.
17 respostas
Pai, perdoa-lhes, eles não sabem o que Falam !!!!
Cara…
E os super-poderes surgem assim?! Sem vc precisar ser de outro planeta, mutante ou coisas do tipo?!
Poder mandar seu computador fazê-las é infinitamente melhor. – Esse tipo de super-poder te torna capaz de coisas inimagináveis.
Quem sabe dominar o mundo?!
Viajei…! =)
Ótimo texto Ricardo Bánffy!
Olá Ricardo Bánffy,
Acho realmente super bacana o fato de se poder criar linhas de comando que agilizem nosso dia-a-dia com máquinas computacionais. Não vejo muito sentido em acelerar o carro puxando o cabo do acelerador na mão.
Acho que uma solução bacana seria alguns exemplos de comandos prontos (mini-programas) por default no sistema operacional uma boa. Para alguns profissionais não é tão interessante assim ter certos tipos de conhecimentos de TI ou seja lá como se possa chamar.
O fato de crianças estarem aprendendo computação na escola logo cedo está trazendo uma nova sociedade para o nosso mundo que nasce informacional.
Agora será que muitas delas serão como você que usarão todo esse poder para fazer cosias boas como você ou serão apernas mais uma reprise do que temos hoje com a cultura de massa e senso comum.
Vamos pensar mais sobre a estética tecnológica como usual; o discurso técnico virá naturalmente.
Nossa !!!
Acho uma ótima prática que as pessoas não técnicas de TI exercitem programação, e isto é feito até por crianças em algumas escolas primárias usando a linguagem LOGO, com excelentes resultados.
No entanto cabe aos desenvolvedores de software zelar para que a interface dos aplicativos seja o mais intuitiva possível para os que leigos usuários possam concentrar toda a sua atenção nos seus objetivos. É importante separar o que serve pra profissionais de TI do que serve para usuários leigos (que podem ser médicos, engenheiros, juizes, etc).
Outro exemplo: Hoje, fazendo as escolhas certas, o Linux é muito mais fácil de usar para usuários leigos que o tradicional Windows.
Concordo que Terminal é legal, e às vezes, quando álguém me pergunta como ele funciona, faço coisas simples, como copiar músicas do meu iPod para outra pasta qualquer só pra impressionar as pessoas e posar de hacker. E deixo até a janela do Finder (ou do Nautilus) aberta pra pessoa ver a mágica acontecer. O simples ato de mover um arquivo de um lugar para outro por linha de comando impressiona os leigos.
Mas também não precisa chegar ao extremo de querer que eu edite um filme pelo terminal, como me sugeriu uma vez um GNU-chato, querendo impor a superioridade do bash, né?
Excelente artigo! a propósito todo programador deve ficar exaltado quando o lê.
Infelismente a maioria dos usuários nao conhece o poder de umas linhas de código, mas o pior mesmo é o preconceito de que é coisa de bicho-grilo.
Não se chama linguagem à toa, é igual a falar. você aprende palavra por palavra e demora um pouco pra começar a montar frases.
Mas a primeira reação ao ver as entranhas de um programa é puts!.
Talvez as interfaces amigáveis ajudem na produtividade, mas interferem na capacidade de desenvolvimento.
Abraços
eu acho que voce viajou um pouco, e so tem amigos programadores heheeh
Os sistemas operacionais visuais foram uma grande evolução para que houvesse uma inclusão digital em grande escala.
Tudo tende a ser mais simples, para facilitar o usuário final. Um exemplo clássico foi o caso do controle remoto do videocassete , onde tinhamos dezenas de botões visíveis e hoje apenas o básico.
Mas se pegarmos esse novo controle, e arrastarmos uma tampinha que fica fechada, veremos todos aqueles botoes avançados que a maioria nunca usa.
É o mesmo princípio. Sistemas operacionais precisam ser fáceis, produtivos e agradáveis de usar para o usuário final. Sendo claro: tem que nivelar por baixo mesmo.
Mas todos deveriam oferecer ferramentas avançadas (sim, bash é avançado), para os usuários que querem uma independência além-ícone.
E nisso, os *nix são imbativeis.
Parabens pelo artigo. Muito interessante debater isso.
abcs
Há os encantadores de serpentes. Você é encantador de bits – ou serão bytes? -: joga aquela tecnicagem toda no teclado, diz umas palavras mágicas e, na tela, lá está o resultado: um texto belo.
Já disse: Academia!
A comparação com o carro foi meio absurda, hã? Saber dirigir, eu sei. Só não sei construir e consertar o carro.
Infelizmente, somos alienados mesmo, no sentido de ter alguma especialidade. Também acho uma perda grande esse relação que os primeiros usuários tinham com o computador. Uma relação meio artesanal, até – pois o artesão não se aliena, conhece todo o processo. Mas ela se esvai, e parece até com o HD: para entrar uma informação, precisa sair outra… 😉
É como se diz, ou assobia ou chupa cana.
Achei muito interessante o texto.
Com relação aos comentarios, to contigo Robson, acho que você me deu argumentos suficientes para convencer muitas pessoas.
R.B
Você é muito doido!
E está ficando cada dia pior.
Mas gosto dos seus artigos mesmo assim 😛
Vlw
Erro:
#!/bin/bash
for1style=?color: #000000;?> mes
Tá sobrando um pouco de marcação HTML e CSS aí no meio do seu bash script né?
Não tem influência direta no sentido do texto, mas é bom corrigir =P
Muito legal o seu artigo, Ricardo!
Irei incluí-lo no meu blog, com direito a mais comentários.
Quanto ao comentário do Paulo: sim, parece meio estranho em princípio, mas não é nada do outro mundo. Veja só: para dirigir um carro, você tem que se preocupar com 3 pedais (embreagem, freio e acelerador), o freio-de-mão, a alavanca de marchas, o velocímetro (especialmente os habitantes de São Paulo e Santo André), o medidor de combustível, quatro janelas (a janela frontal do carro mais os três espelhos retrovisores). Isso sem contar a sogra alegremente falante no banco traseiro. Mesmo com tudo isso há pessoas que dirigem bem automóveis.
Doeu ter todo esse conhecimento? Claro que não.
Então por que, ao usarmos computadores, precisamos desligar o cérebro? Por que, quando aparece um usuário Unix (nem precisa ser Linux) e faz alguma coisa com o shell, o cara é chamado de guru?
Abraços
Caro amigo Ricardo, vc acha realmente que esse seu comando de Unix é uma coisa fácil e simples para qualquer mortal entender ? Vc está certo disso ?
Ricardo,
Seu artigo é muito bom! Mostrou para todos (todos mesmo!) de forma inteligênte que podemos usar essa grande calculadora para melhorar a nossa vida.
Se todo mundo soubesse um bocadim de programação, muitas tarefas (como renomear aquelas quinhentas fotos da viagem para praia dos sonhos) de forma automática e não um-a-um.
Atenciosamente,
.faso