CppNow
CppNow
  • 711
  • 3 374 357
Value Oriented Programming Part V - Return of the Values - Tony Van Eerd - C++Now 2024
www.cppnow.org​
---
Value Oriented Programming Part V - Return of the Values - Tony Van Eerd - C++Now 2024
---
At the very first C++Now (aka BoostCon 2007), Sean Parent gave the Best. Keynote. Ever. Introducing many to Value Semantics. Some (who are probably reading this) said it fundamentally changed how they code. During the questions at the end, Dave Abrahams asked "how do we teach this".
We are trying Dave, we are trying.
"Value Oriented Programming" is the new thing. As opposed to Object Oriented Programming, obviously. But what is it?
It is actually somewhat less about Values vs Objects, but more about the "Oriented" part. A class, or even an int, can be treated "value-y" or "object-y", but the goal (we will see) is to more often favour an orientation towards value semantics.
We will look at how to make your types lean towards values, and how to make your code and functions treat your types like values. We will cover Intrinsics, Extrinsics, Invariants, and more!
The goal is improved code readability, correctness, maintainability, testability, and maybe even performance.
P.S. yeah, I know, the episode number should be VI...
---
Sponsored by Undo: Debug your hardest C++ bugs with time travel debugging → Learn more at bit.ly/cppnow24
---
Tony Van Eerd
Tony has been coding for well over 25 years, and hopefully coding well for most of that. Previously at Inscriber, Adobe, and BlackBerry, he now enables painting with light at Christie Digital. He is on the C++ Committee. He is a Ninja and a Jedi.
---
C++Now 2025 - 28th April - 2nd May
C++Now is an annual onsite international C++ programming and coding conference held in Aspen, Colarado. For all C++ developers, C++ software engineers and those involved with the C++ language, CppNow provides an indepth and technical content provided by the best and brightest C++ experts of the C++ world.
Annual CppNow Conference - www.cppnow.org
www.linkedin.com/company/cppnow​
cppnow
CppNow
www.reddit.com/r/CppNow
mastodon.social/@cppnow
Video Sponsors: millennium and think-cell
---
Videos Filmed & Edited By Bash Films: bashfilms.com/
UA-cam Channel Managed & Optimized By Digital Medium Ltd: events.digital-medium.co.uk
---
#boost #cpp #cppprogramming #coding #programming
Переглядів: 1 114

Відео

Embedded Asynchronous Abstraction C++ - Implementing Senders & Receivers Without an OS - Ben Deane
Переглядів 2,4 тис.День тому
www.cppnow.org​ Embedded Asynchronous Abstraction C - Implementing Senders & Receivers Without an OS - Ben Deane - C Now 2024 You've probably heard about senders and receivers. They're this new (actually old, but new to C ) abstraction for asynchronous work. People who work on them tend to be concerned with large-scale heterogeneous computing: parallel algorithms for doing "AI" and such. But if...
C++ Type Erasure Demystified - Fedor G Pikus - C++Now 2024
Переглядів 3,8 тис.День тому
www.cppnow.org​ C Type Erasure Demystified - Fedor G Pikus - C Now 2024 This talk is about type erasure in C (I have to be specific because the term has a completely different meaning in other languages). The aim of this talk is to explain how type erasure works, and do it in a very simple and clear way. Type erasure is probably the closest C comes to “and then magic happens.” It’s a technique ...
Reflection Is Good for C++ Code Health - Saksham Sharma - C++Now 2024
Переглядів 1,8 тис.День тому
www.cppnow.org​ Reflection Is Good for C Code Health - Saksham Sharma - C Now 2024 The primary reason for your code to get bored is fatigue from repetitive instructions. You write down enums, but then you also have to write their stringified version, and you also have to write a function to map the strings to the enums. You write down a class, but you have to expose every method / member in the...
Fast Conversion From Cpp Floating Point Numbers - Cassio Neri - C++Now 2024
Переглядів 1,6 тис.День тому
www.cppnow.org​ Fast Conversion From Cpp Floating Point Numbers - Cassio Neri - C Now 2024 Standard C provides a few functions to convert a double or float value to string, namely, sprintf, stringstream::operator<<, snprintf, to_string, to_chars and format. This talk concerns what goes on behind the scenes, i.e, the algorithms which these functions might use to do their job. Curiously, many of ...
An Adventure in Modern C++ Library Design - Robert Leahy - C++Now 2024
Переглядів 3,1 тис.2 дні тому
www.cppnow.org​ An Adventure in Modern Library Design - Robert Leahy - C Now 2024 Library design used to seem easy: Model the problem domain with classes which sometimes inherit from one another, throw in a few free functions, and you’re done. Modern library design is unrecognizable from that frame of reference: Customization point objects, expression equivalence, perfect forwarding, a seemingl...
Keynote: Employing Senders & Receivers to Tame Concurrency in C++ Embedded Systems - Michael Caisse
Переглядів 3,4 тис.14 днів тому
www.cppnow.org​ Keynote: Employing Senders and Receivers to Tame Concurrency in C Embedded Systems - Michael Caisse - C Now 2024 Concurrency and asynchronicity are notoriously hard in baremetal systems which often provide few abstractions. One core, a few interrupt driven events, and communication that may produce errors or require cancellation and now we have a concurrency beast. Typical appro...
C++ Coroutines at Scale - Implementation Choices at Google - Aaron Jacobs - C++Now 2024
Переглядів 4,7 тис.14 днів тому
www.cppnow.org​ C Coroutines at Scale - Implementation Choices at Google - Aaron Jacobs - C Now 2024 Google is now using C coroutines to process billions of requests per second. This talk presents trade-offs and novel choices made in developing our coroutines library, and integrating it into the Google production environment. The talk covers both performance and semantic questions that affect u...
C++ Reflection - Back on Track - David Olsen - C++Now 2024
Переглядів 6 тис.14 днів тому
www.cppnow.org​ C Reflection - Back on Track - David Olsen - C Now 2024 C reflection has been a long-sought goal of users and language designers. But previous attempts have failed to get wide enough support to make it into the C standard or be widely implemented. A newly revised design has incorporated the lessons learned from previous proposals and is gaining momentum in the C standards commit...
CppNow 2024 Session Preview with Bret Brown and @cppevents
Переглядів 4473 місяці тому
www.cppnow.org​ www.linkedin.com/company/cppnow C Now 2024 Session Preview - Our Other C Interfaces Mistakes to Avoid When Writing C Projects by Bret Brown Kevin Carpenter from @cppevents sits down with Bret Brown to discuss his upcoming Keynote talk for C Now 2024, titled Our Other C Interfaces - Mistakes to Avoid When Writing C Projects Join Kevin and Bret for a sneak preview of this session ...
Keynote Session Preview - C++ Painkillers by Anastasia Kazakova with @cppevents
Переглядів 5763 місяці тому
www.cppnow.org​ www.linkedin.com/company/cppnow C Now 2024 Session Preview - Opening Keynote: C Painkillers The Evolution of C Toolability by Anastasia Kazakova Kevin Carpenter from @cppevents sits down with Anastasia Kazakova to discuss her upcoming Keynote talk for C Now 2024, titled C Painkillers The Evolution of C Toolability Join Kevin and Anastasia for a sneak preview of this session from...
Exclusive Interview With C++Now 2024 Program Chair Inbal Levi with @cppevents!
Переглядів 2203 місяці тому
Register Now for C Now 2024: www.cppnow.org​ www.linkedin.com/company/cppnow Exclusive Interview With C Now 2024 Program Chair Inbal Levi - Get the scoop on this years line up for the CppNow 2024 Kevin Carpenter from @cppevents sits down with Inbal Levi to discuss this year's program of cpp talks for C Now 2024 conference, running from the 29th of April - 3rd May 2024! About C Now Conference C ...
Get A Sneak Peek Of C++Now 2024! Exclusive Interview With Michael Caisse By @cppevents!
Переглядів 5583 місяці тому
www.cppnow.org​ www.linkedin.com/company/cppnow C Now 2024 Session Preview - Employing Senders and Receivers to Tame Concurrency in Embedded Systems by Michael Caisse Kevin Carpenter from @cppevents sits down with Michael Caisse to discuss his upcoming Keynote talk for C Now 2024, titled Employing Senders and Receivers to Tame Concurrency in Embedded Systems Join Kevin and Michael for a sneak p...
C++Now 2024 Session Preview - Interview With Katherine Rocha by @cppevents
Переглядів 2633 місяці тому
www.cppnow.org​ www.linkedin.com/company/cppnow C Now 2024 Session Preview - Newer Isn’t Always Better: Investigating Legacy Design Trends and Their Modern Replacements by Katherine Rocha Kevin Carpenter from @cppevents sits down with Katherine Rocha to discuss her upcoming talk for C Now 2024, titled Newer Isn’t Always Better: Investigating Legacy Design Trends and Their Modern Replacements Jo...
C++Now 2024 Session Preview - Interview With Zach Laine by @cppevents
Переглядів 7103 місяці тому
www.cppnow.org​ www.linkedin.com/company/cppnow C Now 2024 Session Preview - Boost.Parser: A Parser Combinator Library for C by Zach Laine Kevin Carpenter from @cppevents sits down with Zach Laine to discuss his upcoming talk for C Now 2024, titled Boost.Parser: A Parser Combinator Library for C Join Kevin and Zach for a sneak preview of this session from CppNow 2024! Session Description: Boost...
Lightning Talk: Finding My First Compiler Bug - Braden Ganetsky - CppNow 2023
Переглядів 2,2 тис.9 місяців тому
Lightning Talk: Finding My First Compiler Bug - Braden Ganetsky - CppNow 2023
Lightning Talk: Christie Mystique - Tony Van Eerd - CppNow 2023
Переглядів 1,3 тис.9 місяців тому
Lightning Talk: Christie Mystique - Tony Van Eerd - CppNow 2023
Lightning Talk: How to Leverage SIMD Intrinsics for Massive Slowdowns - Matthew Kolbe - CppNow 2023
Переглядів 3 тис.9 місяців тому
Lightning Talk: How to Leverage SIMD Intrinsics for Massive Slowdowns - Matthew Kolbe - CppNow 2023
Lightning Talk: Into the Lambdaverse - The Beginning - Timur Doumler and Fedor Pikus - CppNow 2023
Переглядів 1,8 тис.9 місяців тому
Lightning Talk: Into the Lambdaverse - The Beginning - Timur Doumler and Fedor Pikus - CppNow 2023
Lightning Talk: Source/Sink vs. Ranges in C++ - What's the Difference? - Tony Van Eerd - CppNow 2023
Переглядів 3,2 тис.9 місяців тому
Lightning Talk: Source/Sink vs. Ranges in C - What's the Difference? - Tony Van Eerd - CppNow 2023
Lightning Talk: Hilbert’s Hotel - the Untold Bits - Tobias Loew - CppNow 2023
Переглядів 9449 місяців тому
Lightning Talk: Hilbert’s Hotel - the Untold Bits - Tobias Loew - CppNow 2023
Lightning Talk: operator for - C++ Generator Ranges Without Coroutine Overhead - Jonathan Müller
Переглядів 2,6 тис.9 місяців тому
Lightning Talk: operator for - C Generator Ranges Without Coroutine Overhead - Jonathan Müller
Lightning Talk: Into the Lambdaverse - Weird C++ Lambda Shenanigans - Timur Doumler - CppNow 2023
Переглядів 2,6 тис.9 місяців тому
Lightning Talk: Into the Lambdaverse - Weird C Lambda Shenanigans - Timur Doumler - CppNow 2023
Lightning Talk: Writing a Lookup Table in C++ - Richard Smith - CppNow 2023
Переглядів 18 тис.9 місяців тому
Lightning Talk: Writing a Lookup Table in C - Richard Smith - CppNow 2023
Lightning Talk: An Entry-Level Software Engineer Asks for 10 More Things From You - Katherine Rocha
Переглядів 1,7 тис.9 місяців тому
Lightning Talk: An Entry-Level Software Engineer Asks for 10 More Things From You - Katherine Rocha
Lightning Talk: The Guide to C++ Conferences for Swimmers - Sebastian Theophil - CppNow 2023
Переглядів 88710 місяців тому
Lightning Talk: The Guide to C Conferences for Swimmers - Sebastian Theophil - CppNow 2023
Lightning Talk: How we Grade C++ Assignments - Hans de Nivelle - CppNow 2023
Переглядів 2,4 тис.10 місяців тому
Lightning Talk: How we Grade C Assignments - Hans de Nivelle - CppNow 2023
Lightning Talk: Searching with C++ - A Fulltext Index Search Algorithm - Hana Dusíková - CppNow 2023
Переглядів 2 тис.10 місяців тому
Lightning Talk: Searching with C - A Fulltext Index Search Algorithm - Hana Dusíková - CppNow 2023
Lightning Talk: Powered by C++20 Meta-Programming (MP) - Kris Jusiak - CppNow 2023
Переглядів 2,2 тис.10 місяців тому
Lightning Talk: Powered by C 20 Meta-Programming (MP) - Kris Jusiak - CppNow 2023
Lightning Talk: Safe Arithmetic Speed-Run: Experimental C++ Library - Luke Valenty - CppNow 2023
Переглядів 2,5 тис.10 місяців тому
Lightning Talk: Safe Arithmetic Speed-Run: Experimental C Library - Luke Valenty - CppNow 2023

КОМЕНТАРІ

  • @sanjaygatne1424
    @sanjaygatne1424 6 днів тому

    Type Eraser video with different title. Same video uploaded..

  • @GeorgeTsiros
    @GeorgeTsiros 6 днів тому

    Fedor! Good to see him still do presentations.

  • @leanidchaika
    @leanidchaika 6 днів тому

    Nice!

  • @dimitrioskantakouzinos8590
    @dimitrioskantakouzinos8590 6 днів тому

    Always love talks by Fedor Pikus.

  • @josephlunderville3195
    @josephlunderville3195 6 днів тому

    It's PIMPL!

  • @27182818284590452354
    @27182818284590452354 6 днів тому

    C++26 is most certainly not the first to use compile time value reflection. E.g. Zig.

  • @LeDabe
    @LeDabe 7 днів тому

    How is std::meta::info handled across ABI boundaries ?

  • @scatterarrow
    @scatterarrow 8 днів тому

    Runtime reflection is just always a security and architectural problem in the end. It is only "nice" to get thing working quickly.

  • @Voy2378
    @Voy2378 8 днів тому

    Nice talk, but I got a feeling this was partially inspired by ASIO, would be nice if presenter or somebody from audience addressed that point.

  • @ultimateavenger5627
    @ultimateavenger5627 8 днів тому

    Nice talk

  • @guiorgy
    @guiorgy 9 днів тому

    👏🏼

  • @Dazza_Doo
    @Dazza_Doo 10 днів тому

    Every product deals with user information because that is a second form of rarevenue that make it a companies want to sell. A robotic vacuum cleaner now transmits its images to a server that is not the consumer. The washing machine now send your data to the manufacturer that they sell to third parties and it's all in the user licence agreement. The language is not the problem. Buy defaults, Smart tvs opt you in uploading your user data to the manufacturer. Every smart phone record your text envoice and send it to whoever you have your smartphone with. Your modern car keeps all your text messages, And who knows what else in they cannot be deleted. The boogie man is to blame the programmer, Select let's see how safe we can keep getting the languages.

  • @j7gy8b
    @j7gy8b 10 днів тому

    This was an incredible talk. I didn't even watch it on UA-cam because I was there live. Lucky you who is reading this - you're in for a treat.

  • @xavierthomas1980
    @xavierthomas1980 10 днів тому

    Verifying all the 128 bit floats are correctly converted into base 10 is possible. It would "only" take 6min * std::numeric_limits<uint64_t>::max(). So just about 2.10439e+14 years. Or 0.210439 quintillion years. Easy with a bit of patience.

  • @KrzysiekPierczyk-uq1du
    @KrzysiekPierczyk-uq1du 11 днів тому

    How is it that every time I tell my colleagues (working as an embedded C++ dev) "Hey guys, we have this repeatedly occurring design problem in our applications. You know what? I will write this super cool, heavily templated library that will get the job done in a unified way with a nice declarative syntax" there is this talk later *the same year* given by someone from Intel's embedded team where the prelegent says "You know what? We had this repe... So we've written the library. Here it is. Pick it" :| That was the case with cib, message library and now with groov. I absolutely love seeing such an approach in my beloved domain that is still swimming in the sea of 90's C-style souls! <3 P.S. Aren't you looking for a dev? :p

  • @mischan
    @mischan 12 днів тому

    Thanks for this excellent presentation. I don't know if enough people in embedded systems appreciate this paradigm's value, independent of language or implementation, so any visualization of its application in the field is a service to the community. Any firmware developer will be exposed to the design/architecture forces between schedule efficiency, modularity of components to be scheduled (down to the lowest level drivers), and reasoning of concurrent behavior. Every project I worked on was affected by exactly the issues Michael mentioned in the presentation, even if we considered them early on. If an RTOS is off the table (for whatever reason), it looks like this approach solves a huge part of the design space for systems that manage a lot of async behavior without dropping a lot of control. I hope the quality of code generation and compile times will scale with the problems thrown at it. Another question is how well one can reason about the global schedule timing across all execution contexts, given that with "senders", they are composed of locally specified use cases.

  • @Maximus98245
    @Maximus98245 13 днів тому

    Got lost in the first 5 minutes and never recovered😢 huge respect to those who understand what this is about!!! Just use Questdb as your timeseries db and shove that CME data stream into it and call it a day.

  • @spyofgame200
    @spyofgame200 13 днів тому

    Wow, I watched for an hour and just realized it was released on UA-cam only an hour ago.

  • @user-fj9hf4bu9f
    @user-fj9hf4bu9f 14 днів тому

    How is someone supposed to debug code written in terms of SnR? the standard version of the logging example is way more readable and comprehendible that the SnR version.

  • @adamodimattia
    @adamodimattia 14 днів тому

    One of the best talks on topic I've seen, highly reccomend!

  • @tommybandzaw5865
    @tommybandzaw5865 14 днів тому

    Great talk! Thanks Michael!

    • @MichaelCaisse
      @MichaelCaisse 12 днів тому

      Thank you! I hope you found some useful concepts in the talk.

  • @wickmar3036
    @wickmar3036 15 днів тому

    Is this library open source or planned to be?

  • @mjKlaim
    @mjKlaim 15 днів тому

    Excellent presentation 👍🏽 Note that personally I would have said that "sender factories" are the event generators, not only schedulers (which are also sender factories)

  • @simonfarre4907
    @simonfarre4907 15 днів тому

    Wait I had totally expected senders and receivers to be, exactly what senders and receivers are in every other language (channels). Why has C++ decided to take a concept and name it the exact same as some other, well established in other languages feature? That sounds like crazy land to me. Also, why are senders and receivers looking like futures and promises in combination with coroutines in this talk - and more importantly - why are we needing *another* one of those systems? These senders and receivers also look _identical_ to kotlins coroutines (or Rust's coroutines/async). Why has C++ decided to muddy the waters this bad when we have multiple large userbase languages with these features but they aren't called senders and receivers. From what I can tell, *many* languages has senders and receivers yet *none* of them look like coroutines like this. Am I wrong about this?

  • @aniketbisht2823
    @aniketbisht2823 15 днів тому

    Great talk.

  • @yaghiyahbrenner8902
    @yaghiyahbrenner8902 15 днів тому

    Look at Zephyr Zbus.

  • @aniketbisht2823
    @aniketbisht2823 15 днів тому

    I remember watching a seminal talk by Michael Caisse about Boost.ASIO when I was getting started with C++ and programming in general. This talk has the same charm. Thank you.

    • @MichaelCaisse
      @MichaelCaisse 12 днів тому

      Thank you for the kinds words! I'm very excited about this design pattern. Look for a new conference talk on using senders before the year is out.

    • @KrzysiekPierczyk-uq1du
      @KrzysiekPierczyk-uq1du 11 днів тому

      I can confirm - the same story, the same feeling :D

  • @JoseJimenez-il5vs
    @JoseJimenez-il5vs 15 днів тому

    Thr pervasive use of C++ at Goolge is why so many postmortems have been written by SRE over the years. Throw it in the tashcan where it belongs and use modern safe languages like Go and Rust for your backend micrroservices.

  • @johnjones8330
    @johnjones8330 15 днів тому

    Senders/Receivers is apparently preferring structured concurrency.

  • @ericcartmann
    @ericcartmann 16 днів тому

    <13% -> >50% ? ? ?

  • @denisyaroshevskiy5679
    @denisyaroshevskiy5679 16 днів тому

    I like the idea of splitting Co and Future.

  • @ladnir
    @ladnir 16 днів тому

    Interesting ideas but not a fan of the closed api. This is all to support his cancelation and the cost is it not working with thirdparty awaitables. Well maybe he has an await_transform in there? Idk, but I think coroutines coolest part is the open api.

  • @MatthewWalker0
    @MatthewWalker0 17 днів тому

    Great talk with some deep knowledge sharing, and makes me more hopeful for broader use of co-routines! (Jacobs sure seems to be :) ) Making `Co` non-moveable and having a separate Future that takes values seems to be a great way to solve the parameter lifetime issue. The event wait/notify appraoch (delaying the work-stealing to the next suspend) and the cancellation approach (like an exception was thrown when co_await-ing) keeps things neat. Also, he constant theme of stack frame elision is brilliant Overall, a bunch of ideas that it seems every coro library should take note of! Also, several examples of weird concurrency that comes up when having lots of users...

  • @27182818284590452354
    @27182818284590452354 17 днів тому

    Coroutines and job systems complement each other beautifully.

  • @gossip6112
    @gossip6112 17 днів тому

    OK, but what about Rust?

  • @dexterman6361
    @dexterman6361 18 днів тому

    Please be in C++26

  • @user-fj9hf4bu9f
    @user-fj9hf4bu9f 18 днів тому

    Asking people to admit to having written code that has led to a 0-day exploit is always going to have a response rate of zero, just like pilots would never openly admit to doing dumb things when flying an aircraft.

    • @Bourg
      @Bourg 11 днів тому

      I have a response rate that’s much higher than zero when I’ve asked people this question.

  • @lucasrangit
    @lucasrangit 18 днів тому

    ua-cam.com/video/_T1XjxXNSCs/v-deo.html

  • @VoidloniXaarii
    @VoidloniXaarii 18 днів тому

    Having listened to tens of hours on reflection I feel this brilliant talk has finally brought me closer to beginning to be on a path to starting to understand the road to reflection in c++ ! Thank you! ❤🙏

  • @juanmacias5922
    @juanmacias5922 20 днів тому

    Fun lambda talk, thanks for sharing. :D

  • @higaski
    @higaski 20 днів тому

    The "is this a complete class" problem already exists in C++20 with concepts. It can lead to ambiguous situations where one compiler claims a concept is true and the next one tells you it's not.