1. Histórias e controvérsias

Se você saca dinheiro num caixa eletrônico, confere seu extrato bancário na internet ou recebe uma conta telefônica, você está usando o COBOL, mesmo sem saber. A Common Business Oriented Language é (de longe) a linguagem de programação mais utilizada em sistemas críticos de grandes empresas. Mas é também a mais criticada, comentada e controversa no mundo da Tecnologia da Informação.

Em maio de 1959, por iniciativa do governo americano, fabricantes, usuários e pesquisadores da ciência da computação formaram um comitê para desenvolver uma linguagem de programação universal, que pudesse ser adotada em diferentes equipamentos e que facilitasse o desenvolvimento e a manutenção de sistemas para ambientes comerciais.

O custo de manutenção de sistemas do departamento de defesa crescia à medida que aumentava o uso de computadores. A redução desses custos também beneficiaria a indústria pois facilitaria a comercialização de seus equipamentos para um mercado mais amplo.

O comitê ganhou o nome de CODASYL (Conference on Data Systems Languages) e passou a trabalhar na junção de duas linguagens de programação que vinham sendo desenvolvidas isoladamente: A FLOW-MATIC, desenvolvida por Grace Hopper na Remington Rand, e a COMTRAN, desenvolvida por Bob Berner na IBM.

Foi o próprio Berner que sugeriu o nome COBOL, mas a influência da FLOW-MATIC, de Hopper, foi maior no produto final. O COBOL[1] surgiu como uma linguagem “autodocumentável”, com sintaxe parecida com o inglês, e organizada em divisões, seções parágrafos e sentenças, semelhante a um texto comum.

[1] Gramaticalmente faria mais sentido fazer referencia “a” COBOL, uma vez que se trata de uma linguagem. Neste livro, no entanto, optamos por usar “o COBOL” por ser a forma mais comum em língua portuguesa.

Evolução

Um primeiro documento detalhando a linguagem foi publicado pelo CODASYL em 1960. Mas havia ainda alguma omissões que levaram os fabricantes a implementar as primeiras versões da linguagem com diferenças significativas de semântica e sintaxe em seus equipamentos.

Em 1968, o ISO (International Standard Organization) e o ANSI (American National Standard Institute) se uniram para propor um novo padrão, que incorporasse as melhores soluções de cada fabricante. Desse trabalho surgiu a versão que ficou conhecida como COBOL/68 ou COBOL/ANS.

Desde então, o COBOL vem passando por diversas revisões, incorporando conceitos e recursos que surgiram com o desenvolvimento de equipamentos e sistemas operacionais. Cada uma dessas revisões recebe o nome do ano em que foram publicadas. Os padrões mais significativos, até o momento, são conhecidos como COBOL/74, COBOL/85, COBOL/2002 e COBOL/2014. Esses dois últimos incorporam o conceito de orientação a objetos, mas a maior parte dos programas escritos (ainda hoje) em COBOL adotam o modelo procedimental clássico.

O COBOL no mercado

O governo americano foi determinante para a popularidade inicial do COBOL ao exigir que todos os fornecedores de computadores para o governo oferecessem um compilador para essa linguagem. Mas outros fatores também contribuíram para sua rápida aceitação no mercado:

  • Por ser orientada a dados estruturados, ela se adaptava bem às necessidades de processamento comercial, principalmente pela facilidade com que representava informações de negócio
  • O uso de uma “gramática” fortemente baseada no inglês facilitava a formação de novos profissionais, diminuindo os custos associados a desenvolvimento e manutenção de sistemas
  • Por ser uma linguagem independente de fabricante, um programa escrito em Cobol para um computador podia ser facilmente adaptado para rodar em outro, o que preservava os investimentos realizados

Ainda hoje, uma das principais características do COBOL é a portabilidade. É possível, por exemplo, migrar todo um sistema construído num mainframe da IBM e processá-lo num servidor Linux, com pouquíssimas alterações.

Grandes empresas contam com sistemas críticos que foram desenvolvidos décadas atrás e que passaram de equipamento em equipamento, de geração em geração.

Uma pesquisa global encomendada pela Micro Focus em 2013[1] mostra que o COBOL está presente em 90% das empresas listadas na Fortune 500: Grandes bancos, empresas de aviação, concessionárias de serviço público, agências de governo, operadoras de cartão de crédito, grandes redes de varejo, montadoras de automóveis… grandes corporações em geral mantêm 70% de toda a sua lógica de negócios escrita em COBOL.

O momento decisivo

Se houve um momento em que o COBOL foi realmente ameaçado, esse momento aconteceu no final dos anos 1990, numa “crise” que ficou conhecida como bug do milênio.

Naqueles dois ou três anos que antecederam o ano 2000, muitas das grandes empresas usuárias do COBOL cogitaram seriamente a possibilidade de substituí-lo. Afinal, se havia necessidade de varrer todos os programas em busca de anos com dois dígitos, e depois alterá-los, testá-los e homologá-los, por que não simplesmente escrever tudo de novo em outra linguagem?

O que pesou na decisão final foi preço e retorno do investimento. Reescrever um desses grandes sistemas, na prática, significava:

  • Documentar a funcionalidade de dezenas de milhares de programa, centenas de milhões de linhas de código e todos os dados permanentes e transitórios envolvidos;
  • Selecionar e adquirir uma plataforma de hardware e/ou software para desenvolvimento, teste e produção que oferecesse a mesma capacidade de processamento, segurança e estabilidade;
  • Especificar, escrever, testar e homologar todo o sistema na nova plataforma, garantindo as integrações anteriores, internas e externas;
  • Planejar a implantação em roll-outs sucessivos que garantissem a continuidade da operação da empresa, considerando inclusive a duplicação de manutenções evolutivas mandatórias, enquanto durasse a transição
  • Treinar e apoiar milhares de usuários

Muitos sistemas departamentais e periféricos de fato migraram para pacotes ERP e/ou aplicações desenvolvidas em plataformas mais novas. Mas os sistemas críticos – aqueles que respondiam pela core do negócio – foram apenas renovados para o ano 2000 e continuam funcionando até hoje.

Críticas e controvérsias

Talvez existam poucas linguagens de programação tão controversas quanto o COBOL. E essa situação não é recente. O meio acadêmico nunca demonstrou muito interesse pelo desenvolvimento de uma linguagem que pretendia atender a processos comerciais, financeiros e administrativos em geral. O próprio CODASYL foi formado, basicamente, por empresas e agências do governo americano. Nesse distanciamento entre o meio acadêmico e a necessidade das empresas pode estar a origem de diversas críticas que, ainda hoje, ouvimos sobre essa linguagem.

O COBOL foi projetado para facilitar a leitura dos programas, seguindo uma linguagem semelhante ao inglês.

Não podemos esquecer que, quando essa linguagem surgiu, a ciência da computação dependia predominantemente de linguagens simbólicas, de baixo nível, dominadas por engenheiros que, muitas vezes, haviam trabalhado no projeto do hardware. O COBOL buscou tornar o trabalho de programação mais acessível, mais intuitivo, mais portável e menos dependente das características de cada máquina, uma vez que, comparado às linguagens anteriores, seus comandos eram quase autoexplicativos.

Com o passar do tempo, justamente esse modelo sintático foi o causador das primeiras críticas: o COBOL passou a ser considerado “verborrágico”, com suas mais de 300 palavras reservadas e a necessidade de codificação de “frases com verbo e predicado” para realizar operações que as linguagens mais modernas resolvem de forma mais simples.

Outra crítica se deve ao fato de que o COBOL é uma linguagem procedural, num mundo orientado a objetos. É inegável que linguagens como Java ou C++ foram projetadas para facilitar a implementação de abstracões, encapsulamentos, heranças e polimorfismos, conceitos relativamente recentes. O uso dessas linguagens em aplicações interativas é mais do que indicado. Mas o COBOL continua imbatível quando a meta é processar centenas de milhões de registros, em jobs concorrentes, mesmo quando comparado a outras linguagens tradicionais do ambiente mainframe, como NATURAL, Easytrieve ou Rexx.

Também por ser uma linguagem procedural, alguns alegam que é muito fácil escrever um programa de forma ruim. Existem comandos nessa linguagem que são execrados (como o ALTER) ou temidos (como o GO TO) e que têm potencial para tornar um programa incompreensível. Mas, convenhamos, é possível codificar mal um programa em qualquer linguagem, e qualquer um que já tenha se confrontado com um sistema orientado a objetos mal projetado sabe disso. O bom uso do COBOL requer que o programador pense de forma estruturada e domine a arte de projetar algoritmos.

Mas talvez o que mais se comente, sem muito conhecimento de causa, é que “programas em COBOL são extensos” ou que “com o COBOL o programador tem que escrever muito”. Nesse aspecto, algumas questões que precisam ser consideradas:

  • Um programa “curto” não é necessariamente bom, principalmente se for difícil de entender (e manter) alguns anos após sua construção;
  • Um programa não é necessariamente “extenso” por causa da linguagem. Uma especificação ruim pode resultar num programa grande por excesso de acoplamento funcional ou desconhecimento da linguagem;
  • Um programa COBOL pode ser extenso porque foi construído, por exemplo, antes do advento das built-in functions (ou funções intrínsecas), introduzidas no padrão ANSI/ISO de 1989 e 1993.

[1] https://www.microfocus.com/about/press-room/article/2013/academia-needs-more-support-to-tackle-the-it-skills-gap. Acessado em dezembro de 2016.


 


Anterior Conteúdo Próxima