1. 언어는 수단에 불과함. 보통 머리여도 한가지 언어 파서 년 단위 이상 열심히 프로젝트 하면 확실히 언어실력은 올라감. 결국 두세개 이내로 파서 열심히...


2. 결국 언어로 무엇을 구현하냐의 문제인데 이걸 위해서 각종 알고리즘, 컴퓨터 전공수업 등을 들음.


3. 언어의 역사는 갈수록 유저편의성을 추구하고 있으며 현재는 게임과 같이 제한된 컴퓨팅 자원 내에서 엄청난 실시간 데이터 처리가 필요한 영역이 아니면 퍼포먼스보다는 알고리즘을 얼마나 쉽고 짧은 프로그램 시간 하에 만들 수 있느냐가 중요


4. 그걸 위해서 많은 언어들이 객체지향성을 취함


5. 자료구조는 연산 알고리즘이 아닌 대부분의 프로그램이 구현되는 곳에 있어서 필수적 학습 사항. 결국 어려운 연산을 하기보다는 자료구조의 습관화를 통해서 데이터량과 연산량, 입출력 등을 어떻게 관리하느냐가 프로그램을 만드는 데에 있어서 중요.


6. C++ STL은 항상 최고의 퍼포먼스를 보장하지는 않으나 일반적으로 문제가 없고 안정적이며 게임과 같은 극한 성능이 요구되는 상황이 아니면 거의 최적의 답에 가까움


7. STL의 많은 명령어들은 첫째는 위에서 쓴 자료구조에서 배우는 여러 데이터베이스를 다루거나 관련 알고리즘을 표준화하여 사용하는데에 큰 초점을 맞춰두고 있음. 그래서 결국 자료구조의 습관화에는 STL을 자유자재로 다루는 것이 요구됨.


8. 결국 서러브레드 프로그래머의 길은 거의 모든 진로가 자료구조가 프로그래밍 그만 둘 때까지 쫓아다님.



사실 나는 프로그래머가 아니라서 MATLAB, C 위주로 함.. C는 임베디드 코드 간단한 거 수정할 때 써서 쓰는거고 거의 MATLAB만 씀.


추가 질문이 있다.


http://ocw.mit.edu/courses/find-by-topic/#cat=engineering&subcat=computerscience


MIT 학부 오픈코스 중에 동영상 제공되는거 목록인데 이중에 비전공자가 들을만한거 목록좀


6.00SCIntroduction to Computer Science and ProgrammingUndergraduate
6.00Introduction to Computer Science and ProgrammingUndergraduate
6.01SCIntroduction to Electrical Engineering and Computer Science IUndergraduate
6.001Structure and Interpretation of Computer ProgramsUndergraduate
6.006Introduction to AlgorithmsUndergraduate
6.02Introduction to EECS II: Digital Communication SystemsUndergraduate
6.033Computer System EngineeringUndergraduate
6.034Artificial IntelligenceUndergraduate
6.035Computer Language Engineering (SMA 5502)Undergraduate
6.042JMathematics for Computer ScienceUndergraduate
6.046JIntroduction to Algorithms (SMA 5503)Undergraduate
6.050JInformation and EntropyUndergraduate
6.172Performance Engineering of Software SystemsUndergraduate
6.189Multicore Programming PrimerUndergraduate
6.370The Battlecode Programming CompetitionUndergraduate
18.S997Introduction To MATLAB ProgrammingUndergraduate
CMS.611JCreating Video GamesUndergraduate