 Breaking Dependencies: The SOLID PrinciplesBreaking Dependencies: The SOLID Principles Klaus Iglberger, CppCon 2020 klaus.iglberger@gmx.de2 Klaus Iglberger C++ Trainer since 2016 Author of the C++ math library (Co-)Organizer The SOLID Principles Single-Responsibility Principle Open-Closed Principle Liskov Substitution Principle Interface Segregation Principle Dependency Inversion Principle9 The SOLID Principles Single-Responsibility Inversion Principle Robert C. Martin Michael Feathers10 The SOLID Principles11 The SOLID Principles I will introduce the SOLID principles … … as guidelines not limited to OO programming … as general0 码力 | 96 页 | 2.14 MB | 6 月前3 Breaking Dependencies: The SOLID PrinciplesBreaking Dependencies: The SOLID Principles Klaus Iglberger, CppCon 2020 klaus.iglberger@gmx.de2 Klaus Iglberger C++ Trainer since 2016 Author of the C++ math library (Co-)Organizer The SOLID Principles Single-Responsibility Principle Open-Closed Principle Liskov Substitution Principle Interface Segregation Principle Dependency Inversion Principle9 The SOLID Principles Single-Responsibility Inversion Principle Robert C. Martin Michael Feathers10 The SOLID Principles11 The SOLID Principles I will introduce the SOLID principles … … as guidelines not limited to OO programming … as general0 码力 | 96 页 | 2.14 MB | 6 月前3
 Performance Engineering: Being Friendly to Your HardwareBeing Friendly to Your Hardware Performance Engineering A gentle introduction to hardware for software engineers 2Where does C++ run? 3On an abstract C++ machine 4On an abstract C++ machine? Processor cores + Interconnect + Memory 16 Complex and scary And mostly out of scope of our discussion anywayMemory 17 • Addressable capacitor array • Short term nonvolatile • Speeds – capacitor An open question remains – what is the ratio of cores doing the former and the latter? 110Discussion 1110 码力 | 111 页 | 2.23 MB | 6 月前3 Performance Engineering: Being Friendly to Your HardwareBeing Friendly to Your Hardware Performance Engineering A gentle introduction to hardware for software engineers 2Where does C++ run? 3On an abstract C++ machine 4On an abstract C++ machine? Processor cores + Interconnect + Memory 16 Complex and scary And mostly out of scope of our discussion anywayMemory 17 • Addressable capacitor array • Short term nonvolatile • Speeds – capacitor An open question remains – what is the ratio of cores doing the former and the latter? 110Discussion 1110 码力 | 111 页 | 2.23 MB | 6 月前3
 Whats in a Name? Whats a Name in? - Walter E. Brown - CppCon 2020overhaul of the C++20 rules, is under review for C++23. • So this talk will focus on underlying principles, with several examples of their effect on our C++ code. 7 Copyright © 2020 by W alter E. Brown memory one bit at a `me! 8 Copyright © 2020 by W alter E. Brown. All rights reserved. 8 Front panel, color-coded for octal input Copyright © 2020 by W alter E. Brown. All rights reserved. 9 9 If reserved. • B *bp; • int main( ) { bp −> A::∼A( ); } 37 Posted tentative analysis for further discussion • The A in bp->A:: is looked up first in the scope of B; we only take an unqualified lookup0 码力 | 7 页 | 4.37 MB | 6 月前3 Whats in a Name? Whats a Name in? - Walter E. Brown - CppCon 2020overhaul of the C++20 rules, is under review for C++23. • So this talk will focus on underlying principles, with several examples of their effect on our C++ code. 7 Copyright © 2020 by W alter E. Brown memory one bit at a `me! 8 Copyright © 2020 by W alter E. Brown. All rights reserved. 8 Front panel, color-coded for octal input Copyright © 2020 by W alter E. Brown. All rights reserved. 9 9 If reserved. • B *bp; • int main( ) { bp −> A::∼A( ); } 37 Posted tentative analysis for further discussion • The A in bp->A:: is looked up first in the scope of B; we only take an unqualified lookup0 码力 | 7 页 | 4.37 MB | 6 月前3
 Design and Implementation of Highly Scalable Quantifiable Data Structures in C++Quantifiability Definition Vector Space System Model Entropy Measurement Correctness and Performance Engineering Case Study: k-FIFO Queue Design and Implementation of Quantifiable Stack/Queue Live Demonstration e. denotational, not small step operational) ▶ Correctness is binary, lacking any metric for engineering trade-offs ▶ Forced to make assumptions about abstract data type and object semantics (i.e. a First Principles Inspired by Descartes Applying Cartesian thought to concurrent systems, we see that first principles describe what the program does (what is programmed), while secondary principles such0 码力 | 51 页 | 4.08 MB | 6 月前3 Design and Implementation of Highly Scalable Quantifiable Data Structures in C++Quantifiability Definition Vector Space System Model Entropy Measurement Correctness and Performance Engineering Case Study: k-FIFO Queue Design and Implementation of Quantifiable Stack/Queue Live Demonstration e. denotational, not small step operational) ▶ Correctness is binary, lacking any metric for engineering trade-offs ▶ Forced to make assumptions about abstract data type and object semantics (i.e. a First Principles Inspired by Descartes Applying Cartesian thought to concurrent systems, we see that first principles describe what the program does (what is programmed), while secondary principles such0 码力 | 51 页 | 4.08 MB | 6 月前3
 Vectorizing a CFD Code With std::simd Supplemented by Transparent Loading and Storing▪ exploiting current and future HPC hardware architectures ▪ making use of modern software engineering and code design Background: Cooperation CODA (CFD for ONERA, DLR, Airbus) *CODA is co-owned operator.(); }; SIMD_ACCESS(data, i, .x) data[i].template dot<&Point::x>() data[i][nX]Software Engineering Results About 200 lines of code changed ▪ Expressions, control and data flow remain recognizable development ▪ Make it feature-complete. ▪ Reflection API Discussion about globally overloadable operator[]() ▪ Who is interested in the topic? Discussion about overloadable operator.() ▪ Could it hide too0 码力 | 58 页 | 2.68 MB | 6 月前3 Vectorizing a CFD Code With std::simd Supplemented by Transparent Loading and Storing▪ exploiting current and future HPC hardware architectures ▪ making use of modern software engineering and code design Background: Cooperation CODA (CFD for ONERA, DLR, Airbus) *CODA is co-owned operator.(); }; SIMD_ACCESS(data, i, .x) data[i].template dot<&Point::x>() data[i][nX]Software Engineering Results About 200 lines of code changed ▪ Expressions, control and data flow remain recognizable development ▪ Make it feature-complete. ▪ Reflection API Discussion about globally overloadable operator[]() ▪ Who is interested in the topic? Discussion about overloadable operator.() ▪ Could it hide too0 码力 | 58 页 | 2.68 MB | 6 月前3
 Dependency Injection in C++Dependency Injection in C++: A Practical Guide CppCon 2024 September 18, 2024 Pete Muldoon Senior Engineering LeadBloomberg 4 Questions #include Dependency Injection in C++Dependency Injection in C++: A Practical Guide CppCon 2024 September 18, 2024 Pete Muldoon Senior Engineering LeadBloomberg 4 Questions #include- HereWho Am I? Bloomberg 5 • Started using a consultant • Bloomberg Ticker Plant Engineering Lead • Talks focus on practical Software Engineering • Based in the real world • Demonstrate applied principles • Take something away and be able to use Usage) Software Development Completeness : Knowing when you are done and why it matters Other Engineering talks by yours truly :Questions? 125 Bloomberg Contact : pmuldoon1@Bloomberg.net Bloomberg is 0 码力 | 106 页 | 1.76 MB | 6 月前3
 Khronos APIs for Heterogeneous Compute and Safety: SYCL and SYCL SCconditions, signed/unsigned, etc. ▪ Not always identifying the problem ▪ Not much in the way of principles to apply ▪ Formation of SG23 - Safety and Security Kona 2022 Evening Session 38DIRECTION GROUP40 fully initialized (its value can’t change until assigned) ▪ Can reject in non-conforming modes ▪ Principles on applying it to current UB ▪ P2973 Erroneous behaviour for missing return from assignment ▪ (as a whole) safety experts ▪ Many of the solutions proposed are ad hoc ▪ We (desperately) need principles we can apply ▪ SYCL ▪ Subset of customers that have specific and critical requirements ▪ Formation0 码力 | 82 页 | 3.35 MB | 6 月前3 Khronos APIs for Heterogeneous Compute and Safety: SYCL and SYCL SCconditions, signed/unsigned, etc. ▪ Not always identifying the problem ▪ Not much in the way of principles to apply ▪ Formation of SG23 - Safety and Security Kona 2022 Evening Session 38DIRECTION GROUP40 fully initialized (its value can’t change until assigned) ▪ Can reject in non-conforming modes ▪ Principles on applying it to current UB ▪ P2973 Erroneous behaviour for missing return from assignment ▪ (as a whole) safety experts ▪ Many of the solutions proposed are ad hoc ▪ We (desperately) need principles we can apply ▪ SYCL ▪ Subset of customers that have specific and critical requirements ▪ Formation0 码力 | 82 页 | 3.35 MB | 6 月前3
 Code Analysis++observable behaviours of your system will be depended on by somebody.” (Hyrums Law, Software Engineering at Google, by Titus Winter, Tom Manshrek, Hyrum Wright)Undefined BehaviorUndefined Behavior Contracts: http://wg21.link/p2388, http://wg21.link/p2182 ○ [[pre ]], [[post ]], [[assert ]] ○ MVP discussion, ignore or check&abort modesLanguage helps! – ● Lifetime safety: http://wg21.link/p1179 ● com/hsutter/708/blob/main/708.pdf ○ in / inout / out / move / forward semantics ○ Still under discussion, no implementation so farCompiler vs Analyzer – Language & Compiler Stand-alone analyzer Core0 码力 | 61 页 | 2.70 MB | 6 月前3 Code Analysis++observable behaviours of your system will be depended on by somebody.” (Hyrums Law, Software Engineering at Google, by Titus Winter, Tom Manshrek, Hyrum Wright)Undefined BehaviorUndefined Behavior Contracts: http://wg21.link/p2388, http://wg21.link/p2182 ○ [[pre ]], [[post ]], [[assert ]] ○ MVP discussion, ignore or check&abort modesLanguage helps! – ● Lifetime safety: http://wg21.link/p1179 ● com/hsutter/708/blob/main/708.pdf ○ in / inout / out / move / forward semantics ○ Still under discussion, no implementation so farCompiler vs Analyzer – Language & Compiler Stand-alone analyzer Core0 码力 | 61 页 | 2.70 MB | 6 月前3
 When Nanoseconds Matter: Ultrafast Trading Systems in C++15 years in Trading and Defense • Today’s talk - Engineering low-latency trading systems - Profiling techniques to find bottlenecks - Some principles along the way4 “All that we know, all that we are programming is also a losers’ game! - It’s mostly about being very disciplined… - … and not over-engineering your system • In the trading game, time to market is an important “latency” too!137 Credits0 码力 | 123 页 | 5.89 MB | 6 月前3 When Nanoseconds Matter: Ultrafast Trading Systems in C++15 years in Trading and Defense • Today’s talk - Engineering low-latency trading systems - Profiling techniques to find bottlenecks - Some principles along the way4 “All that we know, all that we are programming is also a losers’ game! - It’s mostly about being very disciplined… - … and not over-engineering your system • In the trading game, time to market is an important “latency” too!137 Credits0 码力 | 123 页 | 5.89 MB | 6 月前3
 Heterogeneous Modern C++ with SYCL 2020of a capable exascale ecosystem, including software, applications, hardware, advanced system engineering, and early testbed platforms, in support of the nation’s exascale computing imperative. Additionally Associate / Lecturer (fixed term) High Performance Computing Research Group Chair Khronos SYCL Advisory Panel Khronos SYCL Outreach Officer hpc.tomdeakin.com 6Agenda 1. SYCL, oneAPI, and ecosystem 2. SYCL 2020 com/codeplaysoftware/syclacademy https://sycl.tech/ • Advisory Panel Chaired by Tom Deakin of U of Bristol • SYCL Advisory Panel meeting here at IWOCL/SYCLCon • Regular meetings to give feedback0 码力 | 114 页 | 7.94 MB | 6 月前3 Heterogeneous Modern C++ with SYCL 2020of a capable exascale ecosystem, including software, applications, hardware, advanced system engineering, and early testbed platforms, in support of the nation’s exascale computing imperative. Additionally Associate / Lecturer (fixed term) High Performance Computing Research Group Chair Khronos SYCL Advisory Panel Khronos SYCL Outreach Officer hpc.tomdeakin.com 6Agenda 1. SYCL, oneAPI, and ecosystem 2. SYCL 2020 com/codeplaysoftware/syclacademy https://sycl.tech/ • Advisory Panel Chaired by Tom Deakin of U of Bristol • SYCL Advisory Panel meeting here at IWOCL/SYCLCon • Regular meetings to give feedback0 码力 | 114 页 | 7.94 MB | 6 月前3
共 180 条
- 1
- 2
- 3
- 4
- 5
- 6
- 18
相关搜索词
 BreakingDependenciesTheSOLIDPrinciplesPerformanceEngineeringBeingFriendlytoYourHardwareWhatsinNameWalterBrownCppCon2020DesignandImplementationofHighlyScalableQuantifiableDataStructuresC++VectorizingCFDCodeWithstdsimdSupplementedbyTransparentLoadingStoringDependencyInjectionKhronosAPIsforHeterogeneousComputeSafetySYCLSCAnalysis++WhenNanosecondsMatterUltrafastTradingSystemsModernwith














