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!