SlideShare une entreprise Scribd logo
1  sur  39
Télécharger pour lire hors ligne
조인석
파이콘 코리아
● (현) 두산중공업 소프트웨어 개발팀
소프트웨어 아키텍트 & 애자일 전도사
● (전) 삼성SDS 방법론팀 / 프레임워크 팀
소프트웨어 아키텍트
● (전) 현대정보기술 해외금융기술팀
소프트웨어 엔지니어
● (전) 육군전산소
S/W 개발병
● 컴퓨터공학 학사(2004)
조인석 (Chris Cho)
List of Contents
●
●
●
●
●
●
●
●
●
PyData at Strata
Python’s Spectrum of Users
※
※
Type of language
Python Source
Code (.py)
Interpreter
Java Source
Code (.java)
Java
Compiler
Bytecode
(.class)
Bytecode
Interpreter
How can I run?
print("Hello, World!!")
PYTHON
How can I run?
print("Hello, World!!")
PYTHON
⇒ 파이썬 번역기로 실행
How can I run?
print("Hello, World!!")
PYTHON
⇒ 출력 성공!!
How can I run?
public class Hello {
public static void main (String[] args) {
System.out.println("Hello, World!!");
}
}
print("Hello, World!!")
PYTHON
How can I run?
public class Hello {
public static void main (String[] args) {
System.out.println("Hello, World!!");
}
}
print("Hello, World!!")
PYTHON
⇒ 자바 컴파일러로 컴파일
How can I run?
public class Hello {
public static void main (String[] args) {
System.out.println("Hello, World!!");
}
}
print("Hello, World!!")
PYTHON
⇒ 바이트코드 클래스 파일 생성
How can I run?
public class Hello {
public static void main (String[] args) {
System.out.println("Hello, World!!");
}
}
print("Hello, World!!")
PYTHON
⇒ 바이트코드 번역기로 실행
How can I run?
public class Hello {
public static void main (String[] args) {
System.out.println("Hello, World!!");
}
}
print("Hello, World!!")
PYTHON
⇒ 출력 성공
How can I run?
public class Hello {
public static void main (String[] args) {
System.out.println("Hello, World!!");
}
}
print("Hello, World!!")
PYTHON
같은 결과
Hello, World!!
print("Hello, World!!")
public class Hello {
public static void main (String[] args) {
System.out.println("Hello, World!!");
}
}
Hello, World!! - Python
print("Hello, World!!")
⇒ 괄호안에 인자로 입력 받은 값을 출력하라
Hello, World!! - Python
print("Hello, World!!")
⇒ 괄호안에 인자로 입력 받은 값을 출력하라
표준출력함수 출력대상
Hello, World!! - Java
public class Hello {
public static void main (String[] args) {
System.out.println("Hello, World!!");
}
}
⇒ 괄호안에 입력 받은 값을 출력하라
Hello, World!! - Java
public class Hello {
public static void main (String[] args) {
System.out.println("Hello, World!!");
}
}
⇒ ……. 괄호안에 입력 받은 값을 출력하라 ㅡㅡㅋ
접근제한자 클래스 클래스이름 정적함수 함수 반환값 Main 함수
문자열 배열 인자
표준 입/출력 클래스
출력 출력함수 개행포함 출력대상 명령어 종료
블록
시작
블록종료
split()
text = "I love Python Programming"
for word in text.split():
print(word)
public class SplitText {
public static void main (String[] args) {
String text = "I love Python Programming";
for (String word: text.split(" "))
System.out.println(word);
}
}
split() - Python
text = "I love Python Programming"
for word in text.split():
print(word)
⇒ 변수 text 의 문자열을 문자 단위로 출력하라
루프문 시작
문자열 쪼갠 뒤 리스트 반환
반복문들여쓰기 문자 대입
코드 실행시 변수 타입 결정 (동적 타입)
split() - Java
public class SplitText {
public static void main (String[] args) {
String text = "I love Python Programming";
for (String word: text.split(" "))
System.out.println(word);
}
}
문자열 타입 지정
(정적 타입)
문자열을 “ ” 를 구분자로
쪼갠 뒤 리스트 반환
문자 대입
괄호 주의
중괄호 생략
문자열 타입 지정
(정적 타입)
반복문
⇒ 변수 text 의 문자열을 문자 단위로 출력하라
join() and range()
"-".join(str(n) for n in range(100))
private static void join (int num) {
for(int i = 0; i < num; i++) {
StringBuilder sb = new StringBuilder();
for(int j: IntStream.range(0, 100).toArray()) {
if(sb.length() == 0) sb.append(j);
else sb.append("-").append(j);
}
}
}
join() and range() - Python
"-".join(str(n) for n in range(100))
⇒ 0 ~ 99 숫자를 “-” 로 이어라 (0-1-2-3-4 … -97-98-99)
기준 문자열
타입 변환 (숫자 → 문자열)
인자값의 문자열과 결합
Comprehension
0~99 배열 반환정수 대입정수 대입
join() and range() - Java
private static void join (int num) {
for(int i = 0; i < num; i++) {
StringBuilder sb = new StringBuilder();
for(int j: IntStream.range(0, 100).toArray()) {
if(sb.length() == 0) sb.append(j);
else sb.append("-").append(j);
}
}
}
Custom 함수 신규 문자열 생성 Helper
숫자배열 생성
문자열 붙이기
⇒ 0 ~ 99 숫자를 “-” 로 이어라 (0-1-2-3-4 … -97-98-99)
문자열 붙이기문자열 붙이기
0~99 반환
정수 대입
조건문
Run Time Comparison
code = '"-".join(str(n) for n in range(100))'
print(timeit.timeit(code, number=10000))
public class JoinTest {
public static void main (String[] args) {
long start = System.nanoTime();
join(10000);
long elapsed = System.nanoTime() - start;
System.out.println(elapsed / 1000000000.0);
}
}
Run Time Comparison
⇒ 0.323 초
⇒ 0.198 초(IntStream.range())
⇒ 0.086 초 (Traditional Loop)
x 1.6
x 2.3
x 3.8
Run Time Comparison
⇒ 0.323 초
⇒ 0.198 초
⇒ 0.086 초 (Traditional Loop)
x 1.6
x 2.3
x 3.8
0.323 secSLOW? or ENOUGH?
Development Time Comparison
Python Source
Code (.py)
Interpreter
Java Source
Code (.java)
Java
Compiler
Bytecode
(.class)
Bytecode
Interpreter
Development Time Comparison
Python Source
Code (.py)
Interpreter
Java Source
Code (.java)
Java
Compiler
Bytecode
(.class)
Bytecode
Interpreter
Development Time Comparison
Python Source
Code (.py)
Interpreter
Java Source
Code (.java)
Java
Compiler
Bytecode
(.class)
Bytecode
Interpreter
Conclusion
Free-Style High-end
Conclusion
Same Size
Conclusion
Different Size
Conclusion
Easier
For wide usage
Difficult
For Race
Different Size
Conclusion
Build FAST
VS
Run FAST
Conclusion
Build FAST
VS
Run FAST
➔ E-mail : isi.cho@gmail.com
➔ Facebook : https://www.facebook.com/insuk.chris.cho
➔ Brunch : https://www.brunch.co.kr/@insuk
➔ Python Programming : https://www.facebook.com/pythonmento
➔ PyData Korea : https://www.facebook.com/groups/pydatakorea/
첫 모임 오후 열린공간

Contenu connexe

Tendances

문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의Kwangyoun Jung
 
[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11흥배 최
 
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영) 파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영) Tae Young Lee
 
Writing Fast Code (KR)
Writing Fast Code (KR)Writing Fast Code (KR)
Writing Fast Code (KR)Younggun Kim
 
파이썬 스터디 9장
파이썬 스터디 9장파이썬 스터디 9장
파이썬 스터디 9장SeongHyun Ahn
 
Boost라이브러리의내부구조 20151111 서진택
Boost라이브러리의내부구조 20151111 서진택Boost라이브러리의내부구조 20151111 서진택
Boost라이브러리의내부구조 20151111 서진택JinTaek Seo
 
Python 생태계의 이해
Python 생태계의 이해Python 생태계의 이해
Python 생태계의 이해용 최
 
파이썬 스터디 15장
파이썬 스터디 15장파이썬 스터디 15장
파이썬 스터디 15장SeongHyun Ahn
 
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍흥배 최
 
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)Tae Young Lee
 
20150212 c++11 features used in crow
20150212 c++11 features used in crow20150212 c++11 features used in crow
20150212 c++11 features used in crowJaeseung Ha
 
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로Jaeseung Ha
 
H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요KTH
 
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013Esun Kim
 
Kth개발자 세미나 1회
Kth개발자 세미나 1회Kth개발자 세미나 1회
Kth개발자 세미나 1회Byeongsu Kang
 

Tendances (20)

파이선 실전공략-1
파이선 실전공략-1파이선 실전공략-1
파이선 실전공략-1
 
문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의
 
[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11
 
Python - Module
Python - ModulePython - Module
Python - Module
 
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영) 파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
 
Writing Fast Code (KR)
Writing Fast Code (KR)Writing Fast Code (KR)
Writing Fast Code (KR)
 
파이썬 스터디 9장
파이썬 스터디 9장파이썬 스터디 9장
파이썬 스터디 9장
 
Boost라이브러리의내부구조 20151111 서진택
Boost라이브러리의내부구조 20151111 서진택Boost라이브러리의내부구조 20151111 서진택
Boost라이브러리의내부구조 20151111 서진택
 
Go
GoGo
Go
 
Python 생태계의 이해
Python 생태계의 이해Python 생태계의 이해
Python 생태계의 이해
 
파이썬 스터디 15장
파이썬 스터디 15장파이썬 스터디 15장
파이썬 스터디 15장
 
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
 
Boost
BoostBoost
Boost
 
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
 
WTL 소개
WTL 소개WTL 소개
WTL 소개
 
20150212 c++11 features used in crow
20150212 c++11 features used in crow20150212 c++11 features used in crow
20150212 c++11 features used in crow
 
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
 
H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요
 
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
 
Kth개발자 세미나 1회
Kth개발자 세미나 1회Kth개발자 세미나 1회
Kth개발자 세미나 1회
 

Similaire à Python vs Java @ PyCon Korea 2017

빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)SeongHyun Ahn
 
불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 명신 김
 
2시간만에 자바 데이터처리를 쉽게 배우고 싶어요.
2시간만에  자바 데이터처리를 쉽게 배우고 싶어요.2시간만에  자바 데이터처리를 쉽게 배우고 싶어요.
2시간만에 자바 데이터처리를 쉽게 배우고 싶어요.Kenu, GwangNam Heo
 
Java mentoring of samsung scsc 2
Java mentoring of samsung scsc   2Java mentoring of samsung scsc   2
Java mentoring of samsung scsc 2도현 김
 
KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_5차_데이터분석_조범석_20120613
KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_5차_데이터분석_조범석_20120613KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_5차_데이터분석_조범석_20120613
KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_5차_데이터분석_조범석_20120613KTH, 케이티하이텔
 
자바스터디(6기) 3
자바스터디(6기) 3자바스터디(6기) 3
자바스터디(6기) 3Jina Lee
 
Ai C#세미나
Ai C#세미나Ai C#세미나
Ai C#세미나Astin Choi
 
Nexon Developers Conference 2017 Functional Programming for better code - Mod...
Nexon Developers Conference 2017 Functional Programming for better code - Mod...Nexon Developers Conference 2017 Functional Programming for better code - Mod...
Nexon Developers Conference 2017 Functional Programming for better code - Mod...Isaac Jeon
 
Realm은 어떻게 효율적인 데이터베이스를 만들었나?
Realm은 어떻게 효율적인 데이터베이스를 만들었나?Realm은 어떻게 효율적인 데이터베이스를 만들었나?
Realm은 어떻게 효율적인 데이터베이스를 만들었나?Leonardo YongUk Kim
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산S.O.P.T - Shout Our Passion Together
 
5장 객체와클래스
5장 객체와클래스5장 객체와클래스
5장 객체와클래스SeoYeong
 
//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작
//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작
//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작Taeyoung Kim
 
[NEXT 프연 Week3] C# Data Type
[NEXT 프연 Week3] C# Data Type[NEXT 프연 Week3] C# Data Type
[NEXT 프연 Week3] C# Data TypeYoung-Ho Cho
 
함수형 프로그래밍
함수형 프로그래밍함수형 프로그래밍
함수형 프로그래밍Min-su Kim
 
Google Protocol buffer
Google Protocol bufferGoogle Protocol buffer
Google Protocol bufferknight1128
 
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)Sang Don Kim
 

Similaire à Python vs Java @ PyCon Korea 2017 (20)

빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)
 
불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14
 
2시간만에 자바 데이터처리를 쉽게 배우고 싶어요.
2시간만에  자바 데이터처리를 쉽게 배우고 싶어요.2시간만에  자바 데이터처리를 쉽게 배우고 싶어요.
2시간만에 자바 데이터처리를 쉽게 배우고 싶어요.
 
HI-ARC PS 101
HI-ARC PS 101HI-ARC PS 101
HI-ARC PS 101
 
Java mentoring of samsung scsc 2
Java mentoring of samsung scsc   2Java mentoring of samsung scsc   2
Java mentoring of samsung scsc 2
 
Scala
ScalaScala
Scala
 
KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_5차_데이터분석_조범석_20120613
KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_5차_데이터분석_조범석_20120613KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_5차_데이터분석_조범석_20120613
KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_5차_데이터분석_조범석_20120613
 
자바스터디(6기) 3
자바스터디(6기) 3자바스터디(6기) 3
자바스터디(6기) 3
 
파이썬 데이터 분석 (18년)
파이썬 데이터 분석 (18년)파이썬 데이터 분석 (18년)
파이썬 데이터 분석 (18년)
 
파이썬으로 익히는 딥러닝
파이썬으로 익히는 딥러닝파이썬으로 익히는 딥러닝
파이썬으로 익히는 딥러닝
 
Ai C#세미나
Ai C#세미나Ai C#세미나
Ai C#세미나
 
Nexon Developers Conference 2017 Functional Programming for better code - Mod...
Nexon Developers Conference 2017 Functional Programming for better code - Mod...Nexon Developers Conference 2017 Functional Programming for better code - Mod...
Nexon Developers Conference 2017 Functional Programming for better code - Mod...
 
Realm은 어떻게 효율적인 데이터베이스를 만들었나?
Realm은 어떻게 효율적인 데이터베이스를 만들었나?Realm은 어떻게 효율적인 데이터베이스를 만들었나?
Realm은 어떻게 효율적인 데이터베이스를 만들었나?
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산
 
5장 객체와클래스
5장 객체와클래스5장 객체와클래스
5장 객체와클래스
 
//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작
//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작
//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작
 
[NEXT 프연 Week3] C# Data Type
[NEXT 프연 Week3] C# Data Type[NEXT 프연 Week3] C# Data Type
[NEXT 프연 Week3] C# Data Type
 
함수형 프로그래밍
함수형 프로그래밍함수형 프로그래밍
함수형 프로그래밍
 
Google Protocol buffer
Google Protocol bufferGoogle Protocol buffer
Google Protocol buffer
 
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
 

Python vs Java @ PyCon Korea 2017

  • 2. ● (현) 두산중공업 소프트웨어 개발팀 소프트웨어 아키텍트 & 애자일 전도사 ● (전) 삼성SDS 방법론팀 / 프레임워크 팀 소프트웨어 아키텍트 ● (전) 현대정보기술 해외금융기술팀 소프트웨어 엔지니어 ● (전) 육군전산소 S/W 개발병 ● 컴퓨터공학 학사(2004) 조인석 (Chris Cho)
  • 5. Python’s Spectrum of Users ※ ※
  • 6. Type of language Python Source Code (.py) Interpreter Java Source Code (.java) Java Compiler Bytecode (.class) Bytecode Interpreter
  • 7. How can I run? print("Hello, World!!") PYTHON
  • 8. How can I run? print("Hello, World!!") PYTHON ⇒ 파이썬 번역기로 실행
  • 9. How can I run? print("Hello, World!!") PYTHON ⇒ 출력 성공!!
  • 10. How can I run? public class Hello { public static void main (String[] args) { System.out.println("Hello, World!!"); } } print("Hello, World!!") PYTHON
  • 11. How can I run? public class Hello { public static void main (String[] args) { System.out.println("Hello, World!!"); } } print("Hello, World!!") PYTHON ⇒ 자바 컴파일러로 컴파일
  • 12. How can I run? public class Hello { public static void main (String[] args) { System.out.println("Hello, World!!"); } } print("Hello, World!!") PYTHON ⇒ 바이트코드 클래스 파일 생성
  • 13. How can I run? public class Hello { public static void main (String[] args) { System.out.println("Hello, World!!"); } } print("Hello, World!!") PYTHON ⇒ 바이트코드 번역기로 실행
  • 14. How can I run? public class Hello { public static void main (String[] args) { System.out.println("Hello, World!!"); } } print("Hello, World!!") PYTHON ⇒ 출력 성공
  • 15. How can I run? public class Hello { public static void main (String[] args) { System.out.println("Hello, World!!"); } } print("Hello, World!!") PYTHON 같은 결과
  • 16. Hello, World!! print("Hello, World!!") public class Hello { public static void main (String[] args) { System.out.println("Hello, World!!"); } }
  • 17. Hello, World!! - Python print("Hello, World!!") ⇒ 괄호안에 인자로 입력 받은 값을 출력하라
  • 18. Hello, World!! - Python print("Hello, World!!") ⇒ 괄호안에 인자로 입력 받은 값을 출력하라 표준출력함수 출력대상
  • 19. Hello, World!! - Java public class Hello { public static void main (String[] args) { System.out.println("Hello, World!!"); } } ⇒ 괄호안에 입력 받은 값을 출력하라
  • 20. Hello, World!! - Java public class Hello { public static void main (String[] args) { System.out.println("Hello, World!!"); } } ⇒ ……. 괄호안에 입력 받은 값을 출력하라 ㅡㅡㅋ 접근제한자 클래스 클래스이름 정적함수 함수 반환값 Main 함수 문자열 배열 인자 표준 입/출력 클래스 출력 출력함수 개행포함 출력대상 명령어 종료 블록 시작 블록종료
  • 21. split() text = "I love Python Programming" for word in text.split(): print(word) public class SplitText { public static void main (String[] args) { String text = "I love Python Programming"; for (String word: text.split(" ")) System.out.println(word); } }
  • 22. split() - Python text = "I love Python Programming" for word in text.split(): print(word) ⇒ 변수 text 의 문자열을 문자 단위로 출력하라 루프문 시작 문자열 쪼갠 뒤 리스트 반환 반복문들여쓰기 문자 대입 코드 실행시 변수 타입 결정 (동적 타입)
  • 23. split() - Java public class SplitText { public static void main (String[] args) { String text = "I love Python Programming"; for (String word: text.split(" ")) System.out.println(word); } } 문자열 타입 지정 (정적 타입) 문자열을 “ ” 를 구분자로 쪼갠 뒤 리스트 반환 문자 대입 괄호 주의 중괄호 생략 문자열 타입 지정 (정적 타입) 반복문 ⇒ 변수 text 의 문자열을 문자 단위로 출력하라
  • 24. join() and range() "-".join(str(n) for n in range(100)) private static void join (int num) { for(int i = 0; i < num; i++) { StringBuilder sb = new StringBuilder(); for(int j: IntStream.range(0, 100).toArray()) { if(sb.length() == 0) sb.append(j); else sb.append("-").append(j); } } }
  • 25. join() and range() - Python "-".join(str(n) for n in range(100)) ⇒ 0 ~ 99 숫자를 “-” 로 이어라 (0-1-2-3-4 … -97-98-99) 기준 문자열 타입 변환 (숫자 → 문자열) 인자값의 문자열과 결합 Comprehension 0~99 배열 반환정수 대입정수 대입
  • 26. join() and range() - Java private static void join (int num) { for(int i = 0; i < num; i++) { StringBuilder sb = new StringBuilder(); for(int j: IntStream.range(0, 100).toArray()) { if(sb.length() == 0) sb.append(j); else sb.append("-").append(j); } } } Custom 함수 신규 문자열 생성 Helper 숫자배열 생성 문자열 붙이기 ⇒ 0 ~ 99 숫자를 “-” 로 이어라 (0-1-2-3-4 … -97-98-99) 문자열 붙이기문자열 붙이기 0~99 반환 정수 대입 조건문
  • 27. Run Time Comparison code = '"-".join(str(n) for n in range(100))' print(timeit.timeit(code, number=10000)) public class JoinTest { public static void main (String[] args) { long start = System.nanoTime(); join(10000); long elapsed = System.nanoTime() - start; System.out.println(elapsed / 1000000000.0); } }
  • 28. Run Time Comparison ⇒ 0.323 초 ⇒ 0.198 초(IntStream.range()) ⇒ 0.086 초 (Traditional Loop) x 1.6 x 2.3 x 3.8
  • 29. Run Time Comparison ⇒ 0.323 초 ⇒ 0.198 초 ⇒ 0.086 초 (Traditional Loop) x 1.6 x 2.3 x 3.8 0.323 secSLOW? or ENOUGH?
  • 30. Development Time Comparison Python Source Code (.py) Interpreter Java Source Code (.java) Java Compiler Bytecode (.class) Bytecode Interpreter
  • 31. Development Time Comparison Python Source Code (.py) Interpreter Java Source Code (.java) Java Compiler Bytecode (.class) Bytecode Interpreter
  • 32. Development Time Comparison Python Source Code (.py) Interpreter Java Source Code (.java) Java Compiler Bytecode (.class) Bytecode Interpreter
  • 39. ➔ E-mail : isi.cho@gmail.com ➔ Facebook : https://www.facebook.com/insuk.chris.cho ➔ Brunch : https://www.brunch.co.kr/@insuk ➔ Python Programming : https://www.facebook.com/pythonmento ➔ PyData Korea : https://www.facebook.com/groups/pydatakorea/ 첫 모임 오후 열린공간