Segunda-feira, Junho 22, 2009

Recursos e o Windows 7

O Windows 7 é o que o Vista deveria ter sido desde o começo, mas que,
pela preguiça e o mau costume dos programadores, acabou virando o que
virou.

A esplicação é simples de entender. Tudo se resume a recursos. No
mundo real, no mundo virtual, seja na comida que pomos na mesa ou seja
na máquina que usamos no nosso dia-a-dia. Os recursos podem ser
renováveis ou não. Esgotáveis ou não. Antigamente existia uma madeira,
muito bonita, que meu pai trabalhava. Hoje, ela não existe mais. Todo
mundo ouviu falar do Mógno. Meus filhos nunca vão ver essa madeira
crua como eu vi. A impressão que se tinha é que a madeira nunca ia
acabar. Mas ela era um recurso esgotável. Poderia ser renovável, mas
precisava que alguém fizesse algo a respeito. E ninguém fez.

A mesma coisa acontece com o computador. O computador tem recursos
esgotáveis. Podemos amplicar a memória, aumentar o disco, por um
processador mais rápido. Mas ele terá um límite. O que dá a impressão
de que o computador não tem limites é a famosa lei de Moore. (Ref.
http://pt.wikipedia.org/wiki/Lei_de_Moore). A cada dia um computador
novo e melhor aparece no mercado.

Isso fez com que programadores que antes precisavam se preocupar com
bits e bytes, pudessem se preocupar menos com isso. A preocupação
agora é produtividade. Quer um exemplo de um estilo de programação
dispendioso de recursos? Orientação a Objetos. É prático, acelera o
desenvolvimento, mas desperdiça recursos absurdamente. Claro que
existem técnicas para se minimizar isso. E vão aparecer os
'especialistas' defensores e tudo o mais. Eu não tiro o mérito, o
mundo muda, as técnicas de programação também. Se não fosse assim, não
chegariamos onde chegamos hoje. O cara desenvolve uma máquina que
custa milhões de dolares e tudo que ela faz é, digamos, tecidos.
Podemos fazer isso sem a máquina caríssima? Sim... MAS a velocidade
com que ela fa'ra ou a qualidade, a impecabilidade e a perfeição que
ela terá serão inatingíveis por um ser humano. Aquela máquina se
pagará com o que será economizado pela velocidade de sua produção.

Então, o desperdício de recursos de um programa Orientado a Objetos se
paga com a velocidade com que podemos desenvolver um aplicativo. E se
levarmos em conta que os sistemas computacionais (leia-se: hardware)
ficam cada vez mais poderosos, isso é uma pechincha.

Só que o Vista veio num momento em que ainda não tinhamos hardware
médio que comportasse o seu 'desperdício'. Simples assim. Se você
colocar o Vista numa máquina atual, como um Core2Duo com uns 2 Gbytes
de memória, ele rodará parecendo leve. Só que estará usando recursos
que poderiam ser usados para outras coisas. Mas e daí? 90% das pessoas
não perceberiam isso. Foi nisso que o Vista pecou. Pegue um computador
mediano da época em que ele saiu. 1 Gbyte era o mínimo que ele
precisava para funcionar, teoricamente bem. Mas as máquinas eram
vendidas com 256 Mbytes ou 512, quando muito. Sem falar os
processadores Celeron ou Duron que foram a coqueluche da época por
conta de seu custo muito baixo. Junte, um hardware fraco e com poucos
recursos com um sistema operacional pesado e consumidor
(desperdiçador, se me permitem o logismo) e terão um sistema irritante
de ser usado, que demora, que engasga, que trava. Esse é o Vista.

O Windows XP passou por algo semelhante quando saiu. MAS num nível
MUITO menor. E ele estava no cerne da migração dos sistemas de 16 bits
para os de 32 bits. Alguém pode dizer, mas o Windows 2000 era 32 bits
e haviam bibliotecas Win32 já disponiveis. Sim, verdade, mas o Windows
95 e 98 eram sistemas de 32 bits falhos e que não funcionavam 32 bits
realmente o tempo todo. 'Ter suporte a 32 bits' e 'ser 32 bits' são
coisas bem diferentes, como qualquer programador que desenvolveu
aplicativos no Windows 3.11 'prontos' para Windows 95 sabe. E
lembrem-se, o Windows 2000 era usado, quando muito, somente por
corporações. Pequenas empresas e usuários domésticos usavam o Windows
95 e o 98. Alguém pode perguntar do Windows Millenium. Bom, nem a
Microsoft quer lembrar dele, por que eu deveria?

Com o Windows XP sendo 32 bits ele aproveitava realmente MUITO melhor
o hardware disponível. O Windows 9x e o Me (95, 98 e Millenium) só
endereçavam realmente 128 mbytes de memória (em termos de cache e
controle de swap). Mais que isso era simplesmente ignorado pelo
sistema. Sabe como eles resolveram internamente? Swap em mémória. :)
Mas não vou entrar em conceitos técnicos aqui. Tenho certeza que tem
gente que vai até vir me corrigir pelo que falei. Mas essa é a
realidade. O Windows XP permite endereçar 3.5 Gbytes de memória (é,
3.5 Gbytes na versão 32 bits, qualquer memória a mais que isso é
ignorada sumariamente pelo sistema, ele não tem como endereçar, por
conta de simples característica de arquitetura e projeto). Em tempo,
esse limíte se aplica ao Vista e ao Windows 7 de 32 bits também.

Daí as máquinas com processadores de 64 bits viraram padrão no
mercado. E isso ajudou sobremaneira. Você pega o Windows XP e instala
numa dessas novas máquinas e fica impressionado. Até as novas máquinas
low-end (as mais fraquinhas) ficam parecendo mais potentes que as
high-end de uma geração atrás. Mas o Vista ainda assim é mais
consumidor de recursos do que o hardware disponível.

Com o Windows 7 a Microsoft trocou o kernel (e a forma como ele lida
com algumas coisas), fez otimizações nos lugares certos (I/O e
gerenciamento de memória), simplificou APIs e removeu aquele monte de
retalhos que mantinha, por compatibilidade retroativa, no código do
Windows XP. Isso se traduz em performance. Bota um magrelinho de 50 kg
e um gordão de 160 kg para correr. Quem chega primeiro? O Windows 7
está longe de ser o magrelinho, mas está bem saudável por sinal.

Quanto ao fato de o Windows 7 poder ser usado enquanto ainda é uma
versão trial, é aí que separamos os usuários, dos aficionados e dos
profissionais. Concordo com o usuário. Um contador, o meu por sinal,
me disse uma vez: Eu não quero saber como essa joça funciona. Quero só
que ela funcione e funcione direito. Ele é um usuário. Ele está certo.
Mas as vezes é bom um usuário dizer o que precisa e onde acha que algo
está errado. Isso ajuda na hora de melhorar a ferramenta para ele
mesmo. Aficionados fazem isso o tempo todo, por prazer. São usuários
que gostam de estar um passo a frente dos outros e de saber resolver
pequenos problemas (as vezes grandes) e serem independentes. São eles
que gostam do Linux. Os profissionais, muitas vezes nem gostam disso,
gostariam de ter o ponto de vista do usuário: sem problemas e tudo
funcionando bem, com a vantagem de saber como funciona. Claro que
existem os que gostam de resolver problemas (e ficar caçando por
eles). Atualmente, o Windows 7 está num estágio que pode ser
considerado final. Ele está estável, funcionando bem, alguns ajustes
aqui e acolá, mas já está pronto. Encare ele como aquela torta que sua
mãe fez e só falta colocar a cobertura. Dá para comer. Mas se quer
esperar pela calda de caramelo, não será tão ruim também. :)

Mas já que toquei no assunto Linux, o que torna o Linux tão assustador
para alguns e tão atrativo para outros? Exatamente a coisa que
diferencia os usuários dos aficionados. Você pode ter controle sobre
seu sistema, num nível absurdamente seletivo e personalizável. Mas
para isso, vai ter que aprender e entender como as coisas funcionam.
Se você é do tipo: só quero que funcione e funcione direito, precisa
ver o que quer fazer. Existem N aplicativos para Linux para fazer
EXATAMENTE a mesma coisa. Alguns melhores, outros piores. Mas existem
variações (não vou dizer versões para não confundir) de aplicativos
para agradar a todos os gostos. Tem gente que adora EMACs, outros usam
o VI, eu prefiro o MCEdit. =)

O Windows e o Linux (e o SCO-Unix, o HPUx, o Solaris, o MacOS, o
OS/2*, etc) são sistemas diferentes para executar a mesma tarefa. E
cada um faz do seu modo (com algumas semelhanças e compatibilidades em
alguns casos). Aplicativos escritos para Windows são feitos para uma
plataforma proprietária em quem, mesmo drivers, são protegidos por
direitos autorais (é, mesmo você tendo o HARDWARE, não pode melhorar o
driver ou portá-lo sem uma boa dose de coragem, café e engenharia
reversa). É o caso das placas da NVidia para o Linux. Eles ao menos
fazem os drivers. E a ATI que não está nem AI?

Jogos no Windows dependem muito de um recurso chamado DirectX (na
versão 9c no Windows XP, 10 no Windows Vista e 11 no Windows 7). Esse
recurso está sendo cada vez mais bem debulhado (não é debugado, é
debulhado mesmo) pelo pessoal do Linux para que jogos feitos para
Windows possam rodar no Linux. Se quer rodar jogos no Linux, procure
por CEDEGA (um tipo de Wine boladão feito para jogos). Sem falar
outras soluções, inclusive algumas pagas, que permitem rodar
aplicativos Windows no Linux com quase 99.9% de perfeição. Mas não é
para usuários não. Lembram da diferença?

Por exemplo, eu já joguei muito Ragnarok no Linux usando o CEDEGA (e
muita aspirina até deixar redondido). Até sair o GG (GameGuard para
quem não conhece é um 'protetor' para jogos on-line) e estragar tudo.
O GG depende de coisas que um sistema emulado NUNCA vai ter. (ainda
bem que inventaram a virtualização, mas isso é outra história.

Quanto a ser mais fácil desenvolver para Linux, discordo. Pelo
contrário. É muito mais fácil desenvolver para Windows. É mais barato
desenvolver para Linux, aí sim. Mas mesmo isso já está mudando.
CodeGear lançando suas ferramentas de forma gratuíta (Vejam sobre as
versões TURBO) e a Microsoft também (procurem por EXPRESS nesse caso).
E tem a iniciativa da comunidade com ótimas ferramentas de
desenvolvimento (se alguem gosta do Delphi, como eu, é bom dar uma
olhada no Lazarus!).

E o Linux não é incompatível. Os programas que são. o Linux, pelo que
sei, roda aplicativos windows, mas e o contrário? É verdadeiro?

Grande abraço e até a próxima.

3 comentários:

Dunncan disse...

Nem sabia que você mantinha um Blog (considerando que eu vi seu Twitter esses dias, nem me resta muito crédito...), mas eu gostei do post. Me esclareceu algumas dúvidas (como você sempre faz).

Só achei estranho que a linha de raciocínio começou no cú e foi parar nas calças =P

No mais, vale eu me classificar aqui como usuário. Meu PC novo veio com Linux, e eu não consegui nem instalar a net banda larga nele =P.

DMoRiaM disse...

Acho que o grande problema do Linux é exatamente esse: possibilidades demais (para quem conhece da coisa) e simplicidade de menos (para quem é leigo).

Dunncan disse...

Posso dizer que eu sou bem favorável à esse tipo de postura. Só não tenho paciência no momento pra aprender Linux.