Trip Report from Meeting C++ 2017 that I made for my coworkers. The talk is shifted toward non-C++ insights from the meeting to be useful for all developers in my department (where the majority don't do C++).
5. C++17/20 and Beyond
✤ What just came in C++17?
✤ What's coming next?
✤ Jason Turner "Practical C++17" and "Practical constexpr"
✤ Kris Jusiak "Concepts driven design"
✤ Anton Bikineev "Reflection in C++Next"
✤ Niall Douglas "Introduction to proposed std::expected"
✤ Marc Mutz "Stringviews, stringviews everywhere" and "Structured Bindings
Demystified" ⚡
✤ Guy Davidson "Dragging C++ into the modern era: a proposal for a 2D Graphics API"
✤ Jonathan Müller "Fun with (user-defined) attributes"
✤ Miro Knejp "Is This Available?" ⚡
6. Teaching and Learning C++
✤ Because it's hard
✤ Kate Gregory "Its complicated!" and "5 Things I Figured
Out While I was Supposed to be Dying" ⚡
✤ Jens Weller "Beginning with C++" (Panel)
✤ Quite some talks that suitable for beginners
7. Nextgen Parallel Programming
✤ Demand for high(er) level parallel programming
✤ Borrowing functional language concepts (next topic)
✤ Rainer Grimm "Threads and Locks must Go"
✤ Alfred Bratterud "True parallelism with no concept of
threads"
✤ Felix Petriconi "There Is A New Future"
8. Adopting Foreign Concepts
✤ There is still hype about functional languages
✤ Ivan Čukić "Functional Data Structures"
✤ Kevlin Henney "Declarative Thinking, Declarative Practice"
✤ Juan Pedro Bolívar Puente "The most valuable values"
✤ Niall Douglas "Introduction to proposed std::expected"
✤ Andreas Reischuck "Improve your C++ with inspirations
from other languages"
9. Tools
✤ Incredible amount of talks about tooling
✤ Simon Brand "How C++ Debuggers Work"
✤ Dori Exterman "How to Use Free Visualization Tools to Optimize
Applications and Parallel Computing"
✤ Gábor Horváth "Advanced Tools for Better Productivity" and "How to
deal with a multi- million line codebase?" ⚡
✤ Peter Steinbach "The Performance Addict's toolbox"
✤ Diego Rodriguez-Losada, Luis Martinez de Bartolome "C++ is late to
the party: package management is only the beginning"
10. MoreTools
✤ Mathieu Ropert "Modern CMake for modular design" and "The
need for a package manager interface" ⚡
✤ Anastasia Kazakova "Tools from the C++ eco-system to save a
leg"
✤ Victor Ciura "Bringing Clang-tidy Magic to Visual Studio C++
Developers"
✤ Arvid Gerstmann "A Very Quick View Into a Compiler" ⚡,
"FASTBUILD: A Short Introduction" ⚡ and "The Case For
Vendored Builds" ⚡
14. "Better Code:Human interface"
Sean Parent
✤ Sean Parent is a Principal Scientist at Adobe
✤ The talk's main topics:
✤ Designing consistent HI (and code)
✤ Effective algorithms to work with large collections
✤ “The purpose of a human interface is not to hide what the code does
but to accurately convey what the code does.” – Darin Adler
✤ "Don't lie"
15. "Better Code:Human interface"
Sean Parent
✤ Taxonomy of Everything:
✤ Collections
✤ Objects
✤ Properties
✤ Operations
✤ Relationships
✤ Model-View-Controller concept is F'ed up in different
ways by different companies
17. "Better Code:Human interface"
Sean Parent
✤ Large collections pose a problem:
✤ How to observe the collection interactively, allowing the user to arrange,
filter, and browse
✤ Examples of algorithms to work with large collections
✤ nth_element() + partial_sort() = sort_subrange() for effective
sorting of large collections
✤ stable_partition() + rotate() to manipulate collections while
keeping relative order of elements and elements selection
✤ Interval sets are a good data structure to represent selections
18. "Better Code:Human interface"
Sean Parent
✤ Relationship vs structure vs architecture.
✤ Within an HI relationships can be challenging to
represent
✤ Example of modelling relationship in HI
20. "How C++ DebuggersWork"
Simon Brand
«At some point in your life, your kids may ask you
“how debuggers are made?”. You’ll be able to dodge
the bullet here by directing them to Simon Brand’s
talk which explains it all :)»
– Mathieu Ropert
21. "How C++ DebuggersWork"
Simon Brand
✤ Really about any native debugger, (almost) nothing C++ specific
✤ No background knowledge required
✤ GDB/LLDB
✤ Topics:
✤ ELF/DWARF
✤ ptrace
✤ Debug information
✤ Breakpoints
✤ Stepping
✤ Backtrace
✤ Expression evaluation
✤ Reversible debugging
✤ Awesome "Find the Bug" slides 🐞
23. "Deep Learning with C++"
Peter Goldsborough
✤ Introduction into machine learning
✤ Good trampoline to finally start it
✤ Random words from the talk:
✤ OSI Model of Machine Learning, Classification,
Generative, Convolution, TensorFlow, Graph Layer
Parallelism, Forward Pass, C++, cuBLAS, Google,
im2col, Sigmoid Activation Function, Bob, Caffe2, Static
Graph, Facebook, Python, TPU, MXNet, GPU, cuDNN,
Quantization, Amazon
25. "FantasticAlgorithms andWhereTo FindThem"
Nicholas Ormrod
✤ Nicholas Ormrod is an infrastructure engineer at Facebook
✤ 4 space efficient algorithms:
✤ Heavy Hitters - finding heavy hitters , which are elements that
occur at least X% of the time (for X = 50% it's called Majority
Element, or Boyer-Moore's Majority Vote)
✤ Used in some Facebook infrastructure services to find traffic
outliers for DoS (not DDoS) protection (not intention attacks)
✤ Used by Gcov profiler to find the value of function argument
that occurs the vast majority of time
26. "FantasticAlgorithms andWhereTo FindThem"
Nicholas Ormrod
✤ Morris Traversal - non-destructively in-order traverse a tree
✤ Used for unbalanced trees to prevent stack smashing due to recursive calls (not
needed for a balanced tree)
✤ Reservoir Sampling - selects k elements with a random probability from an
unknown length stream
✤ Used in BigGrep, a Facebook's internal grep tool for entire codebase
✤ HyperLogLog - count the number of distinct elements in a collection that's too big to
fit in memory
✤ Probabilistic cardinality estimation
✤ Needs about O(log log n) memory, where n is cardinality
✤ Recommended Michael VanLoon's talk "STL Algorithms in Action" (CPPcon)
28. Top C++Talks
✤ Jason Turner "Practical C++17"
✤ All the practical things you need to know about the new standard
✤ Klaus Iglberger "Free your functions"
✤ In-depth advocating why non-member functions are better than members
✤ Made like a preaching 👻
✤ Joel Falcou "The Three Little Dots and the Big Bad Lambdas - A Constructive Approach
to Code Generation"
✤ Simple approach for code-generation without TMP ("Write code generators not
type wranglers")
✤ A lot of other good talks
29. C++Talks for Beginners
✤ Kate Gregory "Its complicated!" and "5 Things I Figured Out While I
was Supposed to be Dying" ⚡
✤ How to teach C++ and where to seek for C++ knowledge.
✤ Milosz Warzecha "An inspiring introduction to Template
Metaprogramming"
✤ Hm... it's exactly what the title says
✤ Antonio Mallia, Jaime Alonso Lorenzo "C++: unexpected
behaviour"
✤ C++'s cave of horror
30. Bookmarks
✤ ChiaScript - an easy to use embedded scripting
language for C++ (Jason Turner's talks, mostly in
"Practical constexpr")
✤ IncludeOS is a zero-overhead library operating
system. Written from scratch in modern C++ (Alfred
Bratterud's "True parallelism with no concept of threads")
✤ rr - reversible debugger (touched in Simon Brand's
"How C++ Debuggers Work")
32. What's Next?
✤ I'll organise:
✤ Voting for talks you're interested in.
✤ FLS replay & discussion session for top 3 (?)
voted talks.
✤ Something else? Let me know
33. What's Next?
✤ All talks and slides are available online (or will be
there soon):
✤ http://meetingcpp.com/2017/slides_meetingcpp_2017.zip
✤ https://www.youtube.com/playlist?
list=PLRyNF2Y6sca3EUO_RTNv5t7gUmppFl9R1
or
https://www.youtube.com/user/MeetingCPP
> playlists > Meeting C++ 2017