CoreCppIL
CoreCppIL
  • Видео 244
  • Просмотров 312 580
Bryce Adelstein Lelbach :: C++ Horizons
Presented at Core C++ 2023 conference, Tel Aviv.
In the next decade, three major new C++ features will reshape how we write C++ code - reflection/injection, pattern matching, and senders:
* Reflection/injection - facilities for extracting information from the program, performing compile-time computations based on that information, and injecting new program entities based on those computations.
* Pattern matching - a new expressive selection mechanism that matches values against patterns and binds variables when matches are successful.
* Senders - a framework for asynchronous programming that enables us to write generic code that can run on any type of execution resource, from a single thread ...
Просмотров: 433

Видео

Daisy Hollman :: Expressing Implementation Sameness and Similarity in Modern C++
Просмотров 3735 месяцев назад
Keynote at Core C 2023 conference, Tel Aviv. Polymorphism is among the most widely discussed introductory topics in software engineering. Often couched in a vague context of code reuse, much of this introductory focus nonetheless revolves around interface similarity. More advanced discussions of code reuse in software engineering typically revolve around general topics like the maintainability ...
Vittorio Romeo :: Improving Compilation Times: Tools & Techniques
Просмотров 2785 месяцев назад
Presented at Core C 2023 conference, Tel Aviv. "Modules will solve everything", people say some optimistically, others sarcastically. However, modules are far from reaching real-world maturity, and it is still not certain whether they will improve compilation times in every situation and how costly it will be to migrate a large codebase. Do we have to suffer with excruciating compilation times ...
Ran Regev :: C++26 Contracts
Просмотров 2775 месяцев назад
Presented at Core C Meetup, Jan 2024. The meetup was generously hosted by Millennium (MPGC Services Ltd), Ramat Gan. In this talk, I present the new C 26 feature: Contracts. Although it is not yet approved, it is in its planned path to be so. The talk explains the basics: what it is and what it isn't. It demonstrates the ideas with a few examples. Advanced issues are answered based on questions...
Marshall Clow :: Development Strategies - The stuff around the code
Просмотров 2255 месяцев назад
Presented at Core C 2023 conference, Tel Aviv. We all like to write code - right? But to write a successful piece of software requires effort on aspects other than the code. In this talk, I will list some of these topics, and suggest techniques that will help you be successful. Things like testing, documentation, dealing with user questions and bug reports, along with tools to help you make you...
Daniel Babitsky :: Building low latency, network intense applications with C++ [HE]
Просмотров 5875 месяцев назад
Presented at Core C 2023 conference, Tel Aviv. High Frequency Trading (HFT) companies require high-speed networks and co-location services to minimize latency. Employing C can provide a significant performance boost for low-latency network-intense applications, with the proper design and implementation. In this talk, we will explore various techniques used in real production code to build appli...
Nevin Liber :: MDSPAN: A Deep Dive Spanning C++, Kokkos & SYCL
Просмотров 2817 месяцев назад
Presented at Core C 2023 conference, Tel Aviv. This talk is a deep dive into the history behind MDSPAN (it’s roots being in Kokkos::View), the C standardization effort behind it (current status, various tradeoffs made over time, and language changes to help support it) and how SYCL is looking to leverage it in the future. MDSPAN is a non-owning multidimensional array reference, currently slated...
Rainer Grimm :: Concurrency Improvements in C++20: A Deep Dive
Просмотров 5897 месяцев назад
Presented at Core C 2023 conference, Tel Aviv. With the publishing of the C 11 standard, C got a multithreading library and a memory model. This library has basic building blocks like atomic variables, threads, locks, and condition variables. That’s the foundation on which C standards such as C 20 can establish higher-level abstractions consisting of extended atomics, semaphores, latches and ba...
Sebastian Theophil :: A Practical and Interactive Guide to Debugging C++ Code
Просмотров 5107 месяцев назад
Presented at Core C 2023 conference, Tel Aviv. We like to write code but-despite our best efforts-we make mistakes. Our program will contain bugs. Sometimes, we don’t write what we mean to write, sometimes we don’t understand an aspect of our programming language and at other times we lack-or fail to consider-some critical information about our program’s system environment. As a result, our pro...
Alex Dathskovsky :: To Int or to Uint, This is the Question
Просмотров 5387 месяцев назад
Presented at Core C 2023 conference, Tel Aviv. In our daily work, we often use integral data types to perform arithmetic calculations, but we may not always consider how the selection of the data type can affect performance and compiler optimizations. This talk will delve into the importance of choosing the correct data type for the job and how it impacts compiler optimizations. We will also ex...
Dor Rozen, Igor Pora-Leonovich :: Performance-related coding guidelines
Просмотров 3447 месяцев назад
Presented at Core C 2023 conference, Tel Aviv. Performance as the top priority is the defining aspect of C . No other programming language provides the performance-critical facilities of the language. This talk is about performance-related coding guidelines in modern C . We will discuss generic issues everyone can use daily to make code performant but still readable. Several examples will be an...
Anastasiia Kazakova :: Standard C++ toolset
Просмотров 6847 месяцев назад
Presented as Core C 2023 conference in Tel Aviv. Programming languages nowadays are often packed with a standard set of tools that form an ecosystem around it. Compilers and debuggers, static analyzers, build systems, dependency managers, and unit testing frameworks are essential for adoption and evolve with the language. C is about to turn 40. Though the ecosystem was very diverse and incomple...
Roi Barkan :: More Ranges Please
Просмотров 1487 месяцев назад
Presented at Core C 2023 conference in Tel Aviv. Ranges are one of the major additions of C 20, in which our main abstraction for sequences shifted from iterator-pairs into full fledged concepts, allowing better composability, expressibility and safety when working with bounded and even unbounded one dimensional sequences of data. The fluent use of the pipe-operator gave us power to write compl...
Chandler Carruth :: Carbon Language :: Q&A discussion [Jul 2022]
Просмотров 8377 месяцев назад
At Core C meetup, July 2022. *Chandler Carruth* is the technical lead for Google's programming languages and software foundations. He has worked extensively on the C programming language and the Clang and LLVM compiler infrastructure. Previously, he worked on several pieces of Google's distributed build system and made guest appearances helping maintain a few core C libraries across Google's co...
Amir Kirsh :: C++ Incidental Explorations
Просмотров 1777 месяцев назад
Presented at Core C 2023 conference in Tel Aviv. Let's embark on a journey through the exciting discussions about C , found in StackOverflow's Q&A. We will cover both fundamental issues as well as anecdotal corners of the language, get lost down a few rabbit holes, and become familiar with some topics usually reserved for "language lawyers". We will finish by exploring whether, and how ChatGPT ...
Alon Wolf :: Expressive Compile Time Parsers
Просмотров 1827 месяцев назад
Alon Wolf :: Expressive Compile Time Parsers
Mike Spertus :: C++ for the cloud
Просмотров 4257 месяцев назад
Mike Spertus :: C for the cloud
Gili Kamma :: Lessons I learn from improving legacy product and doubling its performance
Просмотров 2497 месяцев назад
Gili Kamma :: Lessons I learn from improving legacy product and doubling its performance
Chris Ryan :: Multi-Paradigm Programming and Beyond
Просмотров 2288 месяцев назад
Chris Ryan :: Multi-Paradigm Programming and Beyond
Yehezkel Bernat :: Lazy and Proud: How I Failed to Standardize lazy_counted_iterator
Просмотров 1218 месяцев назад
Yehezkel Bernat :: Lazy and Proud: How I Failed to Standardize lazy_counted_iterator
Victor Ciura :: The Imperatives Must Go!
Просмотров 3268 месяцев назад
Victor Ciura :: The Imperatives Must Go!
Implication Operator for C++ :: Walter E. Brown
Просмотров 1,3 тыс.8 месяцев назад
Implication Operator for C :: Walter E. Brown
What's new in Conan 2.0 :: Christopher McArthur
Просмотров 2528 месяцев назад
What's new in Conan 2.0 :: Christopher McArthur
Jeff Garland :: SIMD Libraries in C++
Просмотров 8038 месяцев назад
Jeff Garland :: SIMD Libraries in C
Gal Oren :: Accelerated C++ with OpenMP
Просмотров 49211 месяцев назад
Gal Oren :: Accelerated C with OpenMP
Ofek Shilon :: Compiler Optimizations
Просмотров 27611 месяцев назад
Ofek Shilon :: Compiler Optimizations
Eran Talmor :: Scope Sensitive Programming
Просмотров 33611 месяцев назад
Eran Talmor :: Scope Sensitive Programming
Alon Wolf :: Expressive Compile Time Parsers
Просмотров 31011 месяцев назад
Alon Wolf :: Expressive Compile Time Parsers
Alex Cohn :: Does the C++ compiler work too hard?
Просмотров 31411 месяцев назад
Alex Cohn :: Does the C compiler work too hard?
Coral Kashri and Daisy Hollman :: From a modern to an unbelievably modern C++
Просмотров 3,2 тыс.11 месяцев назад
Coral Kashri and Daisy Hollman :: From a modern to an unbelievably modern C

Комментарии

  • @bushidocodes
    @bushidocodes 4 дня назад

    \(@^0^@)/ Reflection looks like kaomoji! LOL

  • @user-fj9hf4bu9f
    @user-fj9hf4bu9f Месяц назад

    There are a lot of invalid suggestions and recommendation in this video.

  • @bytesizedfeed
    @bytesizedfeed Месяц назад

    I hope one day we’ll get a package manager for C++ or something similar that’s still backwards compatible.

  • @ludvikjerabek
    @ludvikjerabek Месяц назад

    This guy gave me a career... C++ forever.

  • @MansoorAman
    @MansoorAman Месяц назад

    @45:20 Of course -march or -mtune will degrade latency performance, they are designed to maximise throughput. SIMD instructions will of course have higher latency than their scalar counterparts.

  • @coolingice6221
    @coolingice6221 2 месяца назад

    That name space is one piece of work

  • @coolingice6221
    @coolingice6221 2 месяца назад

    I lined it up real good but it all went side ways during staging

  • @shuojinbecool4778
    @shuojinbecool4778 4 месяца назад

    This is an awesome talk! Very useful for C++ developers on embedded projects.

  • @SamWhitlock
    @SamWhitlock 4 месяца назад

    Wow this is easily one of the most underrated C++ talks I've ever watched! This was so well-explained that a lot of things about the typical way you find done in Big Corp code (e.g. with inheritance) can feel so much like "instant legacy code".

  • @islam_yasar
    @islam_yasar 4 месяца назад

    at least you can add english subtitles ?

  • @SamWhitlock
    @SamWhitlock 4 месяца назад

    35:00 shouldn't CRTPMixin be inherited from virtually if it wants to be reused by multiple mixins (to get the self() for "free")? Maybe it doesn't make a difference because it's a bunch of consteval functions.

  • @pyajudeme9245
    @pyajudeme9245 4 месяца назад

    I don't know why nobody ever mentions what languages those "memory safe languages" were written in: C/C++ If they were not written in C/C++, they depend at one point on C/C++. Even the "memory safe" language Rust uses LLVM to compile its code, which was written in… C++. How can anybody create a "memory safe" language depending on an "unsafe language" or on something that was created in an "unsafe language". That doesn't make any sense. It either means that everything is unsafe or that C/C++ are not as bad as (almost) everybody says.

    • @scottfranco1962
      @scottfranco1962 4 месяца назад

      Not difficult at all. For example, if the language being compiled has type safe arrays, it can compile with array checks. The language being compiled and the language of the compiler have very little to do with each other.

    • @robervaldo4633
      @robervaldo4633 3 месяца назад

      think: the first C compiler wasn't written in C

  • @elio8119
    @elio8119 5 месяцев назад

    The language is beyond ridiculous at this point, if I would be Bjarne I would just "delete" c++ and start again and reduce the language to be smaller, simpler and still be the same low lvl efficiency.

    • @mtl_guy
      @mtl_guy Месяц назад

      You are damn right

  • @briansalehi
    @briansalehi 5 месяцев назад

    After years of "trying to learn" C++, I can finally safely say that it's okay if sometimes I say I seriously cannot understand C++. Though, I still love to program with C++. So, here I am moving to the next video on my C++ watch list! This talk seems to introduce cool new features though.

  • @guwenbin1
    @guwenbin1 5 месяцев назад

    it would be good if there's an English version.

  • @fr0zi
    @fr0zi 5 месяцев назад

    in the world where everything is going towards simplicity and ease of use, we have C++ which bravely goes against the stream 🙃 I can't comprehend how somebody could look at such syntax and think "yeah... that looks good"

  • @higaski
    @higaski 5 месяцев назад

    The reflection syntax makes C++ look like brainfuck. I can't imagine how someone is supposed to learn this?

  • @Roibarkan
    @Roibarkan 5 месяцев назад

    Great talk! On the topic of virtual functions, I hope the committee will consider the “Liskov Substitution Principle” when deciding (post MVP) how to define pre/post conditions of virtual functions

  • @xv179
    @xv179 5 месяцев назад

    Do not write an English title, or an English description for a zionist genocidal language to be spoken in the talk.

  • @alurma
    @alurma 5 месяцев назад

    Interesting

  • @yechielkimchi977
    @yechielkimchi977 6 месяцев назад

    I have put my presentation at Core C++ 2019 in Israel, while answering a Quora question: Why is C++ considered a bad first language to learn? My answer began with a short text: * The most important word in that question is _considered_! * The answer is: - Because too many programmers use C++ without understanding the real basics of C++, and some of them even dare to teach C++. Then the link to this video followed. Enjoy 🌷

    • @yechielkimchi977
      @yechielkimchi977 6 месяцев назад

      What I have not mentioned at the presentation: The 2nd semester was always about teaching C++ at both the university and the Technion. It was much easier for the students at the university (who learnt C++ as 1st PL - without building classes) compared to the students at the Technion, where I taught C as the 1st PL (that was dictated by the curriculum). Indeed, moving from C++ to C may be difficult too, but if you know C++, you just have to know what you cannot use in C - yet, you'' have to learn how to overcome some missing features in C that you were so happy to use in C++ - and those become an important part of the knowledge a SW should have.

  • @sillybuttons925
    @sillybuttons925 7 месяцев назад

    That was great, never thought about parallelizing via something like lambda vs. threads.

  • @eugnsp
    @eugnsp 7 месяцев назад

    Thank you for all what you did, Walter!

  • @khanra17
    @khanra17 7 месяцев назад

    Started from nowhere, super bad audio quality, has no structure.

    • @smnomad9276
      @smnomad9276 5 месяцев назад

      yea that was a poorly made video.

  • @RealIllumin
    @RealIllumin 7 месяцев назад

    Please can you clean up the audio. Thanks.

  • @Roibarkan
    @Roibarkan 7 месяцев назад

    24:01 Great talk. To clearly state Alex’s point in this slide - of someone would call the decode() function with a negative size it will result in buffer overflow, because ‘line 45’ doesn’t catch negative cases, and (surprisingly) the condition “i < size” will be evaluated to true (!) converted to a number larger than INT_MAX (and thus definitely larger than 254)

  • @Roibarkan
    @Roibarkan 7 месяцев назад

    6:18 David Sankel’s talk from C++Now 2023: ruclips.net/video/7xwjjolDnwg/видео.html

  • @goodecheeseburgers6320
    @goodecheeseburgers6320 7 месяцев назад

    Audio quality is trash. makes the video unwatchable.

  • @newsgo1876
    @newsgo1876 7 месяцев назад

    Best tutorial so far I have ever seen. Thanks!

  • @androth1502
    @androth1502 7 месяцев назад

    after all these years, i can't believe that they haven't been able to come up with a standard library build module in c++. i mean, they have no problem bloating the language with every obfuscated idea that comes out of CS, but a build module? no way! the simplest thing would be to have the build scripts written in c++, (see zig as example). that way you don't have to learn some archaic scripting language, or rely on 3rd party tooling.

  • @higaski
    @higaski 7 месяцев назад

    I recommend CPM for dependency management. It's a thin wrapper around CMake's FetchContent module so theres no need to learn an additional tool...

  • @LegalizeAdulthood
    @LegalizeAdulthood 7 месяцев назад

    Nice to see two clang-tidy checks I wrote appear on screen :)

  • @mikebauer9335
    @mikebauer9335 7 месяцев назад

    Promo-SM 🤦

  • @Roibarkan
    @Roibarkan 7 месяцев назад

    24:47 After the talk I learned that there’s also paper P2760 with the plan for ranges in C++26

  • @Roibarkan
    @Roibarkan 7 месяцев назад

    14:10 Link to Stepanov’s talk: ruclips.net/video/1-CmNNp5eag/видео.html. Another version of the talk with better audio: ruclips.net/video/YlVUzJwN_Xc/видео.html

  • @Roibarkan
    @Roibarkan 7 месяцев назад

    Direct link to slides: docs.google.com/presentation/d/115iU6rA6gAUNErenmBIPqdl_HHlcYp9_YoYLOFSUNho/present

  • @depralexcrimson
    @depralexcrimson 8 месяцев назад

    what the hell is going on with C++ this is all getting way too confusing lmao, it feels like 30 different people with 30 different beliefs push shit into C++ and now you have 3000 different ways of doing 1 thing.

  • @JohnDlugosz
    @JohnDlugosz 8 месяцев назад

    So what's the fixed version of the original Euler problem code?

  • @frankgerlach4467
    @frankgerlach4467 8 месяцев назад

    I accept Mr Stroustrup fights for his invention. That's commendable. Nevertheless, he has not fully analyzed the problem. Here is why: sappeur.ddnss.de/WhyCandCppCannotBeMemorySafe.html

  • @ericedlund3140
    @ericedlund3140 8 месяцев назад

    Ada doesn't have implication, but it has nice if expressions which achieve the same thing. You can say "if condition1 then condition2" and if conition1 is false, the expression evaluates to true.

  • @sqlexp
    @sqlexp 8 месяцев назад

    Poor Christina. Now the world knows she is arithmetically challenged.

    • @sqlexp
      @sqlexp 8 месяцев назад

      Poor Sarah. Now the world knows she, too, is arithmetically challenged.

  • @PaulJurczak
    @PaulJurczak 8 месяцев назад

    @40:00 You meant "for (int i=0; i<=7; i++)", right?

  • @PaulJurczak
    @PaulJurczak 8 месяцев назад

    @23:00 This version is cleaner, but requires a memory allocation. Imagine a case where a, b and c are huge and can be pre-allocated and reused for each call. The former version of arr_add would be more appropriate.

  • @nerdrage562
    @nerdrage562 8 месяцев назад

    I'd save the arrow operator => for short syntax lambdas, so that we can use ranges and pipe operators more effectively, making things like "std::views::filter(x=>x>2)" vs "std::views::filter([](const auto& x) { return x > 2; }). In my mind, this is more useful and saves much more typing than the implication operator.

  • @Caellyan
    @Caellyan 8 месяцев назад

    The language and std library should only provide the most basic tools necessary to write a program because it's not feasible to expect developers to dedicate their entire lives to learning a single language (which C++ already kind of does). Adding a new core language features that provide no new functionality just complicates the implementations and surface area for bugs and weird interactions to pop up. It's also less readable than a simple ternary operator.

  • @Takyodor2
    @Takyodor2 8 месяцев назад

    "!p || q" is just a single character longer than "p => q", and (in my opinion) just as readable. Sorry, but I don't buy the "professional toolbox" argument, I want the exact amount of tools I need to be as efficient as possible, too many similar/duplicate tools just add extra weight to carry around. I respect the well presented and thought out arguments and effort put into this though.

  • @PartyMusic775
    @PartyMusic775 8 месяцев назад

    If there are 2^4 different truth tables, which other simple operators are we "missing" and being forced to make complex multioperational predicates from?

  • @llothar68
    @llothar68 8 месяцев назад

    I'm waiting for it so long. I loved to use it when i programmed in Eiffel. It is so usefull when you write lots of "assert" statements (as anyone should).

  • @csabaczcsomps7655
    @csabaczcsomps7655 8 месяцев назад

    C++ is made, document and accesibile as "magic show". This mean you can see it if you somehow get to one show but nothing more or less. You need search lot to got some magic revealed. But C++ is one best programing leanguage we have and is better every day. my noob opinion.

  • @rysw19
    @rysw19 8 месяцев назад

    Seems like little to no benefit to add an esoteric feature that just tempts people into writing inscrutable expressions. In the example given it is a much better idea to leave it as a conditional with three branches. If you really like the idea, you can just define and use a macro.

    • @llothar68
      @llothar68 8 месяцев назад

      It's not esoteric, it's absolute useful if you write asserts and we will do this much more when contract by design features will make it into C++26. Then the implication is very good for readability. Eiffel even had this as a "implies" keyword for just that reason.

    • @PartyMusic775
      @PartyMusic775 8 месяцев назад

      It's used in common human language and thought, whereas being forced to use a multioperational predicate causes the human mind reading the code to have to pause and deconstruct its own truth table when evaluating how the code will perform. So your argument while valid, actually makes the case for implication, not the other way around.