Algumas perguntas (provocações?!) para os desenvolvedores
Eis algumas perguntas que fiz a mim mesmo alguns anos atrás:
- Usar a linguagem “Java” para desenvolver projetos independentes de plataforma faz sentido, mas porque aplicações desenvolvidas com uma determinada versão do J2SE não funciona com outra?
- Que sentido tem usar .NET se ele funciona “direito” (quem dera) apenas no Windows?
- Além da alegação de que a Microsoft e a Oracle têm produtos desenvolvidos em ambientes gerenciados (SQL Server 2005 e o próprio Oracle 8i em diante), qual outro produto “sério” foi feito em Java ou .NET?
- Que garantias, além da propaganda, você tem para afirmar que o SQL Server 2005 e o Oracle 8i (e os demais) foram realmente desenvolvidos em Java ou .NET? A Microsoft e Oracle disponibiliza os códigos-fonte desses produtos?
- Como é que você pede a performance de suas aplicações Java e .NET? Pelo número de requisições que podem ser atendidas por um web server?
- Se sua aplicação feita em Java ou .NET atingir o estado de “memória insuciente” o que você faz? Conserta a aplicação ou coloca mais memória no servidor?
- Você prefere performance e confiabilidade ou facilidades e produtividade?
- Como é que você garante que seus objetos (que possuem finalizadores) sejam destruídos o mais rápido possível no Java e no .NET?
- Alguma vez já usou um profiler? Você sabe o que é um profiler?
- Quantos pontos de configuração tem o seus sistemas? Você precisa configurar mais de um serviço pra sua aplicação funcionar bem?
- Você realmente confia no que mega-corporações te dizem?
Claro que faço essas perguntas para dirigir as conclusões para os aspectos negativos dos ambientes gerenciados. A facilidade com que podemos ignorar o gerenciamento de memória (não estou dizendo que “deveríamos” ignorá-lo!) aumenta a produtividade. Ou seja, você entrega o “monstrinho” com mais rapidez. Claro que um framework gigante tem tudo o que você poderia querer. Claro que você terá menos problemas em fazer sua aplicação funcionar (mesmo que não fucione exatamente como desejaria!)… O que estou fazendo aqui é tentar despertar nos colegas profissionais algo que me é mais querido: A busca por performance e confiabilidade.
Embora Java e .NET (que, não importa o que a Microsoft diga, é baseado no Java!) tenham lá seus atrativos, para o desenvolvedor mais prudente elas causam mais danos do que ajudam… Não tenho visto um sistema sequer, que tenha sido desenvolvido nesses ambientes, que não tenha problemas sérios de gerenciamento de memória. De fato, em 2 empresas que trabalhei, onde a decisão pelo uso do Java ou .NET foi mais gerencial do que técnica (tipo: o chefe leu na Info Exame que Java era legal!), os projetos envolvendo esses dois ambientes demonstraram serem causadores de dores de cabeça enormes, no que tange o pós-venda. O que acontecia era que clientes reclamavam que aplicações “travavam” de tempos em tempos, que servidores acusavam pouca memória em algumas poucas horas (e olha que o cliente era grandão, tinha bala na agulha para colocar a aplicarção num servidorzão!). Um dessas empresas teve até projetos cancelados, depois de alguns anos… Ou seja, pesadelos…
Desenvolver em C/C++ é trabalhoso e exige estudo, mas os resultados são previsíveis. Numa aplicação bem feita você não espera que o consumo de memória seja estratosférico (se for, tem bug… um pouco de bug hunting e você soluciona o problema!), recursos preciosos, como conexões com banco de dados, são dealocados na hora em que a aplicação manda dealocar, e com um pouco de paciência e ferramentas corretas você pode até mesmo criar rotinas ultra-rápidas. Dá trabalho, mas como dizem por ai: “tudo o que vale a pena dá trabalho”.
Falando em trabalho: Outro argumento em prol do Java e do .NET é que “não existem profissionais no mercado”. Bem… aqui tem um… O que realmente querem dizer com isso? É o seguinte: “Não existem profissionais no mercado que possamos pagar uma merreca!“. O mercado está cheio de supostos profissionais que vendem seus serviços a preço de banana e fodem com quem pode fazer um serviço de primeira… É a famosa “prostituição do mercado”… E isso é o que o mercado chama de produtividade.
Filosoficamente, eu vejo o Java e o .NET como um modelo de fé… Aqueles que gostam desses ambientes têm fé de que eles são bons o suficiente para todo o tipo de desenvolvimento… Digo fé porque a crença não tem embasamento em evidências… é como a religião. Só que o crente tecnológico cita “A Sun Microsystems é meu pastor e nada me faltará. Mesmo que eu caminhe pelo vale da morte…”.
Sorry, folks, mas vou continuar metendo o pau nessas coisas… hehe






1 – Eu sempre disse isso. O Xlancelot vive dizendo que java é o que há. Eu tambem acho, é o que há de pior. Linguagem dos infernos, lenta pra cacete (embora mais rapida hoje em dia), problemas de compatibilidade de interpretador e ainda por cima…nao adianta fazer um troço que roda em pc e arrastar pro cartao do seu celular porque naovaifunfar®. Net loss of time and money.
2 – Tem sentido usar .NET?
7 – Depende se voce pergunta a um “velha guarda” que nem a gente, a um desenvolvedor ou a um gerente de TI (eu ouvi gritarem xlancelot la atras?
)
8 – Usa uma marreta? Triturador de documentos?
)
11 – Eu nao confio nem no que voce me diz – e olha que eu te conheço faz tempo
Quanto mais no que uma micro$$$oft-from-hell me diz!!!
Alexandre,
Quanto ao ponto 11, acho que é muito bom senso seu… às vezes nem confio em eu mesmo!