C에 비해서 알고리즘 자체에 집중할 수 있다. Go의 idiom을 배울 수 있다. 작은 사이즈의 실제 production level의 코드를 여러개 만들어보면서 언어 자체를 익힐 수 있다. problem solving을 연습을 통해 job interview나 실제 프로젝트에 활용해 보기 바란다.
- 2가지 장벽
- 익숙하지 않은 프로그래밍 언어
- 개념까지 익혀야 하니
- 2가지 중에 하나가 익숙하면 배우기 쉽다.
- 문제->방법->코드로 전환
- 자세하게 설명하는 경우보다 '이래서 이렇게 되어야 한다'라는 식으로 갈켜줌
- 초보자들이 이해하기 어렵고 대부분 '이렇게 처리해야만 하는구나'라고 생각하고 외우는 경우가 많더라.
- 어떻게 배우거나 익히는 것이 좋을까?
- 알고리즘이나 문제 해결을 위해서는 코드로 해결하기 위해서 사용할 수 있는 패턴이 있다는 생각이 들더라.
- 많이 풀면서 자연스럽게 스스로 깨우치는 것도 좋은 방법이지만 초보자가 흥미를 가질 수 있게 조금은 쉽게 설명해 주는 것이 필요하지 않을까?
- 데이터를 넣고 어떻게 처리되는지는 알겠다.
- 하지만 코드로 표현하기가 어렵다.
- 생각하기
- 가장 간단한 초기 동작
- 다음 동작 설명
- 3번째부터는 반복시킬 수 있는 방법 찾기
- 프로그래밍
- 컴퓨터가 잘 하는 반복 계산 절차 형태로 표현 -> 컴퓨터 수행 가능
- 프로그래밍 언어에서 표현법
- 필요한 저장소
- 어떤 정보가 필요할까?
- 추가로 필요한 정보는?
- 저장소에서 저장하는 방법 (stack or queue, set)
- 저장소에서 꺼내오는 방법 (stack or queue)
- 처리 절차
- 3개 정도 처리하는 과정을 직접 손으로 써보기
- 나누기
- 초기화
- 절차 1
- 절차 2
- 반복을 위해 점프할 위치
- 특정 언어로 자료구조와 알고리즘 마스터 하기
- 새로운 언어로 자료구조와 알고리즘 도전
- 해당 언어의 idiom에 집중
- generic
- collection 구현 참조
- unittest
- benchmark 도구 습득
- Beyond 알고리즘
- concurrency 문제를 여러 언어로 해결해 보기