Uma publicação da tecepe. Ano I número 6.
Uma das discussões mais acaloradas está na forma de "empacotar" a informação.
Existem duas correntes: as companhias de telefonia defendem o padrão ATM,
enquanto que o pessoal da Internet prefere uma versão modernizada do venerado IP.
Num ponto as duas correntes concordam: a informação deve ser transmitida digitalmente.
Mas as semelhanças terminam aí. As principais diferenças são:
A turma do IP argumenta que ATM é uma tecnologia essencialmente baseada nos sistemas de transmissão de voz. Os dados nas redes digitais tem características muito mais imprevisíveis do que a voz. A transmissão de texto, de som, de imagens ou de vídeo diferem entre sí por várias ordens de grandeza no que diz respeito ao volume de dados e velocidade necessária. Isto faz com que a demanda nas redes digitais seja muito mais imprevisível que na rede de telefonia. A rigidez do padrão ATM não levaria isso em conta.
Por outro lado, o IP deixa a desejar quando se quer transmitir dados em real time. Se você já usou programas de som ao vivo, tipo Real Audio, sabe do que eu estou falando.
A favor do ATM deve ser citado o fato de os routers mais velozes usarem esta tecnologia. Equipamentos ATM já chegam a mais de 600 MBS (Megabits por segundo) enquanto que os routers IP mais velozes não passam de 150 MBps.
Qualquer que seja a tecnologia que venha a prevalecer, espera-se um aumento exponencial das velocidade de transmissão nos próximos anos e com ele, novos e interessantes usos da tecnologia de comunicações digital.
O ICMS originalmente se chamava ICM - Imposto sobre a Circulação de Mercadorias. O fato gerador do imposto era a circulação da mercadoria pelas vias públicas. Até aí é fácil de entender. Posteriormente, visando aumentar a arrecadação, o governo incluiu os chamados "serviços circulantes" no imposto (daí o "S"). Exatamente o que circula nos serviços de comunicação é uma destas perguntas misteriosas. Estes serviços, na sua maioria, são prestados por pessoas que ficam paradas. O que circulam são só os impulsos elétricos e as ondas eletromagnéticas. Quem sabe o ICMS devesse ser cobrado nas corridas de taxi ou de ônibus, estes sim serviços tipicamente "circulantes".
Na verdade, tudo não passa de uma discussão semântica: os serviços dos Provedores são ou não de comunicação? Mas uma questão semântica que pode significar 25% de diferença! O que só revela a inconsistência (ou, no jargão dos matemáticos, a descontinuidade) do imposto. Explico: se dois serviços guardam semelhanças, como comunicações e processamento de dados, a taxação destes serviços deve também ser parecida. Do contrário inevitavelmente teremos demorados e custosos litígios, uns querendo pagar menos e outros querendo receber mais. Naturalmente, um campo fértil para os advogados.
Mas existe um outro tipo de mailing list ainda mais irritante: aqueles que você recebe sem ter solicitado. Este tipo de mala direta é bastante comum no correio regular. E está começando a aparecer também na Internet. Já existem até empresas que coletam endereços e-mail e vendem as listas. É o chamado spamming.
Outra pentelhação são as correntes eletrônicas, do tipo "...mande esta mensagem para dez pessoas e receba muita grana..." ou "...uma pessoa que quebrou esta corrente foi atropelada por um caminhão...".
É crescente o número de e-mails deste tipo. O último que recebi, com propaganda do site do bairro da Gávea, tinha uma lista de destinatários que ocupava 6 páginas! Em resposta a minha reclamação, o responsável pelo mail disse que este tipo de divulgação é muito comum no correio regular e que ele tinha adquirido a lista de uma empresa especializada. Portanto, não via nenhum problema em mandar estes e-mails. Se as malas diretas do correio regular são inconvenientes, as malas diretas eletrônicas são ainda mais, por várias razões:
Os programas em Java podem usar vários recursos de comunicação via sockets (portas TCP/IP). O pacote java.net contém várias classes para este fim.
Do ponto de vista do usuário e considerando o aspecto errante destes programas, é prudente não deixá-los com grande liberdade. Um programa mal intencionado poderia transmitir informações contidas em seu micro ou até causar algum dano no sistema de arquivos.
Pensando nisso, aos Applets Java são impostas certas limitações, pela própria construção da máquina virtual Java. Um applet Java não pode:
É um pequeno sacrifício da segurança em benefício da usabilidade. Um perigo a mais que você deve entender.
Mas parece que as previsões não se concretizaram. Pelo contrário. A MS jogou todo o seu poderio tecnológico e financeiro para recuperar o terreno perdido. Em menos de um ano foram lançadas 3 versões do Internet Explorer. E a número 3 tem faz tudo que o Netscape Navigator faz. Uma equipe de mais de 500 programadores, mais do que todos os programadores da Netscape, é que foi responsável por esse avanço rápido. A MS investiu mais de um bilhão de dólares em seus produtos para a Internet, a maioria deles com distribuição gratuita.
Mas porque tanta grana investida em programas que são gratuitos? Esta, aparentemente, é uma estratégia no mercado de software, que a microsoft a conhece bem. É mais ou menos assim: se o cliente usar o seu software, você encontrará alguma forma de receber dinheiro, seja em upgrades, consultoria, publicações, cursos ou outros serviços. Se ele estiver disposto a pagar pelo software, melhor. Mas mesmo se ele não estiver, pode ser interessante que ele use cópias piratas dos seus programas. Deste modo ele aprende a usa-los e fica dependente do seu produto. Eventualmente ele - ou seu empregador - vai lhe pagar algum. Além de manter a concorrência afastada. Isto levou muitas empresas a relaxar seus controles de cópias piratas.
É fácil, por exemplo, controlar se duas cópias do mesmo programa estão sendo usadas em micros de uma mesma rede. Mas este tipo de controle limita o número de cópias usadas, dando espaço para a concorrência. Talvez por isso a Microsoft não use este tipo de controle.
A Netscape também compreendeu este jogo. Desde o início, a distribuição gratuita do Navigator fez com que este programa conquistasse a maioria do mercado. São mais de 40 milhões de usuários, poucos dos quais pagaram por cópias adquiridas em lojas. A maioria fez o download gratuito.
Mas esta faca tem dois gumes. A baixa renda do Navigator faz com que a Netscape não tenha tantos recursos para investir na sua atualização tecnológica. A Microsoft tem muitas fontes de renda e pode canalizar investimentos no Explorer que dificilmente a Netscape poderá acompanhar. Por isso tem lançado novas versões do Explorer em ciclos mais curtos que a Netscape.
Estas novas previsões já levaram a uma queda das ações da Netscape. Após o lançamento as ações atingiram quase $90, tendo desde então caído para $30. Muitos jornalistas estavam excitados com a perspectiva de alguma competição no mercado de software. Mas pela nova visão, parece que não foi desta vez.
O que deu errado com as profecias em relação ao futuro da Netscape? A conclusão a que muitos estão chegando é de que o Navigator não tinha nenhuma novidade tecnológica realmente importante. A Netscape aproveitou a oportunidade para conquistar o mercado da Internet, mas não havia nada que realmente garantisse que o terreno não seria gradualmente reclamado por outros.
Sun, a criadora da tecnologia, percebeu que era inútil combater a plataforma PC (Microsoft-Intel). Com mais de 80% do mercado de computadores, o desenvolvimento de software para esta plataforma é muito mais rentável do que para qualquer outra. Por este motivo, muitos desenvolvedores voltaram seus olhos para os PCs, deixando as outras plataformas (Unix, Mac) em segundo plano.
Qualquer nova iniciativa na área de micro computadores, pensaram os criadores de Java, deveria funcionar também nos PCs. Seria bom que funcionasse nos Macs, que tem um grupo de usuários fiéis. E no Unix, claro. Ou seja, uma plataforma única de desenvolvimento para todos os computadores.
Já que se estava pensando em novidade, por que também não consertar algumas deficiências conhecidas e introduzir novidades tecnológicas? Assim Java foi criado monoliticamente, incluindo uma linguagem orientada a objetos sólida e robusta; um conjunto de classes e ferramentas para facilitar a programação e uma máquina virtual multitarefa com versões para todas as plataformas 32 bits. De certo modo, o público da plataforma Java é potencialmente maior que a Win32, dos novos PCs. E sua real orientação a objetos a coloca à frente de outras iniciativas semelhantes em desenvolvimento pela Microsoft (OLE, Ole Automation, COM..).
Outra preocupação do grupo que criou Java foi a robustez do sistema. A própria linguagem de programação foi concebida para minimizar os problemas causados por erros de programação: os chamados "bugs". Não conta com alguns recursos que conduzem frequentemente a "paus". E toma conta de algumas tarefas frequentemente negligenciadas (o chamado "garbage collection"). Pensaram também no desenvolvimento em equipe: Java eliminou certos recursos da linguagem C++ que tornavam os programas difíceis de serem lidos por outros programadores.
A Internet, claro, é parte importante do conceito. Java permite a distribuição "Just in Time" dos programas, embora muitos duvidem da utilidade deste recurso face à baixa velocidade transmissão em muitos pontos na Internet.
Em resumo, Java tem uma elegância tecnológica como não se via faz algum tempo. A Microsoft percebeu isto. E aparentemente resolveu combater primeiro a Netscape, deixando Java para um segundo round. Até incluiu uma máquina virtual Java no Explorer. Mas deverá voltar suas armas contra Java eventualmente. Motivo: Java contém uma espécie de sistema operacional e este é o principal negócio da Microsoft, a raiz da ligação com o conjunto de usuários.
Outra empresa que não deve estar vendo Java com bons olhos é a Intel. Fabricante da linha de microprocessadores Pentium (ou x86) a Intel é líder absoluta em seu mercado. Parte desta liderança é garantida pela sua linguagem de máquina, usada por todos os programas para PC. O requisito da compatibilidade garante que os usuários destes programas comprem sempre micro-processadores da mesma marca. Já programas em Java tem uma linguagem de máquina própria: os chamados Byte-codes Java. Se Java realmente pegar, é provável que micro-processadores eventualmente passem a usar esta linguagem de máquina. Isto faria os programas Java rodarem bem mais rápido. De fato, muitos fabricantes já estão trabalhando no desenvolvimento destes processadores. Nesta área, a Intel é apenas mais uma.
Os sistemas de segurança de redes locais de computadores costumam distingüir entre o que está dentro da rede local, considerado confiável; e o que está fora. Criou-se até o termo "firewall" para designar o equipamento que funciona como barreira entre a parte confiável da rede e a parte suspeita - a Internet. Programas trazidos da Internet são suspeitos e devem ser cuidadosamente avaliados antes de serem executados.
O sistema Java veio subverter este conjunto de idéias. Os applets Java são programas trazidos de fora, muitas vezes sem o conhecimento do usuário do computador, e que são executados pelo browser, dentro da rede local. Isto faz com que estes programas tenham alguns privilégios especiais.
É claro que os idealizadores do sistema Java pensaram nisto e incluiram dispositivos de segurança para impedir o uso de Java em ataques do tipo "Cavalo de Tróia". Mas nem tudo foi contemplado, como sugere um estudo do sistema realizado pelo Princeton Group. Este grupo detectou algumas táticas de ataques possíveis, embora nenhum exemplo destes ataques tenha sido encontrado na Internet até o momento.
Um ataque viável é executar uma classe localizada no cache em disco de programas tipo Netscape. Estes programas costumam manter dezenas de arquivos trazidos da Internet no disco local, para obter uma melhor performance. Você poderá encontrar estes arquivos no diretório \netscape\cache do seu disco. Como estas classes Java estariam no disco local, elas seriam consideradas confiáveis pelo sistema de segurança de Java, que permitiria o acesso a disco e à rede local. As possibilidades são muitas: o programa poderia bisbilhotar seus arquivos pessoais, se conectar com algum outro computador e passar suas informações confidenciais, tentar se logar em algum serviço local testando senhas aleatórias ou explorar falhas de segurança conhecidas em alguns serviços, como algumas versões do SMTP. Como o programa seria executado de dentro da rede local (pelo browser), o firewall não poderia detectar ou impedir sua ação.
Uma outra possibilidade interessante é o uso de computadores de navegadores para processar alguma tarefa intensiva em computação, como a quebra de chaves. Ao visitar um site com um applet deste tipo, você estaria emprestando seu computador para fazer cálculos para algum hacker, sem nem mesmo saber disso. Embora relativamente inofensivo para o navegador, este ataque é potencialmente perigoso para sistemas de criptografia, pois permite o acesso a computação gratuita em quantidades difíceis de calcular.
Se cuidem, chaves de 40 bits!
Interessados em mais detalhes sigam este link para a página de David Hopwood, onde as falhas de segurança da máquina virtual Java são analisadas.
Particularmente interessante é a página de Applets Inconvenientes, que mostra o quão irritante e destrutivo pode ser um Applet Java (com exemplos!).
Uma das decisões importantes no projeto de um sistema operacional seguro é como usar os modos protegidos de execução. Sistemas operacionais normalmente tem dois ou mais modos de operação. O chamado "Kernel Mode" é um modo onde o programa tem vários privilégios de acesso aos recursos da máquina. Já o "User Mode" executa as operações com uma série de restrições.
O "Kernel Mode" normalmente executa as partes mais delicadas do sistema operacional. O código rodado neste modo deve ser cuidadosamente analisado e testado, pois qualquer bug pode derrubar todo o sistema.
Já programas em "User Mode" tem um acesso restrito a memória e recursos de outros programas. Falhas em "User Mode" normalmente redundam em término do processo com erro, sem que outras tarefas rodando ao mesmo tempo sejam prejudicadas.
Na nova versão do Windows NT, a 4.0, a Microsoft optou por mover toda a interface gráfica do sistema (GDI) de "user mode" para "kernel mode". A idéia foi ganhar desempenho, reduzindo o número de transições entre "Kernel" e "User modes", que são um pouco demoradas. O resultado foi uma GDI bem mais eficiente.
Só que, ao fazer isto, passaram a ser executados em modo privilegiado todos os "Drivers" gráficos. Estes, desenvolvidos pelos fabricantes de placas gráficas e impressoras, nem sempre são escritos com o necessário cuidado para programas executados em "Kernel mode". Fabricantes de hardware normalmente não são grandes escritores de software. São comuns as falhas nestes drivers. Assim, se você vai instalar o NT 4.0, é bom dar uma boa olhada no driver da sua placa gráfica.
Veja tb:
Se você pegar um saco de areia e for derrubando os grãos um a um, sempre no mesmo lugar, vai formar um montinho de forma cônica. A pilha porém, não se forma de maneira uniforme. Os grãos que caem vão se acumulando próximo ao topo, até que a adição de um grão extra gera uma pequena avalanche: é a catástrofe. O número de grãos que caem até a próxima avalanche é indeterminado, não importa o quão controlada seja a sua adição.
Esta pequena experiência demonstra um tipo fenômeno muito comum na natureza: os sistemas auto-organizados críticos. Um sistema pode parecer estável, mas de repente uma pequena alteração desencadeia outras mudanças de proporções muito maiores. A pilha de areia é o exemplo mais comum deste tipo de fenômeno.
E não são só os sistemas físicos que funcionam desta maneira. Muitos sistemas sociais tem a mesma característica. É comum um pequeno incidente desencadear reações desproporcionais. O atraso de um trem terminar em vandalismo de estações e trens, a queda do muro de Berlim, o desencadeamento de uma guerra: todos eventos inesperados desencadeados por pequenas alterações no sistema social. Tensões acumuladas por baixo de uma aparente estabilidade são subitamente liberadas.
Outra área onde este tipo de fenômeno é particularmente frequente é o clima. Durante anos e anos, a liberação de CFCs na atmosfera pareceu não causar nenhum dano. De repente, um enorme buraco surgiu na camada de ozônio sobre o polo sul. Embora a ligação entre o CFC e a camada de ozônio não esteja totalmente comprovada, climatologistas acreditam que aconteceu uma ruptura de um equilíbrio crítico. Eles temem que algo semelhante possa acontecer com o efeito estufa: um aquecimento global mais ou menos repentino resulte de anos e anos de liberação de gases de combustão e outros poluentes.
Os equilíbrios críticos são as vezes bem desagradáveis. As pessoas preferem acreditar que os fenômenos se comportam de maneira linear, de modo que elas tenham a impressão de estar com tudo controlado e de ter tempo para tomar alguma providência, caso necessário.
É esta esperança, a de que os sistemas social e ambiental funcionam de maneira linear, é que permite que as pessoas vivam com alguma tranquilidade. As elites gostam de achar que terão tempo para fazer alguma coisa para minimizar as tensões sociais ou os problemas ambientais, caso estes problemas comecem a incomodá-los demais. A má notícia é que as "avalanches" podem ter dimensão e velocidade inesperadas.
Veja:
Self-Organized Criticality
O próximo passo é um sistema operacional orientado a objetos. A Orientação a Objetos consiste em agrupar os dados de uma entidade lógica - um objeto - com as rotinas necessárias para operar e transformar estes dados - seus métodos. Esta é a técnica mais moderna e indicada para lidar com a crescente complexidade de programas de computador, muitos deles com mais de um milhão de linhas.
A boa técnica de Orientação a Objetos dita que apenas a interface de um objeto deve ser acessível a outros objetos. Deste modo o objeto pode ser alterado sem perturbar o funcionamento de outros (desde que a sua interface seja mantida, claro). É o que se chama de encapsulamento.
Este modelo funciona muito bem dentro de programas, mas encontra dificuldades quando extendido para interações entre programas diferentes. O problema é que os sistemas operacionais não foram escritos para suportar este tipo de extensão.
Para corrigir esta dificuldade, a Microsoft já lançou uma série de tentativas diferentes. Começou com OLE (Object Linking and Embeding). Depois veio o OLE 2.0 (nada a ver com o OLE 1.0, exceto o nome). OLE 2.0 permitia a exposição de interfaces geradas pela linguagem C++ na forma de tabelas de métodos. Depois veio o OLE Automation.
Surpreendentemente, o modelo de maior sucesso foram os chamados VBX, elementos da linguagem Visual Basic, que nem é orientada a objetos. Aproveitando a onda, a MS lançou os OCX, versões de 32 bits dos VBX. A nova moda são os Active X, OCX que podem ser baixados por browsers via Internet.
Estas constantes mudanças irritaram alguns programadores, atolados em pesados livros sobre novas tecnologias que são descartadas a cada 6 meses. OLE 2.0 tem vários problemas: é específico para a linguagem C++, não permite o polimorfismo (derivação de objectos a partir de um ancestral) e exige recompilação de programas no caso de alteração da interface. Muitos não entendem porque não é adotado o CORBA, um modelo de objetos mais moderno e suportado por outras plataformas.
Uma nova opção é a adoção da tecnologia JAVA como interface de comunicação entre objetos. JAVA é naturalmente orientada a objetos, é suportada em multiplos sistemas operacionais e sua semelhança com a linguagem C++ facilita o aprendizado. O problema de desempenho de JAVA, uma linguagem interpretada, parece estar sendo contornado por técnicas de otimização. A empresa Asymetrix já tem um otimizador dos byte-codes JAVA que permite um desempenho bem razoável. Outras empresas estão trabalhando em projetos semelhantes.
Parece que a linguagem JAVA tem sorte: criada para escrever sistemas operacionais de eletrodomésticos, como torradeiras e fornos de micro-ondas, ela está sendo usada de muitas maneiras não antecipadas pelos seus criadores.