모바일 트렌드와 ios
DESCRIPTION
데브기어 오픈세미나 - 모바일 트렌드와 iOS 관점에서 설명한 자료입니다.TRANSCRIPT
Mobile Computing LifeTechniques, Bussiness & Market, Development
twitter.com/@godrmOSXDEV.org facebook.com/godrm
NHN NEXT 김정
© 2014 Forrester Research, Inc. Reproduction Prohibited 24
#mobilemindshift
4. The audience size in Asia will elevate the region’s role in mobile innovation . . .
Source: Ericsson Mobility report, November 2013
In digital era, What does ‘Watching TV’ even mean?
Source: The Wall Street Journal (2013/10/08)
������������
국내 앱 마켓 이슈✴ 카카오톡 비중이 지나치게 높음
✴ 40대 이상은 OS 마켓을 사용하지 않고 카카오톡 마켓만
✴ 게임 카테고리 편식이 심함
✴ 10,20대는 레이싱, 러닝, 연예 다양한 게임 장르 존재
✴ 40대 이상 퍼즐 게임 집중
✴ 하루 30분 이상 40%, 1시간 이상 21%
✴ 44% 정도 한달에 하나 이상의 게임을 다운로드
✴ 21% 최근 3개월 이내 유료 결제함
Apple iTunes Ecosystem
✴ 콘텐츠 생산 도구 ✴ Desktop Publishing ✴ Video/Audio Authorising ✴ Pro Tools
✴ 콘텐츠 소비 도구 ✴ iPod ✴ iPhone ✴ iPad ✴ Apple TV
✴ 콘텐츠/광고 유통 ✴ Music, Video, ✴ TV show, ✴ App, ✴ Book, ✴ Radio
43,185 iOS Developers
10,199 Android Developers
1,412 X-platform Developers
AppStore HQ
Number of Developers (북미)
Computing Power
✴ NASA - Apollo Guidance Computer ✴ Apollo 8 (1968) ✴ 1966 August ✴ 2.048 MHz Discrete IC RTL ✴ 16bit 2048 words RAM ✴ 36,684 words ROM
아이디어의 시작은…
• JVMs do all optimizations online at JIT time: - Hugely redundant across runs - Applications launch slowly - What if we could do heavy lifting at install time? !
• Problem: Java bytecode is too limiting! - Memory safety prevents some optzns (eg. bounds checks) - JVM type system doesn’t lend itself to machine optzns
With some sort of low level virtual machine, we could optimize better and a JIT compiler
would have to do less work online!
“
”
Introduction• LLVM
- Low-Level Virtual Machine • An Infrastructure for Multi-stage Optimization
- by Chris Arthur Lattner @2002 • Design and Implementation of a compiler infrastructure
- support a unique multi-stage optimization system - support inter-procedural and profile-driven optimizations
• LLVM virtual instruction (IR) - with high-level type information
• Sponsored by APPLE
The Architecture
Compile Time
Link Time Run-Time
Compiler FE 1
Compiler FE N
.. .o files
LLVM
LLVM
Linker IPO / IPA
Native CodeGen
Libraries
exeLLVM
LLVM
LLVM
exe & LLVM
JIT
CPU
Runtime Optimizer
Offline Reoptimizer
LLVM
LLVM
exe
exeProfile & Trace Info
Profile Info
Generalized attributes
User-defined literals
Inheriting constructors
Alignment - alignof/alignas
Unrestricted unions
UCNs in literals
Call for help
http://llvm.org/
Call for help!
Python
Common Dynamic Language Representation + Type Inference
Ruby C, C++, Ada, ...
– OSS community needs to unite work on various scripting languages
– Common module to represent/type infer an arbitrary dynamic language
– Who will provide this? pypy? parrot? llvm itself someday (“hlvm”)?
Perl Javascript ...
llvm-gcc
LLVM
OpenGL
GLSL, ARB VP, ...
What Next?
LTO JIT Install TimeCodegenIPO
Cross LangOptzn
DebuggerSupport
LLVM use in Open Source OSes• Minix moved to Clang as default compiler • FreeBSD is working on ClangBSD • LLVM is the basis of the Renderscript compiler in Android • LLVM a hard dependency for Gallium3D • Building Debian with Clang • Unsupported GCC Flags / C Extensions출처 : http://llvm.org/devmtg/2012-04-12/Slides/Mark_Charlebois.pdf
Use-case #1 - New Compiler• Cling - CERN • CtoVerilog - Haifa University • OpenCL - AMD • Click - Ericsson • EDGtoLLVM - ARM • Jaguar - Cray • Delphi XE- Embarcadero
Use-case #2 - Optimization
Flash ActionScript (.as3) ➔ ActionScript Bytecode (.abc) ➔ LLVM Bytecode (.bc) ➔.abc ➔ .swf
Use-case #3 - Cross Language
Crack Scripting Language ➔ C/C++/Java-like Scripting Language ➔ Speed of a compiled language, ease of use of a scripting language ➔ Unladen Sparrow(Python), Rubinius(Ruby), V8(JS)
cf. PNaCl (Portable Native Client)
Use-case #3 - Emscripten
compiles LLVM bytecode into JavaScript ➔ C/C++ to JavaScript ➔ can be run on the web ➔ Python, the Bullet physics engine, eSpeak (TTS)
https://github.com/kripken/emscripten/wiki
Everything compiles into LLVM bitcode
The web is everywhere, and runs JavaScript
Compiling LLVM bitcode to JavaScript lets us run~ everything, everywhere
Continuous Integration
• 여러 버전의 OS와 하드웨어 모델별로 테스트 • 프로젝트의 빌드, 분석, 테스트를 자주 • 자동으로 빠르게 문제를 파악하고 • 과도한 작업은 서버로 이관 • 프로젝트의 빌드/테스트 이력을 보관 • 개발팀 분산 작업에 도움 cf. Jenkins, Hudson, CruiseControl
Bot
• Defines what to build■ Project and SCM information
• When to build it■ Periodic, on-commit, or manual
• How to build it■ Shared scheme■ Static analysis■ Testing and devices■ Archives
• Notifications