COBOL - Será esta linguagem relevante nos dias de hoje?
09 de Julho de 2024
A história de COBOL
COBOL (Common Business-Oriented Language) é uma linguagem de programação que desempenhou um papel fundamental na história da computação. Surgiu no final dos anos 1950, quando havia uma necessidade crescente de uma linguagem de programação que pudesse ser usada por empresas e organizações governamentais para processamento de dados comerciais.
A primeira versão do COBOL foi desenvolvida por uma comissão que incluía membros do governo, universidades e empresas privadas. Este grupo de trabalho foi liderado por Grace Hopper, uma figura chave na história da programação.
Entre os anos de 1960 e 1970, COBOL tornou-se rapidamente na linguagem padrão para aplicações de negócios devido à sua facilidade de leitura e gestão de grandes volumes de dados. Em 1968, o American National Standards Institute (ANSI) publicou a primeira norma oficial de COBOL, conhecido como COBOL-68.
A partir desta versão, COBOL continuou a evoluir com a introdução das versões COBOL-74 e COBOL-85, que introduziram novos recursos e melhorias na linguagem.
Entre os anos de 1980 e 1990 a versão COBOL-85 apresentou melhorias significativas, incluindo suporte para programação estruturada, o que ajudou a aumentar a legibilidade e manutenção do código, sendo utilizado com muita frequência em sistemas de mainframe, especialmente em bancos, seguradoras e outras instituições financeiras.
O ano 2000 trouxe um maior foco de atenção sobre COBOL, pois muitos sistemas legados foram escritos nesta tecnologia e precisavam ser revistos para resolver o problema do bug do milénio. Apesar de muitas previsões sobre a sua suposta desatualização, COBOL continuou a ser utilizado em sistemas legados, já que que inúmeras organizações empresas optaram por modernizar os seus sistemas, em vez de os substituir. Assim, COBOL, não só resistiu ao tempo, como também continua a evoluir e a adaptar-se às necessidades atuais da tecnologia.
Fundamentos de COBOL
COBOL foi projetado para ser uma linguagem de programação que pudesse ser compreendida não apenas por programadores, mas também pelos responsáveis dos negócios.
É uma linguagem concebida para empresas, especialmente aquelas que envolvem nas suas operações a gestão de grandes volumes de dados e transações. Desta forma, mesmo nos dias de hoje, a capacidade de suportar sistemas críticos, garante que COBOL possa vir a manter-se relevante por largos anos.
Estrutura de um programa em COBOL
Um programa COBOL é composto por quatro divisões principais, cada uma com uma função específica.
IDENTIFICATION DIVISION
Contém informações sobre o programa, como nome e descrição.
ENVIRONMENT DIVISION
Especifica o ambiente de hardware e software no qual o programa será executado.
DATA DIVISION
Define todas as variáveis e estruturas de dados que o programa utilizará.
PROCEDURE DIVISION
Contém a lógica do programa, com as instruções a serem executadas.
Exemplo de estrutura de um programa em COBOL:
IDENTIFICATION DIVISION.
PROGRAM-ID. HelloWorld.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.
DISPLAY 'Hello, world!'.
STOP RUN.
IDENTIFICATION DIVISION
Esta divisão inclui informações básicas de identificação sobre o programa, como o nome do programa.
IDENTIFICATION DIVISION.
PROGRAM-ID. MyProgram.
AUTHOR. John Doe.
ENVIRONMENT DIVISION
Define o ambiente específico onde o programa será executado e contém duas seções principais:
CONFIGURATION SECTION
Define a configuração do hardware e do software.
INPUT-OUTPUT SECTION
Define os arquivos de entrada e saída.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-370.
OBJECT-COMPUTER. IBM-370.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT InputFile ASSIGN TO 'input.dat'.
SELECT OutputFile ASSIGN TO 'output.dat'.
DATA DIVISION
Define as variáveis e as estruturas de dados usadas no programa e comporta várias seções, sendo as principais:
FILE SECTION
Define os arquivos que serão utilizados.
WORKING-STORAGE SECTION
Define as variáveis temporárias e constantes.
LINKAGE SECTION
Define as variáveis que serão passadas de ou para outros programas.
DATA DIVISION.
FILE SECTION.
FD InputFile.
01 InputRecord.
05 InputField1 PIC X(10).
05 InputField2 PIC 9(5).
WORKING-STORAGE SECTION.
01 WS-Total PIC 9(5) VALUE 0.
01 WS-Count PIC 9(5) VALUE 0.
PROCEDURE DIVISION
Contém a lógica do programa, com instruções estruturadas em parágrafos e seções.
PROCEDURE DIVISION.
Main-Logic.
PERFORM Read-Input UNTIL End-Of-File.
DISPLAY 'Total: ' WS-Total.
STOP RUN.
Read-Input.
READ InputFile INTO InputRecord
AT END SET End-Of-File TO TRUE
NOT AT END
ADD InputField2 TO WS-Total
ADD 1 TO WS-Count
END-READ
Elementos e conceitos chave na programação em COBOL
Verbos COBOL
Instruções que realizam operações como MOVE, ADD, SUBTRACT, MULTIPLY, DIVIDE, READ, WRITE, OPEN e CLOSE.
Níveis de Dados
Níveis hierárquicos usados para definir a estrutura de dados. O nível mais comum é 01 para a definição de registos e 05, 10, etc., para os campos dentro desses registos.
Pic Clauses (Picture Clauses)
Definem o formato e o tipo dos dados, como PIC X para caracteres e PIC 9 para números.
Condicionais e Iterações
Uso de instruções como IF, ELSE, PERFORM para controlo do fluxo e iteração.
A longevidade da tecnologia COBOL
São vários os fatores que têm vindo a contribuir para a longevidade e a relevância de COBOL na atualidade, entre os quais:
Estabilidade e fiabilidade
COBOL é conhecido pela sua robustez e fiabilidade. Alguns sistemas críticos em bancos, seguradoras e governos foram desenhados nesta tecnologia e têm-se mantido funcionais e estáveis por longos anos.
Base de código legado
Existe uma grande quantidade de código ainda escrito em COBOL por vários sistemas, em diferentes setores, e que ainda está em uso. Porém, a substituição completa desses sistemas representaria um investimento elevado e uma exposição ao risco preocupante. Assim, algumas empresas optam por manter os seus sistemas existentes, atualizando-os, em vez de proceder à sua substituição completa.
Capacidades de processamento de dados
COBOL foi projetado para ser eficiente no processamento de grandes volumes de dados, o que é crucial para muitas empresas. A sua sintaxe orientada facilita a manutenção e a compreensão do código para esse tipo de operação.
Custo de migração
Migrar um sistema COBOL para uma nova plataforma pode ser um processo complexo e dispendioso. Por isso, algumas empresas ponderam os benefícios associados face ao custo e risco do investimento, optando por manter os sistemas atuais.
Compatibilidade e integração
Os sistemas COBOL são frequentemente compatíveis com outras tecnologias e infraestruturas existentes. A integração contínua com novos sistemas e tecnologias ajuda a manter a sua relevância.
Linguagem Evolutiva
COBOL não permaneceu estagnado. Evoluiu ao longo do tempo com novas versões que adicionaram suporte a recursos modernos, como programação orientada a objetos e integração com tecnologias web e bases de dados modernas.
Desafios que linguagem COBOL enfrenta
Escassez profissionais
Uma parte considerável de programadores COBOL situa-se numa faixa etária da vida próxima da reforma. Por outro lado, existem poucos novos programadores formados e com experiência nesta linguagem em específico. Este cenário, cria um desafio eminente na gestão de recursos humanos para manter e atualizar os sistemas e infraestruturas nas empresas.
Sistemas complexos
Muitos sistemas desenvolvidos em tecnologia COBOL foram criados há décadas e têm camadas de modificações e patches. Assim, compreender e modificar estes sistemas poderá ser extremamente difícil, especialmente sem o auxílio de documentação adequada.
Custo de manutenção
Manter sistemas antigos poderá ser dispendioso. Por outro lado, as ferramentas e os ambientes de desenvolvimento mais modernos, poderão não ser totalmente compatíveis com COBOL, exigindo por isso, a adoção de soluções personalizadas.
Integração com novas tecnologias
Embora existam ferramentas para ajudar a integração de COBOL com novas tecnologias, o processo pode ser complexo e sujeito a erros.
Mitos existentes sobre a programação em COBOL
COBOL é uma linguagem obsoleta
Embora seja uma tecnologia antiga, não é de todo obsoleta, pois continua a ser usada em setores críticos e tem evoluído ao longo do tempo para incluir novos recursos e funcionalidades.
Curva de aprendizagem difícil
Ainda que a sua sintaxe seja diferente das linguagens mais modernas, COBOL é conhecida pela sua clareza e facilidade de leitura, especialmente para pessoas responsáveis pela gestão das operações do negócio.
Ausência de suporte
Atualmente, existem muitas ferramentas e frameworks que permitem a integração de COBOL com sistemas modernos, incluindo interfaces web e bases de dados atuais.
Tecnologia só para sistemas mais antigos
COBOL ainda é utilizado em novos projetos, sobretudo em sistemas onde a fiabilidade e a eficiência no processamento de transações são cruciais.
Custos operacionais altos
O custo total de propriedade de um projeto COBOL pode ser menor do que o de reescrever sistemas completos em linguagens novas, considerando os respetivos riscos e custos de migração.
Superar os desafios da linguagem
Formação
Investir em programas de formação para novos programadores pode ajudar a mitigar a falta de profissionais qualificados nesta tecnologia.
Ferramentas de modernização
Utilizar ferramentas que facilitam a manutenção e a integração de COBOL com tecnologias modernas, pode reduzir custos e toda a complexidade de coabitação com outras linguagens e sistemas.
Planeamento de migrações
Planear e executar migrações de sistemas para novas plataformas de forma gradual e controlada pode mitigar riscos e custos associados.
Vantagens da linguagem COBOL face a outras tecnologias mais modernas
Comparar COBOL com linguagens de programação mais modernas pode ajudar a entender as suas vantagens e desvantagens em diferentes contextos. Neste sentido, estabelecemos alguns pontos de comparação entre COBOL e linguagens mais modernas como Python, Java e C#.
Simplicidade e leitura
COBOL é conhecido pela sua sintaxe semelhante à linguagem natural, o que torna o código fácil de ler e entender. Por outro lado, outras linguagens como Java e C# podem ser mais complexas devido à sua sintaxe detalhada e requisitos de boilerplate.
Eficiência no processamento de transações
A excelência na gestão de grandes volumes de dados e transações, torna COBOL a linguagem ideal para sistemas financeiros. Da mesma forma, Java e C# também são bastante eficientes e têm capacidades de processamento robustas. Contudo, Python, embora mais lento em operações de processamento complexo, compensa através das bibliotecas especializadas disponíveis.
Estabilidade e fiabilidade
A tecnologia COBOL é estável e confiável, com muitas aplicações críticas a funcionar de forma consistente por longos anos. Java e C# são conhecidos pela sua estabilidade, especialmente em ambientes corporativos.
Manutenção e atualização
A leitura intuitiva facilita a manutenção, mas a falta de novos programadores em COBOL pode ser um problema. Noutras linguagens mais modernas poderá existir uma maior disponibilidade de programadores e recursos, além de ferramentas avançadas de desenvolvimento que facilitam a manutenção.
Integração com novas tecnologias
A integração de COBOL com novas tecnologias pode ser desafiadora, mas existem ferramentas que permitem a transição para sistemas modernos. Em contrapartida, as linguagens mais comuns na atualidade foram projetadas para uma fácil integração com tecnologias contemporâneas, APIs e serviços web, permitindo uma implementação mais rápida de novas funcionalidades.
Desenvolvimento e implementação
Devido à natureza detalhada e rigorosa de COBOL, o desenvolvimento pode ser mais lento quando comparado a linguagens mais modernas, onde geralmente o desenvolvimento é mais rápido devido a frameworks, bibliotecas e ambientes integrados que aceleram o processo.
Custo de operação e manutenção
Devido à sua estabilidade e eficiência, COBOL apresenta baixos custos de operação a longo prazo, contudo, custos mais elevados de manutenção devido à escassez de programadores. No caso de linguagens modernas, inicialmente podem ter custos mais baixos devido à abundância de programadores, mas os valores operacionais a longo prazo podem variar dependendo da complexidade do sistema.
Funcionalidades modernas
As atualizações mais recentes de COBOL incluem suporte para programação orientada a objetos e integração com tecnologias web, mas ainda podem ser limitadas em comparação com linguagens mais recentes. Por outro lado, linguagens mais atuais oferecem uma gama de funcionalidades modernas, suporte para programação orientada a objetos, programação funcional e integração com tecnologias emergentes.
Comunidade e suporte
Embora a comunidade de suporte em COBOL seja sólida, tende a ficar envelhecida devido à escassez de entrada de novos profissionais a programar nesta linguagem. Em contraste, as linguagens mais comuns da atualidade disfrutam de uma comunidade em crescimento, com abundância de recursos de aprendizagem, fóruns e suporte contínuo de grandes empresas de tecnologia.
Aplicação em sistemas complexos
Como já vimos, COBOL é ideal para sistemas financeiros e outras aplicações que exigem elevada fiabilidade e processamento de grandes volumes de transações, sendo as tecnologias mais modernas mais adequadas à programação ágil como o desenvolvimento web, mobile, Inteligência Artificial, Big Data, etc.
Modernização e transformação digital da linguagem
A integração do COBOL em iniciativas de transformação digital, como migração para a nuvem e adoção de tecnologias emergentes poderá ser um desafio, mas também uma necessidade para as organizações que dependem de sistemas nesta tecnologia para as suas operações diárias.
Migração para a nuvem
Rehosting ou lift and shift
Muitas empresas optam por hospedar os seus sistemas COBOL em plataformas cloud sem os modificar significativamente. Isso envolve a migração direta dos sistemas para a nuvem, mantendo a infraestrutura e a lógica de negócio existentes.
Refactoring
Para tornar os seus sistemas COBOL mais adequados à nuvem, algumas organizações optam pelo refactoring. Na prática, pode envolver a separação de componentes em serviços menores, migrando para arquiteturas baseadas em micro erviços.
Modernização incremental
Em vez de uma migração completa, algumas empresas adotam por uma abordagem incremental, modernizando partes específicas dos seus sistemas enquanto permanecem em operação, permitindo uma transição suave sem interromper a operação diária da empresa.
Adoção de COBOL às tecnologias emergentes
Integração com APIs e serviços web
Os sistemas COBOL podem ser integrados com APIs e serviços web para facilitar a comunicação com aplicações modernas e plataformas cloud, possibilitando que os dados e as funcionalidades sejam acessíveis de forma mais flexível por outros sistemas.
Análise de dados e Business Intelligence
Ferramentas de análise de dados e Business Intelligence podem ser integradas com COBOL para extrair dados e insights permitindo às empresas tomarem decisões mais informadas com base em dados históricos sobre a operação.
Automação e Inteligência Artificial
Tecnologias de automação e Inteligência Artificial podem ser aplicadas em sistemas COBOL para melhorar a eficiência operacional e reduzir custos. Os processos de negócio baseados em regras podem ser automatizados e os algoritmos de IA podem ser utilizados para análise preditiva.
O futuro da linguagem COBOL
As perspetivas para COBOL continuam a ser influenciadas por uma série de fatores, incluindo a sua importância contínua em sistemas, a procura por profissionais qualificados e os esforços de modernização do ecossistema.
Manutenção de sistemas legados
As perspetivas para COBOL continuam a ser influenciadas por uma série de fatores, incluindo a sua importância contínua em sistemas, a procura por profissionais qualificados e os esforços de modernização do ecossistema.
Enquanto a migração completa pode ser dispendiosa e arriscada, a modernização incremental permitirá que empresas atualizem os sistemas COBOL de forma gradual, integrando-os com tecnologias recentes e em ambientes de nuvem.
Escassez de profissionais
A escassez de programadores COBOL poderá persistir, o que faz com que algumas empresas enfrentem dificuldades para encontrar talento qualificado para manter e atualizar os seus sistemas.
Integração com tecnologias emergentes
O desenvolvimento de ferramentas e parcerias especializadas irá facilitar a integração de sistemas COBOL com tecnologias emergentes, tornando o processo de modernização mais acessível e eficiente.
Formação
O investimento em formação será crucial para suprir a procura por novos developers de COBOL. Entidades académicas e organizações, precisam de cooperar em sinergia em programas especializados para programadores iniciados nesta tecnologia.
Embora COBOL seja frequentemente associado a uma linguagem clássica, as suas perspetivas futuras permanecem sólidas devido à sua indispensabilidade em sistemas legados e à procura contínua por novos profissionais. Com o investimento em modernização, talento e integração com tecnologias emergentes, COBOL está preparado para manter a sua relevância e desempenhar um papel fundamental no panorama tecnológico por muitos anos.
Artigos populares
O que é Outsystems e como está a transformar o desenvolvimento de software
Java - O que torna esta linguagem tão popular entre programadores?
A importância das boas práticas na programação em .NET
Linux: um sistema operacional versátil e poderoso
Implementar um sistema de Business Intelligence
Desafios Emergentes na Segurança em IT - Tendências e Estratégias para proteger as Empresas