we are developers world congress 2022
I attended at the WeAreDevelopers world congress 2022 in Berlin.
- date: 14.06. - 15.06.
- speakers: 250
- atendees: 8000
- regular ticket price 600€
Disclaimer: I’m paraphrasing (italic) the speaker based on my notes and memories as best as I can.
- Evolution of C++ - Bjarne Stroustrup
- We are all part of the game - Joanna Pirker
- Wolfenstein 3D Post mortem - John Romero
The inventor of C++ himself gave a brief history of C++, its features and progress over time.
Low Level abstraction
Bjarne’s initial motivation to create C++ was the lack of C’s (or any available language) abstraction while keeping it’s flexibility talking to hardware without unecessary layers. Dynamic memory without memory management. Someone needs to care about resource: RAII (Resource acquisition is initialization. A class cares about acquiring a resource via constructor and releasing it again via destructor, implicitly.
All good engineering relies on feedback
C++ was shaped by its users and use-cases. While its initial purpose was for the probable first network cluster software (wich got never developed), it got attention from bunch of other directions.
I conclude “Shaphing through feedback” from this and would even say that this is true for many more areas of our life. Especially positive feedback (or as AI people might say “positive reinforcement”) will let us focus on the things that went well. That’s one metric I try to measure for private software projects, which make more fun if its useful for someone.
Make it simple, don’t be to clever
What’s called KISS (Keep it simple stupid) today was important back then to avoid overengineering.
Compile time optimizations
Anything the compiler can compute, doesn’t need to get computed at runtime. From constant arithmetic expressions to static assertions. The latter has the goal to outsource error-handling more to the compiler to improve runtime performance.
It was very impressive that the language introduces sophisticated concepts like generics and shaped a whole world1. Even if we don’t use it, it seems to be anywhere: conceptual and as a fundament for higher languages or engines.
_People celebrated birthdays and weddings within Animal Crossing during the pandemic2. While video converences like skype or zoom let their attendees feel the difference by lack of physical presence, games do. Like in Animal Crossing3, there is a physical interactible presence/avatar representing the friend or family member._
Having a family spread across the country, playing games with physical presence can be quite helpful to overcome distance. Especially with my brother I play games like Minecraft, Fortnite, Raft, GTA, Borderlands, Risk of rain, No mans sky.
As long as this doesn’t replace real interaction, this is a good thing in my opinion.
There were no debugger around at that time, so the cycle was: making a small code change, test game, repeat. With Assembler and C.
Its amazing how this was even possible. They made their own engine and built a dozen of games per year, mostly two at the same time, with not more than six people. Debugging a game engine without debugger sounds like huge pain to me. Maybe the whole automation, meta-language and tooling thing to accelerate the feedback loop on debugging prevents a developer to evolve their focus and “stamina”. Like how long do you follow the path down the rabbit hole when things go wrong? If you’re already familiar with the assembler-hell, maybe nothing can stop you. Nowadays I don’t have any clue about processor registers in memory dumps and I primarily evaluate a more high level way of debug something than get my hands dirty. Maybe I should…
- Go introduces generics this year with 1.18
- See Washington Post: The pandemic canceled their wedding. So they held it in Animal Crossing.
- or in my case GTA 5