Matt Swan (Nubank’s CTO), Stuart Halloway (one of our Datomic Leaders), Lucas Cavalcanti (one of our Principal Engineers), and all the engineers at Nu had the pleasure to talk with James Gosling, who’s considered the father of the Java Programming Language. The interview is part of an internal initiative to bring industry luminaries to chat with our world-class team and leverage knowledge and experiences.
Technology professionals always undergo a lot of challenges in the industry: “we all know how important it is to stand on the shoulders of giants”, says Matt Swann, and Mr. Gosling is, for sure, one of those giants.
Keep reading this article to know more about how Java changed the world and the themes that James Gosling went through in the interview, such as functional programming versus object oriented, artificial intelligence, garbage collection and much more.
Who is James Gosling?
Before becoming “Dr. Java”, the way he’s often referred to, James Gosling was just a kid from West Canada’s rural zone, a place much more known for its tractors than for its computers, as himself has said in the interview一especially when we think about the late 60’s, the specific portrait in time we’re talking about in this paragraph.
He couldn’t say the year precisely, but his gaze seemed to travel alongside with his mind when he shared this memory: in 1968 or 69, a friend of his father took him for a walk through the University of Calgary, and when they passed through the computer center… something snapped inside of him.
After that experience, he started to spend time on the University, specifically on its library, dumpster-diving for student’s account information in order to access the University’s computers. After some years hanging out in Calgary’s Computer Center, he finally decided to get his BS in computer science.
But it was in the United States, while taking his PhD at Carnegie Mellon University, that he developed a variant on the popular display editor Emacs. Some years later, already working on the Sun Java project, Gosling mentioned his early projects as inspiration for the concept of a Java virtual machine.
Long term projects and Java
Gosling said that long-term projects were his path to mental health. Working in a fast-paced environment such as the technology world can be harmful to the mind, because, in his words, “when you’re always putting out fires you don’t have time to rest”.
Java was more than a long-term project to Gosling, it was a life-long creation that changed the programming world forever. This practical tool popularized the best ideas from earlier languages by giving them a new format, familiar to the average C coder, but not a strict superset of C.
Gosling mentions that, by the time he was developing Java with Mike Sheridan, Patrick Naughton and the other Sun Java engineers, “the programming world had really gotten stuck with 1.1 programming languages like C and, eventually, C++”.
When asked if he would do any design decision differently today, he says he wouldn’t and disclaims the “incessant arguments over weird placed braces” of today’s programming. To him, they’re “kinda lame” (sic). Although he seems to like Java’s current state, saying it has “evolved to be pretty amazing”. He’s a proud father, indeed.
He also mentions that, sometimes, he gets caught up in the idea of creating another language, but walks away from the possibility, describing it as “grabbing on to an electric fence”. To him, Java’s magic doesn’t rely on the language, what really matters is the virtual machine underneath.
Clojure and the uniqueness of Dr. Java
James Gosling identifies in Clojure something that, in his opinion, was a quality also found on early functional programming: the fact that it avoids mutability.
It’s possible to get many interesting features out of that, like multithreading一the ability of a program or an operating system to enable more than one user at a time without requiring multiple copies of the program running on the computer.
Avoiding mutability, you can even make massive changes and mutate anything except for the read pointer. This feature also provides amazing data sharing capacities. To him, functional programming versus object-oriented programming was never a war, he recognizes value in both styles.
To James Gosling, programming is a self disciplined style. When he’s coding, he tries to write in a very functional way, even though his codes may provoke strangeness in others: “when people look at some of my codes, they go ‘what the hell is happening here?’, because I tend to use recursion when other people will use an array”. A defining quote, said so naturally一something that can only be done by geniuses like James Gosling.
Other programming languages, the future of coding and an important advice for less-experienced engineers
“Java works for me”, that’s the answer Gosling gave when asked if he likes or is using other programming languages. Despite that, he admits that the second language he uses the most is Shell Script. Dr. Java also said that Rust works very well when you’re writing low level device drivers, even though he defines most of the scripting languages as “just really slow”.
After this witty mix of roast and compliment, James Gosling talked about the future of programming. He said that real activity has been happening around tools lately and that there’s a strong trend leading to AI based programming tools in our future. To him, refactoring code, for example, is becoming a lot more powerful with the usage of AI.
When asked to give advice to less-experienced engineers, he goes straight to the point: “have fun”. Fun is the element that made him love programming and, once you find it, your job is no longer a job一it’s a cause, and it can really drive you in.
To him, the fun was in building programs that work all the time. And that’s what Java is really about: building programs that won’t break.
Null pointer, strictfp and Java now and then
To James Gosling, “every solution to the null problem doesn’t feel like a real solution”. That’s why he prefers annotation systems and the “@NonNull” function, that traces the problem back to its origin. He also commented on the selection of IEE754 as Java’s official arithmetic system and the contradictory “strictfp” engineered for Intel.
In his words, “the biggest shifts in Java (overtime) have not affected the language directly, they tended to affect the underpinnings more”. To him, something that really changed the industry, and especially garbage collection, were the massive amounts of RAM.
After achieving so much as an engineer, what’s next for James Gosling?
“I’ll always be an engineer. When I go to the grave, I’ll still be an engineer”. James Gosling is still working because he still loves it. He defines himself as a “little kid with white hair”, always searching for the new challenge that will bring him what seems to be his uttermost fuel: fun.