42
Not your fathers Language C++ Microsoft Senior Technical Evangelist 김김김

Not your fathers language c++

  • Upload
    -

  • View
    595

  • Download
    1

Embed Size (px)

DESCRIPTION

Not your fathers language and visual studio

Citation preview

Page 1: Not your fathers language c++

Not your fathers Language C++

Microsoft

Senior Technical Evangelist

김명신

Page 2: Not your fathers language c++

Reality Check

Page 3: Not your fathers language c++

언어

관화25%

스페인어13%

영어10%힌디어

9%

아랍어7%

포르투칼어5%

프랑스어5%

러시아어5%

벵골어4%

일본어4%

독일어3%

우어2%

한국어2%

자와어2%

펀자브어2%

Page 4: Not your fathers language c++

Languages

http://www.tiobe.com/index.php/content/paperinfo/tpci/in-dex.html

Page 5: Not your fathers language c++

C++ 개발자 : Old guys?

18

21

24

27

30

33

36

39

42

45

48

51

54

57

60

63

66

69

75

80

84

88

92

0 20 40 60 80 100 120 140 160

COUNT

AG

E

Source: Microsoft

Page 6: Not your fathers language c++

Age of C++ Projects

10+ years

5-9 years

0-4 years

0% 10% 20% 30% 40% 50% 60%

Source: Microsoft

Page 7: Not your fathers language c++

Type of new C++ projects

Source: Microsoft

Gaming; 20%

Engr/Sci-ence; 15%

Frameworks; 12%Business; 10%

Embedded; 8%

Productivity; 8%

Imaging; 7%

Content; 7%

Other; 13%

Page 8: Not your fathers language c++

WHY C++ ?

Page 9: Not your fathers language c++
Page 10: Not your fathers language c++
Page 11: Not your fathers language c++

Where the focus is

EfficiencyBOT-19992009-EOT

Flexibility Abstrac-tion(OO,

Generics)

Produc-tivity

(Automatic Services,

Tools)C = efficient high-level portable codestruct, functions

Non-goal Non-goal

C++ = C+ efficient abstractionclass, templates

Non-goal

Java, C# = produc-tivityMandatory metadata & GC, JIT compilation

At the ex-pense of

At the ex-pense of

Page 12: Not your fathers language c++
Page 13: Not your fathers language c++

Performance Design• Locality is more than ever a first-order per-

formance issue• Keep data that is not used together apart• Keep data that is frequently used together close

together• Keep “hot” and “cold” data that is not used with

the same frequency apart• Size & Traversal Order

• Is it faster to sum an array of ints, an equivalent list of ints or an equivalent set of int? which, how much, so, any why?

• Size matter but Traversal order can matter more

Page 14: Not your fathers language c++

Mobile

Page 15: Not your fathers language c++
Page 16: Not your fathers language c++

옥타코어는 고성능과 저전력코어가 각각 4 개씩 내장되어 있어 분할되어 동작을 하게 되는데

3D 게임과 같이 고성능 작업시 4 개의 코어인 코어텍스 -15 가 작동되고 메모 , 웹서핑같은

가벼운 작업시에는 코어텍스 -7 이 구동되어 효율적으로 사용이 가능하다고 합니다

Page 17: Not your fathers language c++

Version 2Objective-C,

C & C++Incl. C++ wrap-pers over Objec-tive-c

Java,C & C++ NDK

Incl. java-free C++ Apps

.NET.C & C++ WINRTP

Version 1 - Java .NET

Page 18: Not your fathers language c++
Page 19: Not your fathers language c++

Datacenter

Page 20: Not your fathers language c++

James Hamilton

http://perspectives.mvdirona.com/2010/09/18/OverallDataCenter-Costs.aspx

Page 21: Not your fathers language c++
Page 22: Not your fathers language c++
Page 23: Not your fathers language c++

Where the focus is

Page 24: Not your fathers language c++
Page 25: Not your fathers language c++

DEMOC++ new features

Page 26: Not your fathers language c++
Page 27: Not your fathers language c++
Page 28: Not your fathers language c++

ISCA(The ACM/IEEE International Symposium on Computer Archi-tecture)

Page 29: Not your fathers language c++
Page 30: Not your fathers language c++

WHY C++ !

Page 31: Not your fathers language c++
Page 32: Not your fathers language c++

Visual Studio 2012For C++ Developer

Page 33: Not your fathers language c++

C++ focus in Visual Studio 2012

Performance

~

Windows 8

Productivity Conformance

Page 34: Not your fathers language c++

Target PlatformTarget OS Native Code Managed Code

Windows 8 O O

Windows 7 O O

Windows Vista O O

Windows XP 이전 O O

Windows Server 2012 O O

Windows Server 2008 R2 O O

Windows Server 2008 O O

Windows Server 2003 이전 O O

플랫폼 호환성 및 시스템 요구 사항

Page 35: Not your fathers language c++

Compiler Optimization

Auto Vectorization

Use vector registers and in-struction

(Streaming SIMD Extension 4.2)

Auto Parallelization

Conservative in selecting the loop

#pragma loop(hint_parallel(n))

Page 36: Not your fathers language c++

C++AMP(Accelerated Massive Parallel-ism)

Take Advan-tage of data-paral-lel hardware

AMP Specification

Page 37: Not your fathers language c++

ConformanceC++11 Core Language

Features VC10 VC11

Rvalue references v2.0 v2.1*Lambdas v1.0 v1.1decltype v1.0 v1.1**

auto v1.0 v1.0

static_Assert Yes Yes

Trailing return types Yes Yes

nullptr Yes YesStrongly typed enums Partial YesForward declared enums No YesStandard-layout and trivial types No Yes

Atomics No YesStrong compare and ex-change No Yes

Bidirectional fences No Yes

Data-dependency ordering No Yes

Range Based for loops No Yes

Independent “Scary” iterators No Yes

Already in VS2010Lambdas, R-value referencesstatic_assertauto, decltype, nullptr

New in VS2012Range-based for loopsStateless lambdasScoped enumerationsNew STL headers:

<atomic>, <chrono>, <condition_variable>, <filesystem>, <future>, <mutex>, <ratio>, <thread>

Page 38: Not your fathers language c++

Projects & solutionsBackwards compatibilityBrowse from Solution Explorer

Window managementPin & PreviewMulti-mon

Search everywhereSearch across the IDE.Search in tool windows.

Visual Studio 2012 IDE

Page 39: Not your fathers language c++

Modern C++ Code Editor

Improved colorizationImproves code understanding

Reference highlightingUses the compiler to show accurate matchesImproves code understanding.

IntelliSenseAggressive Member listMember list filteringC++/CLI support.Code Snippets

Page 40: Not your fathers language c++

ALM and C++

Across the boardHelp manage projects w/ Sprint Planning, U… Improved developer productivity w/ Code review, E…

Brand new for C++ !!!Improved Code coverageBetter static analysisArchitecture ToolsUnit Testing

Architecture DiagramUnit Testing

Code Coverage Code Analysis

Page 41: Not your fathers language c++

DEMOProfilerConcurrency VisualizerCode Analysis/TFServiceUnit Test / Analysis Code Coverage

Page 42: Not your fathers language c++