11.scripting

394 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
394
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

11.scripting

  1. 1. 11. 스크립팅
  2. 2. 11.1 스크립트 바인딩 추가 • 스크립트 바인딩 - 스크립트 언어에서 C++ API에 접근하는 방법을 제공.
  3. 3. 11.1.1 확장 VS 임베딩 • 언어 확장 - 스크립트 언어의 기능을 보완하기 위한 모듈로 제공. • 애플리케이션에 임베딩 - 앱 기능을 스크립트로 제어.
  4. 4. 11.1.2 스크립팅의 장점(1) • 크로스 플랫폼 - 텍스트 기반. • 빠른 개발 - 컴파일/링크 생략, 
 빠르게 프로토타입 제작/테스트/결과 확인. • 적은 코드량 - 고차원적인 스크립트 언어 활용. • 스크립트 기반의 앱 - MVC에서 M,V는 C++, Controller 는 스크립트로 작성.
  5. 5. 11.1.2 스크립팅의 장점(2) • 전문가 사용자 집단 지원 - 고급 사용자.(반복적 작업, 동작 재 정의). • 확장성 - 스크립트를 통해 플러그인 제공. • 테스트를 위한 스크립팅 - 블랙박스 테스트에서 화이트박스 테스트. • 표현성 - 자신이 생각하는 소프트웨어의 본질이 변하지 않도 록.
  6. 6. 11.1.3 언어 호환성 문제 • 명명 규칙 - C++(Camel Case, GetName()), Python(Snake Case, get_name()) • Getter/Setter - 멤버변수를 노출하지 말고 Getter/Setter 사 용. 
 object.name = “hello”
 name = object.name • 연산자 - 중첩되거나 추가되는 경우. • 컨테이너 - C++(정적 타입), 스크립트(동적 타입 지원)
  7. 7. 11.1.4 언어 장벽 교차 • 가상 메서드 지원 - 동적 바인딩하는 Python 에서 동작하지 않음. • 일부 바인딩 기법에서 언어 다형성을 지원.(Boost Python, SWIG) • C++ 내부 이벤트나 알림 이벤트를 스크립트와 연동. • 예외 처리 - C++ 예외를 스크립트로 전달.
  8. 8. 11.2 스크립트 바인딩 기법 • 스크립트 바인딩 기술은 어댑터 디자인 패턴 전략. • 유지보수 비용 증가. • 꼭 필요한지 다시 한번 생각해 볼 문제. • Boost.Python, SWIG, Python-SIP(QT) • COM(XPCOM), CORBA
  9. 9. 11.3 BOOST PYTHON C++ API Boost.Python Wrapper 동적 라이브러리컴파일러 Python
  10. 10. 11.3.2 C++API 래핑
  11. 11. 바인딩 모듈
  12. 12. COMPILE • c++ -std=c++11 -stdlib=libc++ phonebook_wrap.cpp -I $ {BOOST_HEADER} -c `python-config —cflags`
  13. 13. SWIG를 이용한 RUBY 바인딩 추가 인터페이스
 파일 C++ API 동적 라이브러리 SWIG Ruby 생성된 래퍼 Compiler
  14. 14. 11.4.1 SWIG를 사용한 C++ API 래핑
  15. 15. SWIG 인터페이스 파일

×