"Don’t pay for what you don’t use" and "Don't leave room for a language below C++ (except assembler)" are the C++ design and evolution priorities that have stuck with us since the beginning of the programming language. CPU clock frequencies stopped growing more than 10 years ago, and since that time, our processor cores are no longer accelerating. Moreover, the demand for power savings is higher than ever for both small factor devices, like mobile phones, and for huge factor server farms. In the domains where each CPU cycle counts, C++ is the fastest and the most robust solution on the market. C++ programming language is evolving faster now than ever before — and EPAM is an active contributor to this transformation. This talk will briefly summarize the history of C++, describe the benefits of the programming language, highlight the business domains where its usage is essential, and provide some insights on the future of the language and its standardization process.
A Physical Units Library for the Next C++Mateusz Pusz
These are the slides from my CppCon 2020 talk. You can find the recording here: https://www.youtube.com/watch?v=7dExYGSOJzo. All my other talks can be found here: https://train-it.eu/resources.
---
During CppCon 2019 Mateusz provided an overview of current solutions on the market as well as challenges of implementing a modern C++ physical units library. This year's talk will focus on 'mp-units', the library that was developed by Mateusz and contributors, and which is proposed for C++ standardization. During the tutorial, we will get familiar with the building blocks of the library's framework and its most important concepts. Numerous code examples will present how to use and solve real-life problems with the library. The audience will learn how easy it is to extend it with new units, dimensions, or even whole new systems of quantities. Last but not least Mateusz will provide a fair comparison of how well this library performs in comparison to other products on the market.
Implementing Physical Units Library for C++Mateusz Pusz
These are the slides from my 4Developers 2019 talk. You can find the recording here: https://www.youtube.com/watch?v=O1vlFZcaMKo. All my other talks can be found here: https://train-it.eu/resources.
---
This talk will present the current state of my work on designing and implementing Physical Units Library for C++. I will present all the challenges, design tradeoffs, and potential solutions to those problems. During the lecture, we will also see how new C++20 features help to make the library interface easier to use, maintain, and extend. Among others, we will see how we can benefit from class types provided as non-type template parameters, how new class template argument deduction rules simplify the interfaces, and a full power of using concepts to constrain template types.
Implementing Physical Units Library for C++. Mateusz Pusz.CoreHard Spring 2019corehard_by
This talk will present the current state of my work on designing and implementing Physical Units Library for C++. I will present all the challenges, design tradeoffs, and potential solutions to those problems. During the lecture, we will also see how new C++20 features help to make the library interface easier to use, maintain, and extend. Among others, we will see how we can benefit from class types provided as non-type template parameters, how new class template argument deduction rules simplify the interfaces and the full power of using concepts to constrain template types.
Getting more out of Matplotlib with GRJosef Heinen
Matplotlib is the most popular graphics library for Python. It is the workhorse plotting utility of the scientific Python world. However, depending on the field of application, the software may be reaching its limits. This is the point where the GR framework will help. GR can be used as a backend for Matplotlib applications and significantly improve the performance and expand their capabilities.
This is a presentation about how to use Kubeflow for "AI pipeline optimization" - we show the "traditional" pipeline and why it should be optimized to have it available to a wider audience. Services are getting more and more important nowadays - thats why we call it "Data Science as a service".
For the full video of this presentation, please visit:
https://www.embedded-vision.com/platinum-members/embedded-vision-alliance/embedded-vision-training/videos/pages/may-2019-embedded-vision-summit-mallick
For more information about embedded vision, please visit:
http://www.embedded-vision.com
Satya Mallick, Interim CEO of OpenCV.org, presents the "OpenCV: Current Status and Future Plans" tutorial at the May 2019 Embedded Vision Summit.
With over two million downloads per week, OpenCV is the most popular open source computer vision library in the world. It implements over 2500 opt- imized algorithms, works on all major operating systems, is available in multiple languages and is free for commercial use.
This talk primarily provides a technical update on OpenCV: What’s new in OpenCV 4.0? What is the Graph API? Why are we so excited about the Deep Neural Network (DNN) module in OpenCV? (Short answer: It is one of the fastest inference engines on the CPU.)
Mallick also shares plans for the future of OpenCV, including new algorithms that the organization plans to add through the Google Summer of Code this year. And he briefly shares information on the new Open Source Vision Foundation (OSVF), on OpenCV’s sister organizations, CARLA and Open3D, and on some of the initiatives planned by these organizations.
GR.jl - Plotting for Julia based on GRJosef Heinen
Julia is steadily gaining popularity in the field of data science and visualization. Plotting capabilities are provided by packages such as Gadfly and PyPlot. They are the workhorse plotting utilities of the scientific Julia world. However, depending on the field of application, the software may be reaching its limits. This is the point where the GR framework will help. GR can be used as an alternative graphics module and significantly improve the performance and expand the capabilities of visualization applications.
Julia is an accepted high-level scripting language for scientific computing and visualization, not least because of the proliferation of libraries such as Gadfly and PyPlot. However, when processing large amounts of data, in particular in combination with three-dimensional plotting (OpenGL), the existing graphics packages are too application-specific or seem to be reaching their limits. In particular, large amounts of data or the visualization of three-dimensional scenes may overwhelm the system.
This presentation shows how visualization applications with special performance requirements can be designed on the basis of GR, a high-performance visualization library for Linux, OS X and Windows. The lecture also introduces a new graphics backend for PyPlot based on the GR framework. By combining the power of those libraries the responsiveness of animated visualization applications and their resulting frame rates can be improved significantly. This in turn allows the use of PyPlot in real-time environments, for example in the area of signal processing.
Using concrete examples, the presentation will demonstrate the benefits of the GR framework for high-performance graphics or as a companion module for PyPlot. Based on selected applications, the suitability of the GR framework will be highlighted especially in environments where time is critical. The system’s performance capabilities will be illustrated using demanding live applications. In addition, the special abilities of the GR framework are emphasized in terms of interoperability with OpenGL, which opens up new possibilities for existing applications.
A Physical Units Library for the Next C++Mateusz Pusz
These are the slides from my CppCon 2020 talk. You can find the recording here: https://www.youtube.com/watch?v=7dExYGSOJzo. All my other talks can be found here: https://train-it.eu/resources.
---
During CppCon 2019 Mateusz provided an overview of current solutions on the market as well as challenges of implementing a modern C++ physical units library. This year's talk will focus on 'mp-units', the library that was developed by Mateusz and contributors, and which is proposed for C++ standardization. During the tutorial, we will get familiar with the building blocks of the library's framework and its most important concepts. Numerous code examples will present how to use and solve real-life problems with the library. The audience will learn how easy it is to extend it with new units, dimensions, or even whole new systems of quantities. Last but not least Mateusz will provide a fair comparison of how well this library performs in comparison to other products on the market.
Implementing Physical Units Library for C++Mateusz Pusz
These are the slides from my 4Developers 2019 talk. You can find the recording here: https://www.youtube.com/watch?v=O1vlFZcaMKo. All my other talks can be found here: https://train-it.eu/resources.
---
This talk will present the current state of my work on designing and implementing Physical Units Library for C++. I will present all the challenges, design tradeoffs, and potential solutions to those problems. During the lecture, we will also see how new C++20 features help to make the library interface easier to use, maintain, and extend. Among others, we will see how we can benefit from class types provided as non-type template parameters, how new class template argument deduction rules simplify the interfaces, and a full power of using concepts to constrain template types.
Implementing Physical Units Library for C++. Mateusz Pusz.CoreHard Spring 2019corehard_by
This talk will present the current state of my work on designing and implementing Physical Units Library for C++. I will present all the challenges, design tradeoffs, and potential solutions to those problems. During the lecture, we will also see how new C++20 features help to make the library interface easier to use, maintain, and extend. Among others, we will see how we can benefit from class types provided as non-type template parameters, how new class template argument deduction rules simplify the interfaces and the full power of using concepts to constrain template types.
Getting more out of Matplotlib with GRJosef Heinen
Matplotlib is the most popular graphics library for Python. It is the workhorse plotting utility of the scientific Python world. However, depending on the field of application, the software may be reaching its limits. This is the point where the GR framework will help. GR can be used as a backend for Matplotlib applications and significantly improve the performance and expand their capabilities.
This is a presentation about how to use Kubeflow for "AI pipeline optimization" - we show the "traditional" pipeline and why it should be optimized to have it available to a wider audience. Services are getting more and more important nowadays - thats why we call it "Data Science as a service".
For the full video of this presentation, please visit:
https://www.embedded-vision.com/platinum-members/embedded-vision-alliance/embedded-vision-training/videos/pages/may-2019-embedded-vision-summit-mallick
For more information about embedded vision, please visit:
http://www.embedded-vision.com
Satya Mallick, Interim CEO of OpenCV.org, presents the "OpenCV: Current Status and Future Plans" tutorial at the May 2019 Embedded Vision Summit.
With over two million downloads per week, OpenCV is the most popular open source computer vision library in the world. It implements over 2500 opt- imized algorithms, works on all major operating systems, is available in multiple languages and is free for commercial use.
This talk primarily provides a technical update on OpenCV: What’s new in OpenCV 4.0? What is the Graph API? Why are we so excited about the Deep Neural Network (DNN) module in OpenCV? (Short answer: It is one of the fastest inference engines on the CPU.)
Mallick also shares plans for the future of OpenCV, including new algorithms that the organization plans to add through the Google Summer of Code this year. And he briefly shares information on the new Open Source Vision Foundation (OSVF), on OpenCV’s sister organizations, CARLA and Open3D, and on some of the initiatives planned by these organizations.
GR.jl - Plotting for Julia based on GRJosef Heinen
Julia is steadily gaining popularity in the field of data science and visualization. Plotting capabilities are provided by packages such as Gadfly and PyPlot. They are the workhorse plotting utilities of the scientific Julia world. However, depending on the field of application, the software may be reaching its limits. This is the point where the GR framework will help. GR can be used as an alternative graphics module and significantly improve the performance and expand the capabilities of visualization applications.
Julia is an accepted high-level scripting language for scientific computing and visualization, not least because of the proliferation of libraries such as Gadfly and PyPlot. However, when processing large amounts of data, in particular in combination with three-dimensional plotting (OpenGL), the existing graphics packages are too application-specific or seem to be reaching their limits. In particular, large amounts of data or the visualization of three-dimensional scenes may overwhelm the system.
This presentation shows how visualization applications with special performance requirements can be designed on the basis of GR, a high-performance visualization library for Linux, OS X and Windows. The lecture also introduces a new graphics backend for PyPlot based on the GR framework. By combining the power of those libraries the responsiveness of animated visualization applications and their resulting frame rates can be improved significantly. This in turn allows the use of PyPlot in real-time environments, for example in the area of signal processing.
Using concrete examples, the presentation will demonstrate the benefits of the GR framework for high-performance graphics or as a companion module for PyPlot. Based on selected applications, the suitability of the GR framework will be highlighted especially in environments where time is critical. The system’s performance capabilities will be illustrated using demanding live applications. In addition, the special abilities of the GR framework are emphasized in terms of interoperability with OpenGL, which opens up new possibilities for existing applications.
Hello everybody and welcome to our new SlideShare post!
The slides you are seeing are taken from our 12th webinar: What Open Compute Project has in store for us all in 2020! (you can find the video here: https://www.youtube.com/watch?v=Iv02EGqI4ts).
Together with Lesya Dymyd and Adrien Badina of 2CRSi, and Steve Helvie of OCP we talked about innovation, standardisation, open source and we went through the roadmap of OCP for 2020.
Among the topics we covered:
- OCP in the world: how the integration and the adoption of OCP standards vary from one continent to another.
- The current challenges with OCP adoption and OCP organization.
- The path from innovation to standardization.
- The contemporary scenario: who’s innovating and who’s not?
- What are the hottest upcoming tech areas?
- Planning and executing: how a big organization should embrace innovation?
Learn more about Immersion Cooling here:
Wikipedia https://en.wikipedia.org/wiki/Server_immersion_cooling
And in our Blog: https://submer.com/blog/what-is-immersion-cooling
—
Follow us online here:
YouTube: https://www.youtube.com/c/Submer
Twitter: https://twitter.com/submertech
Instagram: https://www.instagram.com/submertech/
Facebook: https://www.facebook.com/submertech/
Website: https://submer.com
LinkedIn: https://www.linkedin.com/company/submer-immersion-cooling/
This C++ For Programmers provides you the fundamental knowledge required for developers and programmers when it is about the C++ program. Creating functions is possible through this program since experiencing from different perspectives can be done.
See More: https://bit.ly/2mrw7xr
All You Need To Know About C Program Assignment Help.pdfBrad Smith
Suppose you need academic assistance in C Programming. In that case, you have little option but to look up specialists who can resolve your Programming-related assignment concerns with support from experts on a reliable service window to settle all of your queries with mentors for C Program assignment help.
Technology and Digital Platform | 2019 partner summitAndrew Kumar
Technology: Andrew Kumar will share a refresher of our technology standards, documentation while highlighting what is changing in 2019 in the reference architecture and starter kits.
Digital Platform: Andrew Kumar will follow tech and design updates with a refresher on why the digital platform matters, what exists in the digital platform, what is being worked on, and what is coming next as we co-create value, save team member effort, and improve speed to market with investments in the digital platform.
Wo ist die Grenze von offenen und schützenswerten Elementen bei Daten und API´s für eine KI? Wo beginnt innerhalb der Firma AI und welche neuen Geschäftsfelder können Sie bedienen? Herausforderungen welchen man bereits zu Beginn auf er „Road to AI“ gegenübersteht. Wir möchten durch Einblicke aus realisierten Projekten Ihr Bewusstsein für die Zielsetzung von AI schärfen. Mit Markttrends die Treiber der vielen Neuentwicklungen benennen und ein Eco-System skizzieren auf welches wir setzten werden.
Lernen Sie aus den Erfahrungen welche die Telekom in den letzten beiden Jahren durch Ihre Partner gemacht hat. Und wie eine deutsche Open Source basierte Cloud als KI-Plattform im Kontext von Offenheit und Eco-Systemen weiterentwickelt wird
In terms of products, Microsoft 365 is a complete intelligent solution that combines Windows 10, Office 365, mobility and security that seamlessly integrate for users, IT professionals and for developers.
Development to Operations (DevOps) is driving a profound impact on the global IT sector. IT vendors that realize DevOps’ full potential are more agile in providing new products and services under the label “DevOps inside” at an ever increasing pace. With the growing number of product choices, conflicting definitions and competing services, you may often encounter confusion while making complex decisions, delaying time to market. You at times may be unsure about how to deploy DevOps and get the most out of the solutions and tools available. Are you looking to master the DevOps "Fog?"
Learn new and trending innovations through the success of others during this informative session, and about tools and practices in the VMware world that will lead you to competitive advantage.
Adopting BIM - An Architect's Perspective (07 May 2014)Elrond Burrell
Slides from a guest lecture presented at London South Bank University, 07 May 2014.
Part 1 - The Wider Context of BIM including UK Government Poilcy
Part 2 - Architype's journey into BIM
Part 3 - Using BIM for Passivhaus Design
Do UX designers have a role in reducing digital waste?User Vision
UX designers are primarily concerned with ensuring the experience of end users, but should we also consider the impact on the environment?
Do the ultra-usable and convenient digital lifestyles we help create provide ease-of-use at the cost of sustainability?
We'll explore the surprisingly large impact that digital has on C02 emissions and other contributors to the climate crisis.
Then we’ll discuss what can be done by individuals and as a profession to raise awareness of the issue contribute to ways to mitigate the problem.
Building a scalable app factory with Appcelerator PlatformAngus Fox
Sharing the challenged in building a Mobile Backend as a Service (MBaaS) platform for Appcelerator Alloy apps using Joomla and a whole host of development tools for a London based startup where I am CTO
What Are The Best Practices When Building a Back-end App With Kotlin And Spri...Alex Fedorov
Are you tired of baby examples for Kotlin (or any programming language, platform, framework or library)?
In this talk, we’re going to explore how are real, and large applications are built.
These are the practices that worked well for countless product teams.
OSDC 2019 | DevOps in a containerized world by Martin AlfkeNETWAYS
DevOps describes the culture of communication and collaboration between IT Development and IT Operations departments. Usually this covers system setup, application deployment and all the surrounding tools like CI, metrics and alerting. A core element has always been IT automation using configuration management and CI/CD. But how do we do DevOps in a containerized world? Do we still need configuration management? Is there still collaboration possible? Or iare containers the DevOps killer? In my talk I draw a picture on responsibilities, does and don’ts when it comes to developers and operations working within a container runtime platform. I want to show where we still have DevOps and where we pass responsibilities to a single department only and what kind of security borders we have at hand to work separately but with trust.
These are the slides from my keynote talk on C++ on CoreHard Autumn 2019. You can find the recording here: https://www.youtube.com/watch?v=nqf53MlnMpo. All my other talks can be found here: https://train-it.eu/resources.
---
That talk will present the C++ world seen from Low Latency domain. The world where no dynamic allocations are welcomed, C++ exceptions are nearly not used, where STL containers are often not enough, and where developers often need to go deep down to assembly level to verify if the code really does its best.
Rethinking the Way We do Templates in C++Mateusz Pusz
These are the slides from my CppCon 2019 talk. You can find the recording here: https://www.youtube.com/watch?v=oNBnYhLxlTU. All my other talks can be found here: https://train-it.eu/resources.
---
Template metaprogramming is hard. In case it is hard only for the library implementer then it is not that bad. The problem arises when it also affects the users of this library.
This talk is summarizing my experience and thoughts gathered during the implementation of the Physical Units Library for C++. The way we do template metaprogramming now results with inscrutable compile-time errors and really long type names observed while debugging our code. That is mostly caused by aliasing class template specializations of non-trivial metaprogramming interface designs. Compilation times of such code also leave a lot of room for improvement, and the practices we chose to use in the Standard Library are often suboptimal. Taking into account the Rule of Chiel while designing templated code makes a huge difference in the compile times. This talk presents a few simple examples (including the practices from the C++ Standard Library) of achieving the same goal in different ways and provides benchmark results of time needed to compile such source code.
More Related Content
Similar to Free Lunch is Over: Why is C++ so Important in the Modern World?
Hello everybody and welcome to our new SlideShare post!
The slides you are seeing are taken from our 12th webinar: What Open Compute Project has in store for us all in 2020! (you can find the video here: https://www.youtube.com/watch?v=Iv02EGqI4ts).
Together with Lesya Dymyd and Adrien Badina of 2CRSi, and Steve Helvie of OCP we talked about innovation, standardisation, open source and we went through the roadmap of OCP for 2020.
Among the topics we covered:
- OCP in the world: how the integration and the adoption of OCP standards vary from one continent to another.
- The current challenges with OCP adoption and OCP organization.
- The path from innovation to standardization.
- The contemporary scenario: who’s innovating and who’s not?
- What are the hottest upcoming tech areas?
- Planning and executing: how a big organization should embrace innovation?
Learn more about Immersion Cooling here:
Wikipedia https://en.wikipedia.org/wiki/Server_immersion_cooling
And in our Blog: https://submer.com/blog/what-is-immersion-cooling
—
Follow us online here:
YouTube: https://www.youtube.com/c/Submer
Twitter: https://twitter.com/submertech
Instagram: https://www.instagram.com/submertech/
Facebook: https://www.facebook.com/submertech/
Website: https://submer.com
LinkedIn: https://www.linkedin.com/company/submer-immersion-cooling/
This C++ For Programmers provides you the fundamental knowledge required for developers and programmers when it is about the C++ program. Creating functions is possible through this program since experiencing from different perspectives can be done.
See More: https://bit.ly/2mrw7xr
All You Need To Know About C Program Assignment Help.pdfBrad Smith
Suppose you need academic assistance in C Programming. In that case, you have little option but to look up specialists who can resolve your Programming-related assignment concerns with support from experts on a reliable service window to settle all of your queries with mentors for C Program assignment help.
Technology and Digital Platform | 2019 partner summitAndrew Kumar
Technology: Andrew Kumar will share a refresher of our technology standards, documentation while highlighting what is changing in 2019 in the reference architecture and starter kits.
Digital Platform: Andrew Kumar will follow tech and design updates with a refresher on why the digital platform matters, what exists in the digital platform, what is being worked on, and what is coming next as we co-create value, save team member effort, and improve speed to market with investments in the digital platform.
Wo ist die Grenze von offenen und schützenswerten Elementen bei Daten und API´s für eine KI? Wo beginnt innerhalb der Firma AI und welche neuen Geschäftsfelder können Sie bedienen? Herausforderungen welchen man bereits zu Beginn auf er „Road to AI“ gegenübersteht. Wir möchten durch Einblicke aus realisierten Projekten Ihr Bewusstsein für die Zielsetzung von AI schärfen. Mit Markttrends die Treiber der vielen Neuentwicklungen benennen und ein Eco-System skizzieren auf welches wir setzten werden.
Lernen Sie aus den Erfahrungen welche die Telekom in den letzten beiden Jahren durch Ihre Partner gemacht hat. Und wie eine deutsche Open Source basierte Cloud als KI-Plattform im Kontext von Offenheit und Eco-Systemen weiterentwickelt wird
In terms of products, Microsoft 365 is a complete intelligent solution that combines Windows 10, Office 365, mobility and security that seamlessly integrate for users, IT professionals and for developers.
Development to Operations (DevOps) is driving a profound impact on the global IT sector. IT vendors that realize DevOps’ full potential are more agile in providing new products and services under the label “DevOps inside” at an ever increasing pace. With the growing number of product choices, conflicting definitions and competing services, you may often encounter confusion while making complex decisions, delaying time to market. You at times may be unsure about how to deploy DevOps and get the most out of the solutions and tools available. Are you looking to master the DevOps "Fog?"
Learn new and trending innovations through the success of others during this informative session, and about tools and practices in the VMware world that will lead you to competitive advantage.
Adopting BIM - An Architect's Perspective (07 May 2014)Elrond Burrell
Slides from a guest lecture presented at London South Bank University, 07 May 2014.
Part 1 - The Wider Context of BIM including UK Government Poilcy
Part 2 - Architype's journey into BIM
Part 3 - Using BIM for Passivhaus Design
Do UX designers have a role in reducing digital waste?User Vision
UX designers are primarily concerned with ensuring the experience of end users, but should we also consider the impact on the environment?
Do the ultra-usable and convenient digital lifestyles we help create provide ease-of-use at the cost of sustainability?
We'll explore the surprisingly large impact that digital has on C02 emissions and other contributors to the climate crisis.
Then we’ll discuss what can be done by individuals and as a profession to raise awareness of the issue contribute to ways to mitigate the problem.
Building a scalable app factory with Appcelerator PlatformAngus Fox
Sharing the challenged in building a Mobile Backend as a Service (MBaaS) platform for Appcelerator Alloy apps using Joomla and a whole host of development tools for a London based startup where I am CTO
What Are The Best Practices When Building a Back-end App With Kotlin And Spri...Alex Fedorov
Are you tired of baby examples for Kotlin (or any programming language, platform, framework or library)?
In this talk, we’re going to explore how are real, and large applications are built.
These are the practices that worked well for countless product teams.
OSDC 2019 | DevOps in a containerized world by Martin AlfkeNETWAYS
DevOps describes the culture of communication and collaboration between IT Development and IT Operations departments. Usually this covers system setup, application deployment and all the surrounding tools like CI, metrics and alerting. A core element has always been IT automation using configuration management and CI/CD. But how do we do DevOps in a containerized world? Do we still need configuration management? Is there still collaboration possible? Or iare containers the DevOps killer? In my talk I draw a picture on responsibilities, does and don’ts when it comes to developers and operations working within a container runtime platform. I want to show where we still have DevOps and where we pass responsibilities to a single department only and what kind of security borders we have at hand to work separately but with trust.
Similar to Free Lunch is Over: Why is C++ so Important in the Modern World? (20)
These are the slides from my keynote talk on C++ on CoreHard Autumn 2019. You can find the recording here: https://www.youtube.com/watch?v=nqf53MlnMpo. All my other talks can be found here: https://train-it.eu/resources.
---
That talk will present the C++ world seen from Low Latency domain. The world where no dynamic allocations are welcomed, C++ exceptions are nearly not used, where STL containers are often not enough, and where developers often need to go deep down to assembly level to verify if the code really does its best.
Rethinking the Way We do Templates in C++Mateusz Pusz
These are the slides from my CppCon 2019 talk. You can find the recording here: https://www.youtube.com/watch?v=oNBnYhLxlTU. All my other talks can be found here: https://train-it.eu/resources.
---
Template metaprogramming is hard. In case it is hard only for the library implementer then it is not that bad. The problem arises when it also affects the users of this library.
This talk is summarizing my experience and thoughts gathered during the implementation of the Physical Units Library for C++. The way we do template metaprogramming now results with inscrutable compile-time errors and really long type names observed while debugging our code. That is mostly caused by aliasing class template specializations of non-trivial metaprogramming interface designs. Compilation times of such code also leave a lot of room for improvement, and the practices we chose to use in the Standard Library are often suboptimal. Taking into account the Rule of Chiel while designing templated code makes a huge difference in the compile times. This talk presents a few simple examples (including the practices from the C++ Standard Library) of achieving the same goal in different ways and provides benchmark results of time needed to compile such source code.
These are the slides from my talk on C++ London meetup. You can find the recording here: https://www.youtube.com/watch?v=HsC1EoFjf8U. All my other talks can be found here: https://train-it.eu/resources.
---
C++ is the fastest programming language in the world, and it leaves no room for other languages below it (except assembler). That is why it gets more attention now than ever before. As a result, we observe an increasing speed of C++ language evolution. C++11 was a game changer, but is now considered an "old" language already. C++14 & 17 provided many improvements that allow us to write portable, safer, and faster code in a shorter time. The resulting source code is easier to reason about and maintain. Moreover, C++20 is coming soon, and it is going to be a game changer again.
In my talk, I provide a few typical legacy code examples that most of us write every day. I describe how those samples evolve with the changes introduced in the each C++ language release from C++11 up to the major groundbreaking features of the upcoming C++20. During the talk, the audience will learn how much easier, more robust, and safer is the code written using modern tools that we get with every new C++ release.
Implementing a Physical Units Library for C++Mateusz Pusz
These are the slides from my keynote talk on C++ on CoreHard Spring 2019. You can find the recording here: https://www.youtube.com/watch?v=hcgL8QBmh2I. All my other talks can be found here: https://train-it.eu/resources.
---
This talk will present the current state of my work on designing and implementing Physical Units Library for C++. I will present all the challenges, design tradeoffs, and potential solutions to those problems. During the lecture, we will also see how new C++20 features help to make the library interface easier to use, maintain, and extend. Among others, we will see how we can benefit from class types provided as non-type template parameters, how new class template argument deduction rules simplify the interfaces and the full power of using concepts to constrain template types.
Effective replacement of dynamic polymorphism with std::variantMateusz Pusz
These are the slides from my ACCU 2019 talk. You can find the recording here: https://www.youtube.com/watch?v=JGYxOieiZnY. All my other talks can be found here: https://train-it.eu/resources.
---
This short talk presents how easy it is to replace some cases of dynamic polymorphism with std::variant. During the lecture, we will analyze and compare a few implementations of the same simple Finite State Machine. It turns up that variant-based code is not only much faster but also it gives us the opportunity to define our interfaces and program flow much better. The talk will end up with the discussion of pros and cons of each approach and will try to give guidelines on when to use them.
C++ Concepts and Ranges - How to use them?Mateusz Pusz
These are the slides from my Meeting C++ 2018 talk. You can find the recording here: https://www.youtube.com/watch?v=pe05ZWdh0N0. All my other talks can be found here: https://train-it.eu/resources.
---
The most of the Concepts TS and Ranges TS is merged into the C++20 standard draft document. The talk will present a current design of those features and will provide suggestions on how to use them in our source code. That presentation is meant to inspire discussion on how should we use those long-awaited features while building tools and the C++ Standard Library.
Effective replacement of dynamic polymorphism with std::variantMateusz Pusz
These are the slides from my CppCon 2018 talk. You can find the recording here: https://www.youtube.com/watch?v=gKbORJtnVu8. All my other talks can be found here: https://train-it.eu/resources.
---
This short talk presents how easy it is to replace some cases of dynamic polymorphism with std::variant. During the lecture, we will analyze and compare 2 implementations of the same simple Finite State Machine. It turns up that variant-based code is not only much faster but also it gives us the opportunity to define our interfaces and program flow much better. The talk will end up with the discussion of pros and cons of each approach and will try to give guidelines on when to use them.
Git, CMake, Conan - How to ship and reuse our C++ projects?Mateusz Pusz
These are the slides from my CppCon 2018 talk. You can find the recording here: https://www.youtube.com/watch?v=S4QSKLXdTtA. All my other talks can be found here: https://train-it.eu/resources.
---
Git and CMake are already established standards in our community. However, it is uncommon to see them being used in an efficient way. As a result, many C++ projects have big problems with either importing other dependencies or making themselves easy to import by others. It gets even worse when we need to build many different configurations of our package on one machine.
That presentation lists and addresses the problems of build system and packaging that we have with large, multi-platform, C++ projects that often have many external and internal dependencies. The talk will present how proper use of CMake and Conan package manager can address those use cases. It will also describe current issues with the cooperation of those tools.
If you've attended or seen my talk at C++Now 2018, that time you can expect much more information on Conan and package creation using that tool. I will also describe how the integration of CMake and Conan changed over the last few months.
These are the slides from my C++Now 2018 talk. You can find the recording here: https://www.youtube.com/watch?v=y7PBciQp0B8. All my other talks can be found here: https://train-it.eu/resources.
---
Presentation of features already voted into C++20 Standard Draft in Toronto, Albuquerque, and Jacksonville ISO C++ Committee Meetings as well as the overview of other really promising proposals that have high chances to arrive in C++20.
Pointless Pointers - How to make our interfaces efficient?Mateusz Pusz
These are the slides from my code::dive 2017 talk. You can find the recording here: https://www.youtube.com/watch?v=qrifyjQW9gA. All my other talks can be found here: https://train-it.eu/resources.
---
C++ is not C. C++ developers too often forget about that. The effects are often disastrous. nullptr dereferences, buffer overflows, resource leaks are the problems often seen in C++ applications bug trackers. Does it have to be like that? The talk presents a few simple rules tested in production that will make most of those issues go away and never appear again in the C++ software. Interested? Come and see :-)
These are the slides from my 4Developers 2017 talk. You can find the recording here: https://www.youtube.com/watch?v=pU0VRMqM5vs. All my other talks can be found here: https://train-it.eu/resources.
---
That talk will present the C++ world seen from Low Latency domain. The world where no dynamic allocations are welcomed, C++ exceptions are nearly not used, where STL containers are often not enough, and where developers often need to go deep down to assembly level to verify if the code really does its best.
These are the slides from my code::dive 2016 talk. You can find the recording here: https://www.youtube.com/watch?v=yCfFt061SU4. All my other talks can be found here: https://train-it.eu/resources.
---
Writing fast C++ applications is a really complex subject. It often turns out that deep but isolated knowledge of ISO C++ standard and algorithmic complexity of operations does not guarantee the success. Often the bottleneck of our applications happens to be the performance of computer’s memory or its wrong usage by our code. The lack of knowledge in that subject can ruin all our ambitions to create high performance implementation.
std::shared_ptr<T> - (not so) Smart hammer for every pointy nailMateusz Pusz
These are the slides from my code::dive 2016 talk. You can find the recording here: https://www.youtube.com/watch?v=hHQS-Q7aMzg. All my other talks can be found here: https://train-it.eu/resources.
---
C++ rule of thumb is “you do not pay for what you do not use”. However, it turns out that this is not the case for some of the utilities from the C++ Standard Library. The key example here is the favorite tool of many developers – std::shared_ptr. The talk will describe the problems related to it in detail. It will also try to answer the question how it was possible to avoid them.
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteGoogle
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-pilot-review/
AI Pilot Review: Key Features
✅Deploy AI expert bots in Any Niche With Just A Click
✅With one keyword, generate complete funnels, websites, landing pages, and more.
✅More than 85 AI features are included in the AI pilot.
✅No setup or configuration; use your voice (like Siri) to do whatever you want.
✅You Can Use AI Pilot To Create your version of AI Pilot And Charge People For It…
✅ZERO Manual Work With AI Pilot. Never write, Design, Or Code Again.
✅ZERO Limits On Features Or Usages
✅Use Our AI-powered Traffic To Get Hundreds Of Customers
✅No Complicated Setup: Get Up And Running In 2 Minutes
✅99.99% Up-Time Guaranteed
✅30 Days Money-Back Guarantee
✅ZERO Upfront Cost
See My Other Reviews Article:
(1) TubeTrivia AI Review: https://sumonreview.com/tubetrivia-ai-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
In software engineering, the right architecture is essential for robust, scalable platforms. Wix has undergone a pivotal shift from event sourcing to a CRUD-based model for its microservices. This talk will chart the course of this pivotal journey.
Event sourcing, which records state changes as immutable events, provided robust auditing and "time travel" debugging for Wix Stores' microservices. Despite its benefits, the complexity it introduced in state management slowed development. Wix responded by adopting a simpler, unified CRUD model. This talk will explore the challenges of event sourcing and the advantages of Wix's new "CRUD on steroids" approach, which streamlines API integration and domain event management while preserving data integrity and system resilience.
Participants will gain valuable insights into Wix's strategies for ensuring atomicity in database updates and event production, as well as caching, materialization, and performance optimization techniques within a distributed system.
Join us to discover how Wix has mastered the art of balancing simplicity and extensibility, and learn how the re-adoption of the modest CRUD has turbocharged their development velocity, resilience, and scalability in a high-growth environment.
Quarkus Hidden and Forbidden ExtensionsMax Andersen
Quarkus has a vast extension ecosystem and is known for its subsonic and subatomic feature set. Some of these features are not as well known, and some extensions are less talked about, but that does not make them less interesting - quite the opposite.
Come join this talk to see some tips and tricks for using Quarkus and some of the lesser known features, extensions and development techniques.
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
Cyaniclab : Software Development Agency Portfolio.pdfCyanic lab
CyanicLab, an offshore custom software development company based in Sweden,India, Finland, is your go-to partner for startup development and innovative web design solutions. Our expert team specializes in crafting cutting-edge software tailored to meet the unique needs of startups and established enterprises alike. From conceptualization to execution, we offer comprehensive services including web and mobile app development, UI/UX design, and ongoing software maintenance. Ready to elevate your business? Contact CyanicLab today and let us propel your vision to success with our top-notch IT solutions.
Software Engineering, Software Consulting, Tech Lead.
Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Security,
Spring Transaction, Spring MVC,
Log4j, REST/SOAP WEB-SERVICES.
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
Check out the webinar slides to learn more about how XfilesPro transforms Salesforce document management by leveraging its world-class applications. For more details, please connect with sales@xfilespro.com
If you want to watch the on-demand webinar, please click here: https://www.xfilespro.com/webinars/salesforce-document-management-2-0-smarter-faster-better/
Understanding Globus Data Transfers with NetSageGlobus
NetSage is an open privacy-aware network measurement, analysis, and visualization service designed to help end-users visualize and reason about large data transfers. NetSage traditionally has used a combination of passive measurements, including SNMP and flow data, as well as active measurements, mainly perfSONAR, to provide longitudinal network performance data visualization. It has been deployed by dozens of networks world wide, and is supported domestically by the Engagement and Performance Operations Center (EPOC), NSF #2328479. We have recently expanded the NetSage data sources to include logs for Globus data transfers, following the same privacy-preserving approach as for Flow data. Using the logs for the Texas Advanced Computing Center (TACC) as an example, this talk will walk through several different example use cases that NetSage can answer, including: Who is using Globus to share data with my institution, and what kind of performance are they able to achieve? How many transfers has Globus supported for us? Which sites are we sharing the most data with, and how is that changing over time? How is my site using Globus to move data internally, and what kind of performance do we see for those transfers? What percentage of data transfers at my institution used Globus, and how did the overall data transfer performance compare to the Globus users?
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Globus
Large Language Models (LLMs) are currently the center of attention in the tech world, particularly for their potential to advance research. In this presentation, we'll explore a straightforward and effective method for quickly initiating inference runs on supercomputers using the vLLM tool with Globus Compute, specifically on the Polaris system at ALCF. We'll begin by briefly discussing the popularity and applications of LLMs in various fields. Following this, we will introduce the vLLM tool, and explain how it integrates with Globus Compute to efficiently manage LLM operations on Polaris. Attendees will learn the practical aspects of setting up and remotely triggering LLMs from local machines, focusing on ease of use and efficiency. This talk is ideal for researchers and practitioners looking to leverage the power of LLMs in their work, offering a clear guide to harnessing supercomputing resources for quick and effective LLM inference.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
How Recreation Management Software Can Streamline Your Operations.pptxwottaspaceseo
Recreation management software streamlines operations by automating key tasks such as scheduling, registration, and payment processing, reducing manual workload and errors. It provides centralized management of facilities, classes, and events, ensuring efficient resource allocation and facility usage. The software offers user-friendly online portals for easy access to bookings and program information, enhancing customer experience. Real-time reporting and data analytics deliver insights into attendance and preferences, aiding in strategic decision-making. Additionally, effective communication tools keep participants and staff informed with timely updates. Overall, recreation management software enhances efficiency, improves service delivery, and boosts customer satisfaction.
Software Engineering, Software Consulting, Tech Lead, Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Transaction, Spring MVC, OpenShift Cloud Platform, Kafka, REST, SOAP, LLD & HLD.
In the ever-evolving landscape of technology, enterprise software development is undergoing a significant transformation. Traditional coding methods are being challenged by innovative no-code solutions, which promise to streamline and democratize the software development process.
This shift is particularly impactful for enterprises, which require robust, scalable, and efficient software to manage their operations. In this article, we will explore the various facets of enterprise software development with no-code solutions, examining their benefits, challenges, and the future potential they hold.
GraphSummit Paris - The art of the possible with Graph TechnologyNeo4j
Sudhir Hasbe, Chief Product Officer, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
2. This presentation has been prepared by EPAM Systems, Inc. solely for use by EPAM at its EPAM So ware
Engineering Conference. This presentation or the information contained herein may not be reproduced
or used for any other purpose. This presentation includes highly confidential and proprietary
information and is delivered on the express condition that such information will not be disclosed to
anyone except persons in the recipient organization who have a need to know solely for the purpose
described above. No copies of this presentation will be made, and no other distribution will be made,
without the consent of EPAM. Any distribution of this presentation to any other person, in whole or in
part, or the reproduction of this presentation, or the divulgence of any of its contents is unauthorized.
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Con dential Information
2
3. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
WHY C++?
3
4. • No matter how fast processors get, so ware
consistently finds new ways to eat up the
extra speed
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Herb Sutter 2005: Free Lunch is Over
4
5. • No matter how fast processors get, so ware
consistently finds new ways to eat up the
extra speed
• Applications have enjoyed free and regular
performance gains for several decades
– even without releasing new versions
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Herb Sutter 2005: Free Lunch is Over
4
6. • No matter how fast processors get, so ware
consistently finds new ways to eat up the
extra speed
• Applications have enjoyed free and regular
performance gains for several decades
– even without releasing new versions
• Around 2003 we run out of room with
approaches to boost CPU clocks
– heat (too much and hard to dissipate)
– power consumption (too high)
– leakage problems
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Herb Sutter 2005: Free Lunch is Over
4
7. LANGUAGE EFFICIENCY FLEXIBILITY ABSTRACTION PRODUCTIVITY
C YES! YES! non-goal non-goal
C++ YES! YES! YES! WIP
JAVA, C# at the expense of at the expense of YES! YES!
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Where the Focus Is?
5
8. LANGUAGE EFFICIENCY FLEXIBILITY ABSTRACTION PRODUCTIVITY
C YES! YES! non-goal non-goal
C++ YES! YES! YES! WIP
JAVA, C# at the expense of at the expense of YES! YES!
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Where the Focus Is?
C++ motto:
You don't pay for what you don't use
5
9. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Why C++?
6
10. • Hardware costs
• Limited resources on mobiles
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Why C++?
PERFORMANCE PER TRANSISTOR
6
11. • Hardware costs
• Limited resources on mobiles
• Get the most from every CPU core
• Bigger experiences on a smaller hardware
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Why C++?
PERFORMANCE PER TRANSISTOR
PERFORMANCE PER CLOCK
6
12. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Why C++?
PERFORMANCE PER WAT
7
13. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Why C++?
PERFORMANCE PER WAT
7
15. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
How C++ Combats Global Warming
9
16. I guess in some way of saying here's my contribution to dealing
with global warming because if you can double the e iciency of
those systems you don't need yet another server farm that use as
much energy as a small town.
-- Bjarne Stroustrup
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
How C++ Combats Global Warming
10
17. People costs shi from top to nearly irrelevant.
James Hamilton
VP & Distinguished Engineer, Amazon Web Services
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Focus shift
11
18. E iciency is not just running fast or running bigger programs, it’s
also running using less resources.
-- Bjarne Stroustrup
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
E ciency
12
19. E iciency is not just running fast or running bigger programs, it’s
also running using less resources.
-- Bjarne Stroustrup
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
E ciency
Performance-oriented corporations are willing to pay more for so ware
development if due to its better e iciency it will save lots of money during
product lifetimes
12
20. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
C++ Renaissance
13
23. Facebook consumes very little Wats per user. Actually fractions of Wat. ...
Everything that is backend, high-performance is C++ because it must be responsive and well done. ...
Facebook is literally running on C++. We also have JIT for PHP that is obviously written in C++
and generates machine code during runtime. ...
Using the native language such as C++ means more features for the same power and less power for the
given set of features. It is a very simple equation.
-- Andrei Alexandrescu, Research Scientist at Facebook, Lang.Next 2012
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
C++ Renaissance: Facebook (2012)
16
26. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
WHAT IS C++?
19
27. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
What is C++?
20
28. • C++ is no longer C with classes
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
What is C++?
20
29. • C++ is no longer C with classes
• C++ is a general-purpose programming language
– imperative, object-based, object-oriented, generic, and functional programming features
– developer is not tied to any specific programming paradigm by the language
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
What is C++?
20
30. • C++ is no longer C with classes
• C++ is a general-purpose programming language
– imperative, object-based, object-oriented, generic, and functional programming features
– developer is not tied to any specific programming paradigm by the language
• High-level abstractions at low cost
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
What is C++?
20
31. • C++ is no longer C with classes
• C++ is a general-purpose programming language
– imperative, object-based, object-oriented, generic, and functional programming features
– developer is not tied to any specific programming paradigm by the language
• High-level abstractions at low cost
• Low-level access when needed
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
What is C++?
20
32. • C++ is no longer C with classes
• C++ is a general-purpose programming language
– imperative, object-based, object-oriented, generic, and functional programming features
– developer is not tied to any specific programming paradigm by the language
• High-level abstractions at low cost
• Low-level access when needed
• If used correctly, provides hard to beat performance
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
What is C++?
20
33. • C++ is no longer C with classes
• C++ is a general-purpose programming language
– imperative, object-based, object-oriented, generic, and functional programming features
– developer is not tied to any specific programming paradigm by the language
• High-level abstractions at low cost
• Low-level access when needed
• If used correctly, provides hard to beat performance
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
What is C++?
C++ language evolves now faster than ever
20
34. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
C++ Timeline
21
35. • ISO/IEC JTC1/SC22/WG21 (Joint Technical Committee 1/Subcommittee 22/Working Group 21)
• Formed in 1990-91
• Consists of accredited experts from member nations of ISO/IEC JTC1/SC22 who are interested in the
C++ work
• Includes 13 member countries: Bulgaria, Canada, Czech Republic, Finland, France, Germany,
Netherlands, Poland, Russia, Spain, Switzerland, United Kingdom, and the United States
– Bulgaria, Czech Republic, and Poland joined during last year
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
ISO C++ Committee (WG21)
22
36. • ISO/IEC JTC1/SC22/WG21 (Joint Technical Committee 1/Subcommittee 22/Working Group 21)
• Formed in 1990-91
• Consists of accredited experts from member nations of ISO/IEC JTC1/SC22 who are interested in the
C++ work
• Includes 13 member countries: Bulgaria, Canada, Czech Republic, Finland, France, Germany,
Netherlands, Poland, Russia, Spain, Switzerland, United Kingdom, and the United States
– Bulgaria, Czech Republic, and Poland joined during last year
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
ISO C++ Committee (WG21)
EPAM joined "The Committee" in February 2017!
22
37. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
C++ Momentum
23
38. SC 22
SUBGROUP
NAME
RECENT FACE-TO-FACE
ATTENDANCE
NOTES
WG 4 COBOL 15
WG 5 Fortran 26
WG 9 Ada 0
WG 14 C 24
WG 17 Prolog 3
WG 21 C++ 224
WG 23
Programming Language
Vulnerabilities
3
+ ~10 WG21 experts when meeting co-located
with WG21
WG 24 Linux Standard Base (none yet)
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Not just yet another ISO committee
24
39. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
ISO C++ Committee structure
25
40. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Performance vs type safety and usability
26
41. class Price { /* ... */ };
Price buy = new Price(10);
Price threashold = new Price(11);
if(buy.less(threashold))
execute();
buy.incr(1);
In most "modern" languages (i.e. Java, C#)
user-defined types
• have to be allocated on the heap
• do not have value semantics
• do not work with built-in operators
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Performance vs type safety and usability
JAVA
26
42. class Price { /* ... */ };
Price buy = new Price(10);
Price threashold = new Price(11);
if(buy.less(threashold))
execute();
buy.incr(1);
In most "modern" languages (i.e. Java, C#)
user-defined types
• have to be allocated on the heap
• do not have value semantics
• do not work with built-in operators
class price { /* ... */ };
price buy(10);
price threashold(11);
if(buy < threashold)
execute();
buy += 1;
Modern C++
• type safety without sacrificing performance
• power and expressiveness of built-in types
• prefers value semantics
• limits dynamic allocations
• discourages dynamic polymorphism
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Performance vs type safety and usability
JAVA C++
26
43. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Because type matters
27
44. void qsort(void* base, size_t el_count, size_t el_size,
int (*compare)(const void*, const void*));
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Because type matters
C
27
45. void qsort(void* base, size_t el_count, size_t el_size,
int (*compare)(const void*, const void*));
template<class RandomIt, class Compare>
constexpr void sort(RandomIt first, RandomIt last, Compare comp);
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Because type matters
C
C++
27
46. void qsort(void* base, size_t el_count, size_t el_size,
int (*compare)(const void*, const void*));
template<class RandomIt, class Compare>
constexpr void sort(RandomIt first, RandomIt last, Compare comp);
template<class ExecutionPolicy, class RandomIt, class Compare>
void sort(ExecutionPolicy&& policy, RandomIt first, RandomIt last, Compare comp);
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Because type matters
C
C++
27
47. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Because type matters
28
48. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Because type matters
29
49. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Uni ed approach to resource handling
30
50. {
auto smart_ptr = std::make_unique<BigData>();
// use ptr
}
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Uni ed approach to resource handling
MEMORY
30
51. {
auto smart_ptr = std::make_unique<BigData>();
// use ptr
}
{
auto lock = std::scoped_lock(mtx);
// critical section
}
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Uni ed approach to resource handling
MEMORY
THREAD SYNCHRONIZATION
30
52. {
auto smart_ptr = std::make_unique<BigData>();
// use ptr
}
{
auto lock = std::scoped_lock(mtx);
// critical section
}
{
auto file = fhandle(fopen("demo.txt", "r"));
// use the file
}
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Uni ed approach to resource handling
MEMORY
THREAD SYNCHRONIZATION
FILE HANDLES
30
53. {
auto smart_ptr = std::make_unique<BigData>();
// use ptr
}
{
auto lock = std::scoped_lock(mtx);
// critical section
}
{
auto file = fhandle(fopen("demo.txt", "r"));
// use the file
}
{
auto socket = connect("www.epam.com");
// use the socket
}
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Uni ed approach to resource handling
MEMORY
THREAD SYNCHRONIZATION
FILE HANDLES
NETWORK SOCKET
30
54. {
auto smart_ptr = std::make_unique<BigData>();
// use ptr
}
{
auto lock = std::scoped_lock(mtx);
// critical section
}
{
auto file = fhandle(fopen("demo.txt", "r"));
// use the file
}
{
auto socket = connect("www.epam.com");
// use the socket
}
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Uni ed approach to resource handling
MEMORY
THREAD SYNCHRONIZATION
FILE HANDLES
NETWORK SOCKET
No need for a garbage collector as memory is not the only resource to handle
30
55. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Compile time safety without sacri cing performance
31
56. constexpr double avg_speed(double length,
double time)
{
return length / time;
}
/// l - distance in kilometers
/// t - time in hours
void foo(double l, double t)
{
auto speed = avg_speed(l, t);
int mps = int(speed * 1000 / 3600);
printf("Average speed in mps is: %un",
mps);
}
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Compile time safety without sacri cing performance
31
57. constexpr double avg_speed(double length,
double time)
{
return length / time;
}
/// l - distance in kilometers
/// t - time in hours
void foo(double l, double t)
{
auto speed = avg_speed(l, t);
int mps = int(speed * 1000 / 3600);
printf("Average speed in mps is: %un",
mps);
}
constexpr Velocity auto avg_speed(Length auto d,
Time auto t)
{
return d / t;
}
void foo(Length auto l, Time auto t)
{
auto speed = avg_speed(l, t);
auto mps = quantity_cast<metre_per_second,
int>(speed);
printf("Average speed in mps is: %un",
mps.count());
}
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Compile time safety without sacri cing performance
31
58. constexpr double avg_speed(double length,
double time)
{
return length / time;
}
/// l - distance in kilometers
/// t - time in hours
void foo(double l, double t)
{
auto speed = avg_speed(l, t);
int mps = int(speed * 1000 / 3600);
printf("Average speed in mps is: %un",
mps);
}
constexpr Velocity auto avg_speed(Length auto d,
Time auto t)
{
return d / t;
}
void foo(Length auto l, Time auto t)
{
auto speed = avg_speed(l, t);
auto mps = quantity_cast<metre_per_second,
int>(speed);
printf("Average speed in mps is: %un",
mps.count());
}
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Compile time safety without sacri cing performance
How much do we pay for such advanced and safe abstractions?
31
59. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Compile time safety without sacri cing performance
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <cstdio>
constexpr double avg_speed(double length, double time)
{
return length / time;
}
void foo(double l, double t)
{
auto speed = avg_speed(l, t);
printf("Average speed in mps is: %un",
int(speed * 1000 / 3600));
}
int main()
{
foo(144., 2.);
}
-std=c++2a -fconcepts -O2 -DNDEBUG
11010 ./a.out .LX0: lib.f: .text // s+ Intel Demangle Libraries
Add new... Add tool...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
.LC2:
.string "Average speed in mps is: %un"
foo(double, double):
divsd xmm0, xmm1
mov edi, OFFSET FLAT:.LC2
xor eax, eax
mulsd xmm0, QWORD PTR .LC0[rip]
divsd xmm0, QWORD PTR .LC1[rip]
cvttsd2si esi, xmm0
jmp printf
main:
sub rsp, 8
mov esi, 20
mov edi, OFFSET FLAT:.LC2
ASM generation compiler returned: 0
Execution build compiler returned: 0
Program returned: 0
Average speed in mps is: 20
Wrap lines
x86-64 gcc 9.2
Edit on Compiler Explorer
32
60. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Compile time safety without sacri cing performance
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <units/dimensions/velocity.h>
using namespace units;
template<Length L, Time T>
constexpr Velocity avg_speed(L length, T time)
{
return length / time;
}
void foo(double l, double t)
{
auto speed = avg_speed(quantity<kilometre>(l), quantity<hour>(t)
printf("Average speed in mps is: %un",
quantity_cast<metre_per_second, int>(speed).count());
}
int main()
{
foo(144., 2.);
}
-std=c++2a -fconcepts -O2 -DNDEBUG
11010 ./a.out .LX0: lib.f: .text // s+ Intel Demangle Libraries
Add new... Add tool...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
.LC2:
.string "Average speed in mps is: %un"
foo(double, double):
divsd xmm0, xmm1
mov edi, OFFSET FLAT:.LC2
xor eax, eax
mulsd xmm0, QWORD PTR .LC0[rip]
divsd xmm0, QWORD PTR .LC1[rip]
cvttsd2si esi, xmm0
jmp printf
main:
sub rsp, 8
mov esi, 20
mov edi, OFFSET FLAT:.LC2
ASM generation compiler returned: 0
Execution build compiler returned: 0
Program returned: 0
Average speed in mps is: 20
Wrap lines
x86-64 gcc 9.2
Edit on Compiler Explorer
33
61. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Compile time safety without sacri cing performance
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <units/dimensions/velocity.h>
using namespace units;
template<Length L, Time T>
constexpr Velocity avg_speed(L length, T time)
{
return length / time;
}
void foo(Length l, Time t)
{
auto speed = avg_speed(l, t);
printf("Average speed in mps is: %un",
quantity_cast<metre_per_second, int>(speed).count());
}
int main()
{
using namespace units::literals;
foo(144.km, 2.h);
}
-std=c++2a -fconcepts -O2 -DNDEBUG
11010 ./a.out .LX0: lib.f: .text // s+ Intel Demangle Libraries
Add new... Add tool...
1
2
3
4
5
6
7
8
9
10
11
.LC0:
.string "Average speed in mps is: %un"
main:
sub rsp, 8
mov esi, 20
mov edi, OFFSET FLAT:.LC0
xor eax, eax
call printf
xor eax, eax
add rsp, 8
ret
ASM generation compiler returned: 0
Execution build compiler returned: 0
Program returned: 0
Average speed in mps is: 20
Wrap lines
x86-64 gcc 9.2
Edit on Compiler Explorer
34
62. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Compile time safety without sacri cing performance
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <cstdio>
int main()
{
printf("Average speed in mps is: %un", 20);
}
-std=c++2a -fconcepts -O2 -DNDEBUG
11010 ./a.out .LX0: lib.f: .text // s+ Intel Demangle Libraries
Add new... Add tool...
1
2
3
4
5
6
7
8
9
10
11
.LC0:
.string "Average speed in mps is: %un"
main:
sub rsp, 8
mov esi, 20
mov edi, OFFSET FLAT:.LC0
xor eax, eax
call printf
xor eax, eax
add rsp, 8
ret
ASM generation compiler returned: 0
Execution build compiler returned: 0
Program returned: 0
Average speed in mps is: 20
Wrap lines
x86-64 gcc 9.2
Edit on Compiler Explorer
35
63. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Omnipresence of compile-time usage
36
64. constexpr auto d = 2019_y/September/21;
static_assert(weekday{d} == Saturday);
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Omnipresence of compile-time usage
DATE HANDLING
36
65. constexpr auto d = 2019_y/September/21;
static_assert(weekday{d} == Saturday);
std::cout << "'SEC 2019' starts" <<
" on " << weekday{d} <<
" at " << d + 9h << "n";
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Omnipresence of compile-time usage
DATE HANDLING
36
66. constexpr auto d = 2019_y/September/21;
static_assert(weekday{d} == Saturday);
std::cout << "'SEC 2019' starts" <<
" on " << weekday{d} <<
" at " << d + 9h << "n";
static_assert(d == September/21/2019);
static_assert(d == 21_d/September/2019);
static_assert(d == Saturday[3]/September/2019);
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Omnipresence of compile-time usage
DATE HANDLING
36
67. constexpr auto d = 2019_y/September/21;
static_assert(weekday{d} == Saturday);
std::cout << "'SEC 2019' starts" <<
" on " << weekday{d} <<
" at " << d + 9h << "n";
static_assert(d == September/21/2019);
static_assert(d == 21_d/September/2019);
static_assert(d == Saturday[3]/September/2019);
// simple numeric operations
static_assert(10km / 2 == 5km);
// unit conversions
static_assert(1h == 3600s);
static_assert(1km + 1m == 1001m);
// dimension conversions
static_assert(1km / 1s == 1000mps);
static_assert(2kmph * 2h == 4km);
static_assert(2km / 2kmph == 1h);
static_assert(1000 / 1s == 1kHz);
static_assert(10km / 5km == 2);
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Omnipresence of compile-time usage
DATE HANDLING UNITS AND DIMENSIONAL ANALYSIS
36
68. constexpr auto d = 2019_y/September/21;
static_assert(weekday{d} == Saturday);
std::cout << "'SEC 2019' starts" <<
" on " << weekday{d} <<
" at " << d + 9h << "n";
static_assert(d == September/21/2019);
static_assert(d == 21_d/September/2019);
static_assert(d == Saturday[3]/September/2019);
// simple numeric operations
static_assert(10km / 2 == 5km);
// unit conversions
static_assert(1h == 3600s);
static_assert(1km + 1m == 1001m);
// dimension conversions
static_assert(1km / 1s == 1000mps);
static_assert(2kmph * 2h == 4km);
static_assert(2km / 2kmph == 1h);
static_assert(1000 / 1s == 1kHz);
static_assert(10km / 5km == 2);
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Omnipresence of compile-time usage
DATE HANDLING UNITS AND DIMENSIONAL ANALYSIS
The fastest programs are those that do nothing
36
69. Disconnected Connecting
Connected
connect / establish
established timeout / establish
ping [is_valid] / reset_timeout
disconnect / close
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Finite State Machine (FSM)
37
70. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
FSM: A classical approach
38
71. class fsm {
enum class state : char { disconnected, connecting, connected } state_;
public:
constexpr void on_event(const connect&)
{
if(state_ == state::disconnected) {
establish();
state_ = state::connecting;
}
}
constexpr void on_event(const disconnect&) { /* ... */ }
constexpr void on_event(const established&) { /* ... */ }
constexpr void on_event(const ping& event) { /* ... */ }
constexpr void on_event(const timeout&) { /* ... */ }
};
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
FSM: A naive approach
39
72. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
FSM: Alternative syntax
40
73. struct connection {
auto operator()() const
{
using namespace boost::sml;
return make_transition_table(
* "Disconnected"_s + event<connect> / establish = "Connecting"_s,
"Connecting"_s + event<established> = "Connected"_s,
"Connected"_s + event<ping> [ is_valid ] / reset_timeout,
"Connected"_s + event<timeout> / establish = "Connecting"_s,
"Connected"_s + event<disconnect> / close = "Disconnected"_s
);
}
};
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
FSM: Domain Speci c Language
41
74. struct connection {
auto operator()() const
{
using namespace boost::sml;
return make_transition_table(
* "Disconnected"_s + event<connect> / establish = "Connecting"_s,
"Connecting"_s + event<established> = "Connected"_s,
"Connected"_s + event<ping> [ is_valid ] / reset_timeout,
"Connected"_s + event<timeout> / establish = "Connecting"_s,
"Connected"_s + event<disconnect> / close = "Disconnected"_s
);
}
};
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
FSM: Domain Speci c Language
Program that says WHAT rather than HOW is more likely to be correct
41
75. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
FSM: A classical approach
42
76. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
FSM: A naive approach
43
77. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
FSM: Domain Speci c Language
44
78. CLASSICAL NAIVE DSL
HEAP USAGE Lots None None
DYNAMIC POLYMORPHISM Yes No No
INLINING No Yes Yes
CPU CACHE FRIENDLY No Yes Yes
ERROR PRONE Yes Yes No
REUSE Moderate Hard Easy
ASSEMBLY LINES 350 21 21
MEMORY FOOTPRINT High 1B 1B
PERFORMANCE SLOW FAST FAST
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
FSM: Summary
45
79. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
The best language for Data Oriented Design (DOD)
46
80. 1 Keep data that is not used together apart, on separate cache lines
• avoids the invisible convoying of false sharing (ping-pong)
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
The best language for Data Oriented Design (DOD)
46
81. 1 Keep data that is not used together apart, on separate cache lines
• avoids the invisible convoying of false sharing (ping-pong)
2 Keep data that is frequently used together close together
• if a thread that uses A frequently also needs B, try to put them in one cache line
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
The best language for Data Oriented Design (DOD)
46
82. 1 Keep data that is not used together apart, on separate cache lines
• avoids the invisible convoying of false sharing (ping-pong)
2 Keep data that is frequently used together close together
• if a thread that uses A frequently also needs B, try to put them in one cache line
3 Keep “hot” and “cold” data that is not used with the same frequency apart
• fit “hot” data in the fewest possible cache lines and memory pages
• reduces the cache footprint and cache misses, the memory footprint, and virtual memory
paging
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
The best language for Data Oriented Design (DOD)
46
83. 1 Keep data that is not used together apart, on separate cache lines
• avoids the invisible convoying of false sharing (ping-pong)
2 Keep data that is frequently used together close together
• if a thread that uses A frequently also needs B, try to put them in one cache line
3 Keep “hot” and “cold” data that is not used with the same frequency apart
• fit “hot” data in the fewest possible cache lines and memory pages
• reduces the cache footprint and cache misses, the memory footprint, and virtual memory
paging
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
The best language for Data Oriented Design (DOD)
CPU instructions to execute is also data sitting in L1 cache
46
84. Modern C++ is not the language we used to learn 20 years ago!
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Modern C++
47
85. Modern C++ is not the language we used to learn 20 years ago!
• Move Semantics to e iciently handle resources and improve performance
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Modern C++
47
86. Modern C++ is not the language we used to learn 20 years ago!
• Move Semantics to e iciently handle resources and improve performance
• constexpr to move execution of the code from run-time to compile-time
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Modern C++
47
87. Modern C++ is not the language we used to learn 20 years ago!
• Move Semantics to e iciently handle resources and improve performance
• constexpr to move execution of the code from run-time to compile-time
• Deterministic destruction
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Modern C++
47
88. Modern C++ is not the language we used to learn 20 years ago!
• Move Semantics to e iciently handle resources and improve performance
• constexpr to move execution of the code from run-time to compile-time
• Deterministic destruction
• Better resource handling
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Modern C++
47
89. Modern C++ is not the language we used to learn 20 years ago!
• Move Semantics to e iciently handle resources and improve performance
• constexpr to move execution of the code from run-time to compile-time
• Deterministic destruction
• Better resource handling
• Value semantics to improve performance and development experience
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Modern C++
47
90. Modern C++ is not the language we used to learn 20 years ago!
• Move Semantics to e iciently handle resources and improve performance
• constexpr to move execution of the code from run-time to compile-time
• Deterministic destruction
• Better resource handling
• Value semantics to improve performance and development experience
• Full control over concurrency and parallelism (task-based, parallel, vectorized, lock-free, ...)
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Modern C++
47
91. Modern C++ is not the language we used to learn 20 years ago!
• Move Semantics to e iciently handle resources and improve performance
• constexpr to move execution of the code from run-time to compile-time
• Deterministic destruction
• Better resource handling
• Value semantics to improve performance and development experience
• Full control over concurrency and parallelism (task-based, parallel, vectorized, lock-free, ...)
• Many productivity-related improvements (i.e. lambdas, range-for loops, auto, variadic templates, ...)
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Modern C++
47
92. Modern C++ is not the language we used to learn 20 years ago!
• Move Semantics to e iciently handle resources and improve performance
• constexpr to move execution of the code from run-time to compile-time
• Deterministic destruction
• Better resource handling
• Value semantics to improve performance and development experience
• Full control over concurrency and parallelism (task-based, parallel, vectorized, lock-free, ...)
• Many productivity-related improvements (i.e. lambdas, range-for loops, auto, variadic templates, ...)
• Lots of new toys in the C++ Standard Library
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Modern C++
47
93. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
C++20 is going to be a game-changer
48
94. • Concepts to provide even better compile-time safety
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
C++20 is going to be a game-changer
48
95. • Concepts to provide even better compile-time safety
• Coroutines to enhance asynchronous operations
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
C++20 is going to be a game-changer
48
96. • Concepts to provide even better compile-time safety
• Coroutines to enhance asynchronous operations
• Ranges to build better algorithms with higher level abstractions
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
C++20 is going to be a game-changer
48
97. • Concepts to provide even better compile-time safety
• Coroutines to enhance asynchronous operations
• Ranges to build better algorithms with higher level abstractions
• Modules to fix C build system and improve large-scale architecture
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
C++20 is going to be a game-changer
48
98. • Concepts to provide even better compile-time safety
• Coroutines to enhance asynchronous operations
• Ranges to build better algorithms with higher level abstractions
• Modules to fix C build system and improve large-scale architecture
• <=> to simplify implementation of value types
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
C++20 is going to be a game-changer
48
99. • Concepts to provide even better compile-time safety
• Coroutines to enhance asynchronous operations
• Ranges to build better algorithms with higher level abstractions
• Modules to fix C build system and improve large-scale architecture
• <=> to simplify implementation of value types
• New tools in the C++ Standard Library
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
C++20 is going to be a game-changer
48
100. • Concepts to provide even better compile-time safety
• Coroutines to enhance asynchronous operations
• Ranges to build better algorithms with higher level abstractions
• Modules to fix C build system and improve large-scale architecture
• <=> to simplify implementation of value types
• New tools in the C++ Standard Library
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
C++20 is going to be a game-changer
EPAM is an active participant of the C++ standardization process and
contributed some performance-related features to C++20 :-)
48
101. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
C++ ON THE MARKET
49
102. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Tiobe Index: August 2019
50
103. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
IEEE Spectrum: The 2018 Top Programming Languages
51
104. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
IEEE Spectrum: The 2018 Top Programming Languages
WEB
MOBILE
ENTERPRISE
EMBEDDED
52
105. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Top 10 GitHub languages (# of pushes)
53
107. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Facts about C++
55
108. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Facts about C++
55
109. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Facts about C++
56
110. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Facts about C++
56
111. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
The Modern IT world is built on C++
57
112. • Low-Level
– Operating systems and drivers
– Embedded devices (from tiny to huge scale)
– Autonomous cars
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
The Modern IT world is built on C++
57
113. • Low-Level
– Operating systems and drivers
– Embedded devices (from tiny to huge scale)
– Autonomous cars
• High performance libraries
– Scientific (NASA, CERN, ...)
– Hardware accelerated calculations
– AI, machine learning
– Image recognition and mapping
– Graphics
– Maps and navigation
– All kinds of frameworks (Electron, ...)
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
The Modern IT world is built on C++
57
114. • Low-Level
– Operating systems and drivers
– Embedded devices (from tiny to huge scale)
– Autonomous cars
• High performance libraries
– Scientific (NASA, CERN, ...)
– Hardware accelerated calculations
– AI, machine learning
– Image recognition and mapping
– Graphics
– Maps and navigation
– All kinds of frameworks (Electron, ...)
• High performance servers
– Stock Exchanges
– High Frequency Trading
– Data centers (Google, Facebook, Amazon, ...)
– Databases (MySQL, ...)
– Telecom
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
The Modern IT world is built on C++
57
115. • Low-Level
– Operating systems and drivers
– Embedded devices (from tiny to huge scale)
– Autonomous cars
• High performance libraries
– Scientific (NASA, CERN, ...)
– Hardware accelerated calculations
– AI, machine learning
– Image recognition and mapping
– Graphics
– Maps and navigation
– All kinds of frameworks (Electron, ...)
• High performance servers
– Stock Exchanges
– High Frequency Trading
– Data centers (Google, Facebook, Amazon, ...)
– Databases (MySQL, ...)
– Telecom
• End-user applications
– Games
– Powerful modeling and simulation so ware
(Adobe, Maya, Autodesk, Pixar, ...)
– Compilers
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
The Modern IT world is built on C++
57
116. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Windows
58
117. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
3D Computer Animation
59
118. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Movies
60
119. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Raster graphics editors
61
120. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Light Projections
62
121. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
Games
63
122. SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
C++ is the most e cient programming language in the world
64
123. 1 Learn Modern C++ and stay current with a fast evolving language
• follow and learn C++ releases
• follow C++ conferences and blogs
• hire C++ trainers
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
C++ is the most e cient programming language in the world
64
124. 1 Learn Modern C++ and stay current with a fast evolving language
• follow and learn C++ releases
• follow C++ conferences and blogs
• hire C++ trainers
2 Use C++ in your projects to
• decrease money expenditure on computational resources
• boost performance
• limit jitter (improve response time)
• limit power usage
• limit memory footprint
• have more control over hardware
SEC 2019 | Free lunch is over: Why C++ is so important in the modern world?
C++ is the most e cient programming language in the world
64