C++Online
C++Online
  • 38
  • 33 798
Lightning Talk: Disentangling The Mikado Method When Refactoring C++ Legacy Code - Phil Nash
The Online C++ Conference - cpponline.uk/ -- @cpponlineconf
---
Lightning Talk: Disentangling The Mikado Method When Refactoring C++ Legacy Code - Phil Nash
When working with legacy code we often need to make changes in the middle of a pile of spaghetti code. How can we do so without breaking everything around it? While we can't get absolute guarantees The Mikado Method gives a process that might help us manage and control the damage.
Slides: github.com/CppOnlineConference/CppOnline2024
---
Phil is the original author of the C++ test framework, Catch2. He's also a member of the ISO C++ standards committee, organiser of C++ London, C++ on Sea, C++ Online and ACCU as well as co-host and producer of CppCast.
More generally he's an advocate for good testing practices, TDD and using the type system and functional techniques to reduce complexity and increase correctness. He's previously worked in Finance and Mobile offers training and coaching in TDD for C++.
---
Streamed & Edited by Digital Medium Ltd - online.digital-medium.co.uk
---
C++Online - The Online C++ Conference organized by Shaved Yaks: shavedyaks.com/ & Digital Medium: events.digital-medium.co.uk
---
#cpp #cplusplus #cpponline #cppprogramming
มุมมอง: 208

วีดีโอ

Lightning Talk: Coccinelle for C++ - Julia Lawall - C++Online 2024
มุมมอง 1853 หลายเดือนก่อน
The Online C Conference - cpponline.uk/ @cpponlineconf Lightning Talk: Coccinelle for C - Julia Lawall - C Online 2024 Coccinelle is a tool for matching and transforming source code based on developer-written patch-like transformation rules, known as semantic patches. Coccinelle for C has been in use for over 15 years. We are currently expanding Coccinelle to C . Slides: github.com/CppOnlineCon...
Lightning Talk: How I Became a C++ Mentor the "Hard" Way - Paulo Chiliguano - C++Online 2024
มุมมอง 1373 หลายเดือนก่อน
The Online C Conference - cpponline.uk/ @cpponlineconf Lightning Talk: How I Became a C Mentor the "Hard" Way - Paulo Chiliguano - C Online 2024 A journey of my C career. Slides: github.com/CppOnlineConference/CppOnline2024 Paulo Chiliguano Software Engineer at BairesDev. MSc Sound and Music Computing, BSc Electrical Engineering and Telecommunications. Streamed & Edited by Digital Medium Ltd - ...
Lightning Talk: Why False Is Less Than True in Boolean Algebra - Ben Deane - C++Online 2024
มุมมอง 2933 หลายเดือนก่อน
The Online C Conference - cpponline.uk/ @cpponlineconf Lightning Talk: Why False Is Less Than True - Ben Deane - C Online 2024 It's not the reason you might think. Boolean Algebra has hidden depths. Slides: github.com/CppOnlineConference/CppOnline2024 Streamed & Edited by Digital Medium Ltd - online.digital-medium.co.uk C Online - The Online C Conference organized by Shaved Yaks: shavedyaks.com...
Lightning Talk: Use SIMD Pairwise Reduction in C++! - Andrew Drakeford - C++Online 2024
มุมมอง 4333 หลายเดือนก่อน
The Online C Conference - cpponline.uk/ @cpponlineconf Lightning Talk: Use SIMD Pairwise Reduction in C ! - Andrew Drakeford - C Online 2024 Typically accumulation runs at maybe 10% efficiency (for doubles). It also tends to give an optimally inaccurate result. We show what to do when things don't add up. Slides: github.com/CppOnlineConference/CppOnline2024 Andrew Drakeford A Physics PhD who st...
Lightning Talk: Keeping Up to LLVM IR: An Introduction to LLVM IR - Isaac David Bermudez Lara
มุมมอง 2433 หลายเดือนก่อน
The Online C Conference - cpponline.uk/ @cpponlineconf Lightning Talk: Keeping Up to LLVM IR: An Introduction to LLVM IR - Isaac David Bermudez Lara - C Online 2024 LLVM has been around for a while, supporting the infrastructure of modern computer languages. But what makes LLVM special? It lies in its ability to encapsulate computer constructs within a sophisticated vendor agnostic, high-level ...
Lightning Talk: Rust Without ‘Unsafe’ Is as Unsafe as C++ - Pavel Novikov - C++Online 2024
มุมมอง 6203 หลายเดือนก่อน
The Online C Conference - cpponline.uk/ @cpponlineconf Lightning Talk: Rust Without ‘Unsafe’ Is as Unsafe as C - Pavel Novikov - C Online 2024 Rust allows to shoot yourself in the foot as well, although not as easily, apparently as everything is harder to do in Rust. Slides: github.com/CppOnlineConference/CppOnline2024 Pavel Novikov Got an engineering degree in missilery from BMSTU (Moscow). Lo...
What Does It Take to Implement the C++ Standard Library? Follow-up: Mandates vs Constraints?
มุมมอง 3043 หลายเดือนก่อน
It is necessary to view the following presentation prior to this video Keynote: What Does It Take to Implement the C Standard Library? th-cam.com/video/XP21DsoPaGw/w-d-xo.html The Online C Conference - cpponline.uk/ @cpponlineconf Lightning Talk: What Does It Take to Implement the C Standard Library? Follow-up: Mandates vs Constraints? - Christopher Di Bella - C Online 2024 A few people express...
Templates Made Easy With C++20 Using Constexpr/Consteval, Fold Expressions, and Concepts - C++Online
มุมมอง 8153 หลายเดือนก่อน
The Online C Conference - cpponline.uk/ @cpponlineconf Templates Made Easy With C 20 - How Constexpr/Consteval, Fold Expressions, and Concepts Change How We Write Code - Roth Michaels - C Online 2024 C templates are a powerful tool for compile-time programming, generic programming, and metaprogramming. Historically many of these techniques have been considered advanced techniques or even arcane...
Uninitialized Uses in Systems C++ Programming: The Bytes Before the C++ Types - JF Bastien
มุมมอง 7K3 หลายเดือนก่อน
The Online C Conference - cpponline.uk/ @cpponlineconf Keynote: Uninitialized Uses in C Programming: The Bytes Before the C Types - JF Bastien - C Online 2024 An in-depth exploration of a subtle aspect of systems programming: uninitialized memory. What are in the bytes before a type exists? This talk dives into the complex world of uninitialized variables, unraveling its mysteries and practical...
The Strategy Design Pattern in Cpp - Mike Shah - C++Online 2024
มุมมอง 2.3K3 หลายเดือนก่อน
The Online C Conference - cpponline.uk/ @cpponlineconf The Strategy Design Pattern in Cpp - Mike Shah - C Online 2024 The strategy design pattern is a fundamental behavioral design pattern allowing clients to control the behavior of an object at run-time. The strategy pattern can be seen in action in the C STL for example applying 'policies' to how to execute operations (e.g. std::par or std::s...
Hijacking Singletons to Enable Unit Testing of C++ Legacy Code - David Benson - C++Online 2024
มุมมอง 1874 หลายเดือนก่อน
The Online C Conference - cpponline.uk/ @cpponlineconf Hijacking Singletons to Enable Unit Testing of C Legacy Code - David Benson - C Online 2024 A common trait of legacy code is that it doesn't have unit tests and can't be easily adapted to enable unit testing because the code wasn't structured to use Inversion of Control and Dependency Injection. Instead, the code frequently makes use of sin...
C++ Tooling Intuition - Kevin Carpenter - C++Online 2024
มุมมอง 4814 หลายเดือนก่อน
The Online C Conference - cpponline.uk/ @cpponlineconf C Tooling Intuition - Kevin Carpenter - C Online 2024 Over the years the tools we use to develop have improved significantly. It used to be the compiler that could barely tell us we were missing a semicolon, now it will tell us the exact location. The results from compilers have improved but are we doing all we can with them? Do you always ...
flat_map - WHO NEEDS THEM? THEY’RE JUST LIKE std::map. WE ALL HAVE THEM - Pavel Novikov - C++Online
มุมมอง 5484 หลายเดือนก่อน
The Online C Conference - cpponline.uk/ @cpponlineconf flat_map - WHO NEEDS THEM? THEY’RE JUST LIKE std::map. WE ALL HAVE THEM - Pavel Novikov - C Online 2024 flat_map may seem like an unfamiliar animal, but you probably used it many times, maybe not realizing it: in essence flat_map is just a sorted sequence. In this talk we will compare flat_map to existing standard associative containers, ov...
Coroutines and gRPC - Jonathan Storey - C++Online 2024
มุมมอง 6514 หลายเดือนก่อน
The Online C Conference - cpponline.uk/ @cpponlineconf Coroutines and gRPC - Jonathan Storey - C Online 2024 Coroutines have a lot of potential, but a lack of library support means that they're difficult to get started with. In this talk, we look at how coroutines can be used to write high-performance gRPC procedures that can easily be composed with other coroutine libraries. The talk starts wi...
Vulnerable C++ - Peter Sommerlad - C++Online 2024
มุมมอง 4584 หลายเดือนก่อน
Vulnerable C - Peter Sommerlad - C Online 2024
Debugging Your Hardest C++ Bugs With Time Travel Debugging from Undo - Greg Law - C++Online 2024
มุมมอง 4034 หลายเดือนก่อน
Debugging Your Hardest C Bugs With Time Travel Debugging from Undo - Greg Law - C Online 2024
Best C++ Debugger for Large Scale Linux Codebases 2024
มุมมอง 1.5K4 หลายเดือนก่อน
Best C Debugger for Large Scale Linux Codebases 2024
Keynote: Can AI Replace Programmers? - Frances Buontempo - C++Online 2024
มุมมอง 3514 หลายเดือนก่อน
Keynote: Can AI Replace Programmers? - Frances Buontempo - C Online 2024
Beginners' Guide to C++20 Coroutines - Andreas Fertig - C++Online 2024
มุมมอง 1.2K4 หลายเดือนก่อน
Beginners' Guide to C 20 Coroutines - Andreas Fertig - C Online 2024
Designing for C++ Concurrency Using Message Passing - Anthony Williams - C++Online 2024
มุมมอง 8694 หลายเดือนก่อน
Designing for C Concurrency Using Message Passing - Anthony Williams - C Online 2024
Improving Safety With Quantities and Units Library in C++ - Mateusz Pusz - C++Online 2024
มุมมอง 4744 หลายเดือนก่อน
Improving Safety With Quantities and Units Library in C - Mateusz Pusz - C Online 2024
Well Balanced Test Driven Development (TDD) in C++ - Jan Van Ryswyck - C++Online 2024
มุมมอง 5614 หลายเดือนก่อน
Well Balanced Test Driven Development (TDD) in C - Jan Van Ryswyck - C Online 2024
Why Iterators Got It All Wrong - And What We Should Use Instead - Arno Schoedl - C++Online 2024
มุมมอง 3.1K4 หลายเดือนก่อน
Why Iterators Got It All Wrong - And What We Should Use Instead - Arno Schoedl - C Online 2024
C++ Programming: Why Learning C++ Language Is So Important in Developing Countries - Mathew Benson
มุมมอง 1595 หลายเดือนก่อน
C Programming: Why Learning C Language Is So Important in Developing Countries - Mathew Benson
Empowerment with the C++ Generic Programming Paradigm - Eduardo Madrid - C++Online 2024
มุมมอง 3765 หลายเดือนก่อน
Empowerment with the C Generic Programming Paradigm - Eduardo Madrid - C Online 2024
The Evolution of Functional Programming in C++ - Abel Sen - C++Online 2024
มุมมอง 8195 หลายเดือนก่อน
The Evolution of Functional Programming in C - Abel Sen - C Online 2024
Keynote: What Does It Take to Implement the C++ Standard Library? - Christopher Di Bella - C++Online
มุมมอง 2.2K5 หลายเดือนก่อน
Keynote: What Does It Take to Implement the C Standard Library? - Christopher Di Bella - C Online
Optimising a High Performance Audio C++ Library: Lessons Learned - Dave Rowland - C++Online 2024
มุมมอง 1.4K5 หลายเดือนก่อน
Optimising a High Performance Audio C Library: Lessons Learned - Dave Rowland - C Online 2024
Advanced SIMD C++ Algorithms in Pictures - Denis Yaroshevskiy - C++Online 2024
มุมมอง 9225 หลายเดือนก่อน
Advanced SIMD C Algorithms in Pictures - Denis Yaroshevskiy - C Online 2024

ความคิดเห็น

  • @OlliS71
    @OlliS71 16 วันที่ผ่านมา

    A flat map is only fast to build if you use emplace_hint() with an ende-iterator and the new elements are always right.

    • @PaulSkeptic
      @PaulSkeptic 4 วันที่ผ่านมา

      Fast compared to what? You do know that `emplace_hint()` is not described anywhere in the stadrard draft or proposals, do you? What do you base your statement on? What do you mean by "the new elements are always right"?

  • @Drudge.Miller
    @Drudge.Miller 21 วันที่ผ่านมา

    Is there any book, documentation, anything that explains this code for newbies other than the source code itself? How many people understand this code, so foa real?

  • @levieux1137
    @levieux1137 หลายเดือนก่อน

    C is "trust the developer" model, while Rust is "trust the compiler". Only the former results in auditable code. The latter means the code's validity depends on the compiler's version, which is all but a safe practice!

    • @RustIsWinning
      @RustIsWinning หลายเดือนก่อน

      What?? Are you telling us Rust is not auditable? 😂

  • @arnabthakuria2243
    @arnabthakuria2243 หลายเดือนก่อน

    this is nice. Does anybody know what this font is

    • @Bourg
      @Bourg หลายเดือนก่อน

      Berkeley Mono.

  • @psyclobe
    @psyclobe 2 หลายเดือนก่อน

    The most clear explanation of co-routines yet!

  • @psyclobe
    @psyclobe 2 หลายเดือนก่อน

    Very interesting

  • @aniketbisht2823
    @aniketbisht2823 2 หลายเดือนก่อน

    This is brilliant. The topic is as low level as it gets in C++ and yet it is so beautifully explained.

  • @jaycarlson2579
    @jaycarlson2579 2 หลายเดือนก่อน

    Wow -----

  • @Max-mx5yc
    @Max-mx5yc 2 หลายเดือนก่อน

    Great talk as always

  • @oconnor663
    @oconnor663 2 หลายเดือนก่อน

    I think it's worth being clear about a couple things. 1) This bug will definitely be fixed eventually. It's slightly embarrassing that it's been open for so long, but part of the reason for that is that 2) it's almost impossible to accidentally trigger this bug. The copy-pasted code is quite hard to follow, and I wouldn't be able to reproduce it from memory even if you paid me to try :) In contrast of course, the same mistake in C++ is one we all make the first week we learn about pointers.

    • @raymundhofmann7661
      @raymundhofmann7661 2 หลายเดือนก่อน

      Before that eventually happens C++ compilers might finally get warnings/errors and static analysis for most dangling cases.

  • @raymundhofmann7661
    @raymundhofmann7661 2 หลายเดือนก่อน

    Why hasn't clang a warning for this simple dangling cases? It would be on par with rust "safety" and help sometimes.

  • @leemack4562
    @leemack4562 3 หลายเดือนก่อน

    sublime presentation, one of the best i've seen for a long time

  • @markusdd5
    @markusdd5 3 หลายเดือนก่อน

    That is a pretty long-winded way of saying: uninitialized memory contains garbage and freed memory might still expose your old data.

    • @jewulo
      @jewulo 3 หลายเดือนก่อน

      Sure. Thanks. But not everyone has your knowledge. Everybody is coming from a different knowledge base and understanding. We all pick up knowledge at different times and from different people. The more sources the better.🙄

    • @Drudge.Miller
      @Drudge.Miller 21 วันที่ผ่านมา

      You are absolutely right, it is a "long-winded way", but the cool thing about this talk is that you know understand what's going on. I personally like this kind of talks. At the beginning you have an quite unspectacular observation and then you start to dig deeper until you really understand what's going on. It's fun but has less practical use for most users.

  • @CTimmerman
    @CTimmerman 3 หลายเดือนก่อน

    Just have the OS or some security service clear data after an app closes.

  • @guruware8612
    @guruware8612 3 หลายเดือนก่อน

    When talking about topics which are not that trivial, try to avoid using 'uh' and 'ah' every 5th word, this could easily lead to undefined behavior.

  • @wiseskeshom4673
    @wiseskeshom4673 3 หลายเดือนก่อน

    Thank you so much for sharing this great stuff.

  • @Roibarkan
    @Roibarkan 3 หลายเดือนก่อน

    3:12 Walter Brown’s talk: th-cam.com/video/Am2is2QCvxY/w-d-xo.html

  • @joseoliveira8423
    @joseoliveira8423 3 หลายเดือนก่อน

    awesome content, thank you so much

    • @MikeShah
      @MikeShah 3 หลายเดือนก่อน

      Cheers!

  • @SimonToth83
    @SimonToth83 3 หลายเดือนก่อน

    Quick note about @8:24. Since the zero and one case return an int, this function will always return int, which probably isn't the intent.

  • @KeithKazamaFlick
    @KeithKazamaFlick 3 หลายเดือนก่อน

    peace to all my coding brothers

  • @chturne
    @chturne 3 หลายเดือนก่อน

    Brilliant talk, thank you very much for sharing. Great production quality, learned loads of interesting stuff, and I'm inspired to to learn more. Very nice gilet as well!

  • @Bourg
    @Bourg 3 หลายเดือนก่อน

    The other talk I mentioned: th-cam.com/video/dFIqNZ8VbRY/w-d-xo.html The font is Berkeley Mono. The animations are all done in Keynote.

    • @anandmoon5701
      @anandmoon5701 3 หลายเดือนก่อน

      Thats gem of a talk.

  • @ZenCarry
    @ZenCarry 3 หลายเดือนก่อน

    Extremely helpful, thank you.

  • @dadisuperman3472
    @dadisuperman3472 3 หลายเดือนก่อน

    The best talk ever. Detailed explanation where it should be detailed and short when it needs to be short. 10/10. In a couple of years this talk will be a sensation. Bravo.

    • @CppOnline
      @CppOnline 3 หลายเดือนก่อน

      Your comments are much appreciated, thank you so much!

  • @konstantinrebrov675
    @konstantinrebrov675 3 หลายเดือนก่อน

    I like this very unique and interesting presentation format. Very nice, much appreciated.

  • @wsollers1
    @wsollers1 3 หลายเดือนก่อน

    Even though i knew the topic well, this was a great video and i shared it with my son for his enrichment.

  • @PerriPaprikash
    @PerriPaprikash 3 หลายเดือนก่อน

    Don't want to be that person - but what specifically from this talk was about optimizing a high performance library? also please stop using high_resolution_clock

    • @elvircrn
      @elvircrn 2 หลายเดือนก่อน

      Little bit late to the party: what's so bad about high_resolution_clock?

    • @BaseNAND
      @BaseNAND 13 วันที่ผ่านมา

      @@elvircrn See 13:00

  • @jimitrupani8998
    @jimitrupani8998 3 หลายเดือนก่อน

    Nice

    • @MikeShah
      @MikeShah 3 หลายเดือนก่อน

      Cheers!

  • @Roibarkan
    @Roibarkan 4 หลายเดือนก่อน

    43:54 [slide 61] as long as we’re specifying some of the defaulted templates arguments - I’d comment that I’m very fond of using std::less<void> instead of std::less<T>.

    • @PaulSkeptic
      @PaulSkeptic 2 หลายเดือนก่อน

      That's fair. But I think `std::less<void>` has more to do with when you want to get heterogeneous comparison lookup out of the box. Otherwise `std::less<T>` is consistent with how it's currently defined in the standard for `std::map` (and `std::equal_to<T>` for `std::unordered_map`), and how it's defined in P0429 "A Standard `flat_map`" by Zach Laine (and in P1222 for `flat_set`).

  • @Roibarkan
    @Roibarkan 4 หลายเดือนก่อน

    41:17 [slide 57] another concern when choosing between std::map and flat_map is iterator-invalidation. Unlike flat_map - iterators to std::map (and std::unordered_map) stay valid if new elements are added or if other elements are erased. Great talk, Pavel!

    • @PaulSkeptic
      @PaulSkeptic 2 หลายเดือนก่อน

      Since flat map is an adaptor it _kinda_ inherits guarantees from the type it adapts. So yes, in case flat map adapts an `std::vector` (which is the default) iterators will be invalidated on insert/erase. But flat map can adapt a different sequence type with different guarantees, e.g. one which does not invalidate iterators and/or references on insert/erase, in which case they are not invalidated for flat map either.

  • @anon_y_mousse
    @anon_y_mousse 4 หลายเดือนก่อน

    It should be noted that these benchmarks are only useful for those that don't want to shop around for a better implementation nor are they willing to write their own. The real benchmark test is for a completely custom implementation which attempts to balance allocation strategies and take hints from the user on an estimate for the number of elements. The best general purpose allocation strategy that I've found for in-memory allocation is to double the capacity each time the memory grows. This means that the larger the container is the less often it will allocate and move the contents. However, there are times when you want to use more of a deque approach and again, it depends on the data being stored and how it's being accessed. I do find it funny that certain container types have taken this long to make it into the standard library because I've been using similar structures in my own code for decades now, but written in C. I've done a lot of experimentation with hash tables and as far as I've seen, the performance when implemented the correct way is better than the theorized performance whenever people show the big O notation. Also, I'm pretty sure the chart for insertion/removal into/from a vector is wrong. It should be O(M) as it depends on where the element is being inserted or removed. Only those elements that have a higher index will need to be moved if no allocations take place, and in cases where an allocation occurs all of them will need to be moved.

  • @iwasinnamuknow
    @iwasinnamuknow 4 หลายเดือนก่อน

    Great talk but the zoomy-in-out camera effect tends to cause motion sickness

  • @Roibarkan
    @Roibarkan 4 หลายเดือนก่อน

    Great talk. In 49:45 note that if await_suspend() returns void (or true) the control is returned back to the “regular stack” (resumes the non-coroutine function on the top of this threads’ stack). The distinction is relevant for ‘symmetric transfer’ which Jonathan deliberately skipped, in which one coroutine can resume another, and if the latter suspends via void-returning in await_suspend we’ll not get to the caller-coroutine)

    • @JonathanStorey-nano
      @JonathanStorey-nano 4 หลายเดือนก่อน

      Thanks! Glad you enjoyed it Good note on the return value of await_suspend() and symmetric transfer -- it's a particularly neat feature of C++ coroutines. There was a very brief mention of resuming a different coroutine at 46:15, but unfortunately I didn't have the time to dig into it further

  • @peacefuldragon1831
    @peacefuldragon1831 4 หลายเดือนก่อน

    Densely Packed information

  • @Roibarkan
    @Roibarkan 4 หลายเดือนก่อน

    45:49 Nico Josuttis on the danger of range views: th-cam.com/video/qv29fo9sUjY/w-d-xo.html

  • @Roibarkan
    @Roibarkan 4 หลายเดือนก่อน

    41:19 Herb Sutter’s taxonomy: th-cam.com/video/ARYP83yNAWk/w-d-xo.htmlm41s

  • @Roibarkan
    @Roibarkan 4 หลายเดือนก่อน

    13:01 Peter’s talk from ACCU 2022: th-cam.com/video/LDiLF33j8UA/w-d-xo.html

  • @JehovahsaysNetworth
    @JehovahsaysNetworth 4 หลายเดือนก่อน

    Cool videos

  • @JehovahsaysNetworth
    @JehovahsaysNetworth 4 หลายเดือนก่อน

    The vulnerability is caused by the users visiting certain pages directly in the browser and also the page not redirecting those visitors back to the pages they came from

  • @user-hf2dr7sh4y
    @user-hf2dr7sh4y 4 หลายเดือนก่อน

    Can udb help you find backdoors in running code?

  • @antoniogarest7516
    @antoniogarest7516 4 หลายเดือนก่อน

    Thanks a lot for such a great tool

  • @konstantinrebrov675
    @konstantinrebrov675 4 หลายเดือนก่อน

    Yes, I want to become a C++ Master too! From this day forward, I will devote myself to becoming a C++ Master as the primary directive of my life, to study C++ as if my life depends on it, because it really does, this is my career after all! I have a desire to deeply understand and learn C++ and related topics in programming. For that I am living an ascetic lifestyle, removing all distractions completely. Focusing only on my programming, no any extra things.

  • @Roibarkan
    @Roibarkan 4 หลายเดือนก่อน

    11:07 I believe the “special trick” mentioned is to specialize std::coroutine_traits<wrapper> for the coroutine-wrapper type

  • @Roibarkan
    @Roibarkan 4 หลายเดือนก่อน

    6:38 Roth Michaels’ CppCon talk: th-cam.com/video/oxnCdIfC4Z4/w-d-xo.html

  • @RN-rm7gd
    @RN-rm7gd 4 หลายเดือนก่อน

    I liked this presentation very much, you should always strive to express yourself in code. Only that you blame iterators not supporting a semantic you added, i believe is questionable. But this were the means getting the audience attention. :) Thank you very much.

  • @iltrovatoremanrico
    @iltrovatoremanrico 4 หลายเดือนก่อน

    You are a legend.

  • @DFPercush
    @DFPercush 4 หลายเดือนก่อน

    tl;dr: Views and ranges which remove and/or change the order of elements create ill defined borders if a classic iterator is used to point to the left or right of it (e.g. upper_bound()). Iterators should be separated into two distinct concepts: borders and elements. Elements can be nullable instead of .end(), borders are well defined and symmetric (begin() and end() reference-able) ... it sounds like a nice idea. There are some details to work out regarding how borders would be invalidated if the collection was mutated, but it sounds like a useful paradigm.

  • @anon_y_mousse
    @anon_y_mousse 5 หลายเดือนก่อน

    I identify so much with this topic as I've intentionally only ever bought low power hardware. I've never owned a discrete graphics card, for that matter. You're 100% correct when you say that not everyone has an ideal situation because even living in the best state in the US, I still get power outages here 5 or more times per year. It's the reason I have a UPS or two in every room in the house with electronic devices and why I recommend others do the same. As far as comparing against other languages, I personally prefer C to C++ and use it far more, and for nearly every personal project I've done I have chosen it. That said, I still also regularly use C++ and try to keep up to date with my knowledge of it. Part of why I would recommend that website you mention is because it tells you useful information such as when a given construct has been available as standard in the language, such as telling you "since C++11", but also it has an entire section for C as well. Towards C++, I would definitely agree that it, just like C and other system level compiled languages, allow you to optimize better than interpreted languages and for lower power hardware such languages are a must. I applaud the standard committee's efforts towards concepts like constexpr and consteval because they will definitely help in that regard and I applaud the work of compiler developers in implementing them. I would also argue that if you write idiomatic C++ that it is just as memory safe as other languages pretend to be and it is incumbent upon the developer to learn all of the tools and how to use them, such as open source software like `valgrind` which do a far better job than a program like `rustc` at analyzing memory usage and finding bugs. I used to hate C++ as a language, but the more new languages that kept popping up really made me appreciate so much more about it as a language. However, I will never stop adding a `using namespace std;` at the top of my C++ source files and eschew the ridiculous overuse of `std::` that so many developers do these days. Don't want name conflicts, don't use standard names in your own code.

  • @anon_y_mousse
    @anon_y_mousse 5 หลายเดือนก่อน

    Having made an attempt at implementing just the basic container types some 25-ish years back, I can tell you that you definitely don't want to start from scratch, especially in the current day. Also, I still say that std::map::operator[] shouldn't insert new keys. Implementing all of the C standard library was significantly easier back then, and even today is still significantly easier than the C++ standard library. If anyone is taking advice, unless you're willing to spend years on it, don't try to design and implement your own programming language, especially if you expect it to be a useful systems programming language. It is beyond annoying, although, from my own experience, consider using some sort of compiler construction tools or generating an IL such as what LLVM uses instead of writing the entire thing from scratch like an insane person.

  • @Roibarkan
    @Roibarkan 5 หลายเดือนก่อน

    36:39 By the way, in C++23 we also got std::basic_const_iterator which can potentially assist library developers implement their own containers and range adaptors. Great talk!