Dmitrii Dolzhenko: “С++ 2017 and Beyond, Deliberate Choice of Programming Language”

Post on 10-Jan-2017

30 views 2 download

transcript

www.luxoft.com

С++ 2017 and beyondAwareness of choice

Dmitry Dolzhenko13-010-2016

www.luxoft.com

About:

Algorithms, Numeric algorithms, Optimization Automatic formal math verification systems Computer vision, Machine learning Large-scale software architecture Code optimization Failsafe software development Planning, Robotics, Autonomous driving

www.luxoft.com

Highlight

Why we select C++ first time? Raiting Problems Benefits Our place in a world

3

www.luxoft.com

Why we select C++ first time?

First language we learn in university Some expressions seems to be elegant Dozens of “cool” features! Cool it has operator overloading! Shorter expressions than ones from Pascal All benefits of C and more! All benefits of Java OOP and more! It can do everything Java can but faster!

4

www.luxoft.com

How we feel talking to other developers:

5

www.luxoft.com

It seems to be easier than it really is

6

www.luxoft.com

And suddenly:

7

www.luxoft.com

And suddenly:

8

www.luxoft.com 9

www.luxoft.com

TIOBE:

www.luxoft.com

www.luxoft.com

Problems

Learning curveHighest cost of error

Mixed abstraction levelsNo modules

No package managerInsane Metaprogramming

stl is too low levelBest libraries are crazy complicated (boost, Eigen)

Hard to find library you need

www.luxoft.com 13

www.luxoft.com

Mixed abstraction levels:

You can write asm inline code You can use pointers

You can use C style allocationYou can use OOP

You can use lambda closuresAnd you can do it at the same time!

www.luxoft.com

No modules:

Long compilation timeCompile all the library per CPP

No module encapsulationOld-school preprocessor

Namespace crutchHard to develop package manager

www.luxoft.com

No package manager:

Problem

pip install my-

problem-

solver

Solutio

n

www.luxoft.com

Benefits (development):

We can write fast upper level codeWe can write low level code if we need one

Hardcore speed optimizationHardcore memory usage optimization

RAIITemplates are real not just polymorphic wrappers

Real time softwareVery good optimizing compilers

www.luxoft.com

Benefits (architecture):

Predictable memory usagePredictable reaction time

Embeddable almost anywhereA lot of code already written in C and C++ can

be usedCan write low level code (device drivers,

controllers)

www.luxoft.com

Where C++ is used:

www.luxoft.com

Web browsers engines:

www.luxoft.com

Operating systems:

www.luxoft.com

Real time or fast image processing:

www.luxoft.com

3d photorealistic rendering:

www.luxoft.com

3d game engines:

www.luxoft.com

CAD CAM:

www.luxoft.com

Embedded software (shared with C):

www.luxoft.com

Deeplearning:

www.luxoft.com

Automotive software:

www.luxoft.com

Smart city infrastructure:

www.luxoft.com

Autonomous driving software:

www.luxoft.com

NASA:

www.luxoft.com

SpaceX:

www.luxoft.com

Thank you