COBOL – 60 Anos de História, e sem previsão de ser ultrapassado!
Muitos vão achar estranho estar falando de uma linguagem que acabou de completar 60 anos de idade, e falar que ela ainda não tem previsão de ser aposentada, pelo contrário, 2020 está sendo um ano onde a procura por profissionais (programadores) que deem manutenção em sistemas escritos em COBOL esta extremamente alta, e claro, com uma leva de profissionais que não supre a quantidade de vagas abertas no mercado, o que torna aprender a fundo essa linguagem uma ótima alternativa, e vamos ver neste artigo, um pouco sobre sua história e sobre seu legado.
COBOL é uma sigla para (COmmon Bussiness Oriented Language) em tradução Linguagem comum orientada para negócios, ou seja, sua estrutura é voltada para o processamento de bancos de dados comerciais. Criada pelo departamento de defesa norte americano, ainda está presente em mais de 70% dos sistemas armazenados nos mainframes. Atualmente a maior parte dos códigos escritos em COBOL estão sendo escritos para dar suporte para esses sistemas existentes.
Com essa pandemia do COVID-19 a procura por profissionais capacitados nesta linguagem aumentou exponencialmente, devido a necessidade de manutenção em sistemas antigos que foram desenvolvidos em COBOL e que são mantidos assim até hoje em várias partes do mundo. Exemplos são sistemas de seguro-desemprego, sistemas de seguridade social, sistemas bancários de fundos entre outros mantidos em sistemas de MAINFRAMES.
A escassez está tão grande que a IBM, criou uma área e está disponibilizando cursos da linguagem via e-learning gratuitamente em vários idiomas. Se você quiser experimentar a linguagem, pode buscar maiores informações em OPEN MAINFRAME PROJECT que disponibiliza um curso da linguagem, ou pode baixar uma cópia de um compilador compatível com LINUX e WINDOWS em gnuCOBOL ou mesmo instalar em sistemas baseados em DEB com o comando sudo apt-get install open-cobol
e você terá uma versão do compilador pronta para fazer alguns testes e começar a aprender a usar a linguagem.
Veja, para quem já usa o VSCODE (Visual Studio Code) algumas extensões como a COBOL desenvolvida pela BitLang o ajudam com a marcação de sintaxe, a COBOL LANGUAGE SUPORT da Broadcom que habilita opções de autocomplete e intelliphense e a CODE RUNNER que serve para automatizar processos de compilação e link edição de diversas linguagens permitindo que você rode uma série de comandos automatizados e sequenciais de acordo com o projeto, muito importante para quem lida com linguagens e codificação de sistemas que precisam ser compilados, ou mesmo para rodar rotinas de verificação de dependências, e deploy.
Um pouco da História
Em 1959, Mary Hawes teve a ideia do que seria o COBOL, que era criar “uma linguagem semelhante ao inglês que pudesse ser usada em diferentes computadores para executar tarefas básicas de negócios”. Embora desde meados da década de 1980, não tenha-se notícias de novos projetos escritos na linguagem, mais de 70% dos sistemas que rodam em mainframes estão escritos nesta linguagem e precisam ser mantidos, e são sistemas críticos como Transações bancárias, Sistemas do Governo que envolvem censo, seguro social, sistemas de armazenamentos de gigantescas bases de dados e sistemas de roteamento de telefonia entre outros.
Além de ser fácil de ler, a linguagem se mantém atualizada. Hoje, o COBOL se integra aos contêineres do Docker e Java, enquanto opera na nuvem, no Linux ou Windows. É uma linguagem altamente flexível que permite que os desenvolvedores se concentrem em escrever seus aplicativos enquanto o COBOL cuida dos meandros do sistema operacional subjacente.
Atualmente, o maior risco para o COBOL é que está ficando cada vez mais difícil encontrar programadores qualificados. A linguagem pode conviver conosco por mais várias décadas, por conta do custo e do risco de substituir os sistemas baseados em COBOL por alternativas.
O primeiro compilador para COBOL foi implementado em 1960 e em 6/7 de dezembro, essencialmente o mesmo programa COBOL funcionou em dois computadores diferentes, um computador RCA e uma Remington-Rand Univac, demonstrando que a compatibilidade pode ser alcançada. Sendo este o marco de o primeiro sistema portável entre plataformas computacionais diferentes, e escrito em uma linguagem parecida com a linguagem humana (alto nível).
Desde então, o COBOL passou por algumas padronizações, e outros DIALETOS foram determinados, até que em 1968 o ANSI criou a primeira padronização, em 1974 e 1985 foram criadas versões subsequentes. Desde então as padronizações passaram a ser feitas pela norma ISO, sendo lançadas versões em 1989, 1991 e 2002, 2003 e 2006 a ultima revisão ainda pendente de aprovação deveria ter ocorrido em 2010.
Características do COBOL
O COBOL teve como meta servir como uma linguagem de programação para negócios. Os programas para negócios não precisam de cálculos tão precisos como os encontrados em engenharia, assim o COBOL foi concebido basicamente com as características de Acesso rápido a Arquivos e Bases de Dados podendo le-las e atualiza-las de manira rápida e simplificada, gerar e trabalhar com grandes quantidades de informações e possuir saidas de processamento inteligíveis a um usuário comum não técnico em sistemas ou matemática.
O COBOL é geralmente a linguagem escolhida em cálculos financeiros por suportar aritmética inteira aplicada a números muito grandes (milhões, bilhões etc) ao mesmo tempo que é capaz de lidar com números muito pequenos como frações de centavos. Outra característica é a formatação, classificação e geração de relatórios.
No COBOL há três tipos básicos de dados usados nas instruções os Numéricos (sinalizado ou não, com decimal ou inteiros), os Alfanuméricos e as Constantes figurativas e consiste basicamente em quatro divisões separadas IDENTIFICATION DIVISION que possui informações documentais, como nome do programa, quem o codificou e quando essa codificação foi realizada. A ENVIRONMENT DIVISION que descreve o computador e os periféricos que serão utilizados pelo programa. A DATA DIVISION que descreve os arquivos de entrada e saída que serão usadas pelo programa e também define as áreas de trabalho e constantes necessárias para o processamento dos dados. E por fim a PROCEDURE DIVISION que contém o código que irá manipular os dados descritos na DATA DIVISION. É nesta divisão que o desenvolvedor descreverá o algoritmo do programa.
Alguns acham sua estrutura complexa demais, outros não, e existem muitas críticas pela sua estrutura extremamente verbosa, porém, desde a sua concepção, o COBOL foi feito para ser legível de mogo que diretores, gerentes e usuários não programadores pudessem ler e entender o que estava sendo realizado naquele código. Porém, longe de que esses mesmos usuários pudessem projetar e manter projetos nessa linguagem. Isso foi muito importante para a linguagem que era totalmente voltada a área empresarial ou procesamento de dados comerciais e longe da área acadêmica.
A linguagem COBOL é simples, com alcance limitado da função (sem ponteiros, sem tipos definidos pelo usuário e sem funções definidas pelo usuário), estimulando um estilo de codificação simples que fez com que seja bem adequada ao seu domínio principal de computação de negócios, onde a complexidade do programa encontra-se em regras de negócio que precisam ser codificados em vez de sofisticados algoritmos e estruturas de dados. E porque a norma não pertence a nenhum fornecedor em particular, os programas escritos em COBOL são altamente portáteis. A língua pode ser utilizada numa grande variedade de plataformas de hardware e sistemas operativos. E sua estrutura hierárquica rígida restringe a definição de referências externas para a Divisão de Ambiente (environment division), o que simplifica a mudança de plataforma em particular.
COBOL como será o futuro?
Que sistemas em COBOL não vão deixar de existir tão cedo, isso é um fato, e que novos desenvolvedores e universidades dentro dos próximos anos vão precisar gerar uma demanda de profissionais com competência para manutenção desses sistemas é outro ponto forte, e dar inicio a aprender essa linguagem pode ser uma boa pedida.
Por outro lado, linguagens como JAVA, PYTHON e SQL tem um ciclo de vida muito parecido com o que vimos no COBOL o que faz com que essas linguagens sejam também ótimas áreas de estudo e facilmente podem ser um futuro promissor para desenvolvedores e mantenedores de sistemas comerciais. Visando que dentro de poucos anos essas linguagens sejam substituídas por padrões mais atuais e tenham que sofrer alterações para se manterem. Veja o caso do JAVA que periodicamente inicia um ponto de declínio de uso e novas características a colocam novamente no topo.
Outra hipótese, que na minha opinião é muito provável, é que novas versões do COBOL sejam especificadas e um novo ciclo de vida de desenvolvimento venha a ocorrer, trazendo um legado, desses sistemas antigos, e juntando o melhor dos dois mundos, o poder e a consolidação da linguagem e ganhando novos recursos, prova disso é o investimento de gigantes como a IBM em manter atuais compiladores compatíveis com equipamentos e recursos atuais. Ou seja, o COBOL pode ser substituído pelo PRÓPRIO COBOL.
Sua estrutura permite que ele evolua muito, e ainda assim mantenha sua retrocompatibilidade, veja que o foco da linguagem já em 1959 era similar ao que hoje vemos em grandes frameworks de desenvolvimentos e IDEs de desenvolvimento, permitindo que o esforço seja na REGRA DO NEGÓCIO, deixando aspectos técnicos de compatibilidade com hardware por conta do compilador. Essa visão é o que torna a linguagem COBOL em marco na história da ciência da computação, e também tão importante em seu ciclo, servindo como base para grandes tecnologias atuais como o SQL, BIG DATA ANALITICS entre outras tecnologias de manipulação de dados.