객체지향... 필요한가?
| 먼저 글을 읽고 계신 분이 C언어로 프로그래밍을 하시나요? 그러면 질문이 있습니다. "static 함수를 사용하시나요? 또 static 함수의 용도를 아시나요?" "static 변수가 아닙니다." 사용하고 계시고 정확한 용도를 알고 계시면 C언어로도 객체지향 프로그래밍을 하고 계시는 것일 겁니다. 이 질문에 갸우뚱하시는 분이 계시나요? 그럼 이야기를 시작해보죠. |
- 객체지향 프로그래밍
- 객체지향 프로그래밍 언어사용
| 절차지향도 훌륭한데, 왜 객체지향인가? by 써니 구조적 프로그래밍 혹은 절차지향적 프로그래밍이라고도 말하는 C언어를 학습하시거나, 현장에서 C언어를 이용해서 개발하시는 분들과 대화를 나누다 보면 굳이 객체와 클래스라는 생소하고 어색한(?) 개념을 도입해서 개발해야 하는지 그 필요성을 잘 느끼지 못한다고 하십니다. 저 또한 베이식 - 베이직 보다 베이식이 정확한 발음이더군요 - 그리고, C언어를 먼저 학습한 사람이기 때문에 어느 정도 공감하고 있습니다. 단순한 프로그램을 개발하건, 복잡한 프로그램을 개발하건 구조적 프로그래밍이건 객체지향 프로그래밍 기법을 사용하건 어떠한 문제를 풀던 간에 눈에 보이는 결과 자체로는 차이점을 발견할 수 없습니다. 그러니까, C언어로 윈도우 어플리케이션을 만들어도 잘 동작하고, C#으로 만들어도 잘 동작합니다. 여전히 대부분의 운영체제는 C언어로 개발되고 있고, 전세계에서 운영되고 있는 수많은 제품들과 정보시스템들이 여전히 C언어로 구현 및 유지보수 되고 있습니다. 여전히 수많은 금융기관에서는 코볼로 작성된 프로그램들을 사용하고 있고, 게다가 아주 성공적으로 운영되고 있습니다. |
'소프트웨어이야기' 카테고리의 다른 글
| 소프트웨어 공학이 왜 필요하지? 복잡하기만 한데... (11) | 2008/12/11 |
|---|---|
| 티스토리 독립도메인으로 이동 전과정 정리 (7) | 2008/12/10 |
| 객체지향... 필요한가? (14) | 2008/11/26 |
| 개발자 폭행사건을 바라보는 심경 (8) | 2008/11/03 |
| 프로젝트 산출물을 프로젝트 종료 후에 만들고 있나요? (8) | 2008/11/03 |
| 소프트웨어 회사의 개발 역량 평가표 (4) | 2008/10/29 |
-
2008/12/18 14:17객체지향 (Object-Oriented)에 대하여 Tracked from Critical Thoughts
-
2010/07/28 11:58[소프트웨어공학] 객체지향이란? 객체지향 정리 (OO - Object Oriented Summary) Tracked from 월풍도원(月風道院) - Delight on the Simple Life.













좋은 포스트 감사합니다. ^^ 제가 VB를 처음 접하던 95년도에 고민했었던 문제네요. 복학하고 파워빌더와 델파이를 하면서 OOP의 완성이 되는 듯 하였으나 역시 C언에 익숙했던 터라 static, global, public 이런 데이터 타입에 유혹을 많이 받게 되죠. 제가 고정관념처럼 갖고 있는 개념 중에 하나가 "프로세스의 부품화"였습니다. Bottom-Up방식의 프로그램에서 아주 중요한 개념이지만 지적하신 것처럼 대규모 프로젝트에선 여러가지 어려움이 내재되어 있는건 분명해 보입니다. 다만 요즘 화두가 되고 있는 웹2.0처럼 프로그래밍에도 표준이 생겨난다면 100%는 아니여도 최대한 OOP구현에 가깝게 프로젝트를 수행할 수 있지 않을까 생각이 드네요.
ZIBSIN님 안녕하세요.
뭐가 됐든 맹신은 위험한 것 같습니다. 그리고 원리는 하나로 통하는 것 같습니다. 요술방망이 찾지 말고 두루 많은 경험을 하는 것이 좋은 것 같습니다.
전 C보다는 C++을 먼저 배워서 일단은 사용하는데 많은 어려움은 없더라구요..
펌웨어를 짜다보면 C를 많이 사용하는데, 객체지향적 관점에서 보면 뭔가 많이 조잡하달까.. -_-;;
객체지향적으로 프로그램을 짜다보면 어느정도 코드가 안정되고 정리된 느낌이 들더라구요..
하지만, 드라이버들은 아직은 C로 짜는게 더 나은 경우가 있더라는.. ^^;;
절차적이든 객체지향적이든.. 그때그때 상황에 맞춰서 사용하는게 가장 좋은게 아닐런가 싶네요.. 무언가 댓글이 좀 정신없어서 죄송합니다.. ㅠㅠ
kkommy님 안녕하세요.
펌웨어나 Device Driver등을 만들 때는 일반적인 소프트웨어 개발 이론이 적용되지 않고 특수한 환경이죠. 보통 크기도 크지 않고 속도가 중요하고 안정성도 중요하고 또, C++컴파일러를 지원하지 않는 환경도 있습니다. kkommy님 말씀이 정확하네요. 그 상황에 맞는 가장 좋은 방법을 찾는 것이 중요합니다.
객체지향을 쓰는 개발자의 역량이 참 중요한것 같습니다. 가끔 자바로 되어 있는 프로그램에 무수히 존재하는 if-else, 몇만 라인을 초과하는 클래스 등 전혀 객체지향적으로 되어있지 않은 경우도 많은 것 같습니다. 먼저 객체지향적 개념을 코드에 자연스럽게 구현할 수 있는 노력이 필요하다고 봅니다.
박연중과장님 안녕하세요.
사실 그렇더군요. 객체지향 언어로 개발을 많이 하지만 제대로 객체지향적으로 설계가 되어서 개발한 것은 많지 않은 것이 현실인 것 같습니다. 박과장님은 블로그 운영하지 않나봐요? 블로그 하나 운영해보심이 어떨까요?
예. 사실 저도 제 개인블로그 하나 오픈하려고 준비중입니다 ^^;
박연중 과장님 Open하면 알려주세요.
저 블로그 개설했습니다. 아직은 많이 썰렁하지만 앞으로 많이 채워나가려구요^^
박연중과장님 안녕하세요.
블로그에 들어가 봤습니다. 앞으로 좋은 정보 많이 교환하죠. 감사합니다.
저도 여러 언어를 하다가 최근 다시 C로 돌아왔는데, 절차지향언어만 할 때보다, 객체지향 언어를 하고 나서 다시 쓰다보니 각각의 장단점이 확실히 느껴지는 것 같습니다. 뭐 언어야 도구일 뿐이지만, C언어를 10년이상 썼어도 적당한 곳에 static도 안 써주고, 함수 하나가 몇백라인으로 그냥 두는 사람도 있더군요.
BAGE님 안녕하세요.
저도 C언어를 가장 좋아합니다. 사실 C언어로 못할 건 없죠. 성능은 좋지만 어려운 언어 중 하나고 요즘은 과거와 달라서 C언어 외에도 선택할게 많은 것 같습니다.
"사용하고 계시고 정확한 용도를 알고 계시면 C언어로도 객체지향 프로그래밍을 하고 계시는 것일 겁니다."
이 말씀이 얼마나 반가운지 모르겠습니다.
객체지향이라고 하면 흔히, 클래스와 오브젝트부터 얘기를 하는데요,
C의 한 모듈이 Global로 구분된 Interface함수군을 갖춘다면, 앨런케이가 말한 '작은 소프트웨어 컴퓨터'로서 손색이 없다고 생각합니다.
안녕하세요. 강경진님
객체지향에 대해서 진정으로 이해를 하고 계시는 군요. ^^