Tag: moderncpp

The Surprising Complexity of Formatting Ranges in Cpp – Barry Revzin – CppCon 2022

  • Lobby
  • Tag Archives: moderncpp

https://cppcon.digital-medium.co.uk/tag/cppcon/">cppcon.org/
---

The Surprising Complexity of Formatting Ranges in Cpp - Barry Revzin - CppCon 2022
https://github.com/CppCon/CppCon2022

With the large popularity of {fmt} and the adoption of std::format for C++20, we want to add support for formatting ranges (and tuples) into the standard library. This seems easy enough. After all, how hard could it be to add support for formatting a range?

This talk will start by introducing the std::format API and how it meaningfully differs from the ostream API. Then, we will delve into the technical hurdles of implementing format's feature-rich API for ranges and, with even more difficulty, tuples. By way of this journey, the talk will introduce the library facility that will be standardized for C++23 as well as some ideas of what may still need to be done in the future.
---

Barry Revzin

Barry is a senior C++ developer at Jump Trading in Chicago, a research and technology driven trading firm. After cppcon.digital-medium.co.uk/tag/programming/">programming for many years, he got really into the nuances and intricacies of C++ by being unreasonably active on StackOverflow (where is he is the top contributor in C++14, C++17, C++20, and now C++23). A lot of his C++ knowledge comes from just answering questions that he doesn’t know the answers to, especially when he answers them incorrectly at first.

His C++ involvement escalated when he started attending standards committee meetings in 2016, having written dozens of papers for C++20 and C++23. You might know him from such features as <=>, pack expansion in lambda init-capture, explicit(bool), conditionally trivial special member functions, if consteval, and deducing this, as well as several constexpr and ranges papers.

Outside of the C++ world, Barry is an obsessive swimming fan. He writes fun data articles for SwimSwam and also does analysis for the DC Trident, a professional swim team with Olympic Gold Medalists Zach Apple and Anna Hopkin.
---

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk

#cppcon.digital-medium.co.uk/tag/cppcon/">cppcon #cppcon.digital-medium.co.uk/tag/programming/">programming #cpp

Filed under: UncategorizedTagged with: , , , , ,

Back to Basics: The C++ Core Guidelines – Rainer Grimm – CppCon 2022

  • Lobby
  • Tag Archives: moderncpp

https://cppcon.digital-medium.co.uk/tag/cppcon/">cppcon.org/
---

Back to Basics: The C++ Core Guidelines - Rainer Grimm - CppCon 2022
https://github.com/CppCon/CppCon2022

Why do we need guidelines for modern C++? My answer boils down to three points:

1. C++ is complex for the novices

2. C++ is challenging for the professionals

3. C++ is used in safety-critical software

The C++ Core Guidelines are a C++ community-driven project by the editors Bjarne Stroustrup and Herb Sutter. They provide best practices for modern C++, including all important aspects of software development such as, for example, interfaces, functions, classes, concurrency, and templates. Applying the C++ Core Guidelines means writing correct software by design.
In my talk, I present the most important rules of the C++ Core Guidelines. My talk should not be your endpoint but your starting point for a more profound studying of their invaluable rules.
---

Rainer Grimm

Rainer has worked as a software architect, team lead, and instructor since 1999. In 2002, Rainer created a company-intern meeting for further education and had given training courses since 2002. Rainer's first tutorials were about proprietary management software, but he began teaching Python and C++ soon after. In his spare time, he likes to write articles about C++, Python, and Haskell and speak at conferences. Rainer publishes weekly on his English blog Modernes C++. Since 2016, Rainer has been an independent instructor, giving seminars about modern C++ and Python. Due to his profession, he constantly searches for the best way to teach modern C++. He published several books in various languages about modern C++ in the last ten years, including the last one "C++ Core Guidelines Explained: Best Practices for Modern C++".
---

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk

#cppcon.digital-medium.co.uk/tag/cppcon/">cppcon #cppcon.digital-medium.co.uk/tag/programming/">programming #cpp

Filed under: UncategorizedTagged with: , , , ,

Pragmatic Simplicity – Actionable Guidelines To Tame Cpp Complexity – by Vittorio Romeo – CppCon 2022

  • Lobby
  • Tag Archives: moderncpp

https://cppcon.digital-medium.co.uk/tag/cppcon/">cppcon.org/
---

Pragmatic Simplicity - Actionable Guidelines To Tame C++ Complexity - Vittorio Romeo - CppCon 2022
https://github.com/CppCon/CppCon2022

Minimizing complexity in a codebase provides invaluable benefits, especially at scale, including but not limited to: maintainability, ease of understanding, malleability, debuggability, and testability. Such benefits translate not only into real economical advantages, but also increase the mental well-being of any developer.

So, how can "simplicity" be achieved?

Rather than focusing on philosophical concepts, this interactive presentation will give developers pragmatic and actionable guidelines that can be readily applied to reduce complexity in any codebase. Starting from a wide variety of examples (e.g. casting, containers, looping, attributes) a set of precepts will be derived together with the audience. After that, a deep analysis of where those precepts fall short will be given, honing them until the reaching the final goal: obtaining actionable guidelines useful in the real world.

If any of the following questions sound interesting to you, then you will definitely find this talk helpful and enjoyable:

- Should `emplace_back` always be used instead of `push_back`?
- Does `[[nodiscard]]` belong on every pure function returning non-`void`?
- How can one decide between using open-set and closed-set polymorphism?
- Are regular `for` loops the best way of iterating over a range of numbers?
- Do C-style casts still have a place in Modern C++?
- Is `T*` really a valid replacement for `std::optional<T&>`?
- Does simple code imply concise code?
- Can using templates reduce the complexity of a code base?
- When does it make most sense to use type deduction?
---

Vittorio Romeo

Vittorio Romeo (B.Sc. Computer Science, 6+ YoE at Bloomberg) works on mission-critical C++ infrastructure and provides Modern C++ training to hundreds of fellow employees.

He began cppcon.digital-medium.co.uk/tag/programming/">programming around the age of 8 and became a C++ enthusiast shortly after discovering the language. Vittorio created several open-source C++ libraries and games, published many video courses and tutorials, actively participates in the ISO C++ standardization process, and maintains the popular SFML library.

He co-authored the acclaimed "Embracing Modern C++ Safely" book (published in January 2022) with J. Lakos, R. Khlebnikov, and A. Meredith.

Vittorio is an active member of the C++ community with an ardent desire to share his knowledge and learn from others: he presented and offered workshops over 20 times at international C++ conferences (including CppCon, C++Now, ++it, ACCU, C++ On Sea, C++ Russia, and Meeting C++), covering topics of various nature.

He also maintains a website with advanced C++ articles and a YouTube channel featuring well-received modern C++11/14 tutorials. Lastly, he's active on StackOverflow, taking great care in answering interesting C++ question (90k reputation).

When he's not writing code, Vittorio enjoys weightlifting, playing volleyball, scuba diving, canyoning, gaming, and enjoying sci-fi content.
---

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk

#cppcon.digital-medium.co.uk/tag/cppcon/">cppcon #cppcon.digital-medium.co.uk/tag/programming/">programming #cpp

Filed under: UncategorizedTagged with: , , , ,

Nth Pack Element in C++ – A Case Study – Kris Jusiak – CppCon 2022

  • Lobby
  • Tag Archives: moderncpp

https://cppcon.digital-medium.co.uk/tag/cppcon/">cppcon.org/
---

Nth Pack Element in C++ - A Case Study - Kris Jusiak - CppCon 2022
https://github.com/CppCon/CppCon2022

Varadic packs have been with us since C++11, however getting the nth element efficiently out of a variadic pack still remains not optimal/difficult.
During the years, with new standards emerging, more and more approaches have been discovered but no silver bullet has been found yet or has it?
If understanding of how std::get<N>(tuple) works sounds compeling then this session is for you!

In this case study we will explore different techniques of accessing the nth element of a variadic pack... starting from naive approaches, through template meta-cppcon.digital-medium.co.uk/tag/programming/">programming tricks, to compiler intrinsics. We will also focus and deep dive into C++20 features which enables new techniques in order to understand modern ways of dealing with variadic packs...

Comparison against different solutions also will be conducted including compilation times as well as readability including comparison between different languages such as Rust, Nim, D, Circle and C++.

At the end of this session, the audience will have a better understanding of C++20 features and how to deal with variadic packs... and how it compares to different system languages.

Let's get ready to get nth element at CppCon 2022!
---

Kris Jusiak

Kris is a Senior Software Architect passionate about cppcon.digital-medium.co.uk/tag/programming/">programming and who has worked in different industries over the years including telecommunications, games and most recently finance for Quantlab Financial, LLC. He has an interest in modern C++ development with a focus on performance and quality. He is an open-source enthusiast with multiple open-source libraries where he uses template meta-cppcon.digital-medium.co.uk/tag/programming/">programming techniques to support the C++ rule - "Don't pay for what you don't use" whilst trying to be as declarative as possible with a help of domain-specific languages. Kris is also a keen advocate of extreme cppcon.digital-medium.co.uk/tag/programming/">programming techniques, Test/Behavior Driven Development and truly believes that 'the only way to go fast is to go well!'.
__

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk

#cppcon.digital-medium.co.uk/tag/cppcon/">cppcon #cppcon.digital-medium.co.uk/tag/programming/">programming #cpp

Filed under: UncategorizedTagged with: , , , , , ,

A Pattern Language for Expressing Concurrency in Cpp – Lucian Radu Teodorescu – CppCon 2022

  • Lobby
  • Tag Archives: moderncpp

https://cppcon.org/
---

A Pattern Language for Expressing Concurrency in Cpp - Lucian Radu Teodorescu - CppCon 2022
https://github.com/CppCon/CppCon2022

Concurrency is still largely an unsolved problem. It is said that concurrency appeared in the software world in 1965, when Dijkstra provided a solution to the mutual exclusion problem. It is worth mentioning that this happened before 1968, when we officially started to use the term “Software Engineering”. We embraced structured programming in late 1960s and early 1970s for general code, but never managed to apply structured concurrency on a large scale up to this date. We are still writing our concurrent code in a largely unstructured manner. This is mainly the reason for which concurrency is a large frustration within the C++ community.

In C++, we don’t have so far a model to do structured concurrency. However, this is about to change with senders/receivers proposal. The proposal has high chances to land in the C++26 standard. Meanwhile, there are libraries implementing the proposal, so that people can start using it already. But, between having the proposal available to use and using it efficiently, there is a big gap.

This talk aims at providing a framework for programmers to use the senders/receivers proposal for addressing concurrency. We will define a pattern language for concurrency problems. Moreover, we will propose a visual representation of these patterns, making it easier for programmers to picture and argue about the structure of the concurrency. Through all these, the talk will show that concurrency of a software system can be described and analyzed just like any other architectural concern.
---

Lucian Radu Teodorescu

Lucian Radu Teodorescu has a PhD in programming languages and is a Staff Engineer at Garmin. He likes challenges; and understanding the essence of things (if there is one) constitutes the biggest challenge of all.
---

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk

#cppcon #programming #concurrency

Filed under: UncategorizedTagged with: , , , ,

Back to Basics: Standard Library Containers in Cpp – Rainer Grimm – CppCon 2022

  • Lobby
  • Tag Archives: moderncpp

https://cppcon.org/
---

Back to Basics: Standard Library Containers in C++ - Rainer Grimm - CppCon 2022
https://github.com/CppCon/CppCon2022

From a bird’s-eye view, the Standard Template Library (STL) consists of three components. Those are containers, algorithms that run on the containers, and iterators that connect both of them. The STL has five sequential and eight associative containers. I hear your question:

* When should I use a sequence container or an associative one?

* When I decided for a sequence container or an associative one, which one should I use?

The answers to these questions depends mainly on two facts: use case and performance.

You may not know it but std::array and std::vector are your best friends for sequence containers, and you are most of the time fine with std::unordered_map when you need an associative container.
---

Rainer Grimm

Rainer has worked as a software architect, team lead, and instructor since 1999. In 2002, Rainer created a company-intern meeting for further education and had given training courses since 2002. Rainer's first tutorials were about proprietary management software, but he began teaching Python and C++ soon after. In his spare time, he likes to write articles about C++, Python, and Haskell and speak at conferences. Rainer publishes weekly on his English blog Modernes C++. Since 2016, Rainer has been an independent instructor, giving seminars about modern C++ and Python. Due to his profession, he constantly searches for the best way to teach modern C++. He published several books in various languages about modern C++ in the last ten years, including the last one "C++ Core Guidelines Explained: Best Practices for Modern C++".
---

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk

#cppcon #programming #stl

Filed under: UncategorizedTagged with: , , , ,

Value Semantics: Safety, Independence, Projection, & Future of Programming – Dave Abrahams – CppCon 22

  • Lobby
  • Tag Archives: moderncpp

https://cppcon.digital-medium.co.uk/tag/cppcon/">cppcon.org/
---

C++ Value Semantics: Safety, Independence, Projection, and the Future of Programming - Dave Abrahams - CppCon 2022
https://github.com/CppCon/CppCon2022

Support for first-class user-defined value types may be among C++'s greatest strengths—one that most recent language designs have sadly failed to emulate. That said, although value types are everywhere in C++, we don't have a commonly accepted definition of “value semantics”, and we tend to use the phrase with only an intuitive idea of what it means. This talk offers a deeper understanding of value semantics, defining it in a way that in turn reveals surprising truths about cppcon.digital-medium.co.uk/tag/programming/">programming in general. We'll expose the value semantics that underlies our mental model even when we're “forced” to use pointers or references, and discuss how a future C++ might close that expressivity gap, improving safety, performance, and programmer confidence. We'll conclude with some guidelines you can use today to improve your programs, and propose the next must-see session for value semantics lovers.

This presentation lays groundwork for another talk, “Val wants to be your friend.” If you're interested in that talk, you'll want to see this one first.
---

Dave Abrahams

Dave Abrahams is a founding contributor of the Boost C++ Libraries project and the founder of the first annual C++ conference, BoostCon/C++Now. He is a contributor to the C++ standard, and was a principal designer of the Swift cppcon.digital-medium.co.uk/tag/programming/">programming language. He recently spent seven years at Apple, culminating in the creation of the declarative SwiftUI framework, worked at Google on the Swift for TensorFlow project and, briefly, on the Carbon language, and is now a principal scientist at Adobe's Software Technology Lab.
---

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk

#cppcon.digital-medium.co.uk/tag/cppcon/">cppcon #cppcon.digital-medium.co.uk/tag/programming/">programming #cpp

Filed under: UncategorizedTagged with: , , , ,

LLVM Optimization Remarks – Ofek Shilon – CppCon 2022

  • Lobby
  • Tag Archives: moderncpp

https://cppcon.org/
---

LLVM Optimization Remarks - Helping the Compiler Generate Better Code - Ofek Shilon - CppCon 2022
https://github.com/CppCon/CppCon2022

Optimization remarks are Clang's logs of optimization passes, which include leads into optimization failures that might be mitigated. Deciphering raw optimization remarks seems a matter for compiler authors and select few experts, but a little-known tool called opt-viewer aims to change that - in particular with recent improvements by myself and others.

About 50% of the talk would be dedicated to real examples of missed optimizations. Most turn out to be escape-analysis and alias-analysis related, and we will devote time to discuss these in some depth.

We will also extend the discussion to other compilers and even other languages. (you really can't have a C++ presentation in Sep 2022 without at least mentioning Rust and Carbon).

If you care about performance there's an excellent chance you'd leave this talk with immediately actionable insights and surprising ways to check and improve your code in performance bottlenecks.
---

Ofek Shilon

20Y C++ developer, writer and speaker in both the Linux and MS universes. Fascinated by compilers, debuggers and pretty much anything low level. Fiercely hated by his cat for no apparent reason.
---

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk

#cppcon #programming #llvm

Filed under: UncategorizedTagged with: , , , , ,

Modern C++: C++ Patterns to Make Embedded Programming More Productive – Steve Bush – CppCon 2022

  • Lobby
  • Tag Archives: moderncpp

https://cppcon.org/
---

Modern C++ to Impress Your Embedded Dev Friends - C++ patterns to make embedded programming more productive - Steve Bush - CppCon 2022
https://github.com/CppCon/CppCon2022

C++ is often talked about in terms of what cannot or should not be done in the context of embedded systems. In contrast, this talk is about some of the things that modern C++ idioms allow us to do better or more expressively than comparable operations in C. We will cover several patterns that allow an embedded developer to express intent clearly, ease maintenance, and encourage re-use while avoiding overheads that are costly in resource-constrained systems. Examples include initialization structures that are self-describing and IDE-friendly, small code implementations that make available sections of the C++ Standard Library for embedded use, and tools for understanding and controlling our use of limited memory resources.
---

Steve Bush

Steve is a Research Fellow at the consumer products manufacturer Procter & Gamble. He works in upstream research and development on smart and connected products, some of which have been featured at the company's LIfe Lab at the consumer electronics show CES. Though involved in all phases of embedded product development, much of his work revolves around embedded firmware development. Steve has been an advocate in his research community of modern programming practice, including the use of modern C++ to create more expressive, reusable firmware.
---

Videos Streamed & Edited by Digital Medium: http://online.digital-medium.co.uk

#cppcon #programming #embeddedsystems

Filed under: UncategorizedTagged with: , , , ,

Fast, High-Quality Pseudo-Random Numbers for Non-Cryptographers in C++ – Roth Michaels – CppCon 2022

  • Lobby
  • Tag Archives: moderncpp

https://cppcon.digital-medium.co.uk/tag/cppcon/">cppcon.org/
---

Fast, High-Quality Pseudo-Random Numbers for Non-Cryptographers in C++ - Roth Michaels - CppCon 2022
https://github.com/CppCon/CppCon2022

Many C++ developers reach for std::rand() the first time they need a pseudo-random number. Later they may learn of its downsides and include <random> to use the Mersenne Twister (std::mt19937) and various distributions from the standard library. For some the journey ends here, but for others questions arise: How should I properly seed my generators? How should I approach portability? Does std::mt19937 failing some statistical tests matter to me? Am I leaving performance on the table using std::mt19937? What quality do I need for my use-case and how can I get the best deterministic performance for that quality?

After a brief introduction to generating pseudo-random numbers with the C++ standard library this talk will look at answering these questions in digital audio applications; the same learnings could be applied elsewhere such as games, graphics, or some simulations. We will examine some benchmarks and quality analysis of standard library pseudo-random number generators and modern generators outside the standard. We will close with a demonstration of ways to make runtime-performance determinism improvements with minor quality loss over using standard library distributions.
---

Roth Michaels

Roth Michaels is a Principal Software Engineer at iZotope/Soundwide, an industry leader in real-time audio software for music production and broadcast/film post-production. In his current role on the Audio Research Team at iZotope's parent company, Soundwide, he is focused on developing new fast prototyping frameworks. When he joined iZotope, Roth was the lead library designer of a new internal cross-platform "Glass", part of which is now available as open-source. More recently in his former role as Mix/Master Software Architect, Roth helped develop the reference implementation to move iZotope's products to subscription and led the team that launched the company’s first SaaS offering for music producers. Roth studied music composition at Brandeis University and continued his studies in the Dartmouth Digital Musics program. Roth began his career in software development writing software for his own compositions, and the works of other composers and artists, and teaching MaxMSP to composers and musicians; both private instruction and designing university courses. Before joining iZotope, he was working as a consultant for small startups working on mobile applications specializing in location services and Bluetooth.
---

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk

#cppcon.digital-medium.co.uk/tag/cppcon/">cppcon #cppcon.digital-medium.co.uk/tag/programming/">programming #cpp

Filed under: UncategorizedTagged with: , , , ,