:: 게시판
:: 이전 게시판
|
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
10/11/05 08:02
java/c/c++ 을 최상급으로 하는 5년 경력자를 요구하는데 본인이 공부하시는거랑 관계가 있나요? 이해가 되질 않습니다. 경력직군에 신입으로 지원을 하실 생각 이신 건가요?
10/11/05 08:08
C는 임베디드 시스템이나, 시스템 소프트웨어처럼 low level hardware에 가까운 작업이 필요한 곳에서 많이 쓰이는 것 같습니다. C++은 응용 프로그래머의 관점에서 보면, C에서 온 low level에 가까운 요소를 제외하면 열화된 JAVA입니다. 거기에 template을 통한 generic programming을 지원하는 셈인데, template은 컴파일 들어가기 이전에 소스 수준에서, 데이터 타입을 채워 텍스트 레벨에서 코드를 생성한다고 이해하면 간단하기 때문에 며칠씩 걸릴 필요도 없고요.
C++부터 보는 게 맞는 순서 같습니다. C++이 '거의' C의 superset이기도 하고요. 다만 양쪽 다 C에서 온 저수준의 요소들이 이해하기 쉽지 않을 수 있는데요. 그건 거의 문법이 이해 안 되어서가 아니라, 그 문법 뒤에 있는 저수준의 측면을 이해하지 못하셔서일 가능성이 많습니다.. 예컨대.. 고급 언어에서야 int x에 String s를 대입할 수 없죠. 하지만 메모리엔 타입이 없습니다. 단지, ISA의 약간의 도움 + 컴파일러의 도움으로 타입이 있는양 착각할 뿐인데, C는 "족보가 없는" 언어라서, 강제로 (void*)로 캐스팅 했다가 아무 타입이나 다시 캐스팅 해서 그 메모리 내용이 본래 string이 아니라 int였던양 처리해도 허용됩니다. x = (int*)(void*)(char*) (s); 같은 게 이해가 안 되는 건, 정상적인 사람한텐 당연하다고 보는데, 어떻게 문자열이 정수일 수 있겠는지요? 이건 low level을 이해해야 이해가 되는 거 같습니다. 전자과는 보통 RTL 수준에서 하드웨어를 배웁니다. 거기까진 아니라도 ISA 수준의 하드웨어에 대한 추상과 C의 고급 언어 요소(ex. function call, data type, etc)의 관계를 이해해야 합니다. 저는 컴퓨터 구조(헤네시/ 패터슨의 그 책), Computer Systems : A Programmer's Perspective(B&R)이 이런 내용들을 이해하는 데 도움이 많이 되었던 거 같네요. 하드웨어와 소프트웨어의 관계가 일단 이해되면, 문법 자체를 익히는 데는 길어야 2주입니다. 전자를 이해 못 하면, 몇 달, 몇 년을 써도 사실 완전한 이해는 힘들다고 보고요. PS. 뭐든 프로그래밍은 문제 해결 방식의 명세고 이런 부분은 언어에 크게 의존하진 않습니다. C++은 Java처럼 OOP에 가깝게 생각하면 되고, C는 사람이 생래적으로 그렇게 많이 하는 procedural language니 FSM이나 flow chart를 옮기기 가장 좋은 언어이고요. Java와 다르고 어려운 점은 C/C++에만 있는 기괴한 문법 요소들인데, application programmer라도 이런 요소를 부담없이 이해하고 사용하려면, 하드웨어와의 연관성을 이해해야 한다는 게 제 얘기의 핵심이에요.
10/11/05 10:12
문법 자체를 익히는데 길어야 2주라는 건 동의하기 힘드네요. C++은 적어도 1년입니다. 요즘은 Java도 만만치 않고요... C++만 10년 넘게 써온 경력자들도 가상 상속이나 템플릿 특화 등의 문법이 정확히 어떻게 돌아가는지 잘 모르는 사람이 태반인걸요.
10/11/05 08:48
관련 솔루션과 비슷한 프로그램을 하나 만들어보시거나, 관련 오픈소스에 대해 코드 리딩 & 리팩토링을 시도해보시는 것을 추천해봅니다.
10/11/05 09:25
C++ 공부하는것을 추천해드리자면 일단 기본 문법책을 하나 봅니다. 그리고 The C++ Programming Language 라는 책을 봅니다. 그 다음에 Effective 시리즈를 봅니다(Effective C++, More Effective C++, Effective STL) 그리고 STL 책도 좀 보고 템플릿 공부도 하면 좋습니다. 얼마 후에 C++ 0x 라는 차기 문법이 발표될 예정이니 이에 관해 공부도 조금 해놓으면 좋겠고 C++ 라이브러리인 boost 도 공부하면 좋습니다.
10/11/05 10:07
제 생각엔 몇 개월 공부하는 정도로는 저 세 언어의 초보 레벨에서 벗어나기도 어려울 것 같네요. 높은 곳을 바라보고 계신다면 컴퓨터 과학의 기초부터 다시 보시는게 좋습니다.
10/11/05 10:50
최상급이 뭘 의미하는지 모르지만, 일반적으로 받아들여지는 최상급이라는 말을 정말로 요구하는 거라면 간단히 말해 그 회사는 주제를 모르는 거라고 감히 말하겠습니다. 한 가지 언어만 '최상'으로 해도 프로그래머로 얼마나 자유롭게 살 수 있을텐데요.
|