agenda - qcom groupembarcadero.qcomgroup.com.tw/download/seminar20131205/c++builder_for... ·...

48

Upload: others

Post on 12-Oct-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式
Page 2: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

Agenda

簡介

C/C++ : 跨平台開發的霸主

萬眾矚目:C++Builder For iOS

一份程式碼同時開發移動和桌面應用程式

C/C++程式碼和函式庫

結論

Page 3: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

C/C++ : 跨平台開發的霸主

Page 4: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

Bjarne Stroustrup

4

C with Objects (1979)

Modeled OO after Simula

and Ada

○ But syntax and RTL based on

C

Classes

Inheritance

Inlining

Default arguments

Type checking

CFront compiler

Page 5: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

AT&T C++

5

Name changed to C++ in 1983

Virtual functions

Operator overloading

References

Constants

// Single line comments

AT&T commercial c-front compiler

Page 6: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

6

Page 7: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

C98

7

Language

Multiple Inheritance

Templates

Abstract Classes

Exceptions

Namespace

Typecasts

bool

Library

Strings

Streams

Algorithms

Containers

Iterators

Page 8: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

C++03 & TR1

8

C++03 was a bug fix

release for

implementers

No change to the

specification

TR1 was library

focused

Much of the standard

library began its life in

Boost

Regular expressions

Smart pointers

Hash tables

Random number

generators

Reference wrapper

Function objects

Tuple type

Fixed size array

Page 9: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

C++11

9

Rvalue references and move constructors

constexpr - Generalized constant expressions

Core language usability enhancements

Initializer lists

Uniform initialization

Type inference

Range-based for-loop

Lambda functions and expressions

Alternative function syntax

Object construction improvement

Explicit overrides and final

Null pointer constant

Strongly typed enumerations

Right angle bracket

Explicit conversion operators

Alias templates

Unrestricted unions

Variadic templates

New string literals

User-defined literals

Multithreading memory model

Thread-local storage

Explicitly defaulted and deleted special member functions

Type long long int

Static assertions

Allow sizeof to work on members of classes without an explicit object

Control and query object alignment

Allow garbage collected implementations

Threading facilities

Tuple types

Hash tables

Regular expressions

General-purpose smart pointers

Extensible random number facility

Wrapper reference

Polymorphic wrappers for function objects

Type traits for metaprogramming

Page 10: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

10

C/C++應用程式開發框架

Page 11: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

Application Frameworks

11

C++ (OWL)

Windows

Encapsulation

Inheritance

○ Multiple-Inheritance

v-tables

Fields

Pure-code generation

Delphi/C++ (VCL)

Windows

Encapsulation

Delegation

Method Pointers

(closures)

Properties

Text file form

Streaming-system

RTTI

Page 12: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

12

C/C++市場應用

Page 13: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

13

C and C++ are everywhere

Page 14: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

14

Page 15: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

C++ is The Choice for Clients

Devices

#2 and #4 languages for SourceForge

open source projects

Top commercial software is written in C++

- Microsoft Word, Adobe Photoshop,

Google Chrome, Firefox, Mac OS X, iOS,

Oracle database, Microsoft SQL Server,

MySQL, Games

Top web companies use C++ – Facebook,

PayPal, Amazon

15

Page 16: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

C/C++ Consistent Top Languages

16

Page 17: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

Language of choice for software

development

#2 and #4 languages for SourceForge

open source projects

Top commercial software is written in C++

- Microsoft Word, Adobe Photoshop,

Google Chrome, Firefox, Mac OS X, iOS,

Oracle database, Microsoft SQL Server,

MySQL, games

Top web companies use C++ – Facebook,

PayPal, Amazon

Page 18: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

C and C++ - popular as ever

Page 19: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

C++ Usage Statistics

Page 20: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

Client / Server 1990s

Large growth in desktop applications

Client-server IP architecture nascent

Most server side apps were basic web

2000

Server side development increase

Java growth with EJB

2005 Device development

kick-started again by Apple success with iPod, iPhone, and iPad

2010 Tremendous device

client growth through smartphones driven by Android

Server side still important but leveraged

Page 21: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

Native is Key for Client Device UX

21

Servers Client Devices

Code Safety & Protection is Paramount

Ability to Scale Performance via HW

Web UX typically network bound

UX Performance is Paramount

Fixed/Deployed HW Profiles

UX typically HW bound

Virtual Code: Java, .NET Native Code: C++, Obj-C, Delphi

Page 22: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

再一次…

Page 23: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

Windows

The 1999 Enterprise

Page 24: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

Windows Web

The 2005 Enterprise

Page 25: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

Windows Mac Mobile Web

An Unprecedented Multi-platform Opportunity for Developers

The 2012 Enterprise

Page 26: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

Devices, Devices, Devices

Page 27: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

Windows 8 WinRT

Page 28: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

BlackBerry 10

Page 29: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

Android NDK

Page 30: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

iOS

Objective-C

C-based OO language modeled after SmallTalk

Now shares a common front-end and

architecture with a major C++ compiler

CLANG

Page 31: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

A common strategy

C++ Source Code

iOS Android BlackBerry

10 WinRT

Page 32: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

A common strategy

C++ Source Code

iOS Android BlackBerry

10 WinRT

Presentation Layer

Page 33: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

A common strategy

C++ Source Code

iOS Android BlackBerry

10 WinRT

Presentation Layer

Page 34: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

A common strategy

C++ Source Code

iOS Android BlackBerry

10 WinRT

Obj-C/Cocoa Java/Dalvik C++/Cascades C++/WinRT

Page 35: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

A common strategy

C++ Source Code

iOS Android BlackBerry

10 WinRT

HTML/JS/CSS

Page 36: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

A common strategy

C++ Source Code

iOS Android BlackBerry

10 WinRT

FireMonkey (2013)

Page 37: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

C++

LANGUAGE

ENGINE

PME & RTTI

IR ENGINE

CODE

GEN

ENGINE

INTEL

ARM

COMPATIBILITY

Borland C++

C++Builder, CLANG

STANDARDS

C99, C++98, C++11

LIBRARIES

STL, Boost, Loki, ACE

Embt C++ Architecture

Page 38: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

萬眾矚目:C++Builder For iOS

Page 39: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

FireMonkey Architecture

Language

3D API

Platform

Desktop Mobile

Framewor

k

Page 40: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

Platform

Vendor Tools Embarcadero

HTML5 Cross

Platform Appcelerator Xamarin

Tools

XCode, Visual Studio, Eclipse

RADStudio

Adobe, Sencha, Kendo,

HTML5Builder

Titanium Mono

Platforms

Win or Mac or iOS or

Android*

Mac/Win/iOS & Android* (2013)

iOS/Android iOS/Android iOS/Android

Single

Source /

Multi-

Device

No Yes Yes Partial Partial

Runtime ARM ARM JavaScript JavaScript Bytecode VM

True Native Scripted VM

Truly Native or Scripted?

*Android NDK is True Native – Android ADK with Java/Davlik VM is not

Page 41: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

$

Future

C++ or Delphi*

FM Framework

One team, One codebase

41

RAD Studio XE5

Page 42: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

Component-Based Framework

Page 43: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

萬眾矚目:C++Builder For iOS

43

範例

Page 44: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

一份程式碼同時開發移動和桌面應用程式

Page 45: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

One Codebase, One Team One set of development

resources to create apps

for multiple platforms

one codebase

one team

one schedule

Reduced budgets

and complexity

Page 46: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

一份程式碼同時開發移動和桌面應用程式

46

範例

Page 47: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

C/C++程式碼和函式庫

Page 48: Agenda - QCOM GROUPembarcadero.qcomgroup.com.tw/download/Seminar20131205/C++Builder_for... · Agenda 簡介 C/C++ : 跨平台開發的霸主 萬眾矚目:C++Builder For iOS 一份程式碼同時開發移動和桌面應用程式

C/C++程式碼和函式庫

48

C++Builder

RTL C++Builder

RTTI