이더리움 개발을 공부하기 위하여 파이썬에 관심을 가지는 땡글인이 늘어나고 있습니다.
당장 개발자로 참여하지는 못해도 나중이라도 기회를 가지기 위해서 또는 이더리움 개발이 아니라 취미나 관심 분야, 아니면 노후를 위해서 개발을 공부하려는 분들이 상당이 있는 것으로 알고 있습니다. 그런 분들을 위해서 자신의 목표 분야에 맞도록 어떤 언어를 공부해야할지 조언을 드리고자 이 글을 쓰게 되었습니다.
가상화폐 개발자라는 거창한 전제가 아니라 자신의 목표에 맞는 개발 공부 방안이 목표이고 그 중에 가상화폐(특히 이더리움)도 있는 셈입니다.
# 목표에 따른 구분
1. 업무 또는 먹고 살기 위해서(노후 대책)
2. 취미 또는 관심 분야(가상화폐)
앞에서 언급한 바와 같이 일단 목표 계획을 세워 봅시다. 어떤 분은 취미 또는 관심 분야가 있는데 이를 위해 개발 공부가 필요하신 분도 계실 것이고, 직장 상사(회사)가 강제적으로 권유하거나 먹고 살기 위해서 유망해 보이는 개발 공부가 필요하신 분도 계실 것입니다. 어쨌든 목표에 따른 구분을 위와 같이 2가지로 나누어 보았습니다. 노후 대책을 포함하여 경제적인 이유 때문이거나 아니면 관심이나 취미 때문에 개인 학습을 하는 경우로 나눠 볼 수 있습니다.
경제적인 이유라면 아무래도 다른 언어를 공부해본 경험이 있는 경험자일 가능성이 높다고 봅니다. 그나마 잘하는 것이 개발이다라고 말하는 분은 의외로 적습니다. 왜냐고요? 개발에 매력을 느끼는 분은 많지만 실제 개발은 중노동에 가까울 정도로 오랫동안 한 자리에 앉아서 몰두해야하기 때문에 성취감을 얻을 수는 있지만 건강이나 사회활동 측면에서는 최악이라고 봅니다.
이와 같이 직업인 측면에서 개발자는 경제적인 이유 때문이 아니라면 권하고 싶지 않습니다. 다만 개발이 아니라면 자신의 목표를 달성하기가 어렵거나 불가능하다면 어떨까요? 다른 대안이 없는 이상(돈을 주고 개발자를 고용하는 것도 어려운 경우가 많습니다) 스스로 개발을 공부하여 목표 달성을 해보는 것이 유일한 방안일 경우에 처한 경우. 이런 경우에 당신이 놓여져있지 않나요?
이더리움 개발에 관심을 가지고 있는데 어디 물어볼 데도 없고 결국 스스로 개발을 공부해야한다는 생각을 가지게 된 경우가 이런 상황이라고 봅니다. 전세계적으로도 부족한 이더리움 개발자, 한국에서도 손에 꼽을 정도이니 스스로 1세대라고 자처하고 개발을 공부하기 시작한 분이 땡글에도 몇 분 계신 것으로 압니다.
그래도 다른 분야에서 개발을 경험해본 분은 적응하기 쉬울 수 있습니다. 파이썬이나 GO가 생소하다고해도 기본적으로 알고리즘이란 것을 재활용할 수 있기 때문입니다. a = 1 이것이 의미하는 것을 이해하고 있는 것과 아예 무엇인지 모르는 분의 출발점은 다를 수 있습니다. 하지만 지속적인 학습이 이루어진다는 전제 하에 목적지는 같다고 생각합니다. 개발 경험자라고해도 부족한 부분이 있습니다. 그러하니 출발점이 다르다고해도 미리 포기하지 마시고 꾸준히 노력하시기 바랍니다.
# 분야에 따른 학습 방안
1. 응용 프로그램 개발
- C/C++나 Java, 파이썬과 같이 다목적으로 사용할 수 있는 언어 학습
- 프레임워크 학습
2. 모바일 개발
- Unity 엔진 프로그래밍과 C# 또는 자바스크립트 학습
3. 웹 개발
- Node.js와 같이 자바스크립트 또는 PHP와 같이 웹 개발에 특화된 언어 학습
- SQL 학습(MySQL, Oracle, SQL Server, PostgreSQL, MongoDB 등)
4. 가상화폐 개발
- 비트코인 소스인 C++ 학습과 크로스플랫폼 UI 개발을 위한 QT 프레임워크 학습
- 이더리움 개발을 위한 파이썬, GO 학습
5. 서버/네트워크 개발
- C/C++나 Java 학습
- http나 소켓 프로그래밍 학습
- 보안, 인증 기술 학습
분야에 따른 학습 방안을 정리하여 보았습니다. 4번의 가상화폐 개발을 좀 더 설명해 보도록 하겠습니다.
비트코인 소스가 오픈되어 있어 가상화폐 개발의 기본이 되고 있는 것은 어느 정도 아실 것입니다. C++란 언어로 작성되어 있습니다. github란 오픈소스 형상관리 사이트에 보관되어 있어 누구나 볼 수 있습니다. 그러나 받아 보시면 이해하기가 쉽지 않습니다. 어느 정도 개발을 경험해본 분도 마찬가지입니다. 그래도 새로 가상화폐를 만들기 위해서는 들여다 봐야겠죠?
비트코인 소스 중 핵심 코드는 다른 가상화폐에서도 그대로 사용하고 있습니다. 블럭체인 소스는 거의 그대로 활용하고 있다고 볼 수 있습니다. 비트코인 소스와 함께 Peercoin이나 Blackcoin(PoS 용인 경우) 소스를 원본 소스로 많이 활용합니다. 이름만 바꾼 가상화폐의 경우 네이밍과 블럭 타임, 블럭당 생성 코인수 등만 바꾼 경우입니다. 암호화 방식까지 같다면 바꿀 부분이 많지는 않습니다. (실제로 제가 바꿔보았는데 소스 외에 출력 메시지 등에서도 바꿀 부분이 꽤 있어서 아주 적다고 볼 수는 없더군요.)
그런데 비트코인 소스만 들여다보면 안됩니다. QT라는 프레임워크를 알아야합니다. QT는 윈도우와 Mac과 같이 멀티플랫폼을 위한 GUI 프레임워크입니다. 쉽게 말해서 OS별로 눈에 보이고 동작하는 껍데기(버튼이나 창과 같은 GUI)를 각각 따로 만들지 않고 하나만 만들어서 공통적으로 사용하기 위한 툴입니다.
위는 가상화폐 개발의 경우이고 나는 이더리움 개발에 관심이 있어. 그런 분들이 많을 것입니다. 그래서 추천을 받은 것이 파이썬이라는 언어이죠. 파이썬 말고 GO라는 언어도 있는데 교재도 적고해서 파이썬을 많이 추천합니다. 파이썬은 1990년 귀도 반 로섬이란 사람이 만든 컴퓨터 언어입니다. 특징이 인터프리터 언어라는 것인데 인터프리터는 명령어를 한줄씩 입력해서 컴퓨터와 대화하듯이 주고 받을 수 있는 방식입니다.
BASIC이라는 컴퓨터 언어가 있는데 이 언어가 인터프리터 방식입니다. 물론 대화 형식으로만 사용할 수 있는 것이 아니라 실행 파일도 만들 수 있습니다.
파이썬의 학습 방안에서 제가 추천했던 사이트 중에 인터프리터 방식으로 학습하는 사이트도 있었는데 파이썬을 직접 학습해보니 처음부터 텍스트 에디터에 입력해서 실행하는 습관을 들이는게 더 낫다는 생각이 듭니다. 어차피 개발에 사용하려면 텍스트 에디터나 통합개발환경(IDE)을 이용할테니까요.
제 경우 텍스트 에디터로 'Notepad++'를 선택했습니다.
교재는 '점프 투 파이썬'이란 책을 선택했습니다. https://wikidocs.net/book/1 에 가보시면 무료로 공개도 되어 있고 18,800원에 제본책으로도 팔고 있습니다. 다른 파이썬 책들이 2만원 이상, 비싸면 3만원을 넘는데 기초 학습 단계에서 많은 분량보다는 한달 이내에 학습을 완료할 수 있는 과정이 더 낫다고 봅니다.
위 교재에 따르면 처음 컴퓨터 언어를 학습하시는 분은 30일 과정을, 다른 언어를 아실 경우 20일 과정을 제시하고 있습니다. 저는 C/C++을 알고 있기 때문에 20일 과정을 기준으로하면 될 듯 합니다. 그런데 사실 문법적인 차이를 중심으로하면 1주일 이내에도 학습을 끝낼 수 있습니다. 어렵다는 어떠한 언어라도 1주일 이내에 기본 문법을 학습할 수가 있습니다. 이건 a = 1이라는 의미를 알고 있는지 또 알고리즘에 대하여 알고 있는지에 대한 개인 차이가 크게 작용합니다.
실제 코딩을 하면서 차이와 활용방안을 알아가는 과정이 더 필요하지만 말입니다.
파이썬이 학습이 비교적 쉬운 편이기 때문에 어떤 교재나 온라인 사이트를 이용해도 상관이 없습니다. 다만 파이썬 커뮤니티를 살펴봐도 괜찮은 곳이 아직 없는 것이 현실입니다. 서로간에 물어보면서 해결할 수밖에 없을듯 합니다.
각 분야별로 정리한 언어나 프레임워크는 현재 가장 각광 받고 있는(대세) 것들이니 학습하실 때 참조하시면 됩니다.
자신의 학습 방안이나 목표, 그리고 과정을 이곳 개발자란에 쓰시면 학습 성취에 도움이 되지 않을까하는 생각이 드네요.
MongoDB는 NoSQL쪽이지만 참조를 위하여 추가하였습니다.