Quando temos um projeto de desenvolvimento de software em mãos, caso o cliente não tenha o requisito técnico especificando qual a linguagem, avaliamos as diversas tecnologias disponíveis, procurando utilizar a que vai trazer mais retornos para o projeto em questão.
Esta série de artigos contempla a comparação entre as mais importantes linguagens de programação utilizadas para o desenvolvimento de sistemas web. Para uma avaliação completa, devemos escolher os fatores relevantes para realizarmos uma comparação direta, visando racionalizar nossa decisão. Temos que ter o objetivo em mente, sabendo se o que queremos é rapidez para o sistema entrar no ar, escalabilidade, custo menor, etc.
Para as comparações que serão feitas nas próximas colunas, escolhemos os itens escalabilidade, velocidade de desenvolvimento, manutenabilidade, facilidade de aprendizado, custo total de propriedade e portabilidade, explicados a seguir.
O conceito geral de escalabilidade refere-se a habilidade de uma aplicação continuar funcionando bem quando seu tamanho aumenta para atender as demandas dos usuários. Como o conceito geral é vago, para fins de comparação iremos definir escalabilidade como a capacidade da aplicação continuar funcionando conforme o número de usuários do sistema cresce, causando maior número de acessos simultâneos no ambiente.
A velocidade de desenvolvimento é um item extremamente importante, em função dos prazos sempre apertados da TI e do custo adjacente. Este fator corresponde ao esforço em horas gasto pelo programador para implementar determinada funcionalidade no desenvolvimento do sistema.
Manutenabilidade corresponde a facilidade e ao esforço necessário para manter o sistema, sendo que manter significa realizar alterações necessárias e novas implementações depois que o sistema foi para o ar. Isto implica não apenas em novas funcionalidades, como também em alterações de contexto, bancos de dados, servidores, retirar funcionalidades e alterar layouts.
A facilidade de aprendizado de uma linguagem corresponde ao número de horas necessárias para um programador conseguir aprender a linguagem a ponto de conseguir implementar as funcionalidades necessárias. Há linguagens que exigem um estudo maior e linguagens que com algumas horas já se consegue realizar algumas implementações, como o caso dos scripts. Este item interfere diretamente em custos de treinamento e facilidade em se encontrar profissionais que dominam a linguagem no mercado.
O custo total de propriedade (TCO - Total Cost of Ownership) refere-se ao valor necessário para se manter a aplicação rodando com determinada linguagem. Este item inclui custos como licença de uso e de desenvolvimento, licença de uso da IDE, licença de uso do servidor e outros custos necessários para se manter a aplicação no ar.
Por último escolhemos o item portabilidade, muitas vezes não necessário, dependendo dos objetivos da aplicação desenvolvida. Este fator abrange a facilidade em se utilizar a mesma aplicação desenvolvida em ambientes diferentes, como celulares, PDAs, outros servidores e outros sistemas operacionais, sem a necessidade de se reescrever a aplicação.
Tendo estes seis itens em mãos, quando formos escolher determinada linguagem para implementar nosso projeto, devemos avaliar qual a relevância de cada fator para o projeto em questão. Por exemplo, para uma aplicação de cadastro de pedidos o item portabilidade pode ter grande prioridade, em função da aplicação rodar em diferentes plataformas. Cada projeto atribuirá diferentes pesos para cada um dos fatores, e em função destes pesos devemos escolher a linguagem adequada.
Um fator que quase sempre possui grande influência na decisão, mas que não é intrínseco à linguagem, é o ambiente já utilizado no cliente. Se o cliente possui um legado em Progress e necessita desenvolver uma nova aplicação que deve ser totalmente integrada ao legado, o Progress já sairá em grande vantagem, pelo simples fato de já estar sendo amplamente utilizado na corporação, o que facilita as integrações. Este item será deixado de lado nas comparações, visto que não corresponde a um fator de vantagem ou desvantagem intrínseco da linguagem, e sim do ambiente ao qual ela está inserida.
As próximas colunas realizarão comparações imparciais utilizando os fatores citados. As comparações serão entre algumas linguagens, como Java, PHP, Dot Net e Ruby. É importante mantermos a imparcialidade, visando objetivivamente a comparação dos fatores acima, para não escolhermos a linguagem em função de dogmas ou apreciações subjetivas.