CppNorth
CppNorth
  • 131
  • 442 597
Miro Knejp: Cnsnnts
cppnorth.ca/
---
Cnsnnts
Miro Knejp discusses the "consonants" described in the ancient language of system programming. He explains how these "cnsnnts," when pronounced, sounds similar to certain Czech proverbs and idioms.
Slides: github.com/CppNorth/CppNorth_Slides/blob/main/2024/Miro%20Knejp/Cnsnnts-miro%20knejp.pdf
Sponsored by:
think-cell: www.think-cell.com/cppnorth
JetBrains: www.jetbrains.com/
---
Miro Knejp
Munich, Germany
Miro wrote his first line of C++ code in 1997 at the age of 12, and it has been his programming language of choice ever since. He's especially passionate about low-level programming, low latency, 3D graphics, games engineering, and chemistry. Miro holds a Master's in Computer Science from the Technical University of Munich. He has worked on projects ranging from 3D rendering libraries to airport self-boarding control systems to thermodynamic simulation. He currently works as a freelancer and trainer, intending to create his own video game one day.
---
CppNorth is an annual C++ conference held in Toronto, Canada.
- Annual CppNorth C++ conference: cppnorth.ca/
- CppNorth Twitter: cppnorth
---
TH-cam Videos Edited by
Alfio Foti
mulliganfilm@gmail.com
(416) 710 3994
@
#cpp​ #cppnorth​ #programming​
มุมมอง: 669

วีดีโอ

Paul Williams: Galactic Unite - A Personal Journey Into Space Scholarships
มุมมอง 8621 วันที่ผ่านมา
cppnorth.ca/ Galactic Unite - A Personal Journey Into Space Scholarships In this video, Paul Williams tells us about his journey with Galactic Unite he had up till now. Paul shares how he connected with Galactic Unite back in 2017 and how it grew stronger each year. Paul shares how he made a personal journey into Space Scholarship. Sponsored by: think-cell: www.think-cell.com/cppnorth JetBrains...
Emmanuel Danso Nyarko - Factory Design Pattern: A Simple Use Case
มุมมอง 42921 วันที่ผ่านมา
cppnorth.ca/ Factory Design Pattern: A Simple Use Case Before attending the CPPNorth Conference, Emmanuel visited a shoemaking factory and learned about the detailed process of making shoes for specific occasions. Inspired by this, he created a program for the factory owner based on the "Factory Design Pattern." This program aims to improve the factory's operations and provide a flexible way to...
Ashley Roll - Template Meta Music Programming or Contexpr Composition
มุมมอง 294หลายเดือนก่อน
cppnorth.ca/ Template Meta Music Programming Or Contexpr Composition In this video, Ashley Roll talks about how programming can also be turned into "Template Music Programming", generating notes and waves through oscillators and generators and thus making music by programming. Slides: github.com/CppNorth/CppNorth_Slides/blob/main/2024/Ashley Roll/template_music_programming-ashley roll.pdf Spons...
Compassion ++: Soft Skills for Hard Problems - April Wensel
มุมมอง 444หลายเดือนก่อน
cppnorth.ca/ "Compassion : Soft Skills for Hard Problems" As developers, we spend much of our time interacting with cold, emotionless machines. However, it's important to remember that we, as humans, are emotional and imperfect beings. Many of the habits that serve us well in our technical tasks-like binary thinking, fault-finding, and prioritizing efficiency-may hinder our effectiveness with f...
Optimization Remarks - "Remarks Helping the Compiler Generate Better Code" - Ofek Shilon
มุมมอง 1.5Kหลายเดือนก่อน
cppnorth.ca/ Optimization Remarks - "Remarks Helping the Compiler Generate Better Code" Optimization remarks are logs of Clang's optimization passes, describing optimization attempts and failures - which might be mitigated. Sometimes. Deciphering them might seem a matter for compiler authors, but we can kick-start this effort together. About 50% of the talk will be dedicated to practical exampl...
Throwing Tools at Ranges - Tina Ulbrich
มุมมอง 485หลายเดือนก่อน
cppnorth.ca/ Throwing Tools at Ranges When talking about ranges I always get the same questions "but how about compile time? how about runtime?" because usually abstractions give us the impression that they might slow down either compile time or run time or both. The advantages of ranges lie in the ease of use, composability, and readability but many people cannot sacrifice run time performance...
Composition Intuition II - Conor Hoekstra
มุมมอง 1.9Kหลายเดือนก่อน
cppnorth.ca/ Composition Intuition II This sequel to Composition Intuition will be a masterclass about everything you wanted to know (and potentially what you didn't even know you wanted to know) when it comes to function composition and combinators. We will cover the different "composition strategies" used in languages like C , Python, Haskell, APL, J, KAP, Jelly, Uiua, Clojure and more. Furth...
Write Fast Code Like a Native - Saksham Sharma
มุมมอง 1.6Kหลายเดือนก่อน
cppnorth.ca/ Write Fast Code Like a Native Optimization is often considered a second pass in software development, where initially it is tempting to write your business logic out and later think about optimizing it. It has its pros and cons, but the aim of this talk is to provide you with the knowledge that will let you write optimized and fast C code as you go, rather than in a second pass. At...
Simplify and Secure Equation Systems with Type-Driven Development - Arne Berger
มุมมอง 665หลายเดือนก่อน
cppnorth.ca/ Simplify and Secure Equation Systems with Type-Driven Development Lea is a researcher working on an autonomous ship project. She needs to write complex dynamical equations to model the ship movement, but she keeps making errors that cause bugs and jeopardize the project. She decides to use template metaprogramming and constexpr to build a compile-time library that can catch these e...
C++ Memory Model: from C++11 to C++23 - Alex Dathskovsky
มุมมอง 5Kหลายเดือนก่อน
cppnorth.ca/ C Memory Model: from C 11 to C 23 In the realm of C development, threading and memory management play a crucial role in crafting highly parallel and optimized programs. However, the absence of a memory model in C 98 posed challenges. Thankfully, with the advent of C 11, significant changes were introduced, including the introduction of a memory model, which brought forth a plethora...
Keynote: Advent of Code, Behind the Scenes - Eric Wastl
มุมมอง 35Kหลายเดือนก่อน
cppnorth.ca/ Advent of Code: Behind the Scenes Advent of Code is an Advent calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved in any programming language you like. People use them as a speed contest, interview prep, company training, university coursework, practice problems, or to challenge each other. In this talk, the creator of Advent of Cod...
Meandering Through C++ Creating ranges::to - Rudyard Merriam
มุมมอง 623หลายเดือนก่อน
cppnorth.ca/ Meandering Through C Creating ranges::to See how I meandered through writing a version of *ranges::to* because I was impatient for the GCC 14 version. It had to be easy, right? After all, it is just copying pipeline elements to a container. Ha! Ha! No. This trek encounters *concepts*, *if constexpr*, and containers that are copyable and others that are not. Eventually, an encounter...
To Int or To Uint - Alex Dathskovsky
มุมมอง 8Kหลายเดือนก่อน
cppnorth.ca/ To Int or To Uint 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 examine the overal...
Hiding your Implementation Details is Not So Simple - Amir Kirsh
มุมมอง 727หลายเดือนก่อน
cppnorth.ca/ Hiding your Implementation Details is Not So Simple A key programming principle that encapsulates significant aspects of Object-Oriented Programming, is to hide your implementation details. This guidance aligns with principles such as encapsulation, decoupling, and programming for interfaces rather than concrete types. Yet, keeping your implementation details hidden is no easy feat...
Splatty! A Gaussian Splatting Viewer for Everyone! - Pier-Antoine Giguère
มุมมอง 760หลายเดือนก่อน
Splatty! A Gaussian Splatting Viewer for Everyone! - Pier-Antoine Giguère
A Study of Plugin Architectures for Supporting Extensible Software - Mike Shah
มุมมอง 1.1Kหลายเดือนก่อน
A Study of Plugin Architectures for Supporting Extensible Software - Mike Shah
Keynote: The Aging Programmer - Kate Gregory
มุมมอง 3.3Kหลายเดือนก่อน
Keynote: The Aging Programmer - Kate Gregory
Message Handling with Boolean Algebra - Ben Deane
มุมมอง 416หลายเดือนก่อน
Message Handling with Boolean Algebra - Ben Deane
How Designing Carbon C++ Interop Taught me About C++ Variadics & Bound Members - Chandler Carruth
มุมมอง 3.2Kหลายเดือนก่อน
How Designing Carbon C Interop Taught me About C Variadics & Bound Members - Chandler Carruth
Save Time, Space & a Little Sanity With std::function_ref - David Ledger
มุมมอง 1.4K2 หลายเดือนก่อน
Save Time, Space & a Little Sanity With std::function_ref - David Ledger
Mitigating the Intellectual Anxiety in Learning C++ - Dennis Onyeka, Emmanuel Nyarko
มุมมอง 3402 หลายเดือนก่อน
Mitigating the Intellectual Anxiety in Learning C - Dennis Onyeka, Emmanuel Nyarko
... + CTAD + NTTP = 🤩 - Miro Knejp
มุมมอง 4462 หลายเดือนก่อน
... CTAD NTTP = 🤩 - Miro Knejp
More Ranges Please - Roi Barkan
มุมมอง 4772 หลายเดือนก่อน
More Ranges Please - Roi Barkan
Uplifting Your Career as a Youth in Tech - Sohaila Ali
มุมมอง 1512 หลายเดือนก่อน
Uplifting Your Career as a Youth in Tech - Sohaila Ali
Why Modules?: It's not about build time - Steve Downey
มุมมอง 7272 หลายเดือนก่อน
Why Modules?: It's not about build time - Steve Downey
Practical Tips for Safer C++ - Tristan Brindle
มุมมอง 6532 หลายเดือนก่อน
Practical Tips for Safer C - Tristan Brindle
Beginner's Mind, Expert's Mind - Dawid Zalewski
มุมมอง 5702 หลายเดือนก่อน
Beginner's Mind, Expert's Mind - Dawid Zalewski
C++ Insights: Peek behind the curtains of your C++ compiler - Andreas Fertig
มุมมอง 8132 หลายเดือนก่อน
C Insights: Peek behind the curtains of your C compiler - Andreas Fertig
Safe Static Initialisation & Clean Up in Libraries - Ashley Roll
มุมมอง 4092 หลายเดือนก่อน
Safe Static Initialisation & Clean Up in Libraries - Ashley Roll

ความคิดเห็น

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

    A perfectly crafted presentation. Three thumbs up.

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

    C++ -> CppFront

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

    35:27 - I've noticed that everyone apologizes when I get their old code. It's never, "Hey, this thing is cool, have fun!"

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

    1:25:59 I think the _Psi_ combinator has the same typo as earlier, where the left x should be w

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

      Correct : )

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

      @@code_report It was a great talk, thanks for putting it together!

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

    After C++ will be Cext/C++ext . Those are small extensions to C. Extansion small but powerful.

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

    C++ syntax final boss :)

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

    Very interesting talk! The long-term memory + pattern aspect was new to me in this context, but really explains a lot. For example why it can be so annoying to read code with the 'wrong' formatting/style!!! The brain just gets distracted by the micro-analysis required instead of just matching the patterns. Of course good naming is crucial for the same reason - making the beacons obvious, rather than requiring micro-analysis.

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

    Last time I peeked I saw three sad nerds mumbling something about "no diagnostic required"

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

    After fighting this for quite a while I came to the conclusion that the only way is to NOT have global state. What this boils down to: in the example at 51:40, the user has to be ALLOWED to create a second instance of 'api' and have it work independently I often wonder why this (my) thinking is not common practice

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

    38:20 “… You only need as much temporary storage as you have physical threads that will be active” - note that threads that are stuck in wait_for_predecessor_prefix (the latency hiding feature) will also consume their temporary storage while they are waiting - I guess they are considered “active”.

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

    51:05 [right vs. write] I think he said “..so the interval on the left is what we’re going to use for the *write*”

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

    The question is it will take decades to make shift all legacy from C++ to Carbon

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

    30:00 Combinator = Composition Pattern

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

    thank you!

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

    Pointless addition to the language. Violates the rules of structured programming and enabled spaghetti code.

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

    when will it be ready for production usage?.

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

      Experimental V0.1 2025, prod-ready after 2027

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

    Nice intro talk. Now I am interested in looking into Nix

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

    I think it is worth giving some mention that on the front of static typing Rust actually is meaningfully stronger than C++, as C++ number types internally behave like a dynamic typed language, which can turn into surprises.

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

    Exactly what I was looking for Thanks 🙏

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

    Super informative

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

    Amazing presentation ❤

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

    With all humility, not wishing to imply that I have his greatness (or indeed anything more than glints of occasional competence)... Late in his career, Neil Peart took drum lessons -- in jazz. So it might also be for me, coming from a procedural/object-based background (heavy on the former), as I take the plunge into functional /combinatorial. I find it all very intriguing. Thanks to Conor and everyone for the talks.

  • @Mark-zk7uj
    @Mark-zk7uj 10 หลายเดือนก่อน

    I don't like C++ but I do like listening to Kate Gregory.

  • @AndreiGeorgescu-j9p
    @AndreiGeorgescu-j9p 10 หลายเดือนก่อน

    That fromEnum solution is absolutely awful and haskell does have a count function... Not like you couldn't have defined it yourself

  • @AndreiGeorgescu-j9p
    @AndreiGeorgescu-j9p 10 หลายเดือนก่อน

    The definition of pure function and distinction isn't really correct. A combinator is a pure function that is not a closure, that's it.

  • @1234567martymcfly
    @1234567martymcfly 10 หลายเดือนก่อน

    Really good talk!

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

    00:00:12 Rust foundation be like: "What did you just say??? I haven't heard you ask for permission"

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

    Conor is easily one of the best programming speakers! Combinatorial logic and array programming are such interesting subjects. Keep up the great work!

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

    Amazing!

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

    What about any of this is "experimental"? They just took elements from the most popular langauges and put them into their langauge. Its not even that they took parts from several radically different langauges and the combination of those is a unique product, its just a subset of other popular languages. They only call it "experimental" as to qualify their claim of being a successor to Cpp, as to not sound as arrogant.

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

    Same as the new Zig Language you're using the massive LLVM Libraries. An LLVM-only build requires anywhere from 1 to 3 GB of space on any machine. A full build of LLVM and Clang will need around 15 to 20 GB of disk space. The exact space requirements will vary by system but damn. They claim it's so large because of all the debugging information and the fact that the libraries are statically linked into multiple tools. I call that "Organized Despair". No Offence, however just before using Carbon for your own Application Builds, your using a Program that is ten times larger than a Linux Ubuntu OS just to achieve it. You would be much better off to have gone with a Python Like Approach using C++ as a base language with an Interpreter instead right?

  • @anon_y_mousse
    @anon_y_mousse ปีที่แล้ว

    I don't know if he's trying to sensationalize this talk or if he's received brain damage in the past couple of years, but there are several "points" he makes that are just wrong. For starters, outside of niche mathematical uses, overflow isn't a problem, and in those instances where it could be a problem you can detect overflow yourself before causing it and thus prevent even the possibility of ill effects. Part of the problem I see relating to it is people not checking user input, and if you're not checking user input then you probably shouldn't be a programmer. As far as sorting floating point data, you can provide your own comparator if you don't like what the default does, but there's nothing in the standard preventing you from calling std::sort() on such arrays. And I'm going to skip all the rest to say that no language should have an unsafe keyword. That's the kind of garbage that gives newbies a false sense of security which causes even worse subtle bugs to crop up. No programming language should constrain programmers like that. Far too many new languages keep popping up that constrain you in ways that prevent valid use cases and try to push this propaganda that it's justified because it prevents bad programs, even though there are whole classes of problems that they do nothing to prevent and which can be far more pernicious than the classes of problems they do prevent. But ultimately, if you want to constrain code that scares you into "unsafe" sections, use a static analyzer, as there are many to pick from, including free and open source analyzers, and just add a comment around that code labeling it unsafe.

  • @0LoneTech
    @0LoneTech ปีที่แล้ว

    Futhark sample: let SumOfSquares a = map2 (\x i -> if length a % (i+1) == 0 then x*x else 0) a (indices a) |> reduce_comm (+) 0 This isn't point free but does use three different combinators. |> could be replaced by reordering with parenthesis, but the map-reduce array combinators are the expected way to handle arrays. The filter was avoided using a neutral element, because realizing the filtered list could cause multiple heavier passes.

  • @olafschluter706
    @olafschluter706 ปีที่แล้ว

    Nice talk but wrong in so many ways that I am not interested to discuss. It its a very opinionated talk about what are the strength of C++. Lot's of love for auto but no mentioning what so ever for smart pointers, which are way more important to write sound code. And being standardised isn't really helping in writing good software. It is just helping in writing portable software. And it is somewhat dismissed by available compilers not implementing standards. Most of the time you need to figure out by experiment what your C++ compiler is able to do. Programming languages where there is only one compiler available, which is constructed by the people designing the language, set their standards by implementation. I prefer that way. I never was disappointed by a rust or swift compiler - but I found that I was very dependent on the specific version of gcc or clang to use C++ "standard" features. E.g. C++ has modules since C++20, but even setting your compiler standard to c++23 won't make it work with cmake, as the way to process modules and link to them is very compiler specific. As of now it isn't something to rely on for production code, at least not of production code supposed to be portable. If one goes into the list of supported C++ features of gcc or clang on the internet, one will find a mess. Standards do not help C++ as compiler vendors seem to adopt to them just as they feel like it.

  • @lorenzombolis
    @lorenzombolis ปีที่แล้ว

    8:40 they did not fix it in post

  • @bobweiram6321
    @bobweiram6321 ปีที่แล้ว

    No one got the joke, 1420 is not 420. 20:55

  • @rocknroooollllll
    @rocknroooollllll ปีที่แล้ว

    I simply cannot believe that people are using anything other than C linkage on the API boundary. Using C++ types just leads to eventual misery, and is holding the language back because now nobody wants to break ABI.

  • @ericzenk4404
    @ericzenk4404 ปีที่แล้ว

    Wonderful talk. I completely agree on using asserts and also making sure they don't change algo complexity. For developer time, it is one of the most efficient ways to (partially) verify correctness.

  • @georganatoly6646
    @georganatoly6646 ปีที่แล้ว

    life after c++, it's fun to dream, although I'd be happy if there was only C and assembly, have we ever really needed anything else?

  • @assonancex
    @assonancex ปีที่แล้ว

    superb talk !!

  • @flippert0
    @flippert0 ปีที่แล้ว

    34:55 most important statement of the whole talk? Because so much other stuff follows from this seemingly innocuous statement.

  • @MrAbrazildo
    @MrAbrazildo ปีที่แล้ว

    12:00, *1888. 15:34, what?! Do you know any other kind of software they are willing to pay millions? 38:30, to map true/false keeping their positions/indexes. If that's not required, std::partition puts all trues at the beginning, returning a pointer to where they finish and to where the falses start. And std::stable_partition, despite obviously not keeping their indexes, keep their positions related to each other, at each group. 56:00, auto sum_of_squares (std::vector<int> nums) {return std::accumulate (nums.begin(), nums.end(), 0, [](auto x, auto i) {return !(nums.size() % i)*x*x;});}

  • @xealit
    @xealit ปีที่แล้ว

    Good clear points. On another hand, it's a bit depressing how 20 years of the language went into just getting rid of redundant typing in C++03 for loops with a bunch of new concepts and new syntax. And it skips all the gotchas along the way.

  • @Heater-v1.0.0
    @Heater-v1.0.0 ปีที่แล้ว

    So my take away from all this is that C++ has an ugly syntax, C++ is overly complex, C++ is not safe in anyway. Likely none of this can be fixed. Makes me feel OK that after decades of using C++ I gave up in disgust a few years ago and moved on. It's good to know smarter people than me feel the same.

  • @Yupppi
    @Yupppi ปีที่แล้ว

    Hoekstra family sounds like one of the scariest families. Three children who can APL and work with data and numbers.

  • @RajaHarinath
    @RajaHarinath ปีที่แล้ว

    Is it "undefined behaviour" to use a cursor from one sequence onto another sequence? e.g., `flux::inc(seq2, flux::first(seq1))`

  • @thestarinthesky_
    @thestarinthesky_ ปีที่แล้ว

    Great explanations. Thank you for sharing❤

  • @Kobold666
    @Kobold666 ปีที่แล้ว

    At 22:00 I have to question the sanity of a person who writes (or rather generates) such code and calls it a feature of a modern language. If you can't do it in C, you're simply doing it wrong 😉

  • @dennisestenson7820
    @dennisestenson7820 ปีที่แล้ว

    I owe my career to "this should work". As an autodidactic programmer, everything I've done in my career started out as something I didn't know how to do, but believed it could be done. If I ever really doubted it, I couldn't have accomplished it.