객체 지향 프로그래밍( 이하, OOP )은 일종의 프로그래밍의 문턱입니다. 마치 게임을 할 때 일정 패턴을 파악하면 그 다음부터는 적응이 되는 것처럼 프로그래밍을 하기 위해서는 필수적으로 거쳐야 되는 문턱이지요. 이미 하도 많은 언어가 객체 지향을 기본으로 깔고 있기 때문에 이제는 안 익히고 지나갈 수가 없습니다. 익히 듣던 Visual Basic/C++/C#. Java. 그리고 Python, Ruby, Perl, PHP. 또 .NET Component. 현재 주로 쓰이는 모든 언어가 OOP의 개념을 차용하고 있습니다.
객체 지향 프로그래밍의 기반은 Simula라는 60년대 언어에서 처음 선보였습니다. 그리고 Smalltalk라는 70년대 언어에서 "이것은 OOP 언어다."라면서 나왔지요. 그리고 지금까지 그 기반을 넓혀가면서 왔습니다.
이 오랜 역사( 컴퓨터 프로그래밍이 1944년 ENIAC을 시작으로 본다면 60년이 조금 넘는 역사에서 2/3을 차지하고 있습니다. )에 점점 많은 사람들이 "이제 OOP는 구식이다."라고는 하고 있습니다. 참고로 얼마 전 G-Star와 함께 열린 KGC(한국 게임 개발자 컨퍼런스)에서는 객체지향이 아니라 작업단위의 언어가 필요하다고 많은 강연자들이 외쳤다고 하는군요. 요새는 CPU도 듀얼코어, 쿼드코어 하면서 여러 CPU를 동시에 쓰기 때문에 각 쓰레드 별로 소량의 작업을 할당하도록 하는 방식으로 짜야 된다는 겁니다. 또한, 값 중심 프로그래밍(Value Oriented Programming)에서는 객체는 모두 불변의 것이고 객체에게 작업을 요청하는 것이 아니라 함수의 재귀 호출을 통해 새로운 값을 계속 계산하는 방식을 채택해야 된다고 합니다.
하지만, 이러니 저러니 해도 결국 그 기반은 객체 지향 프로그래밍에 있다고 할까요. 객체 지향에서 제일 중심이 되는 개념인 Class와 Object는 이제는 기본으로 깔고 들어가니 말입니다. 특히 라이브러리를 만들어서 배포하거나 할 때 제일 편리하고 안전한 방법을 제공하죠. 이 큰 장점을 대체할 만한 무언가의 패러다임이 나오지 않는 한 다른 패러다임과 섞어쓰는 일이 있을지는 몰라도 버려지는 일은 없을 겁니다.
그렇지만 ! 저는 요새 객체 지향 프로그래밍을 그다지 좋아하지는 않는단 말이죠. 여러모로 편리하긴 합니다만 작달막한 코딩을 할 때는 직관적인 절차적 프로그래밍( 행하는 절차를 나열해서 프로그래밍 하는 방식 )을 씁니다. 뭐 근데 사실 난해한 것이 "이렇게 짜면 OOP 적으로 짠 거다." 혹은 "이렇게 짜면 OOP 적으로 짜지 않은 거다."라고 정확히 구분하기는 어렵기 때문에 그저 평소에 행하던 방식에서 조금 비 OOP 적으로 짠다는 것 뿐 제 프로그래밍 방식에 녹아있는 OOP를 전혀 쓰지 않을 수는 없답니다.
말이 어려워졌는데, 이 단락의 주제가 "최근 생각하는"이기 때문에 정확한 의견 전달 없이 주절주절 풀어봤습니다.
현재 가장 많이 애용되는 OOP Language, Java. 자바 커피같이 편하고 일상적인 언어가 되기를 꿈꾸며 이름을 Java로 했지만, OOP라는 개념 자체가 상당히 어렵기에 많은 사람을 울린 언어죠. 그리고 그 여파로 Java Coffee는 Angel-In-Us Coffee로 명칭을 개명했다나 뭐라나. http://blogs.sun.com/rodrigochile/category/English
■ "객체 지향 프로그래밍" 에 감동
감동이라.
요새 C#을 보면서 조금 감동하고 있습니다. C#은
Java의 언어 형식을 지니면서
Visual Basic처럼 GUI를 툴을 이용하여 직접 편집할 수 있고.
Managed 된 언어를 통해 C++과 다른 COM Component들과 연동할 수
있습니다. Visual Studio가 아니었다면 지금처럼 프로그래밍을 WYSIWYG( What you see is what you get )으로 할 수 있었을지 궁금하네요. 이 C#이 지원하는 내용들을 보고 뭉클하게 감동먹고 있습니다. Flash의 Action Script쪽도 상당히 궁금하긴 합니다만, 회사의 일과 연관된 내용이 아니다보니 직접적으로 공부하긴 쉽지 않군요.
Java에 익숙한 학교 후배들에게는 C++ 보다 C#을 먼저 추천하고프기도 합니다. MFC를 지금와서 배우느니 C#으로 코딩을 하고 C++에 연계하는 쪽을 오히려 추천하고 싶네요. 학교에서는 리눅스 코딩을 주로 하는지라 Visual Studio를 상대적으로 만져볼 시간이 적었다는게 참으로 아쉽습니다.
Object Oriented Programming. 누군지는 모르지만 Object를 객체로 번역한 사람. 참 센스가 없습니다. Subject, 주체랑 무슨 연관이 있는 거 같잖아요. 차라리 개체나 기계나 좀 더 직감적으로 좋은 이름을 지었으면 하는 바램이 있네요. Object는 그 자체로 널리 쓰이고 여러 의미를 지닌 단어지만 "객체"는 정말로 우리나라에서 거의 쓰지도 않는 단어니까요. 실제로 비 프로그래머들에게 객체를 설명하려고 하면 정말 뼈빠집니다. 이건 직역 이외에 아무 것도 아닌 거 같아요.
객체 지향 프로그래밍은 딱히 다른 범주로 나누기가 어려워서 뭐라고 하기가 힘들군요. C++용 객체 지향 프로그래밍, Java용 객체 지향 프로그래밍이라고 하기도 뭐하고. 다만 요새 좋아하는 객체 지향 프로그래밍 언어는 C#입니다. 왠만한 안정성을 지니고 있는 데다 Java보다 더 많은 기본 라이브러리를 제공하고, 무엇보다 GUI Tool을 제공합니다. 다만 안타까운 건 Java는 Sun 사에서만 발표하듯이 C#은 Microsoft 사에서만 발표한다는 거죠. Visual Studio를 벗어나면 C#은 코딩할수도 컴파일할 수도 없다는 건데, 아직은 Microsoft 세상이 계속되고 있으니 괜찮습니다.
과연 프로그래밍 산업이 이렇게 발전할 수 있었을까요. 객체 지향 프로그래밍이 보여주는 객체의 효용성. 단지 객체만 넘기는 방법으로 그것을 어떻게든 컨트롤 할 수 있게 해주는 이 방식이 프로그래밍의 순리가 아니었다면 어떤 프로그래밍 패러다임이 세상을 지배하고 있을까 궁금하네요. 템플릿과 STL로 대변되는 제네릭 프로그래밍도 어찌보면 그 출발도 일부는 객체 지향 프로그래밍에서 나왔다고 해도 과언이 아닌데. 궁금합니다. 과연 그 시대에는 어떤 패러다임이 프로그래밍 세계를 지배하고 있을까요. 아니, 튜링머신이 없었다면 시작되지 않았을 거 같은 이 프로그래밍은 어떠한 방향으로 나아가고 있을까요.
컴퓨터 계열은 공터에서 시작하여 무수한 약속으로 이루어졌습니다. 여긴 이렇게 하자, 저긴 이렇게 하자. 컴퓨터 관련 표준 규약만 해도 엄청나죠. 네트워크 처럼 눈에 보이지 않는 곳에 대한 약속(프로토콜)도 진짜 무수히 많습니다. 그리고 계속해서 약속을 정해가고 있죠. 만일 객체 지향 프로그래밍이 없었다 하더라도 분명히 어떤 약속의 방향으로 향하고 있었을 것입니다. 지금의 프로그래밍 방식은 나중에 모두 부인될 수도 있죠. 과학 사실처럼 관측을 통해 알아낸 사실이 아니라 단순히 약속에 불과하니 말입니다.
도제윤님으로부터 '이치마루 긴' 을 주제로 받았습니다......만세 누님사랑해요 릭쿤으로부터 '미국'을 주제로 받았습니다. 릭쿤 사랑해 ㅠㅡㅠ ♡<야
치비양으로부터 '이엔양이 생각하는 치비' 를 주제로 받았습니다. 엄마 어떻해..ㅠㅡㅠ<림
(망할)다이엔으로부터 '오덕후'를 주제로 받았습니다/후광
에로알로부터 '솔로부대'를 주제로 서술하라는 명을 받았습니다. 이거좋은데?ㅋㅋㅋ
시한날개로부터 '자신의 오나전 특별하고 괴상하고 아스트랄 그로테스크한 그 정신세계'를 주제로 받았습니다 [도주]
흑묘로 부터 '패왕총수'를 주제로 받았습니다 ...그나저나 당신 내가 패왕 총수인거 어떻게 안거지.
스테아님께 '료X쥬다이'를 주제로 받았습니다 . 사랑합니다 스테아님 ㅎㅇㅎㅇㅎㅇㅎㅇ< 쇼우언니에게서 '사랑스러운 달달 뭉탁' 이라는 주제를 얻었습니다. ㅋㅋㅋㅋㅋㅋㅋㅋ 뭉탁이다 뭉탁!!!!(하트뿅뿅) 나쁜 덕구놈 <미탁>이에게 '배치기를 서술하시오'라는 주제를 받았서요ㅋㅋㅋㅋㅋ 하여간 루야에게 "실피드"로 받았음 (뭘하라고 ;ㅁ;) 거참은 실피드로부터 "캐안습"을 주제로 받았음. 엔들리스는 거참형으로부터 "대건고"를 주제로 받았음... 여기에 덧붙여, 휘향이한테 "수능"이라는 주제로 서술하래서 서술함.
쑤우능 엔들리스로부터 "쪼꼬"라는 주제로 서술하래서 서술합니다 !
원치는 않았다만, 쑤우에게서 '엘뤼엔과 카노스'라는 주제로 서술하게되었슴다.
휘향이는 세번째로 우리아빠(유르넨)에게서 우리아빠(유르넨)에 대해 서술하게됬음.
밍밍한맛은 휘향에게서 휘향에대해..... 서술하라고.... =ㅅ=?!
설탕은 밍밍한맛에게 음악 이라는 주제를 받았슴
탱자는 설탕님에게 만화라는 주제를 받았답니다 킴쫑은은 소올딸양에게 핑크라는 주제를 받아버렸습니다. (털썩)
바베는 킴쫑은에게 친구라는 주제를 받았습니다 (고마워!)
프루는 바베르카에게 마비노기라는 주제를 받았어요()
베트는 프루에게 애니메이션이라는 주제를 받았다.(ㅇ.ㅇ)
차이로스는 베트에게 게임이란 주제를 받았다.
나나군은 차이로스에게 게임이란 주제를 받고야말았다.()
우울ㅂㅣ는 나나군에게 사진이란 어정쩡한주제를 받았다
유하진은 우울이에게 줄넘기란 황당한주제를 받았다(버엉)
플리아는 유하진이에게 패션이란 심오한주제를 받았다...
레드슈릅은 플리아누님에게 미대입시 인생이라는 안습한 주제를 받았슴
카라는 레드슈룹에게 뱀파이어기사애니화라는 오덕한 주제를 받아따.
리피안은 카라에게 조막 혹은 막조라는 므흣한 주제를 받았습니다<<...
알리움은 리피안에게 작붕이란 주제를 받았습니다.
적혈은은 알리움으로부터 아이실드란 주제를 받았습니다
에데는 적혈로부터 코스프레라는 주제를 받았습니다[거참난감하군]
갸트는 에데로부터 으로부터 박샤넬이라는 주제를 받았습니다.(내가더난감해인마)
나츠미는 갸트님으로부터 장래희망이라는 주제를 받았습니다./헙
킬러는 나츠미님으로부터 사진이라는 주제를 받았습네다.(뭐야, 이사람)
소우지는 킬러님으로부터 바보란 주제를 받았습니다(에라이)
콩쨈은 소우지로부터 건담이라는 주제를 받았습니다(이녀석♡)
설빈은 콩쨈으로부터 길티기어라는 주제를 받았습니다 (와짱)
지교는 설빈님으로부터 길티기어라는 주제를 받았습니다(팬심의 끝은 어디인가요 ㅋㅋ)
시월새벽님은 지교님으로부터 계절을잊고핀꽃이라는 주제를 받았습니다.(매우 착하나 주제였다능)
이딸기님은 시월새벽님으로부터 짧은스커트이라는 주제를 받았습니다.(무서운 녀석같으니)
백씨님은 이딸기님으로부터 만화(혹은 애니)라는 주제를 받았습니다. 뭔가 근원적인;;;
헤이즈님은 백씨님으로 부터 사진이라는 주제를 받았습니다.궁금했던거냐!
사장님은 헤이즈님으로 부터 어제라는 주제를 받았습니다. 너무 추상적이었다고!!
이카님은 사장님으로 부터 문상이라는 주제를 받았습니다. 지금 장난하는겁니까!!!너무하셈 !!
클리는 이카님에게로부터 '애니'라는 주제를 받았습니다♡ 사랑해요,이카님~~~
유즈아인은 클리님에게로부터 '목욕탕'이라는 주제를 받았습니다. 너무하시는군요, 클리님
우도는 유즈아인님에게로부터 '네일아트'라는 주제를 받았습니다 관심가져줘서 고마워요ㅜ 유즈님
모토는 우도님으로부터 '해리포터'라는 주제를 받았습니다.(고마워><1111)
갑돌이는 모토님으로부터 '소설'이라는 주제를 받았습니다. 으하하 언제나 화해와 같은 관심 감사
몽상가들은 갑돌이로부터 '영화'라는 주제를 받았음. 위의 '화해'를 '하해'로 고치고 싶어 근질근질 레몬섬은 몽상가들 님으로부터 '차소영'이라는 주제를 받았습니다 초록불은 레몬섬으로부터 '팥'이라는 주제를 받았습니다 파파울프는 초록불님으로 부터 '환빠'라는 주제를 받았습니다. 고어핀드는 파파울프님으로부터 '환도' 라는 주제를 받았습니다. 다음 분들 받으세요!!! 디지츠는 고어핀드로부터 '객체 지향 프로그래밍'이라는 주제를 받았습니다. 흐흐.