Desenvolvimento

Ξ Deixe um comentário

Linguagens de Programação Dinâmicas no Ambiente Corporativo

publicado por Cezar Taurion

Quando pensamos em desenvolvimento de aplicativos em uma empresa, imediatamente associamos esta idéia a sistemas corporativos, que suportam os processos do negócio. Estes sistemas são desenvolvidos pelos métodos tradicionais de desenvolvimento e governança que enfatizam eficiência, estabilidade, manutencibilidade e qualidade do código. São sistemas feitos para durarem muitos e muitos anos, até mesmo décadas.

Mas existem outros sistemas, oportunísticos, que precisam ser desenvolvidos rapidamente para aproveitar uma oportunidade de negócio e que demandam métodos muito mais ágeis e leves de desenvolvimento. Estes sistemas podem, inclusive, serem protótipos para testar viabilidade de um novo negócio ou serem usados apenas uma única vêz, como para apoiar determinada ação comercial em um grande evento esportivo. Sua vida útil é curta e geralmente é mais vantajoso substituí-los que mantê-los. Não são escritos para serem mantidos e atualizados, como os sistemas corporativos. Além disso, os processos que os suportarão eventualmente ainda estão no campo das idéias ou são ambiguos. E como experimentos e novas idéias são sujeitos a falhas, algumas vezes os sistemas oportunísticos poderão ser simplesmente descartados no meio do seu desenvolvimento. Portanto, devem ser encarados de forma diferente.

O cenário de negócios atual demanda velocidade de resposta. Quando a empresa exige esta resposta e TI responde pelos métodos tradicionais, os executivos de negócio tendem a bypassar TI e contratar desenvolvimento externo. Para evitar que isto ocorra, TI deve participar das iniciativas inovadoras, criando métodos mais ágeis e adotando tecnologias que permitam desenvolver sistemas oportunísticos, contribuindo assim, não apenas para manter o dia a dia dos negócios, mas também para testar novas idéias e alavancar novos negócios.

Muitas vezes os sistemas oportunísticos atuarão como front-end de sistemas corporativos, mas não existem processos a serem aprendidos e traduzidos para código de computador, como nestes, mas experimentos que devem ser idealizados e testados em conjunto pelas áreas de negócio e TI. Para desenvolver estes sistemas, TI tem que assumir um papel de facilitador e estar plenamente envolvido com o negócio

Neste contexto podemos pensar em usar novas linguagens de desenvolvimento, mais adaptadas a este rapido desenvolvimento. Para os sistemas corporativos a linguagem dos anos 70 e 80 era Cobol. Depois passamos a usar Java e aplicações .NET. Hoje cerca de 90% a 95% das aplicações corporativas escritas na última década foram desenvolvidas em cima de plataformas baseadas em J2EE e .NET. E, segundo estimativas, algumas dezenas de bilhões de código Cobol ainda estão rodando.

Com o surgimento de novas start-ups voltadas para Internet, começou-se a ver um uso mais intenso das chamadas linguagens dinâmicas, como Ruby, Perl, PHP, Python e JavaScript. Estas linguagens são altamente flexíveis e mais fáceis de aprender que as linguagens tradicionais e aceleram em muito o tempo de desenvolvimento. Linguagens como Perl e PHP não precisam de conhecimentos de Orientação a Objetos (um programador “procedural” se sente confortável programando nelas) e por exemplo, Python tem uma sintaxe simplificada, que permite rapidamente a pessoas que não são programadores desenvolverem aplicações.

Em tempo, as linguagens de programação podem ser descritas como estáticas ou dinâmicas. Existem diversos fatores técnicos que as diferenciam, mas dois são emblemáticos. Um é o fato das linguagens estáticas vincularem (bind) as estruturas de memória aos tipos de dados que serão armazenados em tempo de compilação. Por exemplo uma estrutura de dados é definida como inteira ou de ponto flutuante na compilação e não pode ser alterada depois. As linguagens dinâmicas fazem esta distinção em runtime ou no momento da execução do programa. O segundo fator é que as linguagens dinâmicas incluem um “engine” que permite utilizar uma área de dados como código executável, modificar o comportamento de um objeto ou mesmo expandir as funcionalidades “bulit-in” em tempo de execução.

Destas, uma começa a chamar atenção: Ruby. Ruby é uma linguagem de programação dinâmica, de alto nivel, orientada a objetos. Ainda é relativamente desconhecida nos ambientes corporativos, mas seu uso em aplicações de missão crítica em empresas de grande porte da Internet como Groupon e Shopify (e o Twitter original) demonstram que tanto a linguagem (Ruby) como o framework Web (Rails) podem sustentar negócios de tamanho significativo. O JRuby é uma implementação da linguagem Ruby para uso sob uma JVM (Java Virtual Machine) e pode ser uma excelente alternativa para desenvolver sistemas oportunísticos em ambientes corporativos. Um cenário possivel: o back end em Java (sistema corporativo), desenvolvido por métodos formais e o front end em JRuby, desenvolvido de forma mais rapida.

Entretanto, apesar do recente entusiasmo pela linguagem Ruby, as tecnologias concorrentes como PHP, Python e JavaScript continuam fortes alternativas tecnológicas para o desenvolvimento de sistemas oportunísticos. Não podem ser ignoradas.

Olhando este cenário, fica claro que a área de TI continuará a ter capacitação e processos para continuar desenvolvendo sistemas corporativos baseados em Java ou .NET, mas também deve estar preparada para desenvolver em novas linguagens. Portanto, o resumo da história é simples: TI não pode ficar apenas apoiando o dia a dia da empresa com sistemas corporativos, mas também deve contribuir de forma decisiva para iniciativas inovadoras, testar novas idéias e lançar experimentos. Para isso precisa adotar processos diferentes dos tradicionais e dispor de capacitação em linguagens dinâmicas. O ambiente corporativo não será mais o mesmo: embora Java e .NET continuem fortes nas empresas, veremos mais e mais desenvolvimento em linguagens como Ruby.

Autor

Cezar Taurion é head de Digital Transformation da Kick Ventures e autor de nove livros sobre Transformação Digital, Inovação, Open Source, Cloud Computing e Big Data.

Cezar Taurion

Comentários

You must be logged in to post a comment.

Busca

Patrocínio

Publicidade



Siga-nos!

Newsletter: Inscreva-se

Para se inscrever em nossa newsletter preencha o formulário.

Artigos Recentes