자바 여기서는 왜 웹땔감 앱뗄감으로 불리는지 모르겠는데
외국에서는 자바 하나 잘하면 스페셜리스트로 취급받아... 아마 국비지원+ 부트캠프 때문에 그런거같은데 ..ㅋㅋ
취업생각 안하고 좀 진득하게 전공 지식을 토대로 자바를 공부하고 싶으면 아래와 같은 방법을 추천할게
1) Object Oriented Programming (OOP) + Type Inference
- OOP는 한 마디로 'Abstract Data Type (ADT) + Dynamic Binding'이야
- 문제는 ADT를 이해하려면 타입 추상화 개념을 알아야하는데 그럴려면 프로그래밍언어론 부터 봐야할거야 (데이터 추상화, 함수 추상화, 타입추상화 등등)
- 객체지향 언어의 꽃이 Dynamic Binding인데 상속 관계에서 어떻게 control flow가 dynamic binding이 되는지 분석하는게 매우 중요해
(어떻게 객체지향 언어 기반의 프로그램은 런타임때 끊임없이 확장될 수 있을까? C언어는 객체지향을 흉내낼 수 있긴 한데 런타임때 확장할 수가 없어 그걸 가능케하는게 dynamic binding 이야 그래서 매우 중요해)
- ADT + Dynamic Binding 즉 OOP를 이해했다면 이제 타입 추론을 어떻게 하는지 이해하고 그걸 연습할 필요가 있어 !
2) Object Oriented Analysis & Design
- 앞서 1은 단순 프로그래밍이고 2는 SW 공학관점에서 어떻게 하면 미래에 요구사항이 추가되도 수정이 적은, 다시 말해서 견고한 '구조'의 프로그램을 설계할까 이게 주 초점이야
- 먼저 객체지향 설계 입문 관련 추천 책은 약간 책이 어설프지만 '객체지향의 사실과 오해'가 있고 'K교수의 객체지향이야기'도 내용이 괜찮아
- 대충 객체지향 설계 컨셉을 이해했으면 그 다음은 '이러이러할 때~ 이렇게 설계해라 !" 하는 식으로 탬플릿들이 모여진 '디자인패턴'을 공부할 필요가 있어
- 근데 디자인 패턴을 그냥 암기하면 의미가 없고, 중요한건 이론을 곁들여서 분석할 줄 아는게 중요해 !
- 카테고리 이론이라고 추상대수학의 한 챕터 10쯤에 나오는데 그걸 진득하게 공부하던가 아니면 '프로그래머를 위한 카테고리 이론'이라는 책도 있는데 맛보기로 그 책도 괜찮아
3) 이펙티브 자바 프로그래밍
- 1은 그냥 프로그래밍하는 것이고 2는 효율적인 설계잖아? 이제는 JVM상에서 어떻게 효율적으로 프로그래밍할까야
- 추천 책: 이펙티브 자바 프로그래밍
4) 기타 자바 유틸리티 (메이븐, 깃헙 등등)
- 프로젝트 협업 개발할때 중요해
- 메이븐, 깃헙 내부 동작과정은 대학원 레벨이라서 거기까진 알필요없고 사용법 위주로 익히면 돼
5) 번외: 자바 버젼별 특징, 모던 자바
- 개발자라면 자바 버젼 별 특징을 꼭 익혀둬 !
- 함수지향 이해 못한 상태에서 시중에 나온 모던 자바 책을 먼저 보면 띠용 할거야 ㅋㅋ (다른 언어 파이썬과 다르게 자바는 객체지향언어의 오리지날리티를 최대한 보존한 상태에서 함수지향언어를 지원하려고 억지로 끼워맞추는 문법들이 많아 ㅠ)
- 대신 프로그래밍언어론에서 함수지향 컨셉 부터 이해하고 모던 자바 보면 정말 아무것도 아니야 그래서 하스켈 부터 시작하고 모던 자바를 보면 훨씬 쉬워
그다음 웹할지 앱할지에 맞춰서 공부하면될것같아 !
애초에 이런거까지 찾아서 공부할 정도 애면 언어 상관없이 자리 잡는다고 본다
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
추천 필요 없고 지알아서하긴해
자바로 앱 만드는 거 ㄱㅊ?
고맙다 덕분에 구체적인 방향을 잡았음 오브젝트 코드로 이해하는 객체지향 설계 >> 클린코드 >> 이펙티브자바 로 간닷