COBOL
Origem: Wikipédia, a enciclopédia livre.
COBOL é uma linguagem de programação de Terceira Geração. Este nome é a sigla de COmmon Business Oriented Language (Linguagem Orientada aos Negócios), que define seu objetivo principal em sistemas comerciais, financeiros e administrativos para empresas e governos.
O COBOL padrão 2002 inclui suporte para programação orientada a objetos e outras características das linguagens modernas. Entretanto, a maior parte deste artigo está baseado no COBOL 85.
Índice |
[editar] Pré-história e Especificação
O COBOL foi criado em 1959 pelo Comitê de Curto Prazo, um dos três comitês propostos numa reunião no Pentágono em Maio de 1959, organizado por Charles Phillips do Departamento de Defesa dos Estados Unidos. O Comitê de Curto Prazo foi formado para recomendar as diretrizes de uma linguagem para negócios. Foi constituído por membros representantes de seis fabricantes de computadores e três órgãos governamentais, a saber: Burroughs Corporation, IBM, Minneapolis-Honeywell (Honeywell Labs), RCA, Sperry Rand, e Sylvania Electric Products, e a Força Aérea dos Estados Unidos, o David Taylor Model Basin e a Agência Nacional de Padrões (National Bureau of Standards ou NBS). Este comitê foi presidido por um membro do NBS. Um comitê de Médio Prazo e outro de Longo Prazo foram também propostos na reunião do Pentágono. Entretanto, embora tenha sido formado, o Comitê de Médio Prazo nunca chegou a funcionar; e o Comitê de Longo Prazo nem chegou a ser formado. Por fim, um subcomitê do Comitê de Curto Prazo desenvolveu as especificações da linguagem COBOL. Este subcomitê era formado por seis pessoas:
- William Selden e Gertrude Tierney da IBM
- Howard Bromberg e Howard Discount da RCA
- Vernon Reeves e Jean E. Sammet da Sylvania Electric Products
Este subcomitê completou as especificações para o COBOL no fim do ano de 1959. Elas foram inspiradas em grande parte pela linguagem FLOW-MATIC inventada por Grace Hopper, e pela linguagem COMTRAN da IBM inventada por Bob Bemer.
As especificações foram aprovadas pelo Comitê de Curto Prazo. A partir daí foram aprovadas pelo Comitê Executivo em Janeiro de 1960, e enviadas à gráfica do governo, que as editou e imprimiu com o nome de Cobol 60. O COBOL foi desenvolvido num período de seis meses, e continua ainda em uso depois de mais de 40 anos.
[editar] Definindo as características
O COBOL foi definido na especificação original, possuia excelentes capacidades de autodocumentação, bons métodos de manuseio de arquivos, e excepcional modelagem de dados para a época, graças ao uso da cláusula PICTURE para especificações detalhadas de campos. Entretanto, segundo os padrões modernos de definição de linguagens de programação, tinha sérias deficiências, notadamente sintaxe prolixa e falta de suporte da variáveis locais, recorrência, alocação dinâmica de memória e programação estruturada. A falta de suporte à linguagem orientada a objeto é compreensível, já que o conceito era desconhecido naquela época.
O COBOL possui muitas palavras reservadas, e é difícil evitar de usar alguma inadvertidamente sem o uso de alguma convenção, como adicionando um prefixo a todos os nomes de variáveis. A especificação original do COBOL suportava até código auto-modificável através do famoso comando "ALTER X TO PROCEED TO Y". Entretanto, a especificação do COBOL foi redefinida de tempos em tempos para atender a algumas das críticas, e as últimas definições do COBOL corrigiram muitas destas falhas, acrescentando estruturas de controle melhoradas, orientação a objeto e removendo a possibilidade de codificação auto-modificável.
[editar] Mantendo-se forte
Embora o COBOL tenha sido proposto originalmente como solução para resolver problemas de programação do governo e das forças armadas americanas, programas COBOL continuam em uso na maioria das empresas comerciais em todo o mundo, notadamente nas instituições financeiras, e em praticamente todos os sistemas operacionais, incluindo o IBM z/OS, o Microsoft Windows e a família Unix/Linux. A base global de código é imensa e os aplicativos, de tempos em tempos, são sujeitos a manutenção. O custo de reescrever um aplicativo COBOL, já depurado, em uma nova linguagem não justifica os benefícios que possa eventualmente trazer. No fim dos anos 90 o Gartner Group, uma empresa de pesquisa na área de processamento de dados, estimou que dos 300 bilhões de linhas de código-fonte existentes no mundo, 80% - ou cerca de 240 bilhões de linhas - eram em COBOL. Eles também reportaram que mais de metade dos novos aplicativos de missão críticas ainda estavam sendo desenvolvidos usando o COBOL.
Ao se aproximar o fim do século XX houve uma febre de atividade de programadores COBOL para corrigir os efeitos do bug do milênio, em certos casos em sistemas desenvolvidos por estes mesmos programadores há décadas. Este problema foi mais crítico no código COBOL porque as datas são primordiais em aplicativos comerciais, e a maioria dos aplicativos comerciais foram escritos em COBOL.
Algumas pessoas acreditam que o uso de aritmética decimal codificada em binário fez com que programas desenvolvidos sem a previsão de datas com ano de 4 dígitos ficassem particularmente vulneráveis a falhas com o problema do ano 2000; entretanto é difícil justificar esta opinião. Outros argumentam que a aritmética BCD do COBOL evitou muitos outros problemas que poderiam ocorrer com o uso ingênuo do ponto flutuante em cálculos financeiros.
O COBOL provou ser durável e adaptável. O padrão atual do COBOL é o COBOL2002. O COBOL2002 suporta agora conveniências modernas como Unicode, geração de XML e convenção de chamadas de/para linguagens como o C, inclusão como linguagem de primeira classe em ambientes de desenvolvimento como o .NET da Microsoft e a capacidade de operar em ambientes fechados como Java (incluindo COBOL em instâncias de EJB) e acesso a qualquer base SQL.
[editar] Alô Mundo
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO-WORLD. * ENVIRONMENT DIVISION. * DATA DIVISION. * PROCEDURE DIVISION. PARA-1. DISPLAY "Alô, Mundo.". * STOP RUN.
Se copiar e colar este exemplo cuidado com a indentação, já que ela é fundamental (pelo menos) em compiladores COBOL mais antigos. Se você tentar compilar este exemplo num compilador e não conseguir ou não produzir o efeito desejado ao rodar você pode experimentar o exemplo em more simple example.
[editar] Visões opostas do COBOL
Todas as linguagens de programação têm seus defensores e detratores. Já foi dito que com linguagens como o C, o C++ e Java a única maneira de modificar o código legado é reescrevendo-o a cada vez. Por outro lado, já se disse do COBOL que na realidade só há um único programa COBOL que foi copiado e modificado bilhões de vezes.
[editar] Crítica
A motivação do desenvolvimento do COBOL era de facilitar a programação tornando a linguagem a mais próxima possível do inglês. Embora esta idéia pareça razoável, na prática a tarefa mais difícil na programação é reduzir uma computação complexa numa seqüência de passos simples, não associando estes passos com uma linguagem particular. Os críticos argumentam que a sintaxe prolixa do COBOL só serve para aumentar o tamanho do programa, e que dificulta o desenvolvimento do pensamento preciso necessário para o desenvolvimento de software. O cientista de computação Edsger Dijkstra observou em um artigo em 1975 (How do we tell truths that might hurt?): "O uso do COBOL mutila a mente; seu ensino deveria, portanto, ser considerado um crime". Mas Dijkstra estava também muito bem impressionado pelas idéias de Michael A. Jackson sobre a "Programação Estruturada" em COBOL (Jackson Structured Programming).
A linguagem SQL, que segue a filosofia do COBOL mas não é usada para escrever código procedural, não encontrou tanta crítica sobre sua sintaxe.
Alguns programadores brincam dizendo que a extensão orientada a objeto do COBOL deveria ser chamada ADD 1 TO COBOL GIVING COBOL. Trata-se de uma analogia com o C++, um trocadilho da sintaxe da linguagem C para incrementar uma variável, e evidenciar a prolixidade do COBOL comparada com o C. Na verdade, a forma básica seria "ADD 1 TO COBOL", incrementando a variável como no C.
[editar] Defesa
Por outro lado, os defensores do COBOL argumentam que os que o criticam e ironizam a linguagem nunca foram programadores COBOL e geralmente o desconhecem. Na maioria das versões atuais os compiladores não fazem distinção entre maiúsculas e minúsculas, embora o compilador irá transformar em maiúsculas todas as palavras-chave antes de processá-las.
Se alguém quiser tornar o COBOL menos prolixo do que é, geralmente consegue. Por exemplo o código:
ADD A TO B GIVING C. DIVIDE 2 INTO C GIVING C.
pode ser escrito assim:
COMPUTE C = (A + B) / 2.
e o verbo COMPUTE pode manipular fórmulas bastante complexas em forma algébrica. Por exemplo, o código em COBOL da equação do quadrado
pode ser escrita, usando o verbo COMPUTE, que pode manipular fórmulas bastante complexas em forma algébrica, como esta:
COMPUTE X = (-B + (B ** 2 - (4 * A * C)) **.5) / (2 * A)
ou esta:
MULTIPLY B BY B GIVING B-SQUARED. MULTIPLY 4 BY A GIVING FOUR-A. MULTIPLY FOUR-A BY C GIVING FOUR-A-C. SUBTRACT FOUR-A-C FROM B-SQUARED GIVING RESULT-1. COMPUTE RESULT-2 = RESULT-1 ** .5. SUBTRACT B FROM RESULT-2 GIVING NUMERATOR. MULTIPLY 2 BY A GIVING DENOMINATOR. DIVIDE NUMERATOR BY DENOMINATOR GIVING X.
Enquanto linguagens concisas como o C podem encorajar desenvolvedores a escrever código que pode ser difícil a entender e depurar, o COBOL encoraja o desenvolvimento inteligível ao nível da instrução.
[editar] Ver também
Outras linguagens de programação de terceira geração:
[editar] Referências
- Sammet, J.E. (1981). "The Early History of COBOL." In History of Programming Languages, by Wexelblat, R.L., ed. New York: ACM Monograph Series.
- SAADE, Joel. COBOL Sem Mistérios. São Paulo: Novatec, 1997, 520 p. ISBN 85-85184-61-2.
[editar] Ligações externas
- COBOL.com - The COBOL Community
- COBOL-Standard Committee
- COBOLPortal
- CobolReport.com
- The COBOL Center
- COBOL Tutorial
- COBOL-FAQ by William M. Klein
- "All Things COBOL" webring
- Acucorp, Inc.
- Clube Cobol - Comunidade Cobol do Brasil
- COBOL User Groups (COBUG)
- TinyCOBOL Compilador Livre(free)