꽃중년보넥스
-1k
2020-12-18 02:32:21 작성 2020-12-18 03:20:42 수정됨
12
1301

코딩이란 무엇인가?


초심자들을 위해서 코딩이란 능력의 본질을 이야기 해봅니다.

프로그래밍이 바로 코딩입니다. 우선 쓸데없이 격을 구분하고

가오를 넣으려는 그 마음을 버려야 합니다. 이 글을 보기 전에.


근본적으로 코딩은 노래, 미술, 복싱, 축구, 당구, 소설과 똑같은 것이지만

코딩이란 기술장르의 최대 단점은 기술깊이의 공감이 잘 안된다는 것입니다.

노래, 미술은 창작자가 누군지 알 필요도 없이 결과물만 몇초를 보고

그 퀄리티의 깊이를 쉽게 알아챌 수 있지만 코딩은 그게 안되니까

명성과 브랜드를 먼저 보고 결과물의 퀄리티를 예상(?)하게 됩니다.

헬로월드 따위도 구글에서 작성했다고 하면 쳐주고 반겨주게 되는거죠.

구글이 뉘 사람은 아니지만.. ㅎ


그래서 저는 코딩을 설명하기 위해 타 분야의 사례를

가져와서 설명을 합니다. 그게 훨씬 더 전달이 잘되거든요.



위 동영상은 클레이라는 겁니다. 가벼운 고무느낌의 점토입니다.

개발자가 입체의 모형을 만들기 위해서는 재료를 먼저 선택해야 합니다.

클레이는 Java정도 됩니다. 통나무를 깎아서 입체모형을 만든다면 그게 C++정도 되겠죠.

일단 동영상을 한번 쭉 봐주세요.


눈을 제작하는 장면이 있습니다. 동그라미를 몇개 만들어서

투명판으로 눌러버립니다. 왜 투명판으로 누를까요? 보면서 눌러야 하기 때문이죠.

누르면서 디테일하게 세밀한 힘조절을 합니다.

눈의 요소를 하나하나 잘라서 합칠 수도 있지만

저 개발자는 다 만들고서 자르는 선택을 합니다. 선택지가 있는 것이며

저 개발자의 다른 영상들을 보면 그 선택은 매번 조금씩 달라집니다.

토끼같은 귀를 제작할때도 어떤때는 덩어리 3개를 이어붙이고

어떤때는 덩어리 2개에다가 색면을 돌려 붙입니다.


저 개발자의 영상에는 4년전 만든 같은 캐릭터와 지금 만든 캐릭터를

비교해서 보여주는 영상이 있습니다. 어마어마하게 많이 만드는 다작 경험을

하고 있는 분입니다. 결과물의 퀄리티가 점점 향상되고 있네요.

그리고 또 느껴지는 것이 없나요? 바로 경제성입니다.

저 분은 무수한 클레이경험을 통하여

"시간과 노력을 덜 들이면서 더 높은 확율로 항상 높은 재현율의 성공방법"을

깨우치고 있다는 점입니다. 한마디로 경제성.


코딩의 성장단계도 마찬가지입니다.

레벨1) 기능별로 어떻게 만드는지를 배운다.

레벨2) 어떤 점이 힘들고 어떤 점이 쉬운지를 알게 된다.

레벨3) 경제성을 따져가며 구현하는 긴 훈련과정을 거친다.

레벨4) 자기에 맞는 도구를 찾거나 만들게 된다.

레벨5) 노가다부분을 컴퓨팅파워를 이용하여 자동화한다.


결과적으로 나의 뇌에 남는 것은 시뮬레이션능력이 될 것입니다.

저 클레이 개발자도 매번 여러가지 실수를 해가면서 하지는 않죠.

자신의 시뮬레이션능력으로 짧은 미래를 내다보면서

손이 움직이는 것입니다. 대체로 실수하지 않게 됩니다.


CPU 1200개 GPU 170개를 사용하여 수년간 기보를 학습시키고

이세돌을 꺾은 구글의 알파고가 근사해 보일지는 모르겠지만

그런건 상용기술이 될 수 없습니다. 경제성이 없기 때문입니다.

클레이를 하루종일 만지거나, 수억원짜리 기계를 만들어 클레이의 색상을

뽑아내면 안되는 것입니다. 경제적으로 만들 수 있어야 합니다.


아래 동영상은 일본 혼다의 아시모입니다.



많은 분들이 과거에 뉴스를 통해 아셨다가 잊어버리셨겠지만.

AI와 로봇공학의 꽃은 아시모였다고 생각합니다. 4차산업이라는 말이 나오기도 전이죠.

그러나 현재 아시모는 개발이 중단되었습니다.

아시모개발의 경제성 없음을 결국 못견딘거죠. 결국 알파고도 중단될 것입니다.


요즘은 어떤 로봇을 만드는지 아시나요?

꼭 인간형태의 휴머노이드를 만들지는 않고 4족 보행, 바퀴혼용식 보행.

꼭 머리가 있어야 하는 것도 아니고 팔만 있거나 인간의 몸에 부착하는 등

힘든 인간형태를 고집하지 않습니다. 왜? 경제성 때문에.

제가 위에서 정리한 성장단계에서 레벨2인

"어떤 점이 힘들고 어떤 점이 쉬운지"를 알아서 레벨3인

"경제성을 따지면서 구현하는" 단계로 넘어가고 있죠.


경제성을 따질때는 사람(인건비)도 그 계산에 넣어야 합니다.

아니 개, 곤충, 단순한 도구들도 그 계산에 다 넣어야죠.

내가 만드는 SW가 사람을 위한 것이니 내 SW앞에는

항상 사람이 있다는 겁니다. 그럼 사람을 이용하여

쉽게 넘어갈 수 있는 문제는 그렇게 해야죠.


그런데 이 경제성이라는 것이 사람마다 받아들이는 것이 다르고

추구하는 것이 다르며, 기업의 규모와 사풍에 따라 다릅니다.

명품을 만들 것인가? 기성품을 만들 것인가? 이런 다양한 척도가

SW개발에 영향을 끼치게 됩니다. 그래서 뭐다? 정답이 천차만별.


그러나 한번 도의 경지에 올라간 분의 뇌에 남은

시뮬레이션 능력은 다양한 생산과정에 응용될 수 있습니다.

재료가 클레이가 아니라 돌이거나 나무거나 시멘트거나.

만드는 결과물이 작거나 크거나에 약간의 영향은 있겠지만

결국 훨씬 빨리 최고점에 도달하게 됩니다.


그래서 뛰어난 프로그래머에게도 언어의 타입같은 것은

큰 영향이 없습니다. 특히 요즘 대부분의 코딩언어들은

매커니즘이 너무 유사하고 도구의 스펙이 서로 빼낀 것처럼

비슷합니다. 그래서 언어와 자신을 분리하고 이성과 감정을 분리하고

자기 언어와 개발환경도 비판할 줄 알아야 합니다. 수용도 하구요.


남들이 이룩해 놓은 방법과 이론에 주눅들지 마세요.

모든 것들이 장단점이 있습니다. 냉철하게 경제성을 따지는 레벨이 되면

시시한 것들이 많습니다. 대신 자신의 뇌를 발달하기 위한 훈련과정을

꾸준히 반복해야 합니다. 훈련만이 기술자를 경지에 올라가게 합니다.

외국의 유명한 기술들은 굳이 내가 찾아다니지 않아도

내 성장과정속에서 필연적으로 만나는 때가 있습니다.

내가 필요해서 그것을 만나고 배울 때 스펀지처럼 흡수할 수 있습니다.


끝으로 위 성장단계를 좀 더 코딩스럽게 부연설명하는 것으로 글을 마칩니다.


레벨1) 기능별로 어떻게 만드는지를 배운다.

 - 통신을 하는 것은 결국 소켓사용법을 배우는 것이고.

 - 파일은 스트림이라는 방식으로 제공되네.


레벨2) 어떤 점이 힘들고 어떤 점이 쉬운지를 알게 된다.

 - TCP소켓은 패킷이 잘라져서 도달하니 붙이는 과정이 필요.

 - UDP소켓은 패킷은 붙여오나 패킷자체가 사라져 버리기도 하네.

 - 파일은 HDD, SSD에 따라 SEEK속도가 크게 차이가 나네.

 - 파일을 통으로 메모리에 다 올리지 못하는 동영상플레이같은 상황도 있구나.


레벨3) 경제성을 따져가며 구현하는 긴 훈련과정을 거친다.

 - 항상 포인터처리는 실수를 유발하네. 객체화/상속하는 것이 좋을까?

 - 내가 뭔가 만들어 놓아도 외부기술과 연동하면 모든 질서를 확립할 수는 없네.

 - 프로그램을 2개, 3개로 쪼개어 놓으면 재사용성이 늘어날까?


레벨4) 자기에 맞는 도구를 찾거나 만들게 된다.

 - 매번 만들어야 하는 테스트도구는 라이브러리화하자.

 - 텍스트 리소스로 구성된 리소스를 관리하는 에디터를 만들어 쓰자.

 - 항상 사용하는 상용툴 몇개 정도는 구매해 두고 써야겠다.


레벨5) 노가다부분을 컴퓨팅파워를 이용하여 자동화한다.

 - 병합과정이 너무 힘들다. 머징툴을 만들자.

 - 리소스검증이 너무 힘들다. 빌드툴을 만들자.

 - 코드리뷰가 너무 힘들다. 리뷰툴을 만들자.

 - 기획자와의 소통이 너무 힘들다. 기획자에게 AI툴을 만들어 주자.


-1
1
  • 댓글 12

  • fender
    21k
    2020-12-18 06:03:34 작성 2020-12-18 06:24:12 수정됨
    CPU 1200개 GPU 170개를 사용하여 수년간 기보를 학습시키고
    이세돌을 꺾은 구글의 알파고가 근사해 보일지는 모르겠지만
    그런건 상용기술이 될 수 없습니다. 경제성이 없기 때문입니다.

    알파고의 기보 학습에 수 년이 걸리지도 않았고, 요즘은 프로 바둑 기사들이 개인 PC에 알파고 같은 인공지능을 '사부'로 모시고 공부하는 시대이고, 요새 나오는 상업적으로 성공한 소프트웨어 제품 상당 수는 인공지능을 적극 채용하고 있습니다.

    언제나 그렇지만 내가 해본 것만 최고이고, 잘 모르는 건 무조건 쓸데없는 걸로 취급하면서 공부는 절대 안 하니 저런 얼토당토 않은 주장을 하게 되는 겁니다.

  • 밀수나라
    1k
    2020-12-18 08:28:35

    본인이 한거를 자랑하는건 좋은데, 남이한걸 깎아내리진 마세요.


    그리고 머신러닝이나  AI가 단순히 사업성 따져서 진행하는 일이 아닙니다.

    구글이 돈 없어서 얼마후에 종료하겠습니까?


    종료할순 있겠죠. 알파고보다 엄청더 뛰어난 기술이 나왔을때요.

  • ercnam
    6k
    2020-12-18 10:08:30

    이분 논리대로면 컴퓨터 사이언스는 에니악에서 진작에 끝났어야 했는데 이상하군요..

    여기는 이세계였던 것인가..?

  • 꽃중년보넥스
    -1k
    2020-12-18 10:19:14

    그래서 구글에서 접힌 사업이 아무것도 없습니까? ㅎ

    알파고는 구글의 기술력홍보용이죠. 텐서플로라든지.

    더이상의 목표는 없습니다. 교훈도 없어요.


    -2
  • 아오리사과
    971
    2020-12-18 10:35:06

    잘은 모르지만 국회의원개발자님은

    이미 어느정도 수준에 올라가신 거 같습니다.

    자신만의 확고한 철학이 있으시니

    여기보다는 좀 더 큰물인 유튜버를 추천드립니다.

    거기서는 남이 머라든 자기 채널이기에 

    자기이야기를 하고, 그 이야기를 들어주는 사람이

    모입니다.


  • sjwsne
    61
    2020-12-18 10:36:39

    레벨5라고 말씀하신 내용에서 카이스트 석사출신 공익이 사무자동화 툴을 개발한 것이 떠올랐네요. 

  • fender
    21k
    2020-12-18 10:37:57 작성 2020-12-18 10:41:10 수정됨
    The deep learning market was worth USD 2.28 Billion in 2017 and is expected to reach USD 18.16 Billion by 2023, at a CAGR of 41.7% from 2018 to 2023. The base year considered for this study is 2017, and the forecast period is from 2018 to 2023.

    (출처)

    나 혼자 눈감고 귀막는다고 내가 보기 싫어하고 듣기 싫어하는 것들이 사라지는 것이 아닙니다. 딥 러닝이 가져온 혁신은 이미 현실이고, 그걸 혼자 부정하면 딥러닝이 사라지는 것이 아니라 본인이 이렇게 되는 겁니다:


  • fender
    21k
    2020-12-18 10:53:16 작성 2020-12-18 11:02:09 수정됨

    여담이지만 저는 오히려 딥러닝 분야에 관심이 없고 별로 배우고 싶지 않았는데 일이든 취미든 발 담근 분야에서 빠른 속도로 딥러닝 관련 내용이 늘어나는 것을 보고 어쩔 수 없이 틈틈이 공부하고 있습니다.

    회사에서도 다른 팀이 관련 프로젝트를 하는 중이지만, 제가 취미로 하는 3D 디자인 및 게임 관련 쪽에도 벌써 체감이 될 정도로 딥러닝이 입지를 넓히고 있습니다.

    제가 다루는 3D 저작 도구인 블렌더만 해도 얼마전 부터 딥러닝 기반으로 노이즈를 제거해서 렌더링 시간을 획기적으로 줄이는 기능이 탑재되어 매우 유용하게 쓰는 중입니다.

    그리고 이젠 사진 한 장만 있으면 3D 캐릭터를 자동으로 만드는 기술이 나왔고, 과거엔 걷는 애니메이션 하나만 해도 방향이나 장애물 여부 등에 따라 상당한 삽질을 해야 그나마 볼만한 모양이 나왔지만 이젠 딥러닝으로 어떤 지형이라도 사람처럼 자연스럽게 움직이는 것이 가능합니다.

    하다못해 얼마전부터 딥러닝을 이용한 텍스쳐 업스케일링 기술덕에 게임 모딩 커뮤니티 마다 사용자들이 직접 HD 텍스쳐 팩을 만들어 배포하는 게 유행하기도 했습니다.

    딥러닝의 특성상 데이터를 분석하거나 추천 목록을 만드는 등 서버측의 적용을 떠나서 저렇게 엔드 유저 프로그램이나 게임 등에도 사용되기 시작되었다는 건 이미 해당 기술이 보편적인 추세가 되었다는 걸 뜻합니다.

  • 꽃중년보넥스
    -1k
    2020-12-18 11:59:33

    좋은 파워유저로 성장하셨네요~ㅎ

    인제 돈쓰는 일만 남았네요^^


    남의 기술, 헛점은 감싸주고

    찬란한 마케팅포인트만 전파해봤자

    돈이 될 일은 없을터인데.. ㅎ


    그 뛰어난 머리로 왜 내가 구글을 한번

    박살내보자라는 결론은 못내는거죠?

    쫄았..? ㅎㅎ (농담)

    -1
  • rezigrene
    1k
    2020-12-18 12:10:31
    아시모나 알파고나 기업차원에서 1,2,3 단계연습을 하는것인데 그걸 부정적인 예시로들어버리시면 연습은 시작조차않는게 경제적이다가 되어버리지 않습니까..

    차라리 예시 안드셨으면 그럭저럭 괜찮은글이 되었을듯 하네요.
  • 꽃중년보넥스
    -1k
    2020-12-18 12:18:14

    이글은 초심자의 코딩능력에 대한 이해를

    위한 글입니다^^ 좀 옆길로 샛지만..ㅎ

    항상 경제성을 생각해야 한다는 취지입니다^^


    알파고가 어떤 방식으로 학습한다고 해서

    그것과 인간의 학습이 상관관계가 있는 것은

    아니죠~^^


    컴퓨터는 동기라는게 없지만

    인간은 동기에 의해서 움직이는 기계입니다.

    알파고로부터 인간이 딱히 배울점은 없음.


    그리고 구글은 친구가 아닙니다.

    구글은 적입니다..

    우리가 격파해야 할 대상.

    -1
  • 스텁
    2k
    2020-12-20 18:22:25

    보넥스님의 관점에는 많은 부분 동의 하지 않습니다만


    꾸준히 맨땅에 헤딩하시는것은 추천 드립니다 ㅎ

  • 로그인을 하시면 댓글을 등록할 수 있습니다.