Python 배운 상태에서 C언어 배우면 Python 까먹고
C언어 배운 상태에서 Java 배우면 C언어 까먹잖아
왜 그런 현상이 발생하냐면 모든 언어들을 아우를 수 있는 이론적 기초가 없어서 그럼.
그 이론적 기초 역할하는게 C언어임.
그러니까 자바하는 애들은 자바가 무슨 디즈니 월드 환상의 세계인 것처럼 신격화하고 객체지향언어가 새로운 기술이라고 떠들어대는데
다 헛소리이고 C언어에서 진짜 아주 살짝 기술 추가한게 자바임. C언어로 얼마든지 객체지향 언어 흉내낼수있고 대부분의 커널코드는 그렇게 짜져있음
문제는 그 기초인 C언어는 대학교전공 과정 중에 4학년 쯤 되어야 어느정도 이해할 수 있단거고
그래서 대부분 중간에 그만두고
이상한 변명이나 찾지
진짜 뭐든 기초를 우직하게 끝까지 하는 애들은 극히 드뭄. 다 중간에 그만두는 애들이 태반이고 그런애들은 꼭 이상한 헛소리함.
근데 딱히 강조할 필요는 없는 것 같기도 함.. 어차피 c언어 개발자 할 것도 아니고, 자바에서 지원해주는 문제점을 발견해도 어차피 자바로는 못 뜯어고침... C#이나 C++은 모르겠는데, 객체 참조하는 순간 보내는 애는 & 받는 애는 *로 자동으로 처리가 되는 거라(c++은 그냥 받는 애가 &로 자동 처리) 포인터 연산으로 단축할만한 연산을 찾아도 실질적으로 할 수 있는 것도 없었고, 어차피 최적화를 위한 용도면 굳이 c아니더라도 다른 거 볼 것도 많고(db,보안,스프링,프론트,클라우드,자동화,대규모,알고리즘,cs) okky에서 다른 거 하는게 낫다는 분도 있던데 저런 것때메 할 시간도 없을듯.. 개인적인 생각임
실무목적으로 C언어 개발자 하라고 C언어 하는게 아니라 이론적 기초역할하라고 C언어 하라는거임. 너는 덧셈 뺼셈 배우는 이유가 계산기 되려고 배우는거냐. 아니잖아
근데 그렇게 생각하다 보면 저수준 언어 하시는 분들은 c언어도 고수준이라고 함... 실제로 c언어 짜보면 정적으로 처리하면 compoiler가 뒤로 4바이트씩 처리해주는데 이런 건 실제로 컴퓨터 공학에서는 앞으로 4바이트 이동해줘야됨(즉 c언어 runtime처럼...) 이런식으로, c언어도 사실 보면 윗단인데 그렇게 파고 파다보면 c언어를 왜 이렇게 짰는지 어셈을 봐야되고, 어셈을 보면서 전자공학 까지 뒤져야 되는데 그렇게 안하잖음... 그리고, 저수준일수록 그런 cs적인 excess처리가 중요하겠지만 고수준으로 갈수록 알아서 해주는데, 그리고 실질적으로 c언어 컴파일러랑 자바 컴파일러랑 뜯어보면 내부구조가 다른 경우도 많음.. 둘다 막 공부한지 얼마 안되서 제가 평가할 수준은 아닌데 암튼 그렇게 느꼈음
그래서 그렇게 보다보면 자바 개발자가 cs,전자공학,어셈까지 봐야되는 이상한 현상이 생김.. 그냥 제가 느낀 바일뿐임.. 요즘 막 학은제로 cs공부하고 있는데 실제 c언어보고 교수분들이 고수준 언어라고 하는게 어셈은 잘 모르겠는데 왜 그렇게 느꼈는지는 조금씩 이해가 되는듯
seperation fo concerns. 이건 컴퓨터 구조(architecture) 설계 원칙임. C언어에서 생긴 문제를 컴퓨터 구조 (organization)으로 끌고간다? 디지털회로로? 아날로그회로로? 물리로..? 원자세계로..? 그걸 막기 위해서 잘 추상화되어있음. 이게 seperation fo concern임. 하이레벨의 언어에선 잘 추상화되어있고 그런 언어들을 전체를 아우르는 이론적 기초역할하는 C언어가 그래서 중요한거임. ㅇㅋ?
*separation of concerns
결론은 잘 separation of concerns 되어 있고 추상화되어있으니까 자바개발자는 자바의 모체역할하는 C언어 (즉, 프언론, 컴파일러) 정도만 보면됨. ㅇㅋ?
애매한게 그래서 그런것 같음.. 기초를 이해한다는 수준이 되려면 컴퓨터구조~어셈~c언어~JVM~추상함수 까지 다 끌고와야 되는데 이걸 언제 다 함...
내가 테크트리 알려줌 C, java 공부법
자바:
https://gall.dcinside.com/board/view?id=programming&no=2109287
C언어:
https://gall.dcinside.com/board/view?id=programming&no=2109252
막상 보면 추상함수를 c로 실제로 짜볼 일도 있으니 내부로 이렇게 되어있으니까 라고 생각되서 나은 경우도 존재하는데, 어디까지 해야 되고 어디까지 하지말아야되냐 라는 부분에 되게 애매한듯.. 개인적인 생각임
그게 현실적으로 합당한 소리지 그걸 언제 다하냐고 그래서 내가 유투부에 풀생각임
비전공자/전공자 초점으로 한길만 장인정신으로 우직하게 팔 수 있게 기초 닦을거임
자바의 장점은 가상머신에서 굴러가기때문에 OS 종속성이 없고, 가비지 컬렉션을 가상머신 차원에서 알아서 처리해준다는거지 객체지향만 장점이었으면 C++이 더 대세였을거임
물론 C++은 쓸데없이 자유를 많이 추구해서 ㅈ같음
C++, Java는 완전 언어 설계 목적 자체가 다름. 대세고 뭐고 없음.