Meio Bit » Baú » Miscelâneas » Desenvolvimento em Linux - Parte 1

Desenvolvimento em Linux - Parte 1

06/03/2008 às 2:50

No princípio era o verbo, e o verbo era Unix.

E do verbo se criam dois pilares, que se tornam sustentáculos de uma batalha fervilhante em ideologias e teorias, que desgastam a integridade moral de seus articulistas, tudo para colocar em evidência a falta de paciência de quem já não consegue pensar por si.

Windows e Linux muitas vezes parecem ser personagens míticos de uma guerra indefinida e sem propósito em prol de sua “justificável” (injustificável!) supremacia indefinida sobre os olhos seu Deus (Unix). Do braço direito de Deus ao Anjo da Luz da eterna discórdia, assim como o Arcanjo Gabriel e Lúcifer, Linux e Windows parecem travar uma batalha épica entre o bem o e mal, muitas vezes invertendo seus papéis, de acordo com os olhos (e a mente) do narrador.

Que seja feito o Windows

Quando a informática ainda parecia só um conceito, e computadores eram coisas que as pessoas ouviam falar, o conceito de sistema operacional já era maduro, e muitos projetos foram criados a fim de satisfazer determinados problemas, indiferente das visões “top-down” e “bottom-up”.

Daí, uma “tal” empresa chamada Microsoft, fundada em 1975 resolveu entrar de “cabeça” nessa área, que até então era dominada por outros muitos gigantes da tecnologia, e então em 1979 surgiu o Microsoft Xenix, um sistema Unix que ela pretendia usar em microcomputadores, após adquirir uma licença Unix Versão 7 da AT&T, e era um sistema Unix completo, e foi provavelmente a versão a mais difundida do sistema operacional Unix em meados dos anos 80, e até hoje parece ser ignorada das páginas da história da empresa, como um filho que foge de casa e forma uma nova família com um sobrenome totalmente novo.

Certamente o Unix não foi o primeiro sistema operacional do mundo, mais com certeza foi um dos mais importantes, principalmente pelo advento da Linguagem C, que foi (é!) amplamente utilizado pelos sistemas operacionais modernos.

O Xenix era um sistema eficiente e cheio de recursos, porém depois da decepção de não poder licenciar o Unix, a Microsoft pareceu ficar “desiludida”, assim em 1987 a Microsoft vendeu a licença do Xenix para a Santa Cruz Operation (SCO) em um acordo que deixou a Microsoft proprietária de 25% da SCO, que por sua vez portou o Xenix para os processadores 386, iniciando uma novela que teve um final muito triste para a SCO, embarcada no desejo da Microsoft de obter as patentes do Unix, entrou em um processo judicial contra a Novell, que hoje detém os direitos do Unix, e após perder o processo pediu concordata.

Aliado ao custo das maquinas RISC, o Unix não atingiu massa critica como SO em estação de trabalho, e não demandou aplicações de automação de escritório.

Enxergando um mercado promissor (os PCs) a Microsoft criou outro projeto, ainda em 1981, o MS-DOS. O DOS já havia sido criado, pela Seattle Computer Products (SCP), concorrente para o CP/M, implementado para computadores da família IBM PC, porém a versão da Microsoft foi a mais difundida das variantes.

E um mortal se torna um Deus Olímpico.

Em 1985, quando a versão 2.0 do Xenix foi liberada, foi também adicionado o suporte para processadores Intel 80286, e mesmo 2 anos antes a SCO (futura dona do Xenix) tendo portado para o processador Intel 8086, já parecia esta claro para a Microsoft que o MS-DOS seria seu “verdadeiro produto”, este por sua vez já estava em sua versão 3.1, e incorporava muito da ideologia Unix, afinal a Microsoft tinha experiência com esse sistema. Características essas que estão até hoje nos Sistemas da Microsoft, como o Windows, que é POSIX compliant. E foi nesse mesmo ano, que se iniciou esse “projetinho” chamado Windows, que era “somente” uma interface gráfica bidimensional para o MS-DOS.

Ainda em 1985, a Microsoft fez um acordo com a IBM para desenvolver o OS/2, que foi um dos primeiros sistemas de 32bits de sua época. Assim, a Microsoft passou ser uma das empresas com maior domínio e experiência em sistemas operacionais, já possuía 6 anos de experiência com o Unix, e já estava produzindo uma variante do DOS a cerca de 4 anos, e agora em conjunto com a IBM estava produzindo o OS/2. Pessoalmente chamo esse momento da história de: O Grande plano.

E a partir daí, ambos projetos DOS e Windows cresceram muito, e obviamente incorporam conceitos do Unix e do OS/2, sistemas que a MS conhecia muito bem, até que em 1990 por uma decisão do Bill Gates a Microsoft decidiu abandonar o projeto OS/2, e em Maio do mesmo ano lançou o Windows 3.x, o primeiro sucesso amplo da Microsoft. Já esse momento da história eu chamo: O Grande golpe.

De lá para cá os sistemas da Microsoft ganharam fama e cresceram em conceito, cresceram a um ponto que o “Unix e o OS/2” que faziam parte do passado da MS se tornaram irrelevantes na visão de muitos.

Os paradigmas da História.

Só por nota, o GNU foi criado em 1984, um pouco antes do que eu chamei de “O Grande plano”, então se você é um dos que afirmam que Stallman teve a idéia da criação de um sistema operacional totalmente livre, por ódio à MS ou algo parecido, por favor, se acalme.

E em 1994, a Microsoft já havia sido processada por pressionar fabricantes de equipamentos a lançar seu produto apenas para sua plataforma operacional. Então se você é um daqueles não sabem por que tanta gente carrega ódio pela empresa, bem, já pode ter uma idéia.

Claro, não vou (e nem quero) falar sobre isso, mais são só dois exemplos, que ajudam entender todo um falatório desmedido espalhado internet a fora.

Desenvolvimento em DOS

O DOS, a grande aposta da MS, fornecia uma única ferramenta de desenvolvimento: O interpretador “BASIC”. E o desenvolvimento um pouco mais “profissional” era realizado com o Macro Assembler da Microsoft (MASM), que poderia ser adquirido separado, posteriormente versões futuras incluiriam melhorias, como o Quick Basic, seguido por compiladores e interpretadores de outras linguagens como dBase, Clipper, COBOL, Fortan, Pascal e o obviamente também o C.

Foi então que a Borland, uma empresa não muito conhecida na época, criou um conceito muito importante para a Informática no geral, a IDE(Integrated Development Environment) com o lançamento do Turbo Pascal, e a vantagem do uso de uma IDE é integrar um editor de programas, um compilador e um depurador em uma única interface orientada a menus.

Entretanto o desenvolvimento em DOS possuía muitas dificuldades, como: Limite de 640KiB de RAM, modelo de memória segmentado do 8086, aritmética de 16bits, ausência de mecanismos de proteção de memória, systemcalls primitivas e a falta de bibliotecas padronizadas. Assim, as ferramentas de desenvolvimento foram sendo expandidas para fornecer todas as bibliotecas e componentes necessários á criação de aplicações “reais”, de modo que programas escritos em uma IDE não poderiam ser compilados em outra.

Desenvolvimento em Windows.

Como disse acima, o Windows era só um tipo de interface gráfica bidimensional para o DOS, e não havia conquistado muito espaço no mercado, até porque nessa época (1985), a computação era quase que exclusivamente direcionada às empresas, e muitas vezes um “shell” não trazia nenhuma vantagem técnica para as mesmas. Porém com o surgimento do Windows 3.0 (1990), foi incorporando uma quantidade suficiente de recursos para atrair usuários e desenvolvedores, eliminaram o limite de 640KiB, criaram um conjunto mais rico de systemcalls e bibliotecas padronizadas para gráficos, multimídia e impressão, facilitando o desenvolvimento de aplicações para o usuário final.

Foi então que uma nova ferramenta surgiu: o Visual Basic. Antes dele o desenvolvimento para Windows utilizava as mesmas ferramentas do MS-DOS, freqüentemente associados ao DOS-Extenders para utilizar mais memória RAM e como as bibliotecas padrão do Windows eram de baixo nível, de modo que um programa simples necessitava de centenas de linhas de código, o VB incorporou bibliotecas de nível mais alto, também um desenhador visual interativo de formulários, automatizando a geração de códigos para a interface gráfica.

O Windows só se tornou popular o suficiente para justificar a criação de IDEs visuais depois que houve uma massa critica de aplicações de produtividade pessoal, como editores de planilha, que era um dos pontos fracos do Unix e OS/2.

Nasce um novo pilar: Windows NT.

O Windows NT, e seus sucessores, foi um sistema operacional totalmente novo, não uma extensão para o DOS como o 3.x, 95,98 e ME, focado no mercado corporativo. Tornou o desenvolvimento em Windows ainda mais fácil ao incorporar novos systemcalls, além de abandonar o modelo de memória segmentado do 8086 e 80286.

Com a expansão da quantidade de systemcalls do Windows, e o surgimento de outros IDEs visuais, fez-se necessário um mecanismo melhor para a construção de bibliotecas de componentes. Assim, a Microsoft definiu os OLE Controls, (OCX) para substituir o VBX e suportar vários IDEs da empresa.

Porém o OLE Controls teve sua definição em baixo nível, gerando o chamado DLL Hell.

A Cultura Windows

Como o SO fornecia apenas componentes de baixo nível e nenhuma ferramenta de apoio ao desenvolvimento, os IDEs tornaram-se “inchados” e incompatíveis entre sí. Lembrando, que mesmo os IDEs da Microsoft deviam ser adquiridos separadamente do sistema.

Os problemas gerados pelo DLL Hell, digo, padrão OCX fizeram com que cada IDE fornecesse suas próprias bibliotecas de componentes, aproveitando quase nada do know-how dos programas ao mudar de IDE. E muito pior, uma nova versão de uma IDE era freqüentemente incompatível com aplicações desenvolvidas com versões anteriores do mesmo IDE.

Renasce um titã.

O sistema Unix, por sua vez, mestre dos mestres, a principio já fornecia desde sempre varias systemcalls, bibliotecas padronizadas de alto nível e vários utilitários de apoio ao desenvolvimento.

O desenvolvimento em Unix era basicamente feito em C, e como o desenvolvimento do próprio SO era baseado em C, e não em assembler como o DOS e o Windows, naturalmente as bibliotecas eram de utilização mais fácil pelos programadores.

As bibliotecas gráficas do Unix, baseadas no X Windows System, não eram de baixo nível como as bibliotecas do Windows, de modo que era viável criar aplicações sem construtores visuais de formulários. Infelizmente não havia um único padrão de Toolkit devido às disputas entre os grandes fornecedores de sistemas Unix.

Foi então, que nasceu o Linux, a partir da necessidade de um clone do Unix compatível com PCs padrão, e da tentativa da AT&T em bloquear o acesso gratuito do UNIX nas universidades. E claro, ele não veio para ser um “Windows Killer” como muitos teimam em afirmar.

Focado em ambientes multiusuários e servidores de rede, para usuários de elevado nível técnico, o Linux, dentro do grau de especialização e demandas mais rígidas de confiabilidade de servidores, bibliotecas e ferramentas de apoio se tornaram mais importantes do que IDEs visuais, além de que, a necessidade de suportar múltiplas plataformas de hardware dificultava a construção de ferramentas visuais.

Foi ai que o Linux e o GNU se encontraram, o Linux entrou como kernel para aquele sistema operacional iniciado em 1984, que já estava pronto, porém “só faltava” o kernel. Assim, um conjunto de ferramentas de desenvolvimento GNU, como editores de programas, compilador (GCC), depuradores, bibliotecas, foram incorporados ao Linux. E por rodar em computadores baratos, rapidamente gerou demanda para aplicações voltadas ao usuário final.

Desenvolvimento Windows

Desenvolvimento Linux

IDEs Monolíticos, que tem que realizar todas as tarefas, e integrar todos os componentes.

IDEs leves, que atuam como ponto de integração para softwares de terceiros, acrescendo em produtividade. É papel do sistema prover os recursos (bibliotecas, etc..) para o programa.

Aplicações “amarradas” ao IDE.

Aplicações “amarradas” somente ao Linux (ou nem em isso).

Foco em assistentes e em “não precisa ser um programador”

Foco em automação e em “saber o que se está fazendo”

Pacotes integrados

Integrar programas de origens diferentes

Dependência do fornecedor

Escolha (e mudança) do fornecedor

Instaladores autônomos e com todos os recursos necessários para rodar o programa.

O sistema se responsabiliza pela instalação e os recursos adicionais ficam por conta do administrador do sistema, ou do software de gerenciamento. Gerando às vezes os muitos “problemas de dependências” ao se instalar programas.

Como cada programa provê todos os recursos para “si”, os programas se tornaram inchados, e a cada versão costuma-se aumentar os requisitos de hardware do programa, mesmo com poucas melhoras significativas.

Os programas são leves e rápidos, e os requisitos de hardware costumam variar muito pouco, a não ser que seja implementado um número muito maior de funcionalidades do mesmo.

A fim de melhorar a desempenho dos programas, o próprio sistema se tornou “inchado” para incorporar diversas as características dos programas e tecnologias.

A performance dos programas é condicional ao próprio programa, e o sistema, assim como os programas tende a manter pouca variação de “tamanho”.

Por prover diversos recursos para diversas tecnologias, o desenvolvimento de novas ferramentas se tornou mais fácil e rápido.

Pelas dificuldades de implementação de novas tecnologias e por acordos comerciais com a Microsoft, o desenvolvimento, apesar de rápido e eficiente não foi desenvolvido muitas ferramentas para o sistema pelas grandes fabricantes de software.

Aliado ao alto preço do sistema, problemas relacionados a licenciamento de software, e segurança, se fez necessário a busca de uma alternativa para projetos em longo prazo.

Aliado a crescente insatisfação com o Windows, e pelas facilidades dos licenciamentos dos softwares do sistema, surgiu um numero grande de desenvolvedores garantindo a viabilidade para o suporte do sistema para projetos de longo prazo

Muito pode ser citado nessa tabela, porém é importante ressaltar que a decisão da plataforma para o desenvolvimento de aplicações deve ser feita de forma minuciosa, de modo que seja possível aproveitar o máximo das “qualidades” de cada sistema, a fim de viabilizar “ao máximo” todo o escopo do projeto em sí.

Publico alvo, também é um fator de extrema importância, mais também devem ser consideradas as previsões de curto ou longo prazo para esse tipo de situação.

Outra coisa interessante de salientar é que pela facilidade de personalização do sistema Linux, muitos projetos estão surgindo junto ao sistema como uma aplicação paralela ao sistema Windows, por exemplo, o Gparted usa um Live CD em Linux capaz de oferecer diretamente todos os recursos de seu programa independente da plataforma principal do PC, podendo então ser um concorrente direto de um aplicativo nativo ao Windows (Partition Magic), e também considerar como “publico alvo” essa plataforma. Claro de modo geral desconsiderei as noções de programas multiplataforma, que entram em um escopo diferenciado nesse tipo de analise.

Na próxima parte do artigo, falarei um pouco mais sobre as ferramentas de desenvolvimento do Linux, com alguns exemplos práticos, e também sobre outras vantagens e desvantagens de desenvolver para essa plataforma.

Fonte: Wikipedia e Lozano

relacionados


Comentários