본문 바로가기

퍼옴-/바톤

지정문답 "객체 지향 프로그래밍"

어머나. 바톤놀이.
재미있는 걸 주었군요. 후후.

■ 바톤을 받는 5명, 절대로 5명! (지정과 함께)

언젠가 와주실거라 생각하면서.. ^^;
넘깁니다!
  • 정길    웃음
  • 케로군 밴드 (락 밴드할 때 그 밴드입니다!)
  • 니나노 여행
  • 미리내 야구 (동영상을 써도 되고 아니어도 되고.. 근데 이놈 받았을 거 같은데..)
  • IOKLO 동료
후후 몇개나 받을 수 있을까요.
잘부탁드립니다.


■ 최근 생각하는 "객체 지향 프로그래밍"

 객체 지향 프로그래밍( 이하, OOP )은 일종의 프로그래밍의 문턱입니다. 마치 게임을 할 때 일정 패턴을 파악하면 그 다음부터는 적응이 되는 것처럼 프로그래밍을 하기 위해서는 필수적으로 거쳐야 되는 문턱이지요. 이미 하도 많은 언어가 객체 지향을 기본으로 깔고 있기 때문에 이제는 안 익히고 지나갈 수가 없습니다. 익히 듣던 Visual Basic/C++/C#. Java. 그리고 Python, Ruby, Perl, PHP. 또 .NET Component. 현재 주로 쓰이는 모든 언어가 OOP의 개념을 차용하고 있습니다.

 
사용자 삽입 이미지
Alley OOP( 객체 지향 프로그래밍 ). 이랑은 관계 없습니다.
http://www.auspacmedia.com.au/viewfeature.php_id_156


 객체 지향 프로그래밍의 기반은 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를 상대적으로 만져볼 시간이 적었다는게 참으로 아쉽습니다.


사용자 삽입 이미지
무시무시한 명작 Visual Studio .NET. 이놈이 없었다면?
http://www.geocities.com/mangokun/wallpapers/wallpapers.htm



■ 직감적 "객체 지향 프로그래밍"


 Object Oriented Programming. 누군지는 모르지만 Object를 객체로 번역한 사람. 참 센스가 없습니다. Subject, 주체랑 무슨 연관이 있는 거 같잖아요. 차라리 개체나 기계나 좀 더 직감적으로 좋은 이름을 지었으면 하는 바램이 있네요. Object는 그 자체로 널리 쓰이고 여러 의미를 지닌 단어지만 "객체"는 정말로 우리나라에서 거의 쓰지도 않는 단어니까요. 실제로 비 프로그래머들에게 객체를 설명하려고 하면 정말 뼈빠집니다. 이건 직역 이외에 아무 것도 아닌 거 같아요.

사용자 삽입 이미지
일반인들과 소통할 수 없는 학문은 결국 도태될지도 몰라요.
http://goodhyun.com/archives/2005/11/487.php



■ 좋아하는 "객체 지향 프로그래밍"


 객체 지향 프로그래밍은 딱히 다른 범주로 나누기가 어려워서 뭐라고 하기가 힘들군요. C++용 객체 지향 프로그래밍, Java용 객체 지향 프로그래밍이라고 하기도 뭐하고. 다만 요새 좋아하는 객체 지향 프로그래밍 언어는 C#입니다. 왠만한 안정성을 지니고 있는 데다 Java보다 더 많은 기본 라이브러리를 제공하고, 무엇보다 GUI Tool을 제공합니다. 다만 안타까운 건 Java는 Sun 사에서만 발표하듯이 C#은 Microsoft 사에서만 발표한다는 거죠. Visual Studio를 벗어나면 C#은 코딩할수도 컴파일할 수도 없다는 건데, 아직은 Microsoft 세상이 계속되고 있으니 괜찮습니다.

사용자 삽입 이미지
주옥 같은 삽화가 많아서 관련 없지만 퍼오게 되는군요.
http://goodhyun.com/archives/2006/09/568.php


■ 세계에 "객체 지향 프로그래밍"이 없다면?

 과연 프로그래밍 산업이 이렇게 발전할 수 있었을까요. 객체 지향 프로그래밍이 보여주는 객체의 효용성. 단지 객체만 넘기는 방법으로 그것을 어떻게든 컨트롤 할 수 있게 해주는 이 방식이 프로그래밍의 순리가 아니었다면 어떤 프로그래밍 패러다임이 세상을 지배하고 있을까 궁금하네요. 템플릿과 STL로 대변되는 제네릭 프로그래밍도 어찌보면 그 출발도 일부는 객체 지향 프로그래밍에서 나왔다고 해도 과언이 아닌데.
 궁금합니다. 과연 그 시대에는 어떤 패러다임이 프로그래밍 세계를 지배하고 있을까요. 아니, 튜링머신이 없었다면 시작되지 않았을 거 같은 이 프로그래밍은 어떠한 방향으로 나아가고 있을까요.

 컴퓨터 계열은 공터에서 시작하여 무수한 약속으로 이루어졌습니다. 여긴 이렇게 하자, 저긴 이렇게 하자. 컴퓨터 관련 표준 규약만 해도 엄청나죠. 네트워크 처럼 눈에 보이지 않는 곳에 대한 약속(프로토콜)도 진짜 무수히 많습니다. 그리고 계속해서 약속을 정해가고 있죠. 만일 객체 지향 프로그래밍이 없었다 하더라도 분명히 어떤 약속의 방향으로 향하고 있었을 것입니다. 지금의 프로그래밍 방식은 나중에 모두 부인될 수도 있죠. 과학 사실처럼 관측을 통해 알아낸 사실이 아니라 단순히 약속에 불과하니 말입니다.

 
사용자 삽입 이미지
약속의 세계. 네트워크.
http://web.syr.edu/~djmolta/ist452/ndresour.htm


기술적인 내용에서 그림을 삽입하려니 참 없네요. ^^;
고어핀드의 망상 천국 :: 지정문답 "환도"
에서 받아왔습니다.!



'퍼옴- > 바톤' 카테고리의 다른 글

영장 나왔습니다. [...]  (2) 2007.03.20