다음과 같은 질문들을 해 보고 스스로 판단해 보자.
C, C++, 자바이다.
C나 C++ 은 종류도 많다.
그 외의 다른 언어들도 참 많다. 그런데 대표적 언어 3개보다 돈을 많이 벌 수 있을까?
임베디드를 하려면 C, 어셈블리를 당연히 해야 한다.
그리고 C, C++, 자바를 모두 할 줄 알면 금상첨화이다.
그
러
나
우리에겐 시간이 없다.
그
리
고
C나 C++ 로 만드는 임베디드 시스템이나 데스크탑 프로그램은
시간이 엄청 들어간다.
그리고 아이폰으로 장사를 해도 되겠지만, 이제 대세는 안드로이드.
M/S에서 안드로이드가 계속 앞지르고 있다.
왜 그럴까?
구글이 있기 때문이다.
그리고
모바일 앱이 왜 뜨고 있을까?
만들기가 상대적으로 쉽기 때문이다. 그 만큼 뭔가가 잘 되어 있다.
struct someFunction {
int a;
char b;
}
에서 5byte 지정했는데 alignment 고려해서 sizeof 하면 8이 나온다는 것을
자바에서는 몰라도 된다.
1byte alignment 하려고 gcc 옵션을 안 외워도 되고 #pragma pack() 이나
struct __attribute__((packed)) X 등을 안써도 된다.
간단히 말해볼까?
메모리를 생각 안해도 된다.
사실 프로그래머가 메모리를 생각안한다는 말은 우습고,
자바의 VM이 GC를 호출했을 때 메모리를 제대로 반환 시키지도 않는다는
논문도 나와있다.
그러나
구글이 하고 있다. 그 VM은 달빅으로 최적화 되고 있고 사람들이 거기 돈을 쓰기
때문에 점점 좋아 질 수 밖에 없다.
그렇다.
플랫폼을 믿을 수 밖에 없기 때문에
조금 더 고차원적인 프로그램 부분(알고리즘이나 패턴) 에 집중할 수 있기 때문이다.
그리고 H/W 파트 운영체제 파트 등을 한글로 구글 검색을 하지 않는다.
자료가 없으니까.
그래서 이 글을 읽는 당신은 자바를 해야 하는 것이다.
자바를 하다보면
new가 결국 malloc인걸 알게 되고
클레스는 struct의 연장선을 알게 되며
메모리 단편화랑 싸우게 될 것이지만.
일단은 배우기 편하기 때문이다.
그렇게 배우고 나면 다른 언어를 접하기 쉬워지고...
그렇게 다른 언어들도 배우고 나면
결국 CPU와 메모리를 다루는게 전부라는 것을 알게 된다.
그런데 인텔 CPU 메뉴얼도 권수가 꽤 된다.
그런데 인텔 CPU 메뉴얼도 권수가 꽤 된다.
그 경지까지 이르면...
다른 사람들과 함께 개발하고 싶어 진다.
그 때 가장 좋은 언어가 자바이다.
그렇다고 고슬링 아저씨가 보고 싶은 것은 아니다.
프로그램은 수많은 이름없는 사람들에 의해서 발전해 왔으니까.
그리고 그들은 재미 있었을테니까.
프로그래밍의 끝은 재미.
그 재미를 함께 느껴보지 않겠는가?
Java가 좋은 아이였군요 ㅋㅋ
답글삭제