내가 매트랩과 파이썬을 익히게 된 이유는 노가다 때문이었다.
물리학과를 졸업했기에 평생 코딩 같은건 할 일이 없을 줄 알았다.
빅데이터나 인공지능 같은게 재미있어 보여서 취미로 몇자 끄적여본 경험이 전부다.
대학원에 오게되서 제일 처음하게 된건 전류전압을 측정하는 것이었다.
그 다음 배운건 오리진(Origin)을 이용해 그래프를 그리는 것이었다.
여기까지는 좋았다.
오리진은 여러 기능이 있어서 복잡해보이긴 해도 그래프를 그리는게 목적인 프로그램인지라 이것저것 만져보니 금방 익히게 되었다.
(물론 FFT 필터나 curve Fitting 과 같은 기능은 아직 좀 어렵다)
전류전압데이터를 이용해 에너지를 계산하기 전까지는 노가다랄게 거의 없었다.
하지만 에너지 계산을 수백번 반복하다 보니까 손은 빨라졌어도 정신은 피폐해졌다.
실험을 하면 이걸 또 언제 다 계산하지 그런 생각이 먼저들었다.
들어온지 1년이 된 뒤에 사수선배가 매트랩(MATLAB) 스크립트(Script)를 이용해 에너지를 계산하는 방법을 알려주었고,
그때부터 내가 코딩이라는 것에 입문하게 되는 계기가 되었다.
매트랩을 이용하니 2시간은 족히 걸리던 것도 10분이면 끝이 났다.
생산성이 무려 12배가 증가한 것이다.
그때부터 컴퓨터를 이용하면 생산성이 어마무지하게 늘어난다는 것을 알게되었다.
노가다로 했던 것을 컴퓨터로 빠르게 끝내니까 드디어 내껄 연구할 수 있는 시간이 생겼다.
실험에 투자할 수 있는 시간도 많아졌다.
문제는 새로운 문제를 코드로 풀어내는 것에 있었다.
정말 큰 문제는 뭐가 문제인지 모르는데 있다.
논문에 나온 방법으로 계산해서 어떤 값을 얻고 싶은데,
그걸 코드로 어떻게 구현하는지가 큰 문제였다.
가령 적분을 한다고 하자
학생때 배운 방법은 변수 x 를 놓고
적분구간을 설정한 뒤에
정적분 공식을 이용해 적분하고 적분값을 대입한다.
컴퓨터는 x 를 모든다...
물론 매트랩에는 심볼릭(simbolic)이라는 툴박스가 존재해서 이런 x나 y 같은 것을 다룰 수 있지만
내가 가진 데이터는 x가 아니라 아주 긴 숫자의 나열이다.
x 처럼 연속적인 값이 아닌 불연속의 숫자데이터를 적분을 하는 문제를 어떻게 해결할지 큰 벽에 부딪혔다..
(수치데이터를 적분하는 방법은 다음에 포스팅하겠다. MATLAB 홈페이지에 수치데이터 적분이라고 쳐도 나오는데 나는 for 문을 이용했다)
이렇듯 코딩을 하려고 해도 어떻게 접근해야 할지
어떤 방법을 써야할지 아주 기본적인 부분에서 부터 커다란 벽에 가로막히게 된다.
이제서야 알게 되었는데,
컴퓨터로 문제를 해결하기위한 일종의 사고단계가 있는데 그게 “컴퓨터적 사고능력”이다.
문제를 잘게 나누고 알고리즘을 대입해 컴퓨터가 알 수 있는 방법으로 코딩한뒤 문제를 해결하는 것이 컴퓨터적 사고능력이다.
나는 이 능력이 부족했던 것이다.
이런 능력이 부족한 것도 최근에서야 알게 되었다.
그럼 컴퓨터적 사고능력을 기르기 위해서는 어떻게 해야할까?
그게 내가 앞으로 해나갈 울트라러닝 방법을 활용한 OKR이다.
(이것도 다음 포스팅 주제)
나 같은 경우에는 출발점이 좋다.
어떤 문제를 해결해야하는지 알기 때문이다.
내가 해결해야 할 문제는 “논문에 나온 계산들을 어떻게 컴퓨터로 해낼 것인가?” 이다.
어떤 문제를 풀어야 할지 정해졌다면 다음의 4단계로 문제를 풀어보는 것이다.
1. 분해 : 복잡한 문제를 작게 나눈다
이게 제일 어렵다.
문제를 나누고 어떤단계를 컴퓨터로 풀 수 있게하는게 제일 어려운 것 같다.
2. 패턴인식 : 반복되는 패턴을 발견한다. 어떤 기능이 반복되는지 생각한다.
패턴인식은 노가다로 생각되는 영역이다.
엑셀이든 오리진이든 계속 반복해서 해야하는 기능이 패턴인식이다.
나는 계산을 자동화하기 전에 먼저 엑셀이나 오리진으로 계산을 해보고 어떤 단계를 거치는지 노가다로 겪어본다.
이런 단계가 아마 패턴인식인것 같다.
3. 추상화 : 기능을 구현하는데 필요한 핵심에만 집중한다.
4. 알고리즘 : 잘게 나눈 문제에 대입할 수 있는 알고리즘을 찾아 문제를 해결한다. 일반화와 모델링을 한다.
(출처 : 파이썬 코딩도장 - 저자 남재윤)
울트라러닝에 따르면 배움에 있어서 첫단계는 메타학습이다.
코딩으로 문제를 해결하기 위해선
그 배움에 이르는 단계를 먼저 공부하는 게 필요하다.
그게 나에게는 컴퓨터적 사고법을 배우는 것이다.
울트라러닝 : 배움의 단계 2. 집중하기 (0) | 2020.10.25 |
---|---|
버그의 원인중 80퍼센트는 자료형 때문에 생기는듯 : 자료형 세상이 왜이래.. (0) | 2020.10.15 |
Todoist : 일만해도 머리아픈데 기억하는데 머리아프지 말자 (GTD) (3) | 2020.10.09 |
울트라러닝 : 배움의 단계 1. 메타학습 (2) | 2020.10.03 |
울트라러닝 : 배우고 싶은가? 뭣하러? (0) | 2020.10.02 |