자바 개발자가 파이썬 개발을 배우면서 실무에 활용하고 집필을 하면서 겪었던 경험담 및 생각을 코드와 함께 풀어본다. 자바에 익숙한 사람이 파이썬을 배우고 있거나, 자바와 파이썬의 사이에서 고민을 했던 사람들에게 비교를 위한 기본 정보를 제공한다. 더 나아가 컴파일 언어와 스크립트 언어의 차이점, 개발 생산성을 측정할때 간과하는 컴파일 시간 및 순수 코딩 시간에 대한 통찰을 이끌 생각이다.
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
같은 결과
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