Uma conversa informal sobre linguagens de programação e como

Propaganda
Tendências em Foco
coluna
Cezar Taurion
([email protected] e blog http://www.ibm.com/
developerworks/blogs/page/ctaurion) é formado em
Economia e Ciências da Computação, atualmente gerente
de Novas Tecnologias Aplicadas da IBM Brasil.
Uma conversa informal sobre
linguagens de programação e como
Java entrou na minha carreira
profissional
Java e outras linguagens de programação
S
aguão do aeroporto Santos Dumont, esperando mais um voo para
São Paulo. Reencontro um amigo de longa data. Começamos a
carreira profissional praticamente na mesma época, meados dos
anos 70. Conversa vai, conversa vem. E recordamos as experiências em programação. Quase um livro de história.
Lembro que minhas primeiras experiências com programação, ainda na Faculdade de Economia, foram com Fortran. Tentei escrever alguns simplórios
modelos econômicos, que nunca funcionaram direito. Mas realmente era
divertido mexer com aqueles bichos chamados computadores (ainda havia
gente que os chamavam de cérebro eletrônico).
Mas, como atividade profissional, já no então Centro de Serviços de dados
da IBM (o antigo birô), cujo aquário ficava no centro do Rio, comecei carreira
programando em Assembler /360. Programar em Assembler/360 era quase
como programar em linguagem de máquina, só que usávamos mnemônicos
ou símbolos que representavam as instruções da máquina. Cada mnemônico
era traduzido diretamente para uma instrução do processador. Para programar em tão baixo nível de detalhes, tínhamos que conhecer como o processador funcionava logicamente. Aliás, depois destes programas, só voltei
a usar assembly quando do surgimento dos primeiros microcomputadores,
quando me atrevi a rabiscar alguns programas para um processador de 8 bits,
o Zylog z80.
Falando em microcomputadores, estas máquinas também foram o campo
de testes para experimentar programas em C. Quase como escrever em
assembly!
Depois, veio o Cobol. O mainstream da programação na época. Escrevi dezenas e dezenas de programas em Cobol. Inclusive, ao longo dos anos seguintes, acabei tendo algumas experiências com dialetos desta linguagem. No
início dos anos 80, como colaborador do jornal Data News, o embrião do atual ComputerWorld,, preparei uma análise dos minicomputadores nacionais,
fruto da então reserva de mercado de informática. Este trabalho de análise
buscou validar a funcionalidade e desenvolver alguns benchmarks simples
dos mininacionais. Mas me deu a oportunidade de escrever programas Cobol
para várias destas máquinas, como SID5000, Cobra 500 e Bliss-Cobol.
Meu envolvimento com Cobol foi bem grande. Lembro que também escrevi
muitos programas Cobol para máquinas Burroughs. Cobol, apesar de ser
uma linguagem da chamada terceira geração, tem suas estruturas de dados
e controle derivadas diretamente das operações da máquina. Por exemplo,
nas estruturas de dados, nos mainframes 360 e 370 se os dados usados em
computações não estivessem em formato compactado, tornava necessário
que o compilador primeiro compactasse todas as variáveis envolvidas na
operação aritmética, para então fazer a computação, descompactando,
no fim, o resultado. Este processo desperdiçava os caríssimos recursos dos
sistemas da época: memória e processador. Assim, durante um período de
tempo, já então na Shell, uma das minhas tarefas era analisar o código-fonte
dos programas Cobol e desenhar ações de otimização.
As estruturas de controle também geravam alguns desafios. O Cobol permite
o uso de instruções de desvio (jumps) chamados de GOTO. Estas instruções
74 www.mundoj.com.br
desviavam o fluxo de controle para alguma posição, nem sempre facilmente
visualizada, dentro do código e fazia com que a tarefa de depuração do programa se tornasse algo terrível. Nos anos 70, apareceu um grande debate
sobre esta questão e um pesquisador/professor chamado Edsger W. Dijkstra
escreveu um paper “GOTO Statement Considered Harmful”, onde dizia “the
quality of programmers is a decreasing function of the desnsity of GOTO statements in the programs they produce”. Surgiu a programação estruturada e
lembro que, adorando a ideia, dei várias palestras e cursos sobre o tema. Foi
um debate bem interessante.
Nesta época, ainda tentei escrever programas para uma linguagem criada
pela IBM, a PL/1. Esta linguagem não decolou. Muito complexa e inchada.
Mas foi divertido escrever alguns poucos programas em PL/1.
Muitos anos depois surgiram linguagens que ficavam muito mais distantes
das máquinas físicas, explorando o conceito de máquinas virtuais. Java é
um exemplo típico. O programa Java roda dentro de uma JVM (Java virtual
machine) que é um ambiente próprio. O compilador Java não gera código
de máquina, mas sim um código específico para esta máquina virtual. Caso
seja necessário fazer com que o programa rode em outros computadores,
simplesmente escreve-se uma JVM para este computador. O código gerado
pelo compilador continua sendo o mesmo. Este conceito foi depois adotado
pela Microsoft em sua linguagem C#.
Escrevi vários programas em Java. É a linguagem que gosto mais. Entretanto,
volta e meia aparece na mídia o questionamento: Java ainda é (e continuará
a ser) a linguagem de programação mais usada atualmente? Segundo dados
da Tiobe (http://www.tiobe.com/index.php/content/paperinfo/tpci/index.
html), Java está posicionada como a linguagem mais utilizada no mundo. A
Tiobe produz mensalmente o chamado Tiobe Index, que aponta a popularidade das linguagens de programação usadas no mundo inteiro.
E, por curiosidade, vocês sabiam que para usar JVM não é necessário ter uma
sintaxe Java? Na verdade, existem mais de 200 linguagens de programação
que geram código para JVM, mas que apresentam sintaxe diferente de Java.
Esta curiosa lista pode ser encontrada em http://www.is-research.de/info/
vmlanguages /.
Vieram as scripting languages. Para mim, a primeira scripting language foi o
JCL dos sistemas operacionais de mainframe. Mas usei bastante uma das primeiras destas linguagens, a Rexx, que surgiu no VM/370. Depois, já com Unix
usei o sh (Shell Script). E com Web me arrisquei a escrever algumas linhas de
código em PHP e Python.
Nos anos 80 e 90, me interessei muito pela programação orientada objetos.
Ministrei vários cursos e foi a época em que aprendi a escrever programas
em C++.
Juntando tudo, acabei brincando com várias linguagens...tempos bons! Ah,
parece ser muito, mas existem centenas e centenas de linguagens de programação. Uma lista parcial delas aparece em http://sk.nvg.org/lang/lang.html.
Mas, de todas elas, Java continua sendo a minha preferida!
Download