학부생때 처음 전산물리 과목을 수강하면서 "이건 도대채 어떻게 공부해야 하는가" 에 대해서 고민했던 기억이 난다.
Java 가 먼지, 프로그래밍이 먼지도 모르는 학생들에게 1학기동안 swing 까지 나가는 살인적인 진도는 도저히 따라가기 힘들었다.
programming 이란 무엇인가. 물리공부를 하는데 이게 왜 필요한가 에 대한 끝없는 반문.
학기가 끝날쯤에야 Java 를 한번 공부해보자 라는 생각이 들 정도였으니 성적은 말할것도 없다.
지금와서 생각해보면 전산물리 라는 과목에 Java 라는 언어는 상당히 부담스럽다는 생각이 든다.
과목의 목적이 원래 컴퓨터를 통한 물리실험으로 물리의 이해를 돕고자 하는 목적이 컸는데,
물리 실험을 하기 위해서는 Java 라는 프로그래밍 언어를 사용해야만 하는 (그것도 잘..)
어떻게보면 배보다 배꼽이 더 큰 상황이랄까.
특히 GUI 화면을 구현하고 EventHandling 을 사용하기 위해 Swing 을 사용하는 것은 지금와서 하라고해도 쉽게 하지 못할것 같다.(요즘 Swing 을 잘 안쓰기도하니까..)
그래도 우리과는 다행이라고 생각했던 것이..시중에 나와있는 책들을 보면 전산물리 관련 도서는 대부분 VB, C 를 기반으로 한다. 아마 VB 로 시작했다면 난 IT 분야는 생각도 안했을지 모른다.
최근 Python 을 공부하면서 전산물리를 Python 으로 배웠다면 과연 어땠을까? 라는 생각을 하게되었다.
개인적으로 물론 Java 도 멋진 언어이지만, 프로그래밍을 모르는 상태에서 전산물리를 가르쳐야 한다면, 그 언어는 Python 이 더 알맞은 언어라고 생각한다.
먼저 아래 두 코드를 한번 살펴보자. 아래 코드는 반지름이 0.2,0.5,1.5m 일때의 ElectricField 를 계산하고 있다.
1. Python (calc_electric_field.py)
2.Java (CalcElectricField.java)
중요한건 프로그래밍을 모르는 사람이 이 코드를 봤을때 얼마만큼 이해를 할 수 있느냐 이다.
Java 를 처음 공부할때 어려웠던 부분 중 하나가 main method 의 구조 이해다.
나는 식을 계산해서 결과값을 출력하는 일을 하고 싶은데 그러기 위해서는
public static void main 메소드를 반드시 구현 해야하고, Class 선언도 반드시 해야만 한다.
"이건 처음에 무조건 써 줘야하는거야" 라고 한다면, 그리고 그냥 그렇게 이해하고 만다면야 문제 없을 수 있겠지만, 경험상 타이핑을 하면서 "이건 왜 쓰는걸까?" 라는 생각이 들었고 그때부터 많은 의문들이 나를 안드로메다로 인도했다.
또한, Java 는 변수를 선언하기 위해서는 여러 타입에 대한 이해가 필수적이다. float, double, String... 물리 식 하나도 벅찬데 프로그래밍 까지 동시해 이해하면서 수업을 한다는것은 쉬운일이 아니였다.
물론 Pyhton 도 변수의 이해가 필요하긴 하다. 하지만 Python 은 Java 또는 다른 언어들(VB,C,C++) 과 비교했을 때 식 본연의 문제에 더 집중할 수 있도록 도와준다.
기본적으로 for, if 문에 대해서만 이해 한다면 위와 같은 코드를 읽는데 어려움이 없을 것 이라 생각한다.
앞으로 전산물리를 공부할 많은 물리학과 학생들이 Python 을 통해 배운다면.. 그마나 포기하는 학생이 한명이라도 줄어들지 않을까? 하는 생각이 든다.
Java 가 먼지, 프로그래밍이 먼지도 모르는 학생들에게 1학기동안 swing 까지 나가는 살인적인 진도는 도저히 따라가기 힘들었다.
programming 이란 무엇인가. 물리공부를 하는데 이게 왜 필요한가 에 대한 끝없는 반문.
학기가 끝날쯤에야 Java 를 한번 공부해보자 라는 생각이 들 정도였으니 성적은 말할것도 없다.
지금와서 생각해보면 전산물리 라는 과목에 Java 라는 언어는 상당히 부담스럽다는 생각이 든다.
과목의 목적이 원래 컴퓨터를 통한 물리실험으로 물리의 이해를 돕고자 하는 목적이 컸는데,
물리 실험을 하기 위해서는 Java 라는 프로그래밍 언어를 사용해야만 하는 (그것도 잘..)
어떻게보면 배보다 배꼽이 더 큰 상황이랄까.
특히 GUI 화면을 구현하고 EventHandling 을 사용하기 위해 Swing 을 사용하는 것은 지금와서 하라고해도 쉽게 하지 못할것 같다.(요즘 Swing 을 잘 안쓰기도하니까..)
그래도 우리과는 다행이라고 생각했던 것이..시중에 나와있는 책들을 보면 전산물리 관련 도서는 대부분 VB, C 를 기반으로 한다. 아마 VB 로 시작했다면 난 IT 분야는 생각도 안했을지 모른다.
최근 Python 을 공부하면서 전산물리를 Python 으로 배웠다면 과연 어땠을까? 라는 생각을 하게되었다.
개인적으로 물론 Java 도 멋진 언어이지만, 프로그래밍을 모르는 상태에서 전산물리를 가르쳐야 한다면, 그 언어는 Python 이 더 알맞은 언어라고 생각한다.
먼저 아래 두 코드를 한번 살펴보자. 아래 코드는 반지름이 0.2,0.5,1.5m 일때의 ElectricField 를 계산하고 있다.
1. Python (calc_electric_field.py)
# -*- coding:utf-8 -*- import math r = [0.20, 0.50, 1.50] # define radius to list k = 8.988*math.pow(10,9) q = 5*math.pow(10,-6) R = 0.50 for radius in r: if radius>R: E = k*q/math.pow(radius,2) elif radius==R: E = k*q/math.pow(R,2) else: E = k*q*radius/math.pow(R,3) print"r=%0.2fm, E=%8.3f N/C"%(radius,E)
2.Java (CalcElectricField.java)
public class CalcElectricField { public static void main(String[] args) { double r[] = {0.02, 0.05, 1.50}; double k = 8.988 * Math.pow(10,9); double q = 5*Math.pow(10,-6); double R = 0.05; double E = 0.0; for(int index=0; index < r.length; index++) { double radius = r[index]; if (radius > R) { E = k*q/Math.pow(radius,2); }else if (radius == R) { E = k*q/Math.pow(R,2); }else if (radius < R) { E = k*q*radius/Math.pow(R,3); } System.out.printf("r=%.2f m, E=%8.3f N/C",radius, E); System.out.println(); } } }단순히 라인수만 비교한다면 큰 차이가 없어보일 수 있다.
중요한건 프로그래밍을 모르는 사람이 이 코드를 봤을때 얼마만큼 이해를 할 수 있느냐 이다.
Java 를 처음 공부할때 어려웠던 부분 중 하나가 main method 의 구조 이해다.
나는 식을 계산해서 결과값을 출력하는 일을 하고 싶은데 그러기 위해서는
public static void main 메소드를 반드시 구현 해야하고, Class 선언도 반드시 해야만 한다.
"이건 처음에 무조건 써 줘야하는거야" 라고 한다면, 그리고 그냥 그렇게 이해하고 만다면야 문제 없을 수 있겠지만, 경험상 타이핑을 하면서 "이건 왜 쓰는걸까?" 라는 생각이 들었고 그때부터 많은 의문들이 나를 안드로메다로 인도했다.
또한, Java 는 변수를 선언하기 위해서는 여러 타입에 대한 이해가 필수적이다. float, double, String... 물리 식 하나도 벅찬데 프로그래밍 까지 동시해 이해하면서 수업을 한다는것은 쉬운일이 아니였다.
물론 Pyhton 도 변수의 이해가 필요하긴 하다. 하지만 Python 은 Java 또는 다른 언어들(VB,C,C++) 과 비교했을 때 식 본연의 문제에 더 집중할 수 있도록 도와준다.
기본적으로 for, if 문에 대해서만 이해 한다면 위와 같은 코드를 읽는데 어려움이 없을 것 이라 생각한다.
앞으로 전산물리를 공부할 많은 물리학과 학생들이 Python 을 통해 배운다면.. 그마나 포기하는 학생이 한명이라도 줄어들지 않을까? 하는 생각이 든다.
Comments
Post a Comment