2285
2011-11-24 09:25:52
0
갑자기 언어론적인 이야기로 흐르네요ㅋㅋ;
임베디드 기기는 객체지향이 구현되면서 충분한 성능을 내줄정도로 고성능 시스템이 아니니까 C를 사용하고, 반대로 생각하면 구차니님 말씀대로 C를 써야 제대로된 성능이 보장되니 C를 쓰는 겁니다.
객체지향은 명령형 언어나 절차지향적 모델보다는 좀더 현실적인 모델을 추구해서 객체에게 메시지를 전달하면, 객체는 그 메시지에 적힌 것을 가지고 자기 할일대로 처리하는 형식을 취하죠.(내가 다른 사람에게 말을 걸면, 그 사람이 고유의 대답을 하듯이요)
물론 객체지향의 이런 부분이 과도화 되면 오히려 현실적 모델과 벗어나고, 무엇보다 이런 방식은 프로그램의 수행을 완전히 보장하지 않으며 메시지 전달과정이 복잡해져 느려진다는 단점이 있습니다.
그래서 JAVA나 C#은 객체간 메쏘드 호출을 명령형으로 처리합니다. 명령을 호출하면 그것이 옳게 호출된 것인지, 잘 실행되는지 대기하고 그 결과를 받아요.
(사실 이부분은 현대 객체지향 모델이 적용된 언어들에선 다 비슷합니다만ㅋ;)
이러면 객체지향이 안좋아 보이지만 프로그램이 거대화되고 복잡해지면, 아무리 모듈화를 잘해도 절차지향언어로는 프로그래밍과 유지보수가 매우 어려워지는 단점이 있습니다.(그래도 수행 성능이 보장되기에 주로 OS가 절차형 언어인 C로 만들어집니다)
하지만 객체지향은 각 객체가 느슨하게 구성될 수 있고(강하게도 구성 할 수 있습니다), 따라서 어느 한 부분의 실패가 전체 프로그램에 중대한 에러를 일으키지 않으며, 문제발생에 대해 특정 객체만 수정하면 되니 유지보수도 간단하다는 장점이 있습니다.
아무튼 결론은, 각 언어들은 이러한 여러 개념들을 개성있게 수용하고 있습니다.(어떤 것은 일부만, 어떤 것은 섞어서 등등)
또한 언어별로 유리한 플랫폼(동작환경), 편리한 개발환경의 제공유무등 많은 장단점이 존재합니다.
따라서, 언어보다는 개념을 배우고 필요에 따라 적절한 언어를 선택할 수 있도록 공부하는게 제일 좋습니다.
C++은 애드온에 애드온을 거치면서 상당히 많은 프로그래밍적 기법과 개념들이 들어있는 언어이니 제대로 배우면 이런 기반에 많은 도움을 줄 수 있을겁니다.(대신 좀 어렵죠;)