Arnaud Porterie - The Truth About C++

40
The truth * about C++ * Commonly accepted among a representative population of 1 Arnaud Porterie – While42 Paris – 20130912 Thursday, September 12, 13

description

Talk for While 42 Paris, September 12th @ Société Générale CIB

Transcript of Arnaud Porterie - The Truth About C++

Page 1: Arnaud Porterie - The Truth About C++

The truth* about C++* Commonly accepted among a representative population of 1

Arnaud Porterie – While42 Paris – 20130912Thursday, September 12, 13

Page 2: Arnaud Porterie - The Truth About C++

Who am I?

• Arnaud Porterie - @icecrime

• Epitech 2007

• Mostly worked with C++ since then

Thursday, September 12, 13

Page 3: Arnaud Porterie - The Truth About C++

Objectives of this talk

Thursday, September 12, 13

Page 4: Arnaud Porterie - The Truth About C++

Objectives of this talk

• Discuss common misconceptions

Thursday, September 12, 13

Page 5: Arnaud Porterie - The Truth About C++

Objectives of this talk

• Discuss common misconceptions

• Understand the recent hype

Thursday, September 12, 13

Page 6: Arnaud Porterie - The Truth About C++

Objectives of this talk

• Discuss common misconceptions

• Understand the recent hype

• Show that C++ has a (bright) future

Thursday, September 12, 13

Page 7: Arnaud Porterie - The Truth About C++

Objectives of this talk

• Discuss common misconceptions

• Understand the recent hype

• Show that C++ has a (bright) future

• In less than 1/2h

Thursday, September 12, 13

Page 8: Arnaud Porterie - The Truth About C++

Objectives of this talk

• Discuss common misconceptions

• Understand the recent hype

• Show that C++ has a (bright) future

• In less than 1/2h

• Without showing code

Thursday, September 12, 13

Page 9: Arnaud Porterie - The Truth About C++

C++ misconceptions

Thursday, September 12, 13

Page 10: Arnaud Porterie - The Truth About C++

#1 - C++ never evolves

Thursday, September 12, 13

Page 11: Arnaud Porterie - The Truth About C++

1998

C++98

2002

C# 1.0

2003

C++03

2011

C++11

2005

C# 2.0

2007

C# 3.0

2010

C# 4.0

2013

C# 5.0

Thursday, September 12, 13

Page 12: Arnaud Porterie - The Truth About C++

13 years for a new C++?

Thursday, September 12, 13

Page 13: Arnaud Porterie - The Truth About C++

Evolution didn’t wait for a new standard

• C++ changed radically in the past decade

• So called “Modern C++”

• “Modern C++ design”, A. Alexandrescu, 2001

• Boost library, the standard’s sandbox

Thursday, September 12, 13

Page 14: Arnaud Porterie - The Truth About C++

• Community driven evolution

• Committee standardized already widely adopted libraries

• C++11 also adds many new language features and libraries

Thursday, September 12, 13

Page 15: Arnaud Porterie - The Truth About C++

#2 - C++ is about manual memory management

Thursday, September 12, 13

Page 16: Arnaud Porterie - The Truth About C++

C++ greatest myth

• If you delete, you’re doing it wrong

• RAII is C++ most important idiom

• The stack is fast and foolproof

• std::shared_ptr, std::unique_ptr, ...

Thursday, September 12, 13

Page 17: Arnaud Porterie - The Truth About C++

Want to test if someone knows C++?

Pro tip #1

Thursday, September 12, 13

Page 18: Arnaud Porterie - The Truth About C++

Want to test if someone knows C++?

Ask about memory management.

Pro tip #1

Thursday, September 12, 13

Page 19: Arnaud Porterie - The Truth About C++

Just ignore any wrong answer to #1.

Pro tip #2

Thursday, September 12, 13

Page 20: Arnaud Porterie - The Truth About C++

Just ignore any wrong answer to #1.

You’ll never recruit anyone.

Pro tip #2

Thursday, September 12, 13

Page 21: Arnaud Porterie - The Truth About C++

#3 - C++ is too hard

Thursday, September 12, 13

Page 22: Arnaud Porterie - The Truth About C++

Can’t really deny that...

Thursday, September 12, 13

Page 23: Arnaud Porterie - The Truth About C++

It’s not getting any better

• ISO/IEC 14882:2003: 786 pages

• ISO/IEC 14882:2011: 1328 pages

• C++11 is supposedly more accessible

• I say C++11 can’t properly be used without a good understanding of C++03

Thursday, September 12, 13

Page 24: Arnaud Porterie - The Truth About C++

• Procedural

• Generic

• Functional

• Object-oriented

• Variety does not make things easier for the newcomer

Multi-paradigm language

Thursday, September 12, 13

Page 25: Arnaud Porterie - The Truth About C++

So, is C++ is back?

Thursday, September 12, 13

Page 26: Arnaud Porterie - The Truth About C++

• Was it ever gone?

• The world is built on C++!

• One thing has changed: C++ is back as a first class language in Microsoft’s strategy

Thursday, September 12, 13

Page 27: Arnaud Porterie - The Truth About C++

What future for C++ ?

Thursday, September 12, 13

Page 28: Arnaud Porterie - The Truth About C++

Choosing C++ is a case of premature optimization

– Miguel de IcazaXamarin CTO & level 60 troll

Thursday, September 12, 13

Page 29: Arnaud Porterie - The Truth About C++

• The tradeoff between productivity and control is not as huge as most believe

• The real question is: today, are there that many problems that justify the extra effort?

Thursday, September 12, 13

Page 30: Arnaud Porterie - The Truth About C++

Phase/trend Major constraints 2x efficient apps runs...

1950s - 1990sCompute-constrainted

Processor2x compute speed

2x users

1995ish - 2007ishSurplus local compute +

low UI innovation (WIMP)Programmer time n/a

200x -Mobile

ProcessorPower (battery life)

2x compute speed2x battery life

2009 -Cloud

Power (31%)Server HW (57%)

0.5x power 0.5x nodes

2009 -Heterogeneous cores,

GPGPU

Power (dark silicon)Processor

0.5x power2x compute speed

Shamelessly stolen from Herb Sutter’s “Not your father’s C++” talk

Thursday, September 12, 13

Page 31: Arnaud Porterie - The Truth About C++

Phase/trend Major constraints 2x efficient apps runs...

1950s - 1990sCompute-constrainted

Processor2x compute speed

2x users

1995ish - 2007ishSurplus local compute +

low UI innovation (WIMP)Programmer time n/a

200x -Mobile

ProcessorPower (battery life)

2x compute speed2x battery life

2009 -Cloud

Power (31%)Server HW (57%)

0.5x power 0.5x nodes

2009 -Heterogeneous cores,

GPGPU

Power (dark silicon)Processor

0.5x power2x compute speed

Shamelessly stolen from Herb Sutter’s “Not your father’s C++” talk

Thursday, September 12, 13

Page 32: Arnaud Porterie - The Truth About C++

Phase/trend Major constraints 2x efficient apps runs...

1950s - 1990sCompute-constrainted

Processor2x compute speed

2x users

1995ish - 2007ishSurplus local compute +

low UI innovation (WIMP)Programmer time n/a

200x -Mobile

ProcessorPower (battery life)

2x compute speed2x battery life

2009 -Cloud

Power (31%)Server HW (57%)

0.5x power 0.5x nodes

2009 -Heterogeneous cores,

GPGPU

Power (dark silicon)Processor

0.5x power2x compute speed

Shamelessly stolen from Herb Sutter’s “Not your father’s C++” talk

Thursday, September 12, 13

Page 33: Arnaud Porterie - The Truth About C++

Phase/trend Major constraints 2x efficient apps runs...

1950s - 1990sCompute-constrainted

Processor2x compute speed

2x users

1995ish - 2007ishSurplus local compute +

low UI innovation (WIMP)Programmer time n/a

200x -Mobile

ProcessorPower (battery life)

2x compute speed2x battery life

2009 -Cloud

Power (31%)Server HW (57%)

0.5x power 0.5x nodes

2009 -Heterogeneous cores,

GPGPU

Power (dark silicon)Processor

0.5x power2x compute speed

Shamelessly stolen from Herb Sutter’s “Not your father’s C++” talk

Thursday, September 12, 13

Page 34: Arnaud Porterie - The Truth About C++

Phase/trend Major constraints 2x efficient apps runs...

1950s - 1990sCompute-constrainted

Processor2x compute speed

2x users

1995ish - 2007ishSurplus local compute +

low UI innovation (WIMP)Programmer time n/a

200x -Mobile

ProcessorPower (battery life)

2x compute speed2x battery life

2009 -Cloud

Power (31%)Server HW (57%)

0.5x power 0.5x nodes

2009 -Heterogeneous cores,

GPGPU

Power (dark silicon)Processor

0.5x power2x compute speed

Shamelessly stolen from Herb Sutter’s “Not your father’s C++” talk

Thursday, September 12, 13

Page 35: Arnaud Porterie - The Truth About C++

Phase/trend Major constraints 2x efficient apps runs...

1950s - 1990sCompute-constrainted

Processor2x compute speed

2x users

1995ish - 2007ishSurplus local compute +

low UI innovation (WIMP)Programmer time n/a

200x -Mobile

ProcessorPower (battery life)

2x compute speed2x battery life

2009 -Cloud

Power (31%)Server HW (57%)

0.5x power 0.5x nodes

2009 -Heterogeneous cores,

GPGPU

Power (dark silicon)Processor

0.5x power2x compute speed

Shamelessly stolen from Herb Sutter’s “Not your father’s C++” talk

Thursday, September 12, 13

Page 36: Arnaud Porterie - The Truth About C++

Find your biggest cost, and optimize for that

Thursday, September 12, 13

Page 37: Arnaud Porterie - The Truth About C++

Example - Facebook

Thursday, September 12, 13

Page 38: Arnaud Porterie - The Truth About C++

• Hip Hop Compiler

• HHVM JIT Compiler

• 5x faster than the interpreter

Thursday, September 12, 13

Page 39: Arnaud Porterie - The Truth About C++

There are only two kinds of language: the ones people complain about and the ones nobody uses

– Bjarne Stroustrup

Thursday, September 12, 13

Page 40: Arnaud Porterie - The Truth About C++

Questions?

Thursday, September 12, 13