Erik Engheim
2 min readMar 15, 2021

--

In principle you are right, but there is more to the story and maybe I should have covered that as well. You got me thinking there.

C/C++ have very complex build systems. I was recently not having a great time building OpenCV with CMake. I spend most of my career with C++ and to be honest I hate the language. The complexity is awe inspiring. How C/C++ deals with dependencies, cross platform compilation etc is an utter mess IMHO.

It is not wonder that Java and C# took a piece out of the C/C++ pie in the beginning. Both languages offered far easier deployment and building.

I know I didn't cover that at all in the arcile but Go stepped up there game here but making a super simple build system and made deploying, cross compiling etc far easier than what we have been used to.

But Rust seems to also be a big improvement in that regard. So I don't see C/C++ really comming back. They are in a way the Java of old. Java was a solution to many of the problems those languages created.

But of course there are always niches. I still like C over Java, but that is because I don't really build the kind of systems Java is good for. I think low level stuff like Game Engines, microcontrollers etc is kind of fun. In this space C is typically a better choice than Java.

I'll have to reflect a bit on your criticism of my choice of Go, and see what I can change. Go was a natural choice because I am currently getting up to speed on Go, and I have been coding Go and reading people's experience about Go. It is what made me think of this contrast between Go apps running in Docker containers as the sort of "new" way of deploying software over the old VM based approach dominated by Java and C#.

Of course people use Docker to deploy Python, Ruby, Node.js and lots of other stuff. Personally I have primarily used Docker to compile stuff. As mention before dealing with C++ build systems is hell. So I used a Docker container at times to deal with it.

I have never deployed any Go apps in a Docker container personally. I am just observing what seems to be popular for people these days. But I have used both technologies separately and think they are pretty awesome.

And in this case it is my lack of in depth knowledge which plays a part. That someone who spent such short time on Docker and Go can get going so quickly speaks volumes about the technology IMHO and its mass appeal.

Java has been the opposite experience for me. Not when it came out in the 90s. Then it was easy. But today, the Java toolchain is overly complex IMHO. Not very beginner friendly. And I have first hand experience with this because I was able to train and get up to speed people who had studied Java at Uni faster on Objective-C for mobile development.

And that is not really a language thing, but a toolchain thing.

--

--

Erik Engheim
Erik Engheim

Written by Erik Engheim

Geek dad, living in Oslo, Norway with passion for UX, Julia programming, science, teaching, reading and writing.

Responses (1)