#일단 제 다른글들을 읽어보시면 제가 비전공 독학 프로그래밍 뉴비이며 머리도 좋지않고 그렇다고 노력을 하지도 않는 그런 사람임을 감안해서 읽어주세요. 당연히 React, Redux에 대한 실전 경험 따윈 없습니다... 프로그래머로 일해본 경험도 없고요 ㅠ.ㅠ
Redux를 알았을때 좋다는 생각을 많이 했습니다. 지금도 그렇게 생각하고요. 이것 때문에 functional programming을 알게되어 기웃 거리다가 얻은 생각도 많아 지금 제 머리속 상태에 많은 영향을 미치고 있는 상태입죠. 그러다 몇주전 부터인가 문득든 생각이 어떻게 보면 별거 없다는 생각입니다.. 사실 제가 Redux를 실제 사용 한건 거의 없고 가장 간단한 tutorial 수준입니다만... 개념적으로 결국 Redux가 뭐냐고 저한테 물어보면 "걍 전역변수(global variable) 인데요?" 이렇게 말할거 같에요. 생각 해보면 전혀 다를바가 없는것 같에요. Store에 모든 state를 저장하고 다른곳들에서 action을 날리면 reducer에서 원하는거 하고 Store에서 바꿔주고 다른곳들을 Store의 상태에 따라 움직인다 요거인데요. (React랑 같이 사용되면 props, context 를 통해서 겠죠) 당연히 관리 하기 좋게 store, action, reducer 잘 나눠져 있고 당연히 async에 대한 고려(middleware 등등) 다 좋은데 전역변수랑 다를바가 없는거 같에요. 굉장하긴 한데 굉장하다고 할만한 새로운게 아닌거 같기도 하고 그렇다 이말이죠..
React도 같아요 처음에 <App>같은거 하나를 딱 시작으로 트리구조로 밑으로 쫙쫙 내린다는 거잖아요? 단방향성을 지향하고 각각 컴포넌트들이 바뀌는게 있으면 virtual-dom diff 알고리즘을 써서 바뀐거만 샥샥 잘 바꿔준다. declarative하고 jsx도 있고 server rendering도 있고 뭐뭐도 있고 다 좋습니다. 이거 딱 나왔을때 소개 영상이였나 제 기억이라면 게임 개발에서 아이디어를 얻었다고 본거 같기도 한데(virtual dom 부분 이였나)
뭔 얘기를 하고 싶었냐면 Redux같은 경우 옛날에 들어본 FSM과 비슷? 하지 않나 그런 생각이 들더라고요.. 게임 프로그래밍 하면 가장 처음 듣는 개념 이라고 해야하나.. FSM, HSM, 등등 여러가지가 있더라고요. 일단 위키피디아만 읽어보면서 공부해야 할게 엄청나게 늘어남을 느낌니다. 일단 2개 링크가 가장나중에도 계속 볼만한데 https://en.wikipedia.org/wiki/Finite-state_machine 요거 먼저 보시고 https://en.wikipedia.org/wiki/UML_state_machine# 보시면 될것 같네요.(영어인건 어쩔수가..) 특히 2번째가 정말 정수를 담은것 같은데 말이죠. 이쪽은 무조건 나중에 더 파봐야겠다는 생각이 듭니다.
그러면서 드는 생각이 여러 프로그래밍 분야 중에서 프론트 엔드가 기술적으로 좀 떨어지는 분야 인가 하는 생각도 듭니다. 제가 알기론 최근들어 굉장히 발전했다고 들었는데... MVC 패턴이나 node.js나 여러 프레이워크들 말이죠. 웹이란게 예전에는 걍 html, css에다가 동적인거 살짝 javascript (jquery) 였는데 javascript로 서버한다고 하고 front들도 굉장히 체계적으로 여러 프로그래밍 이론들 도입해서 바뀌고 있는듯 합니다.
결론은 그렇게 프론트에서 열광적인 React나 Angular(이건 안해봐서 아는게 전혀 없네요) gulp(자동화), webpack(모듈링 시스템), css module(css개념들 sass, less, post-css), reactivity(Meteor나 firebase, Rethink-db), graphql, microsevice, graphic(canvas나 webgl) 더 나아가면 빅데이터, 분산시스템(hadoop, spark라던지 nosql의 등장)등등 수많은 것들이 이론적으로 전혀 대단하지 않고 이미 다른 프로그래밍 분야에선 몇십년 전부터 당연시 되던것들이 아닐까? 하는 생각이 듭니다. 당연하다면 당연한거 겠죠.. 웹에서 이끌어가는 기술들도 있고 다른 여러분야에서 이끌어가는 기술들도 있고 한거겠죠. 저같은 경우는 비전공 독학이여서 기본적인 근간이 약간 없다보니 그런걸수도 있겠네요... 생각해보면 게임을 만들기 위해들어가는 기술이 정말 어머어마 한거 같에요. 클라이언트나 서버(네트워크 등등) 등등 그래픽에 대한 이론들도 엄청나고. 실시간성이나 보안이나 여려가지를 생각 해보았을때 첨단(?)인 것들이 많을 것 같다는 생각이 듭니다.
1. 성능적인 면 - 메모리 할당부터 이것저것
2. 엄청난 상태들의 관리 - 웹보단 훨씬 복잡하지 않을까요??
3.네트워크 - 실시간으로 엄청 정보들이 동적으로 변화하고 이걸 각 유저들의 화면에 뿌려주면서 sync하고 뭐 어쩌구 저쩌구)
저는 원래 게임 만든다고 시작한 프로그래밍인데 여러이유로 지금 웹을 하고 있지만 항상 주의하고 있어야 한다고 생각합니다.. (어차피 학원 등록이 된다면 10말부터 게임프로그래밍 다시 하겠지만요. 그전까진 지금까지 하고있는 웹이나 잘해야 겠어요)
게으름이라.. 별건 아니고 걍 제가 요 몇개월간 정말 한게 아무것도 없는것 같아요. 5~6개월간 짠 코드량이 한 200 줄되려나? 하루에 한줄 썼다고 보면 되네요. 그러면 굉장한걸 썼냐? 당연히 아니고 for과 if/else 의 향연이고 함수도 걍 반복조금 줄이는 그런정도 라는거죠.. 정말 스뤠기 같은 인생을 살았다고 할수 있죠. 그렇다고 제가 적극적으로 논것도 아니고요. 사람도 거의 안만나고... 2월부터는 알바도 때려치고 공부에 전념한다는게 완전 백수를 한게 되버렸네요..
이런 저의 상태를 변화주기 위해 7월달 새벽 수영을 시작으로 취성패2(취업성공패키지)를 신청하고 국비강의들을 듣게 되었습니다. 8/8 내일 부터네요. 이건 국비는 아니고 지역 고용 산업으로 무료인 강의인데 아침9~ 저녁6시 정도쯤되는 커리큘럼으로 월~금 2달동안인 강의 입니다. 파이썬 베이스고 빅데이터, 머신러닝 강의 입니다. 파이썬은 옛날부터 쓸모가 많다고 하고 빅데이터, 머신러닝 쪽에 라이브러리등도 좋다고 해서 관심은 있었지만 게을러서 공부를 안하고 있었습니다. 물론 이것은 한 언어를 잘하게 되었을 때만 다른 언어를 시작하자고한 저의 계획이었는데 그 한 언어(자바스크립트) 를 전혀 공부 안하다 보니 배우지 않고 있었네요. 정말 베스트한 상황이라면 파이썬 관련 강의 + 머신러닝, 빅데이터 강의는 많이 있으니 같이 듣는겁니다만..(coursera, udacity, edx 등등) 그럴 시간이 안날거 같네요. 그리고 굉장히 걱정인게 파이썬만 이라면 새로운 언어를 배운다 생각하고 하면 되는데 머신러닝이 들어가서.... 자신감이 거의 없네요. 수학쪽으로 가면 또 굉장히 들어가서 선형대수, 벡터 등등 수학만도 해야될게 엄청 많을거 같에서..(본인 미적은 개뿔 lim같은것도 다 까먹었습니다) 하지만 미래성이 굉장하다고 느껴서 합니다.
여기다가 플러스로... 또 신청해논 강의가 마침 합격해서 그것도 병행하게 됬네요. 유니티 특강 같은건데 당연히 무료이고 화/목으로 3시간씩 인데 이것도 스케쥴은 엄청 빡빡해서... 잘 따라갈수나 있을지.. 요것도 8/9부터 2달정도인데 집하고 1시간 50분 거리... ㄷㄷㄷ 너무 멀어서 신청할까 말까 했는데 되서...
이렇게 10월 초나 중반에 파이썬하고 유니티가 끝나면 10말 부터는 국비6개월 짜리를 들을 예정입니다. 제가 봐논데가 있는데 될지는 모르겠네요.. 이거 안되면 진짜 들을강의 없는데.. 그 강의는 c++/c# 좀하고 뭐 유니티2d/3d등등 뭐 그런 일반적인 강의 입니다. 이때 C++/C# 같은 low level좀 해서 전반적인 프로그래밍 지식을 좀 올려야 할 것 같습니다.(디자인 패턴등등 하면 죽을땍까지 해도 못하겠지만..) 그후 바로 유니티로..
이렇게 내년 5월까지 달리면 그후론 취업/창업 둘중 하나겠네요. 그땐 제자신을 봤을때 실력이 안되도 취업을 할 생각입니다.. 창업은.. 글쎄 제가 너무 경험이 없어서 일단 살짝 배우는게 좋을것 같아요. 스타트업에서. 저는 이것저것 많을걸 배우고 싶기 때문이죠. 물론 요번년도 부터는 공부하면서 간단한 서비스 돌리고 있겠지만 내년 5월까지 하는거 봐서 창업 할수도 있고요ㅎㅎ 그나저나 제가 이렇게 기술을 하고 있긴한데 아직도 전 저의 문과적 재능(?)이 훨씬 뛰어나다고 봅니다. 흐름을 읽는거라고 해야하나.. 상대적으로 말이죠. 뭐 그렇다 치고 앞으로 제대로 된(?) 인생을 살아보려는 그런 생각입니다.
'~ 공부 ~ > Computer' 카테고리의 다른 글
파이썬, 객체지향, 유니티 (0) | 2016.08.13 |
---|---|
드디어 성공!! Meteor deploy 하기!! (0) | 2016.08.07 |
와 이런 삽질.... (0) | 2016.06.22 |
Introduction to Game Development - Week4 (0) | 2016.02.10 |
Introduction to Game Development - Week3 (0) | 2016.02.07 |