SlideShare a Scribd company logo
1 of 61
Download to read offline
함수형 프로그래밍
쿠재아이
김재경
왜 이런 주제를?
390회에서 발표한 Reactive Programming
스터디 前
• 오늘은 어떤 내용일까 기대
• 처음이자 마지막으로 예습도 함
스터디 後
• 예상과는 달리 난해한 내용
• 설명을 들어도 이해가 안 됨
• 뭔가 새롭다는 건 알겠는데…
?????
스터디 後
• 발표는 Reactive가 중심
• 하지만 Functinal이 더 끌렸음
• 한 번 알아보고 싶다고 생각
스터디 後
이 PPT도 호기심을 자극했었음
2017 NDC
올해 NDC에서도 등장
근데 왜 이 주제를?
이 2개는 Reactive에 초점을 맞춰서 Functional 설명은 좀…
※ 개인적인 생각입니다
근데 왜 이 주제를?
상당히 만족스러운데 뭔가 2% 부족한 느낌
※ 개인적인 생각입니다
함수형 프로그래밍
쿠재아이
김재경
이제 뭔지 알아봅시다
Think
객체 지향 프로그래밍
Think
객체 지향 프로그래밍에서
처음에 무엇이 제일 궁금했나요?
Think
객체지향 프로그래밍에서
처음에 무엇이 제일 궁금했나요?
Think
그럼 함수형 프로그래밍은?
Think
그럼 함수형 프로그래밍은?
함수
function
함수?
• 내가 알고 있는 함수와 다른가?
• 다르면 어떤 점이?
• ‘함수’형 프로그래밍이라 할만큼 중요한가?
1. First-class function
• 함수를 변수에 저장할 수 있음
• 함수를 인자로 넘기거나 리턴이 가능 함
• 이후 소개할 특징의 기본이 되는 개념
2. Higher-order function
• 고차함수 or 고계함수로 번역
• 하나 이상의 함수를 인자로 받거나
• 함수를 리턴하는 함수
• 고차함수를 이용하여 데이터를 처리
2. Higher-order function
2. Higher-order function
String을 Integer로 바꾸고
2. Higher-order function
짝수만 골라낸 뒤
2. Higher-order function
합을 리턴
3. Anonymous function
• C++11에서는 람다 표현식이라 부름
• 인자로 전달되는 함수나
• 리턴되는 함수로 사용
3. Anonymous function
람다가 없으면 함수를 인자로 넘기기 위해 따로 만들어야 함
3. Anonymous function
람다를 사용하면 따로 함수를 만들 필요 없음
함수형 프로그래밍에서 람다가 없으면 매우 끔찍 할 듯
4. Nested function
• 중첩 함수
• 함수 안에 다른 함수가 정의된 함수
4. Nested function
출력 값은?
4. Nested function
4. Nested function
4. Nested function
그런데 말입니다
4. Nested function
어떻게 외부 함수의 변수에 접근할 수 있지?
5. Closure
• 내부에서 참조되는 모든 인수에 대한 묵시적 바인딩을
지닌 함수를 말함
• 자신이 참조하는 문맥(context)를 포함한다
• C++11에서는 람다 표현식으로 생성
• 다만 람다 밖의 변수는 Capture를 통해 접근
• 이해가 잘 안되면 Functor를 생각하면 됨
5. Closure
클로저 객체가 생성되고 바로 실행
5. Closure
• C++에서는 왜 Capture를 통해서 외부 변수에
접근하도록 했을까?
6. Pure function
• 함수의 결과값이 오직 입력 인자 값들에 의해서만 결정
• Side effects가 없음
int abs(int n);
int atoi(const char *str);
int getDefaultPort(bool https) {
return https ? 443 : 80;
}
int rand();
time_t time (time_t* timer);
bool g_https = false;
int getDefaultPort() {
return g_https ? 443 : 80;
}
6. Pure function
• 참조 투명성을 가짐
- 어떤 표현식을 그 표현식의 결과값으로 교체해도
전체 프로그램의 실행결과에 영향을 주지 않는 성질
• 컴파일러에게 다양한 최적화 기회를 제공
- Memoization
- Lazy evaluation
불변성
Immutability
불변성
• 내용의 변경은 새로운 객체를 생성할 때만 가능
• 생성, 테스트, 사용법이 단순하고 쉬움
• Thread-Safe
• 쉬운 캐쉬 – 이름이 같으면 내용도 같음
• Temporal coupling 줄임
• Identity mutability problem 없음
Temporal coupling
HttpRequest request;
request.SetUrl("https://hostname/api");
request.SetSSL(true);
request.SetCACert("ca-bundle.crt");
request.Post();
HttpRequest request;
request.SetUrl("https://hostname/api");
request.SetSSL(true);
request.Post(); // Error!
Temporal coupling
class HttpRequest {
public:
HttpRequest(const std::string& url, bool ssl,
const std::string& cacert);
// no setters
...
};
HttpRequest request("https://hostname/api", true,
"ca-bundle.crt");
request.Post();
Identity mutability problem
using MonsterPtr = std::shared_ptr<Monster>;
std::map<int64_t, MonsterPtr> monsters;
MonsterPtr p1 = std::make_shared<Monster>(1234, “Murloc");
monsters.insert(std::make_pair(p1.id(), p1));
p1->setID(2234); // ???
불변성
잠깐
불변성
• 객체를 변경하려면 새로 생성해야 된다고?
• 너무 비효율적인거 같은데…
• 캐릭터가 이동할 때마다 새로 생성해야 되는거 실화?
• 기본 자료구조는 어떻게 구현?
• 성능 이슈는?
이건 물론 가변성으로 만들겠죠
영속성 자료 구조
Persistent data structure
영속성 자료 구조
• 수정될 때 항상 이전 버전의 데이터를 보존하는 자료 구조
• 리스트 2개가 있다고 가정
• xs = [0, 1, 2]
ys = [3, 4, 5]
• zs = xs + ys 는?
영속성 자료 구조
• 완전히 새로 생성하지 않고
기존의 구조를 이용하여 생성
영속성 자료 구조
• 트리
• xs = [a, b, c, d, e, f, g, h]
• ys = insert(“e”, xs)는?
영속성 자료 구조
메모이제이션
Memoization
메모이제이션
• 동일한 계산을 반복해야 할 때, 이전에 계산한 값을 메모리에
저장함으로써 동일한 계산의 반복 수행을 제거하여
프로그램 실행 속도를 빠르게 하는 기술
• 동적 계획법의 핵심
메모이제이션
• 메모이제이션 X
• 중복되는 함수 호출
• 매우 비효율적
메모이제이션
미리 계산한 값을 사용하여 실행 속도가 빠름
메모이제이션
• 언어에서 기본으로 제공
• 함수의 리턴 값을 자동적으로 캐싱
게임에서 적용은?
게임에서 적용은?
• Thread-safe 하니까 가장 먼저 생각난 곳은 서버
이 발표에서 함수형 언어가 언급
게임에서 적용은?
게임에서 적용은?
출처
• Functional Reactive Programming With RxSwift
- https://www.slideshare.net/sunhyouplee/functional-reactive-programming-with-rxswift-62123571
• NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
- https://www.slideshare.net/jongwookkim/ndc14-rx-functional-reactive-programming
• 더 좋은 코드를 위한 함수형 프로그래밍
- https://www.slideshare.net/isaacjeon/ndc17-ppt-fpinmodernc
• 위키피디아 Functional programming
- https://en.wikipedia.org/wiki/Functional_programming
• 위키피디아 Persistent data structure
- https://en.wikipedia.org/wiki/Persistent_data_structure
• 클로저라는 훌륭한 도구와 영속 불변 자료 구조
- goo.gl/m6aAWN
• 값중심의 프로그래밍
- http://ropas.snu.ac.kr/~kwang/paper/maso/1.pdf
출처
• Nested function
- http://ajaxlab.net/?p=182
• 함수형 프로그래머가 되고 싶다고? (Part 1~6)
- goo.gl/CWyhjd
• 나무위키 메모이제이션
- https://namu.wiki/w/%EB%A9%94%EB%AA%A8%EC%9D%B4%EC%A0%9C%EC%9D%B4%EC%85%98
• 함수형 사고
- http://www.hanbit.co.kr/store/books/look.php?p_code=B6064588422
Q / A

More Related Content

What's hot

NDC14 - 사례로 배우는 디스어셈블리 디버깅
NDC14 - 사례로 배우는 디스어셈블리 디버깅NDC14 - 사례로 배우는 디스어셈블리 디버깅
NDC14 - 사례로 배우는 디스어셈블리 디버깅Seungjae Lee
 
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013devCAT Studio, NEXON
 
Effective c++ chapter 1,2 요약
Effective c++ chapter 1,2 요약Effective c++ chapter 1,2 요약
Effective c++ chapter 1,2 요약Nam Hyeonuk
 
Go lang(goroutine, channel, 동기화 객체)
Go lang(goroutine, channel, 동기화 객체)Go lang(goroutine, channel, 동기화 객체)
Go lang(goroutine, channel, 동기화 객체)seungkyu park
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012devCAT Studio, NEXON
 
Concurrent programming 2
Concurrent programming 2Concurrent programming 2
Concurrent programming 2Byeongsu Kang
 
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍Seungmo Koo
 
임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011devCAT Studio, NEXON
 
Effective c++ 정리 1~2
Effective c++ 정리 1~2Effective c++ 정리 1~2
Effective c++ 정리 1~2Injae Lee
 
병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임codenavy
 
effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리Injae Lee
 
Effective C++ Chaper 1
Effective C++ Chaper 1Effective C++ Chaper 1
Effective C++ Chaper 1연우 김
 
Project anarchy로 3d 게임 만들기 part_5_waste of time shoveling
Project anarchy로 3d 게임 만들기 part_5_waste of time shovelingProject anarchy로 3d 게임 만들기 part_5_waste of time shoveling
Project anarchy로 3d 게임 만들기 part_5_waste of time shovelingDong Chan Shin
 
Effective c++ chapter3, 4 요약본
Effective c++ chapter3, 4 요약본Effective c++ chapter3, 4 요약본
Effective c++ chapter3, 4 요약본Dong Chan Shin
 
More effective c++ 항목30부터
More effective c++ 항목30부터More effective c++ 항목30부터
More effective c++ 항목30부터Dong Chan Shin
 
Effective c++ 2
Effective c++ 2Effective c++ 2
Effective c++ 2현찬 양
 
Windows system - memory개념잡기
Windows system - memory개념잡기Windows system - memory개념잡기
Windows system - memory개념잡기ChangKyu Song
 
Effective c++ 1
Effective c++ 1Effective c++ 1
Effective c++ 1현찬 양
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규ChangKyu Song
 

What's hot (20)

NDC14 - 사례로 배우는 디스어셈블리 디버깅
NDC14 - 사례로 배우는 디스어셈블리 디버깅NDC14 - 사례로 배우는 디스어셈블리 디버깅
NDC14 - 사례로 배우는 디스어셈블리 디버깅
 
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
 
Effective c++ chapter 1,2 요약
Effective c++ chapter 1,2 요약Effective c++ chapter 1,2 요약
Effective c++ chapter 1,2 요약
 
Go lang(goroutine, channel, 동기화 객체)
Go lang(goroutine, channel, 동기화 객체)Go lang(goroutine, channel, 동기화 객체)
Go lang(goroutine, channel, 동기화 객체)
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
Concurrent programming 2
Concurrent programming 2Concurrent programming 2
Concurrent programming 2
 
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
 
임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011
 
Effective c++ 정리 1~2
Effective c++ 정리 1~2Effective c++ 정리 1~2
Effective c++ 정리 1~2
 
병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임
 
Exception&log
Exception&logException&log
Exception&log
 
effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리
 
Effective C++ Chaper 1
Effective C++ Chaper 1Effective C++ Chaper 1
Effective C++ Chaper 1
 
Project anarchy로 3d 게임 만들기 part_5_waste of time shoveling
Project anarchy로 3d 게임 만들기 part_5_waste of time shovelingProject anarchy로 3d 게임 만들기 part_5_waste of time shoveling
Project anarchy로 3d 게임 만들기 part_5_waste of time shoveling
 
Effective c++ chapter3, 4 요약본
Effective c++ chapter3, 4 요약본Effective c++ chapter3, 4 요약본
Effective c++ chapter3, 4 요약본
 
More effective c++ 항목30부터
More effective c++ 항목30부터More effective c++ 항목30부터
More effective c++ 항목30부터
 
Effective c++ 2
Effective c++ 2Effective c++ 2
Effective c++ 2
 
Windows system - memory개념잡기
Windows system - memory개념잡기Windows system - memory개념잡기
Windows system - memory개념잡기
 
Effective c++ 1
Effective c++ 1Effective c++ 1
Effective c++ 1
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규
 

Similar to 함수형 프로그래밍

Ec++ 3,4 summary
Ec++ 3,4 summaryEc++ 3,4 summary
Ec++ 3,4 summarySehyeon Nam
 
FP, lazy evaluation
FP, lazy evaluation FP, lazy evaluation
FP, lazy evaluation 성범 홍
 
Effective c++ chapter5 6_ 131039 신동찬
Effective c++ chapter5 6_ 131039 신동찬Effective c++ chapter5 6_ 131039 신동찬
Effective c++ chapter5 6_ 131039 신동찬Dong Chan Shin
 
3팀_객체지향 프로그래밍.pptx
3팀_객체지향 프로그래밍.pptx3팀_객체지향 프로그래밍.pptx
3팀_객체지향 프로그래밍.pptxssuser642b19
 
프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들Lee Geonhee
 
C언어 세미나 - 함수
C언어 세미나 - 함수C언어 세미나 - 함수
C언어 세미나 - 함수SeungHyun Lee
 
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)Dong Chan Shin
 
클린 코드 part2
클린 코드 part2클린 코드 part2
클린 코드 part2Minseok Jang
 
NDC17 장창완(최종)
NDC17 장창완(최종)NDC17 장창완(최종)
NDC17 장창완(최종)창완 장
 
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)Kyoungchan Lee
 
Pycon Korea 2018 - 비개발자에게 파이썬 가르치기
Pycon Korea 2018 - 비개발자에게 파이썬 가르치기Pycon Korea 2018 - 비개발자에게 파이썬 가르치기
Pycon Korea 2018 - 비개발자에게 파이썬 가르치기SeokhwanMoon
 
Naver Campus Hackday Winter 2017 참가 후기
Naver Campus Hackday Winter 2017 참가 후기Naver Campus Hackday Winter 2017 참가 후기
Naver Campus Hackday Winter 2017 참가 후기Youngbin Han
 
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기Wonha Ryu
 
C 언어 스터디 01 - 기초
C 언어 스터디 01 - 기초C 언어 스터디 01 - 기초
C 언어 스터디 01 - 기초Yu Yongwoo
 
객체지향프로그래밍 특강
객체지향프로그래밍 특강객체지향프로그래밍 특강
객체지향프로그래밍 특강uEngine Solutions
 
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발동현 김
 
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)NAVER D2
 
[246] foursquare데이터라이프사이클 설현준
[246] foursquare데이터라이프사이클 설현준[246] foursquare데이터라이프사이클 설현준
[246] foursquare데이터라이프사이클 설현준NAVER D2
 
06_게임엔진구성
06_게임엔진구성06_게임엔진구성
06_게임엔진구성noerror
 
KERIS SW교육 연계 로봇 활용 심화과정 (중등)
KERIS SW교육 연계 로봇 활용 심화과정 (중등)KERIS SW교육 연계 로봇 활용 심화과정 (중등)
KERIS SW교육 연계 로봇 활용 심화과정 (중등)Kwang-Hyun Park
 

Similar to 함수형 프로그래밍 (20)

Ec++ 3,4 summary
Ec++ 3,4 summaryEc++ 3,4 summary
Ec++ 3,4 summary
 
FP, lazy evaluation
FP, lazy evaluation FP, lazy evaluation
FP, lazy evaluation
 
Effective c++ chapter5 6_ 131039 신동찬
Effective c++ chapter5 6_ 131039 신동찬Effective c++ chapter5 6_ 131039 신동찬
Effective c++ chapter5 6_ 131039 신동찬
 
3팀_객체지향 프로그래밍.pptx
3팀_객체지향 프로그래밍.pptx3팀_객체지향 프로그래밍.pptx
3팀_객체지향 프로그래밍.pptx
 
프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들
 
C언어 세미나 - 함수
C언어 세미나 - 함수C언어 세미나 - 함수
C언어 세미나 - 함수
 
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
 
클린 코드 part2
클린 코드 part2클린 코드 part2
클린 코드 part2
 
NDC17 장창완(최종)
NDC17 장창완(최종)NDC17 장창완(최종)
NDC17 장창완(최종)
 
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
 
Pycon Korea 2018 - 비개발자에게 파이썬 가르치기
Pycon Korea 2018 - 비개발자에게 파이썬 가르치기Pycon Korea 2018 - 비개발자에게 파이썬 가르치기
Pycon Korea 2018 - 비개발자에게 파이썬 가르치기
 
Naver Campus Hackday Winter 2017 참가 후기
Naver Campus Hackday Winter 2017 참가 후기Naver Campus Hackday Winter 2017 참가 후기
Naver Campus Hackday Winter 2017 참가 후기
 
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
 
C 언어 스터디 01 - 기초
C 언어 스터디 01 - 기초C 언어 스터디 01 - 기초
C 언어 스터디 01 - 기초
 
객체지향프로그래밍 특강
객체지향프로그래밍 특강객체지향프로그래밍 특강
객체지향프로그래밍 특강
 
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
 
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
 
[246] foursquare데이터라이프사이클 설현준
[246] foursquare데이터라이프사이클 설현준[246] foursquare데이터라이프사이클 설현준
[246] foursquare데이터라이프사이클 설현준
 
06_게임엔진구성
06_게임엔진구성06_게임엔진구성
06_게임엔진구성
 
KERIS SW교육 연계 로봇 활용 심화과정 (중등)
KERIS SW교육 연계 로봇 활용 심화과정 (중등)KERIS SW교육 연계 로봇 활용 심화과정 (중등)
KERIS SW교육 연계 로봇 활용 심화과정 (중등)
 

More from QooJuice

캐릭터 애니메이션
캐릭터 애니메이션캐릭터 애니메이션
캐릭터 애니메이션QooJuice
 
Screen space ambient occlusion
Screen space ambient occlusionScreen space ambient occlusion
Screen space ambient occlusionQooJuice
 
Compute shader
Compute shaderCompute shader
Compute shaderQooJuice
 
코루틴(Coroutine)
코루틴(Coroutine)코루틴(Coroutine)
코루틴(Coroutine)QooJuice
 
노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)QooJuice
 
절차지향 vs 객체지향
절차지향 vs 객체지향절차지향 vs 객체지향
절차지향 vs 객체지향QooJuice
 
Segmentation and Paging
Segmentation and PagingSegmentation and Paging
Segmentation and PagingQooJuice
 
Move semantics
Move semanticsMove semantics
Move semanticsQooJuice
 

More from QooJuice (12)

캐릭터 애니메이션
캐릭터 애니메이션캐릭터 애니메이션
캐릭터 애니메이션
 
Screen space ambient occlusion
Screen space ambient occlusionScreen space ambient occlusion
Screen space ambient occlusion
 
Compute shader
Compute shaderCompute shader
Compute shader
 
Picking
PickingPicking
Picking
 
코루틴(Coroutine)
코루틴(Coroutine)코루틴(Coroutine)
코루틴(Coroutine)
 
행렬
행렬행렬
행렬
 
벡터
벡터벡터
벡터
 
노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)
 
부팅
부팅부팅
부팅
 
절차지향 vs 객체지향
절차지향 vs 객체지향절차지향 vs 객체지향
절차지향 vs 객체지향
 
Segmentation and Paging
Segmentation and PagingSegmentation and Paging
Segmentation and Paging
 
Move semantics
Move semanticsMove semantics
Move semantics
 

함수형 프로그래밍