Matt Swan (CTO do Nubank), Stuart Halloway (um dos nossos Líderes de Datomic), Lucas Cavalcanti (um dos nossos Engenheiros Principais), e todos os engenheiros no Nu tiveram o prazer de conversar com James Gosling, considerado o pai da Linguagem de Programação Java. A entrevista é parte de uma iniciativa interna para trazer grandes nomes do setor para conversar com nossa equipe de nível global e compartilhar conhecimentos e experiências.

Profissionais da tecnologia sempre passam por muitos desafios no setor: “todos sabemos da importância de estarmos nos ombros de gigantes”, diz Matt Swann, e o Sr. Gosling certamente é um desses gigantes. 

Continue lendo este artigo para aprender mais sobre como o Java mudou o mundo e os temas conversados com James Gosling na entrevista, como programação funcional em comparação com inteligência artificial orientada a objetos, coleta de lixo e muito mais.

Quem é James Gosling?

Antes de virar o “Dr. Java”, como ele costuma ser chamado, James Gosling era apenas uma criança da zona rural no oeste do Canadá, um local muito mais conhecido por seus tratores que pelos computadores, como ele mesmo disse na entrevista, especialmente quando pensamos no final dos anos 1960, o cenário específico do qual falamos neste parágrafo.

Ele não soube dizer precisamente o ano, mas seu olhar parecia viajar com sua mente quando compartilhou essa lembrança: em 1968 ou 1969, um amigo do pai dele o levou para um passeio na Calgary University, e quando passaram pelo centro de computadores, algo mudou dentro dele. 

Depois dessa experiência, ele começou a passar tempo na Universidade, especificamente, em sua biblioteca, explorando lixeiras atrás de informações de conta de alunos para acessar os computadores da Universidade. Depois de alguns anos frequentando o Centro de Computadores de Calgary, ele finalmente decidiu obter seu bacharelado em ciência da computação.

Mas foi nos Estados Unidos, enquanto conseguia seu Doutorado na Carnegie Mellon University, que ele desenvolveu uma variante do popular editor de exibição Emacs. Alguns anos depois, já trabalhando no projeto Sun Java, Gosling mencionou seus primeiros projetos como inspiração para o conceito de uma máquina virtual de Java.

Conheça nossas oportunidades

Projetos de longo prazo e Java

Gosling disse que projetos de longo prazo foram seu caminho para a saúde mental. Trabalhar em um ambiente acelerado, como o mundo da tecnologia, pode ser prejudicial à mente, porque, em suas palavras, “quando se está sempre apagando incêndios, não há tempo para descansar”. 

Java era mais que um projeto de longo prazo para Gosling: era uma criação vitalícia que mudou o mundo da programação para sempre. Essa ferramenta prática popularizou as melhores ideias das linguagens mais antigas dando a elas um novo formato, familiar para criadores de código em C comuns, mas não um superconjunto restrito de C.

Gosling menciona que, quando estava desenvolvendo o Java com Mike Sheridan, Patrick Naughton e os outros engenheiros do Sun Java, “o mundo da programação estava preso com linguagens de programação 1.1, como C e, eventualmente, C++”.

Quando perguntado se tomaria alguma decisão de design diferente hoje em dia, ele diz que não, e rejeita as “incessantes discussões sobre colchetes em lugares estranhos” da programação atual. Para ele, “são ridículas” (sic). Apesar de parecer gostar do estado atual do Java, dizendo que “evoluiu para ser incrível”. Ele é um pai realmente orgulhoso.

Ele também menciona que, às vezes, se pega com a ideia de criar outra linguagem, mas rejeita essa possibilidade, descrevendo como “segurando em uma cerca elétrica”. Para ele, a mágica do Java não depende da linguagem: o que realmente importa é a máquina virtual por trás dele.

Clojure e a singularidade do Dr. Java

James Gosling identifica no Clojure algo que, na opinião dele, era uma qualidade também encontrada no início da programação funcional: o fato de evitar mutabilidade.

É possível obter vários recursos interessantes a partir disso, como multithreading: a capacidade de um programa ou sistema operacional de habilitar mais de um usuário simultâneo sem precisar de diversas cópias do programa executadas no computador.

Evitando a mutabilidade, é possível até fazer enormes mudanças em qualquer coisa, exceto o ponteiro de leitura. Esse recurso também fornece capacidades de compartilhamento de dados incríveis. Para ele, nunca houve uma guerra entre programação funcional e programação orientada a objetos. Ele reconhece o valor de ambos os estilos.

Para James Gosling, programação é um estilo autodisciplinado. Quando cria códigos, ele tenta escrever de uma forma bem funcional, mesmo que seus códigos provoquem estranheza nos outros: “quando as pessoas olham para alguns dos meus códigos e perguntam ‘o que está acontecendo aqui?’, porque costumo usar recursão quando outras pessoas usarão um vetor”. Uma citação definidora, dita tão naturalmente. Algo que só pode ser feito por gênios como James Gosling.

Outras linguagens de programação, o futuro da criação de códigos e um importante conselho para engenheiros menos experientes

“Java funciona para mim”, é a resposta dada por Gosling quando perguntado se ele gosta ou usa outras linguagens de programação. Apesar disso, ele admite que a segunda linguagem que mais usa é Shell Script. Dr. Java também disse que Rust funciona muito bem quando se escreve drivers de dispositivos de baixo nível, apesar de definir a maioria das linguagens de criação de script como “simplesmente lentas demais”.

Após essa inteligente mistura de críticas e elogios, James Gosling falou sobre o futuro da programação. Ele disse que ultimamente tem havido muita atividade sobre ferramentas, e há uma forte tendência a ferramentas de programação baseadas em IA no nosso futuro. Para ele, a reestruturação de código, por exemplo, está ficando muito mais poderosa com o uso de IA.

Quando pedimos para aconselhar engenheiros com menos experiência, ele vai direto ao ponto: “divirta-se”. ‘Diversão é o elemento que o fez amar programação e, quando você a encontrar, seu trabalho deixa de ser um trabalho: é uma causa, e realmente pode te motivar.

Para ele, a diversão estava em desenvolver programas que funcionem o tempo todo. E esse é o ponto principal do Java: desenvolver programas que não pararão de funcionar.

Ponteiro nulo, strictfp e Java de vez em quando

Para James Gosling, “todas as soluções para o problema de nulidade não parecem uma solução de verdade”. Por isso ele prefere sistemas de anotação e a função “@NonNull”, que investiga o problema até sua origem. Ele também comentou a seleção de IEE754 como sistema aritmético oficial do Java e o contraditório “strictfp” desenvolvido para a Intel.

Nas palavras dele, “as maiores mudanças no Java (ao longo do tempo) não afetaram diretamente a linguagem, e tinham tendência a afetar mais a base”. Para ele, algo que realmente mudou o setor, e especialmente a coleta de lixo, foi a enorme quantidade de RAM. 

Após tantas conquistas como engenheiro, o que vem por aí para James Gosling?

“Sempre serei um engenheiro. Quando eu for para o túmulo, ainda serei um engenheiro”. James Gosling ainda trabalha por que ainda ama isso. Ele se define como uma “criancinha com cabelos brancos”, sempre em busca do novo desafio que trará a ele seu principal combustível: diversão.

Conheça nossas oportunidades