Inspiring Chats with Bjarne Stroustrup
I was invited for students dinner at Cppcon. Technically speaking I am currently a student, so despite I’m older than many other students, I can join them for free pizza 😛 But my luck was not about the pizza. I got my chance to meet and talk with Bjarne Stroustrup, the father of C++ language!
It was all began when all students joining the dinner had to meet up in front of the conference building. So I went there, and standing silent in the corner (as always), and I saw Bjarne showed up too. I was really surprised that he would be joining for the students dinner too! Well, the committee said that some important people would be joining too, but I didn’t imagine that Bjarne would be one of them.
And when we departed to California Pizza Kitchen, it was on a walking distance from the conference building. I saw Bjarne wasn’t really talking to anyone at that time, and just walking alone like me. So I throw away my shyness in the dumpster and put a thick face and greeted him along the way we were walking to the restaurant. That’s when all those good conversation began. He surprisingly mentioned that he is a kind of shy person and not a good conversation starter. Well, me too! I mean, I had to build up my courage just to greet him and start the conversation. 😛
We began talking about books, The C++ Programming Language, a phenomenal thick books which might be only some people completed reading it to the end (I’m not one of them :P). I told him that I read his book but not entirely. He said that that book was not intended for anyone who is beginning programming in C++, and there are a lot of books that are better in explaining how to begin with things. Exactly! Although I never find myself completing any beginners book for C++, I like his book when describing technicalities of the C++ languages, his design consideration and stuffs like surprises in the languages.
I asked him if he teaches compiler construction courses in the university where he is teaching. He said no. Despite of he working on compiler for many years, he has no intention or drive to teach that stuff. He believes that he is not a suitable lecturer to teach compiler construction, so he mainly teaches something else rather than that.
Considering about his position in a very big financial institution, and his personal preference on the job he is working on, I asked him why he chose to work in banking firm instead of more technological industry. He said that to work in technology is not always have to be in a technological industry. Financial institution also uses a lot of information technology behind their services. They even employs thousands of engineers to support their system running. So, he is there to actually alleviate issues within the organization and help the people in the organization. Basically what he said was he really loves helping people, which is also why he releases C++ because it helps people. 😀
When we arrived at California Pizza Kitchen, I got a chance to sit right beside him and continued our conversation. We discussed about the future of C++, about his plenary talk where he mentioned about C++ ‘concept’ feature and his expectation for the feature. He mentioned that at some point in the future, static reflection support will land on C++, but we don’t know yet the final time frame for that.
He also talked about his view on dynamic reflection. He said that C++ will never has a dynamic reflection. But definitely we will see static reflection in near future. He is more leaning towards compile-time features rather than runtime as the evolution journey for C++.
I asked him about how would he and the committee evolve the language more, and how is his vision on the language’s future. He said that evolving C++ is not an easy task. He realized that C++ was in a very long dormant state between 1998 and 2011 which it lacked evolution on the language. During that time, many compilers implementer creates their own compiler-specific features and behaviors which created fragmentation and diversification of C++ compilers, and sparked a lot of friction between them. But despite of it, there are lots of innovations through that dormancy period that wasn’t really expected, such as template metaprogramming and static programming. Those innovation actually inspires the beginning of modern C++ evolution.
Bjarne said that C++ is now so widespread and ubiquitous that you cannot just simply change the previous behavior of the language in a single snap. For instance, several keyword like auto and register is an ancient remnants that is no longer relevant to the current era of programming paradigm. But it is not as simple as removing or changing the semantics of the keyword without prior warning to existing user because they might have to change their codes which expect the prior behavior of existing keyword. Because when you change a semantic of a language, existing codes might fail to compile, or even worse, compile but the runtime behavior changes and opened up chances of invisible bug.
Therefore, the C++ committee duties are to ensure the C++ evolution will go towards a right direction, taking care of various use cases from all different parties, and standardize the language so it will be compiler agnostic as long as the compiler complies with C++ standards. Then, the program will behaves exactly the same whether it is being compiled by GCC, LLVM, or Microsoft toolchains.
Bjarne also said that he does not have those prerogative decision over committee decision. C++ has become a public domain and it is not about Bjarne’s personal interests anymore. While C++ was born during the era where he needed a language that is suited to solve his problems, nowadays C++ is there to solve everyone’s various problems. A consensus of how the language will be improved is important to keep the language relevant and applicable to wide range of use cases in software technology.
When asked if he was ever bored or burned out doing stuff with C++, and he said definitely. He said it is normal for you to burn out and need some changes. He passed that feeling multiple times and even sometimes questions whether he wanted to continue with this or not. To regain his energy, he said that he is usually looking for something different that interests him, one of it: space observation. He is very interested in Mars expedition and exploration. He was invited to see people who designed rovers that is being sent to Mars and talk with them. He was astonished to learn that the Mars rover was coded using C++. He said that when you learn that there are tons of use cases where C++ is used, you will be very amazed. That amazement could sparks back his energy in working with C++.
My 3 hours having conversations with him is totally unforgettable. He is a very humble person despite of having his invention really changes the world. It is almost like listening a wise wisdom from the godfather of modern programming languages to inspire us in what we’re going to shape the future of computer technology. Despite of his becoming more senior, he is still energetic and inspired to do all of those stuff.
We finally ended our conversation after walking back from the restaurant to the hotel. He said that he would have a Grill-the-Committee event in the evening but before that he would like to take a rest. It was just three of us (me, Bjarne, and one other student) walking in the same direction, and finally we shared our final selfie 🙂
Thank you very much for the inspiring talk, Bjarne. It is a very BIG honor for me to get inspiration directly from you. I wish one day I will have a legacy to mankind as you did with C++ and always remember to stay humble and inspire younger generation to continue the torch. 🙂