걍 짜증나서 글쓴다. 


이 글은 현대 프로그램 언어와 현대 하드웨어와 현대 os및 프레임 워크에 대한 글이다.


8086이나 atmega같은대서 프로그래밍하는 사람들한테는 안 맞는 이야기다.


학교에서 배우는 것들은 나중에 중요하게 쓰일 '가능성'이 있다. 배운 것중에 평생 안쓰일만한 것도 있고


매일 밥먹듯이 쓸만한 것들도 있다. 그게 어찌됐건 프로그래머는 컴퓨터라는 기계에 대해 잘 알아야하고


버그가 나더라도 메모리 구조에 대해서 모르면 디버깅 자체를 못할 수도 있다. 그러니깐 배우는 것중에 버릴만한건 없다.


1,2학년. 좀 넓게 봐서 3학년까지.


근데 우리가 3,4학년이 되면 ai도 배우고 그래픽스도 배우고 그런다. 근데 수업을 안 들을 수도 있어. 그건 필수가 아니라 선택이야.


한편으로보자면 니가 선택을 안해도 먹고 사는데 지장이 '없을 수'도 있다는거다. 그런게 테크닉들이다.


에니웨이. 이딴 소리를 하자는게 아니고.


너가 회사를 갔다. 그러면 어떤 os에서 어떤 개발툴을 가지고 어떤 언어로 할꺼다. 그게 생선 처음보는 os일지도 모르고


개발툴일지도 모르고 언어일지도 모른다. 여기서 또 갈라진다. lisp같은 algol 계열이 아닌 언어는 또 빠진다.


어찌됐건 그런 어떤 일을 하더라도 공통되는게 있다. 그중에 수학은 없다. 수학은 있을 수도 없을 수도 있는거다. 니가 고민할 문제가 아니다.


그리고 sort같은 것도 뺀다. 그런거 언어가 다 해준다. 


결과적으로 현대 프로그래밍은 모듈을 가져가다 붙이는 걸로 귀결된다. 즉 api를 쓰는거다. 그게 os에 빌트인 되있는거든 boost같이 가져다


쓰는거든 마찬가지다. 그러면 이런 모듈을 다루는 방법은 무엇인가? 그렇다 디자인 패턴이다.. 그리고 그를 이용한 설계.


본인이 프로그래밍을 짜고 유지 관리하면서 제일 중요하게 여기는건 얼마나 빨리 돌아가냐가 아니다. 그냥 데드라인 안에만 돌아가면 된다.


즉 빠르면 빠를수록 좋지만 일정 데드라인안에만 작동하면 ok라는거다. 왜냐? 업무도 데드라인이 있고 튜닝하고 있을 시간이 별로 없다.


다음에 프로그램이 확장될때(예측 가능한거건 아니건) 크게 뜯어고치지 않도록 잘 모듈레이션을 하고 그를 기반으로 설계를 하느냐가 중요하다.


그리고 이런건 버그도 황당한건 안나게 해주고 디버깅도 쉽게 해준다. 니가 프로그래밍 짜는 시간이 2라면 디버깅 시간은 8이다. 그 8을 2로만


만들어도 넌 신이다. 명심해라. 유능한 프로그래머는 딴게 아니다. 버그 안내고 설계에 맞게 빠르고 정확하게 만들면 된다. 그 기반은 설계다.


너가 c++을 하던지 자바로 웹을 짜던지 안드로이드를 짜던지 뭘하던지 공통되며 누구나 다 고민하는건데 학교에서는 안 가르쳐주는거다.


회사가서 알고리즘 짤것 같아? ms나 구글에 들어가면 할 수 있다. 하지만 딴 곳은 아니야. 너가 정말 근원적인걸 할께 아니면 필요없어.


주어진 거나 잘 익혀라. 그리고 정규식까지 배워두면 노가다도 한방에 끝낼 수 있다. 병신같이 ctrl+c,v하지 말고 정규식이나 배워두자.


까먹지 말아라 넌 컴퓨터 과학자가 아니야. 엔지니어다. 엔지니어는 뭐다? 과학자가 만든 도구를 잘 다루는 사람.