여러분은 애플리케이션의 통합화에대해 어떻게 생각하시나요

dummy999의 이미지

xnap를 비롯해 이클립스, vi들을 아실껍니다.
이들은 대부분 통합된 형태의 프로그램입니다.

그리고 필요에따라 플러그인을 이용해 좀더 편리한 기능을 제공합니다.
모든 플러그인들(모듈형태의 배포프로그램)은 메인 프로그램을 실행함으로서
모두 사용할수있습니다.

gaim 은 모듈형태의 배포없이 단지 처음부터 통합화되어가고있는거같아서 뺐습니다.
처음부터 통합된 배포판이라면 이클립스 프로젝트처럼 모듈별로 작업하기 힘들껍니다.
그러고보면 위의 예중에 vi만빼고 두개는 자바로 만든 프로그램이군요..
자바가 대형작업에는 좋다는 소리인가?

여러분들은 이것을 어떻게 생각하시나요
앞으로 가까운 미래에 이런 형태의 개발구조가 더욱 다양한 방면으로 이루어질수있을까요?
저는 개인적으로 이런구조를 많이 선호하는 편입니다.
상당히 진보적인 형태의 개발구조라고 생각합니다.

물론 그렇게 하려면 어느정도 규칙이 필요하며 , 아무래도 엔터프라이즈급(대형작업)이라고
할수있겟는데

이에대한 의견이나 또는 지금 이렇게 되어가는 다른 프로젝트들이있다면 소개를 부탁드립니다.
또한 이런개발의 애로점이나 향후방향에대해 의견부탁드립니다.

File attachments: 
첨부파일 크기
Image icon 1.jpg35.95 KB
onion의 이미지

module이라는 범주가 애매하군요.
굳이 참고하고 싶으면 maya같은걸 참고하시고
단순히 말씀하시는 module의 의미로 국한시키자만
이미 컴포넌트 웨어인 델파이가 있습니다.
델파이의 ide는 그 자체로 확장이 가능하고
또한 프로그래밍시에 사용되는 컴포넌트를 사용할 수 있는건
물론이죠.
maya의 경우는 MEL스크립덕분에
최대한의 확장성을 가집니다.
물론 다른사람의 MEL스크립을 가져다 쓸 수도 있죠.
MEL스크립 책을 참고하시면 될거같고...
배포판이라는 말보다는 단순히 패키지라는 말이 어울릴거같습니다만...
distribution이라는 말은 이런데에 쓰는말은 아닌거같군요.

-----새벽녘의 흡혈양파-----

-----새벽녘의 흡혈양파-----

eungkyu의 이미지

통합화란 단어에 대한 정의가 명확하지 않네요
모듈로서 기능을 추가할수 있으면 통합화가 잘 된 프로그램인가요?
아니면 MS오피스처럼 여러 프로그램간의 관계를 긴밀하게 만들어 놓은 것이 통합화가 잘 된 프로그램인가요?

예를 들은 것을 보면 전자를 의미하는 것 같은데 맞나요?
그런데 gaim은 왜 빼나요? 단지 배포를 같이 하기 때문에? gaim개발자가 억울해하겠네요 :(

지리즈의 이미지

모듈로서 통합화가 가능하는 것외에
이런 모듈들이 공통되게 사용될 수 있는 표준 모듈 API나
표준 script가
정의 되면 더 좋을 듯 싶습니다.

eclipse vim 모듈을
openoffice할 때 사용하거나 하는 식으로요...

MS의 VBA는 visual C++부터 엑셀까지 다 사용하죠?

eungkyu wrote:
통합화란 단어에 대한 정의가 명확하지 않네요
모듈로서 기능을 추가할수 있으면 통합화가 잘 된 프로그램인가요?
아니면 MS오피스처럼 여러 프로그램간의 관계를 긴밀하게 만들어 놓은 것이 통합화가 잘 된 프로그램인가요?

예를 들은 것을 보면 전자를 의미하는 것 같은데 맞나요?
그런데 gaim은 왜 빼나요? 단지 배포를 같이 하기 때문에? gaim개발자가 억울해하겠네요 :(

There is no spoon. Neo from the Matrix 1999.

fender의 이미지

해답은 간단합니다. 플러그인이나 모듈을 통한 확장이 요구사항에 있으면 만들면 되는거고 아니면 안하면 됩니다.

요구사항을 충족시키지 못하는 것도 문제지만 요구사항에도 없는 기능을 마구 넣어서 개발비용은 물론 쓸데없이 코드를 복잡하게 해서 유지보수 비용까지 증가시킬 필요는 없다고 봅니다.

이클립스는 말 그대로 "Universal Tool Platform"을 지향하고 있습니다. 즉, 이클립스를 기반으로 어떤 어플리케이션 (예를들어 아웃룩 같은 메일 클라이언트)를 개발할 수도 있고, 이 때 맨땅에 헤딩해서 코딩하는 것이 아니라 메뉴나 뷰 같은 구성을 이클립스에서 제공하는 몇몇 xml을 편집하는 것만으로 제작 가능합니다.

하지만 예를들어 시계 애플릿 같은 걸 확장성있는 플러그인 구조로 만들 이유는 없겠지요 :)

어쨌든 기획 단계에서 요구조건에 따라 결정할 문제로 보이는군요...

----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...

dummy999의 이미지

모듈이라함은 기능의 최소단위를 말하는것이고
컴포넌트는 모듈의 집합을 말하는거아닌가요?

그리고 제가 말하는 통합화라는것은 짧은식견으로 그리썼지만.
뭐랄까 그걸 프레임웤이라고 해야하나요?
gaim을 뺀이유는 거기엔 플러그인이 없기때문이라고 할수있습니다.
(플러그인이 컴포넌트라고 해야하는게 바른건가요?)

그런 프레임웤을 보면 app하나가 모든 플러그인을 제어하는 구조입니다.
그런데 VBA는 모듈이라고 해야하나? 그것하나만 놓고 말했을때를 말하는것으로
제가말하는것과는 좀 다른의미라고생각합니다만..

일단 하나만 실행하면 다른것들을 모두 실행할수있으니
MS오피스같은 프로그램과는 많이 다른 구조일듯싶네요.

아 이클립스같은 프로그램이 잘형성된 개발구조인지는 모르겠지만
제가 봤을땐 효율적이라고 생각해서였습니다.
적어도 게으른(?)커미터에대한 압박은 좀 적어질수있을테니까요.

제가말하는 프로그램의 구조는
예컨데 비즈니스 프로그램에서 필요할때마다 그냥 파일하나 달랑만들어놓고
그거 복사해서 집어넣으면 메인 프로그램실행할때 그파일도 따라서 읽는것을
말하는거였거든요. 뭐 따로 설정을 해줄것도없고 그냥 그렇게 복사만하면 좋잖아요.

제가 그구분을 정확하게 하기힘든거같네요.. 누군가가 그것들의 구분을 해주심좋겠다는 생각이듭니다.

------------------------------------
F/OSS bless you... ^^*

cinsk의 이미지

Simple is beautiful.
KISS (Keep It Simple, Stupid)

란 말이 생각나네요. ;-)

youlsa의 이미지

어떤 면에서는 반-UNIX스러운 일이죠. emacs가 욕을 많이 먹었던 이유이기도 하고요. 하지만 쓰기에 편리하고 안정적으로 동작한다면 무슨 문제가 있겠습니까. eclipse나 emacs 같은 것들은 쓰기에도 좋고 확장하기도 좋으니 나쁠 것이 전혀 없는 것 같습니다.

플러그인이나 확장 모듈로 기능을 늘여 나가다 보면 거의 OS가 되어 버리는게 문제라면 문제겠죠. 8)

=-=-=-=-=-=-=-=-=
http://youlsa.com

dummy999의 이미지

기능형 컴퓨터라는 말을 들어봤습니다.
물론 내용은 읽어보지않았습니다.

제가생각했을땐 필요에따라 문서작업할땐 문서작업에 적합한 스팩을 가진 컴퓨터에서 그래픽작업할땐 그래픽 작업에 적합한 스팩을 가진 컴퓨터에서 작업하는것도 나쁘진않다고 생각합니다.

하나의 컴에서 그것들을 모두 돌리기엔 뭐 위험부담이 크잖아요..
(갑자기 다운되면 전부 작업한것이 수포로돌아가니까.)

프레임웤이라는것이 무겁다 생각이드는건 저도 마찬가지입니다.
그러나 작은것 여러개보다 큰것하나라면 차라리 저는 후자쪽이 더나은 구조가 아닐까싶습니다.
적어도 그것이 GUI스럽다고 하는편이 저의 변명이라고 할까요 ^^:
하지만 나름대로 그러는 편이 GUI에선 훨씬 좋지않을까합니다.

물론 꼭 좋은건아닙니다. 그러나 한가지 프로그램이 프레임워크라는 구조로 지원해준다면
진짜 필요하면 내가 그런프레임워크에 맞는 기능들(플러그인)들을 선택해서 받을수있으니
그거야말로 진짜 작은것들의 모임이 아닐까생각합니다.

큰것하나가 작은것들을 감싸고있으니.. 그룹을 이룬다는 형태로요..

만약 다른 그룹의 프레임웍이 그것을 필요로한다면.. 그쪽에도 공유해줄수있는 일이기도 하구요.
(물론 프레임웤마다 그규칙이 다 다르겠지만..)

여튼 이방법이 오픈소스에서 클론들(저는 극악적인 표현으로 사생아라고 했지만..)이
난무하는것을 최소화 하지않을까합니다.

좀더 한곳으로 집중시켜주는 그런계기가 되리라 생각합니다.

이게 반유닉스계열이라고 생각은 하지않습니다. 저는 이것이 vi와 다르지않는구조라고 생각했거든요.

OS도 APP(또는 라이브러리)를 위한 프레임웤이라면..
APP도 Plug-in(모듈)을 위한 프레임웍이 될수있겠군요..
OS -> APP(또는 라이브러리) -> Plug-in(모듈)
이렇게 보는 편도 좋겠죠?

------------------------------------
F/OSS bless you... ^^*

죠커의 이미지

dummy999 wrote:

그러나 작은것 여러개보다 큰것하나라면 차라리 저는 후자쪽이 더나은 구조가 아닐까싶습니다.
적어도 그것이 GUI스럽다고 하는편이 저의 변명이라고 할까요 ^^:
하지만 나름대로 그러는 편이 GUI에선 훨씬 좋지않을까합니다.

전혀 GUI스럽지는 않습니다. 8)

dummy999 wrote:
OS도 APP(또는 라이브러리)를 위한 프레임웤이라면..
APP도 Plug-in(모듈)을 위한 프레임웍이 될수있겠군요..
OS -> APP(또는 라이브러리) -> Plug-in(모듈)
이렇게 보는 편도 좋겠죠?

그게 emacs인것 같네요 :-)

dummy999의 이미지

제가 오래전 와우에다 이런글을 썼던게 지금 실감이나기시작했습니다.
오래전 프로그래머는 모듈을 만들고 파워유저는 그것을 조립하며 초보는 그것을 테스트한다.
그렇기때문에 개발이라함은 모든 레벨의 사용자가 다할수있는것이다. 라고..

그런데 새삼 그것이 지금생각하는 제생각으로는 틀린거같지않아서 다시 글을씁니다.
그때.. 잔디인형님께서 딴지를 많이 달아주셨는데..
그덕에 제가 그것을 스스로 비판을 많이해보게되었답니다.

제가 생각하는 개념은 지금에서 이렇게 되어졌습니다.
개발자(한명또는 여러명이)는 하나의 프레임워크를 만들고 파워유저들은 그것을 조립해 자기가원하는기호에맞게
사용한다.
다시말해 개발자는 모듈및 프레임워크를 개발하는쪽이고 파워유저는 그것들을 기호대로 조립및
테스트등을 할수있는 구조를 가지고있다 라는겁니다.

물론 이것은 오직 오픈소스에서만 가능한 구조입니다.
MS쪽이나 기타의 프리속성을 가지지않는 라이센스에서도 가능하긴하겠지만.
그활동이 극히 제한적입니다.

프레임워크에대해 저는 긍정적입니다.
프레임워크가아닌것에대해 저는 그런것을 스텐다드 얼론방식이라 이름짓고싶습니다.
프레임워크라는것의 일례로 XINETd같은게 있을수있으니까요.
마치 하나의 넓적한 레고블럭에 여러개의 작은 블럭들로 집을 짓거나 할수있으니까요.
프레임워크라는것은 그런 넓고 큰 레고블럭과 같다고 생각합니다.

물론 (제가말하는)스텐드얼론방식도 나쁜건아니라고 생각합니다.
왜냐면 이것은 규모나 사용에있어서 상당히 간소화할수있으니까요.
하지만 버전업을 함에따라 그한계성을 많이들어냅니다.
그때문에 비슷한 새로운 것들이 자꾸 파생되는거죠..

그런이유들때문에 안시씨가 아닌 프레임워크를 포함하는 닷넷이나 자바가 등장하는지 그것도 알게될껍니다.
분명히 프레임워크형태는 무식하게 큽니다. 그래서 그다지 좋은게 없다고 생각하실지모릅니다.
그러나 프레임워크는 무식하게 큰만큼 많은것을 지원해주게되어잇습니다.

일일히 사람손갈거 한두번이면 마무리지어지겠죠.. 그런게 프레임워크의 특징이 아닐까 생각합니다.
비슷한것을 여기서 만들고 저기서만들고 그렇기때문에 서로 달라서 함께할수없다라는것은
정말 소모적 이라 생각합니다.

하나의 프레임워크가 공개가된다면.. 그것을 기반으로하는 모든프로그램들이 성장해갈수있습니다.
스타크래프트의 캐리어가 공격유닛중에서 가장 좋은점도.. 적과 대치했을때 공방을 대부분 인터셉터가
해줍니다. 물론 맘먹고 1.4해버리면 죽겠지만.. 제가 유일하게 좋아하는 유닛이 캐리어이거든요..
그냥 왠지 마음에 듭니다.

표준화라는것은 프레임워크를 만들고 그것을 통째로 공개해버리면 그것을 기반으로 모든사람들이 달라들므로
자연적으로 표준화가 생긴다고 생각합니다. 꽃밭에 꿀을찾으려오는자들이 오는건 당연하죠..
그 꽃밭이 크면 클수록 찾아드는자들이 더많아질것입니다. 물론 그꽃의 번식은 엄청날테구요..

표준화가 필요할때입니다. 표준화를 말만외치고 그냥 일부러 없는거에 만들필요는 없다고 봅니다.
단지 잘나가는것을 모델로 지속적으로 연구하면서 개선해간다면 그것이 표준이고 그것이 대중성을 이끄는
방법이 아닐까생각합니다.

저는 리눅스와 유닉스가 아직도 햇갈립니다. 왜 같으면서 같지않다고 하는건지 그것을 모르겠고.
응용프로그램들역시 클론일지라도 결국뿌리가 같으면서도 절때로 다르다고 하는지 이유를 모르겠습니다.
그럼 어디가 그들을 하나로 이어주는건가요, 그것을 뭐라고 불러야하며, 우리가 그것을 쉽게 찾을수있을련지요.
또 쉽게 접할수있는지요

대중성이란것을 제가 오래전부터 개짓듯 지져왔습니다.
프로그램의 표준 설령 백신일지라도.. 응용프로그램보다는 모듈 보드
(이거도 제가 나름대로 이름지은건데 메인보드의 확장슬롯에 그래픽카드등을 꼿을수있는데 그그래픽카드에도
각부품별로 또 업그레이드가 가능하게하는..방법 중에서 그래픽카드의 역할자. 일종의 메인보드와
각부품의 인터페이스역할을 해주는 보드..)
만 잘만들어놓으면 그안에서 또 죽을 쑤던 떡을 만들던 가능하죠..

그림은 제가 좀 안되는실력이지만 이것에대해 이해를 돕고자.. 써봤습니다.

그림이 허접합니다. 파워포인트로 그려넣었습니다.
중요한것은 그림의 각블럭들은 그크기들이 일정하지않지만. 하나의 모듈안의 크기들은 동일한 사이즈 규격을 가진다는것을 강조하고싶군요.. 규격은 같되 색깔만틀리다. 라는거만..

아참 글의 요점은 이겁니다. 그냥 프레임워크형태로 개발하면 좋은점이 많으니 프레임워크쪽으로 개발을 지향하자라는쪽이 더 정확한표현이 아닐까라는생각을 해봅니다.

아참.. 그리고 그렇게 하다보면.. 사생아들이 더이상 생겨나지않겠죠?
사생아가 없어지려면 함께살아가는방법을 알려주면 좋겠다는 생각이 듭니다.
그때는 필요에서 사생아가 만들어졌지만. 표준화를 통해 그럴필요가 없음을
느낄수있을테니까요.

댓글 첨부 파일: 
첨부파일 크기
Image icon 0바이트

------------------------------------
F/OSS bless you... ^^*

fender의 이미지

더미님께 한 가지 말씀드리고 싶은 점은, 이론적인 혹은 개념적인 부분을 세세히 따지는 것도 좋지만 실제적인 프로그램밍 지식 없이는 장님 코끼리 만지기에 불과하다는 점입니다. 이는 더미님을 무시하거나 딴지를 걸고 싶어서가 아니라 더미님의 글을 접하다 보면 왠지 그런 느낌이 들어서 말씀드리는 것입니다.

잘 아시리라 믿지만 프레임워크나 모듈화, 객체지향, 컴포넌트화 등등은 프로그래머라면 결코 새로운 개념이 아닙니다. 더미님께서 공부하시는 것으로 알고 있는 자바 언어만 해도 각 영역별로 셀 수도 없이 많은 프레임워크와 컴포넌트가 존재하고 자바 언어 초창기부터 이미 실무에서 널리 쓰이고 있었습니다.

소프트웨어 공학에 관심이 있으신 것이라면 프레임워크나 컴포넌트를 사용하는 것을 넘어 정확히 그 의미를 규정하고 싶어 하실 수 있지만, 이는 일단 다양한 프레임워크나 컴포넌트를 사용해 프로그래밍할 수 있게 된 이후에 생각하셔도 늦지 않을 것 같습니다.

죄송한 말씀이지만 왠지 전혀 새로울 것도 없고 이미 프로그래머라면 누구나 사용하고 있는 내용을 파워포인트 도표까지 만들어서 마치 처음 발견하신 것 처럼 장황하게 쓰시는 건 좀 더미님 입장에서도 읽는 사람 입장에서도 그렇게 생산적이지 못할 것 같다는 노파심에 글을 써봤습니다.

그럼~

----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...

dummy999의 이미지

제가 나름대로 글과 그림을 정리해가는것은
그곳까지가는데 가장 빠른 설명을 위해서라고 보시면됩니다.
물론 새로운 개념이라고는 생각하지않습니다.

그러나 선생들중 정말 잘가르치는사람은 뭔가 연관시켜서 설명하지않던가요?
다시말해 서울에서 제주도까지가는방법은 많은데
돌아가던지 바로가던지 도착하면된다라는거겠죠?
그런데 절차적인 방법은 꼭 어디어디를 거쳐야지만 제주도에 간다라고 가르키죠
대부분이 그렇잖아요. 그런데 바로가는방법도 얼마든지있거든요..
설령제주도라고 하지않더라고 울나라에서 가장 사람이 많이사는 섬이라고해도알죠.
또는 울나라에서 가장큰섬이라고해도되고..

뭐 교육학에대해 관심은 없지만요.. 하지만 제가 이렇게 하는것은
좀민망하지만 필요하다면 제말에대해 정리를 해주는쪽이좋겠다는 생각이듭니다.
뭐 제가 좀 무식할정도로 아는척을 해대는건 인정하지만 동기나 과정에서
그것이 잘못되었다고 생각은 안듭니다.

물론 결과적으로 잘못된 결과를 주는건 너무나도 당연하겠지만요
그럴땐 그냥 올바른답을 써주심될듯.. 또는 참고할만한 사이트라든지..
그게 제가봤을땐 가장 정답이될꺼같다는 생각이드네용..
단지 전망없는 딴지라면.. 그다지 기분좋을글은 아닐까생각도듭니다.

그리고 하나를 알기위해 수백가지를 이해해야하는것은 소질이 없습니다.
모든지식은 탑쌓기를 하지않아도 최고점에 도달할수있다고 생각하거든요.

------------------------------------
F/OSS bless you... ^^*

redbaron의 이미지

dummy999 wrote:

그러나 선생들중 정말 잘가르치는사람은 뭔가 연관시켜서 설명하지않던가요?
다시말해 서울에서 제주도까지가는방법은 많은데
돌아가던지 바로가던지 도착하면된다라는거겠죠?
그런데 절차적인 방법은 꼭 어디어디를 거쳐야지만 제주도에 간다라고 가르키죠
대부분이 그렇잖아요. 그런데 바로가는방법도 얼마든지있거든요..
설령제주도라고 하지않더라고 울나라에서 가장 사람이 많이사는 섬이라고해도알죠.
또는 울나라에서 가장큰섬이라고해도되고..

dummy999 wrote:

그리고 하나를 알기위해 수백가지를 이해해야하는것은 소질이 없습니다.
모든지식은 탑쌓기를 하지않아도 최고점에 도달할수있다고 생각하거든요.

"크다는 것"과 "우리나라"에 대해서 그리고 "사람이 많이 산다는 것"에 대해서 알아야 "제주도"라는 답을 도출해 낼수 있겠지요..

탑쌓기를 하지 않고 최고점에 도달할 수 있다는 생각(dummy999님의 자유입니다만)은 개인적으로 대화(커뮤니케이션)하기 곤란한 대상 이라고 생각합니다.

ironiris의 이미지

제 생각은 어플리케이션 통합화를 할 필요는 별로 없다고 봅니다.
어플리케이션끼리 대화할수 있는 경로만 열어두고 있으면 되지요.
나머지는 사용자의 몫...

하나 예를 들어보지요.
리눅스에 셸상에서 실행하는 많은 프로그램들이 있지요? 이 프로그램들은 대부분 표준입출력과 파이프등을 통해서 서로 데이터를 주고 받고 할수 있습니다.
rpm -qa|grep mysql
여기서 rpm 과 grep 이 통합화된 프로그램이 아니란 것은 리눅스 하루만 공부해도 알수 있는 사항이지요.
하지만 서로간의 데이터를 표준입출력과 파이프로 주고 받고 하면서 사용자가 원하는 결과물을 도출할수 있습니다.
꼭 표준입출력과 파이프가 아니더라도 공유할수 있는 파일 포맷을 통해서라도 가능한 것도 좋구요.

시스템에 설치된 rpm 패키지가 뭔지 자주 확인하는 경우라면 과연 rpm 과 grep 을 통합한 유틸리티를 만드는 것이 좋을까요?

물론 컴퓨터를 잘모르는 사람들을 위해서라면 GUI환경에 마우스로 버튼 하나만 클릭해주면 결과물이 쭈욱~ 나오게 하는 것이 제일 좋겠지만 올바른 방향이라고는 생각치 않습니다. 이건 특수한 경우라고 보구요....

그래도 어플리케이션 통합을 통해서 작업능률의 향상으로 인한 비용절감이 통합에 들어간 비용보다 크다면 할만한 가치가 있다고 보기도 한답니다. :)

위의 예를 들자면 rpm 과 grep 을 통합한 유틸리티를 만들어서(셀스크립트 한방으로 되지만...) 사용하는 귀찮음보다 위의 코드를 직접 치는 귀찮음 보다 덜 하다고 생각되면 rpm 과 grep 을 통합하는 것이 좋다는 것이지요.

thedee의 이미지

제 견해로는 어플리케이션 통합화란 휴먼 인터페이스의 관점에서
나온 아이디어 같습니다. 결과물은 똑같습니다. 각기 독립된 프로그램을
서로 연결하여 작업을 하든, 하나의 플랫폼에 각 프로그램을 모듈식으로
꼽아 넣어 작업을 하든 별 문제가 없다는 거죠.
물론 리소스 문제가 있죠. 그러나 치명적이고 본질적인 문제는 아니라고
봅니다.

철학, 혹은 기호의 문제겠죠. 유닉스 방식의 철학은 기계에
가능한 최소의 부하를 주는 겁니다. 반면 이맥스 방식은 사람에게
부하를 덜 주자는 것입니다(물론 이맥스는 엄청난 부하를 줍니다만...;<).

유닉스 방식이 과거를 대표했었다면 이맥스 방식은 미래를 대표할 겁니다.
물론 유닉스 방식이 곧 사라질 거라는 얘기는 아닙니다.
유닉스가 미래를 대표할 리는 결코 없을 것이라는 얘기입니다.
(집중과 분산은 여전히 사이클을 돌겠지만...)

이클립스 컨퍼런스에서 미래의 화두는 추상이다... 뭐 이런 얘기도
나왔다 하더군요. 생각해 보면 인터넷 혁명을 일으킨 것은 브라우저이고
브라우저는 통합화 어플의 하나죠. 멋진 추상을 구현한~

dummy999의 이미지

이클립스나 vi같은건 애플리케이션단위의 프레임워크같습니다.
뭐 저는 쉘이라 할지라도 그게 프레임워크가 없다고 생각하지않습니다.
CUI쉘이나 GUI쉘이나 그기반에서 돌려는 프로그램들은 죄다 그기반의 파일들을 필요로하니까요
CUI에서 파이프나 리다이렉션을 지원하는것은 쉘이 설계가 잘되진거겠죠..(저역시 그렇게 생각합니다.)

흔히들 라이브러리라고 불리우는거를 말하는데
저는 라이브러리나 프레임워크나 크게 다를게없다고생각합니다.
어차피 이클립스같은것은 그안에서 부수적인 프로그램을 구동시킬수있습니다.
(이클립스안에서 테트리스같은거나 또는 C언어 환경 또는 자바 환경을 만들수있는거처럼)

그에반해 쉘단위 프레임워크는 대부분 라이브러리라고 불리우는것들이 아닐까합니다.
그리고 그안의 모듈이라는것은 대부분 우리가 아는 실행 프로그램들을 말하는거겠죠?

이쯤해서 또다시 레이어의 구분을 지으라고한다면
하드웨어에서 커널까지는 독립적인 구조를 가지고 그위의 쉘은 라이브러리(프레임워크)와 같은
레이어에있다고 생각합니다.
그리고 그위엔 응용프로그램레이어가있고 그것역시 프레임워크를 속성으로 할수있고..
아니면 상위의 라이브러리를 의존할수있게 할수있습니다.
(다시말해 순수하게 자신이 만든 파일들로만 구동이가능하거나 또는 기존의 공용되는 파일(*.dll)을
의존해야하거나..

라이브러리나 jre(자바런타임엔진, 맞나?) 닷넷프레임워크 등을 프레임워크라 불러도
크게 다를게 없다고 생각합니다. 그래서 쉘단위 레이어에 속한다고생각합니다.
물론 응용프로그램은 이런라이브러리를 선택적으로 사용할수있는 권한이있습니다.
반드시 프로그램이라고해서 이런 프레임워크를 의존해야할필요는 없겠죠.
프레임워크를 꼭 의존하지않아도 플밍실행은 커널에의존되어 실행이가능하겠죠.

전체적인 면에서 제가 일방적인 저의 생각을 말씀드렸습니다.
그런데 실질적으로 프레임워크니 라이브러리니 하는것은 정확하게 그의미를 구분짓기가 모호합니다.
왜냐면 지금까지 우리가 봐온것들은 거의 장르에대한 구분이 없었기때문입니다.
(물론 예전에 나온것들은 그개념이 확실했지만)
그것은 기능의 발전으로인해 모호성을 많이 준것도 사실입니다.
(이클립스는 원래 개발도구를 목적으로 썼는데 그안에서 게임이나 문서작성을 한다면 그장르가 모호해짐
처음 목적을 그대로 두고 개발도구라고 장르를 결정했는데 정작 개발도구쪽으로는 개발되지않고
계속 게임쪽으로만 개발되버리면.. 이클립스는 게임이라고 하기도 그렇기때문..)

프레임워크나 라이브러리는 같은의미가 아닐까요?
단지 좀 그크기를 따진다면 프레임워크가 좀더 큰개념을 지닌거같다는생각이듭니다.
그리고 프레임워크란 라이브러리 세트를 말하는것이고 그라이브러리세트를 이용해 만들어진것들이
프레임워크에 의존하고있는 모듈이되겠죠.
그리고 이런프레임워크는 응용프로그램용 프레임워크나 쉘의 프레임워크등이 있겠죠.
또는 모듈의 프레임워크라든지..

그렇게 따졌을때 모듈과 응용프로그램의 개념이라는것도 어쩌면 좀모호하겠군요
쉘의 입장에서 따졌을때 그이하에서 도는 대부분의 플그램들은 모듈이 될텐데요..
왜냐면.. A라는 쉘에서는 돌아가는데 B라는 쉘에서는 안돌아가면 그것은 쉘에 의존하고있다는뜻이니까요.
즉 그런것은 응용프로그램에서 모듈(플러그인같은.)과 다를게 없으니까요.

이게 좀더 정리된 정보가있었음 좋겠습니다. 왜 라이브러리라고 하고 프레임워크라고하고..
제글 보신분들중 몇분은 제글이 이해를 못할수도있습니다.
(물론 저역시 제가 아닌 남이 쓴글이라면 쉽게 이해하지못할지 모릅니다. 뭔내용인지 정리가안되는
우후죽순같은 글이라.. @_@)

그러나 좀이해하신분들중에 제글의 의도를 아시는분들이라면
죄송하지만 그것에대한 정확한 개념을 아래다 올려주셨음 좋겠습니다. 다른뜻이 있어서그런건아니고.
제가 틀렸다면 그것의 정정할필요성을 느끼기때문입니다.^^

(때로는 물리적인 공부보다는 그런 이론적인 부분이 필요할지모릅니다.
물리적인 공부는 아무리해봐야 머리에 개념이 서지않는다면 첨부터 다시시작해야할지도 모르르거든요.
그렇게 생각하기때문에 지속적으로 개념적인 글과 개념적인 질문을 하는건지도.. ^^;)

서울에서 부산까지 비행기로 또는 기차, 배로 차로 여러가지 수단을 쓸수있습니다.
결국 어떻게가던 갈수있죠. 반드시 대전을 거쳐야 가는것도아니고 그렇다고 강원도를 거쳐갈필요는 없습니다.
그냥 어떻게 가던간에 갈수있죠.
마찬가지로 전산에서 선수학습이라는게 반드시 필요하지않아도 지식을 충분히 전달할수있을꺼라생각합니다.
전혀 새로운개념들도 아니고 그런개념들이라는게 죄다 거기서 거기일테니까요..

------------------------------------
F/OSS bless you... ^^*

redbaron의 이미지

dummy999 wrote:

서울에서 부산까지 비행기로 또는 기차, 배로 차로 여러가지 수단을 쓸수있습니다.
결국 어떻게가던 갈수있죠. 반드시 대전을 거쳐야 가는것도아니고 그렇다고 강원도를 거쳐갈필요는 없습니다.
그냥 어떻게 가던간에 갈수있죠.
마찬가지로 전산에서 선수학습이라는게 반드시 필요하지않아도 지식을 충분히 전달할수있을꺼라생각합니다.
전혀 새로운개념들도 아니고 그런개념들이라는게 죄다 거기서 거기일테니까요..

거치지 않고서는 갈수 없다는 거지요.

기존의 개념위에 덧붙여 새로운 개념이 나옵니다.

처음부터 라이브러리가 있던 것도 아니고.. 처음부터 프레임워크 란 말이 나온 것도 아니니까요.

의도는 충분히 전달 되겠지만, "지식"이 충분히 전달된다고는생각되지 않습니다.

warpdory의 이미지

dummy999 wrote:
그리고 하나를 알기위해 수백가지를 이해해야하는것은 소질이 없습니다.
모든지식은 탑쌓기를 하지않아도 최고점에 도달할수있다고 생각하거든요.

전공이 컴쪽이 아니니 물리쪽인만큼 그쪽 얘기를 빗대서 하자면 ...

양자역학을 하려면 그 표현을 위한 수식처리를 위해서 수리물리를 배워야 하고, 수리물리를 배우기 위해선 대학 1 학년때 미분적분학을 배워야 합니다. 그리고 미적분학을 이해하려면 고등학교 수준의 수학을 익혀야 하며, 그를 위해선 다시 중학교.. 초등학교 .. 더 아래로 내려가면 엄마가 손가락으로 펴주면서 하나.. 둘... 이러는 것부터 시작합니다. 이중 어느 하나라도 익히지 못한다면 이해하지 못합니다.
그렇다면 수리물리말고 또 어떤 게 있을까요 ? 현대물리학, 고전역학, 전자기학, .... 그리고 대학 1학년때 일반물리라는 것을 배워야 합니다.

이러한 기반이 없는 상태의 '양자역학'은 허무맹랑한 헛소리일 뿐입니다.
그렇다면 양자역학이 허무맹랑한 헛소리냐 ? 그건 또 아닙니다. 양자역학이 설명하는 현상이 없다면 우리는 컴퓨터를 지금 쓰고 있지 못하죠.

모든 지식은 탑 쌓기입니다. 그것도 매우 공들여서 쌓는 탑입니다. 밑에서부터 하나 하나 천천히 쌓아서 자신의 것으로 만들지 않으면 요즘 수능세대들처럼 '말만 잘하는 바보'들일 뿐입니다.


---------
귓가에 햇살을 받으며 석양까지 행복한 여행을...
웃으며 떠나갔던 것처럼 미소를 띠고 돌아와 마침내 평안하기를...
- 엘프의 인사, 드래곤 라자, 이영도

즐겁게 놀아보자.

dondek의 이미지

Quote:
밑에서부터 하나 하나 천천히 쌓아서 자신의 것으로 만들지 않으면 요즘 수능세대들처럼 '말만 잘하는 바보'들일 뿐입니다.

이 구절 아주 마음에 와 닿는군요.

정말이지 어떻게 된 지식 구조가 그렇게도 역삼각형인지.. 상당히 많은 문학, 상식, 역사, 제도, 철학 등등의 지식들을 알고있는 것 처럼 보이는데 조금만 깊이 들어가면 이건 완전히 깡통인 경우가 태반이더군요.

그렇게 많이 아는것이 중요하지만 문제는 적응력이 없다는 거죠. 게다가 응용력도 없죠.

'천리길도 한걸음부터'라는 성현들의 말씀은 괜히 있는게 아니며, 구태여 중간과정을 하지 않아도 꼭지점에 도달할 수 있다고 말씀하시는 것은 스스로 남들이 하는 만큼 노력할 자신이 없다는 것과 같다고 생각합니다.

남들이 하는 노력보다 더 이상으로 해야 꼭지점에 조금이라도 더 빨리 도달하고 올바른 꼭지점에 도달하겠죠. 언제까지 "어라, 여기가 아니네!" 이러실 건지 약간은 걱정됩니다.

물론 "여기가 아니네!"식의 맨땅에 헤딩 방식도 아주 좋은 것이지만, 그것은 좀 더 근간적인 부분에서 해야할 일이지, 그런 기본이 전무한 상태에서 하는 소위 삽질은 도움이 안될 것입니다.

진리를 나의 수준으로 끌어내리지 마라.
나를 진리의 수준으로 끌어올려라. - 배꼽 중에서

dummy999의 이미지

redbaron
님의 말씀이 일리가 있군요..
첨엔 그런 개념자체가 없었기때문에 지금와서 그렇게 비스무리한 단어들이
나오는건 무리도 아니겠습니다.
그렇다면 앞으로도 얼마나더 새로운단어들이 우리의 머리를 압박할수도..

그리고 의도와 지식의 차이역시 이해합니다.
그러나 그게 차이가있다면 차이를 둬서라도 우선은 의도를 먼저 알려주는쪽이 좋지않을까라는
생각을 해봅니다. 천천히 그것에대한 "지식"을 알아가더라도말입니다.

그리고 "지식"과 "의도"의 차이를 둔다면 분명히 의도는 쉽고 빨라야하며
누구나 알야야한다는 의무도 있지않을까생각합니다.

컴퓨터에서 네트워크레이어의 하위단계를 알지않고도 상위단계만으로 충분히 네트워크의
구조를 설명할수있습니다. 그런게 좀부족하지않을까생각해봅니다.

네트웍플밍을 하려는데 꼭 네트웍의 하위레이어를 공부할필요도없을꺼며.
그렇다고 하드웨어구조나 통신의 회선 연결등의 구체적인 수준까지 알필요는 더더욱 없겠지요
단지 사용자는 필요한수준의 정보만 긁어다 자기것으로 만들면되는거같아요.

여튼 이런부분은 같은 의견입니다.

그러나 중요한것은 처음부터 깊게 파는 지식은 오래가지못하지않나싶습니다.
목욕할때도 그 단계가있어 처음엔 그냥 가볍게 발만 적시고 점차 온몸을 적시는게 당연하죠.
바로 온몸을 담구면 몸에 무리가 생길수있습니다.
어떤식으로가던 가면되는것은 아주 기초적인 방법이고 위에 많은분들이 설명한 그것은
그것에대한 구체적인 방법론들을 말하는거겠죠.

그래도 프레임워크와 라이브러리등의 개념은 같은 이유에서 출발한건 맞겠죠?
물론 기능도 비슷하고 지금도 그러니까. 아무리 C언어같은걸로 Hello World!!라는 플그램을
짜더라도 그것은 프레임워크(또는 라이브러리)를 의존하고있기때문에 컴파일되고 결과물이
보이는거겠죠?

만약 프레임워크를 기반으로 하지않는다면 유닉스에서 컴파일된 파일을 윈도우에서 돌려도
돌아가야정상이겠죠?
물론 소스야 약간의 레이어(포팅레이어같은..)를 꼿아두면 거의 80%이상은 완벽해질수있겠지만
그이상은 무리겠죠?

뭐 제글에대한 결론은 프레임워크라고 별도로 이름불리워진것은 다른뜻으로 보면
일종의 라이브러리개념밖에 되지않을듯하다는겁니다.
다시말해 이클립스가 느려터지고 그래서 효율성이 떨어지는거나 CUI에서 명령스크립스
쓰는거나 결과론적으로 봤을때는 효율은 거기서 거기다라는겁니다.

어차피 프레임워크라는건 CUI에도 GUI에도 자바 프로그램에도 닷넷플그램에도..
어디든지간에 필요로한거니까요..
결론은 프레임워크 없이 플그램실행은 절때로 불가능하다는겁니다.

------------------------------------
F/OSS bless you... ^^*

fender의 이미지

dummy999 wrote:
컴퓨터에서 네트워크레이어의 하위단계를 알지않고도 상위단계만으로 충분히 네트워크의
구조를 설명할수있습니다. 그런게 좀부족하지않을까생각해봅니다.

네트웍플밍을 하려는데 꼭 네트웍의 하위레이어를 공부할필요도없을꺼며.
그렇다고 하드웨어구조나 통신의 회선 연결등의 구체적인 수준까지 알필요는 더더욱 없겠지요
단지 사용자는 필요한수준의 정보만 긁어다 자기것으로 만들면되는거같아요.

말씀하신 부분은 맞습니다만, 더미님의 의도는 소프트웨어 공학적인 관점에서 프레임워크의 유용성을 주장하고 싶으신게 아니었던지요? 오히려 프레임워크에 대한 정확한 개념적 정의를 못해도 API만 알면 프레임워크를 사용하는데는 무리가 없습니다. 하지만 프로그래밍에 대한 전문 지식이 없는 사람이 나름대로 프레임워크란 무엇인가를 정의 했다면 과연 그게 누구에게 얼마나 유용할 지 모르겠습니다.

전 프로그래밍 지식 없는 소프트웨어 공학은 의미가 없다고 봅니다. 만일 음악을 하고 싶다면 엠프의 작동원리나 악기의 공명을 음향학적으로 분석할 수 있는 지식이 없어도 음악적 센스만 있다면 좋은 음악을 만들 수 있습니다, 하지만 평론가 입장에서 예를들어 얼터니티브/펑크 음반 한 장 안들어보고 락음악의 역사가 어쩌고 포스트 모더니즘이 어쩌고 한다면 그건 주제 넘는 일이 아닐까요?

더미님께서 프로그래밍 지식 없이 프레임워크의 중요성을 도표를 그려가면서 설명하신 다면 그런 설명은 누가 들어야 유익한 것일까요?

만일 앞서 말한 음반 한장 안들어본 평론가가 실제 뮤지션들을 찾아가서 펑크 정신이 어쩌고 얼터니티브 무브먼트가 어쩌고 한다면 그게 뮤지션들이 좋은 음악을 만드는데 얼마나 도움이 될지 모르겠습니다...

----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...

warpdory의 이미지

dummy999 wrote:
그러나 중요한것은 처음부터 깊게 파는 지식은 오래가지못하지않나싶습니다.
목욕할때도 그 단계가있어 처음엔 그냥 가볍게 발만 적시고 점차 온몸을 적시는게 당연하죠.
바로 온몸을 담구면 몸에 무리가 생길수있습니다.
어떤식으로가던 가면되는것은 아주 기초적인 방법이고 위에 많은분들이 설명한 그것은
그것에대한 구체적인 방법론들을 말하는거겠죠.

그 발만 적시고, 점차 온몸을 적시는 게 당연 한 것이 바로 탑을 하나 하나 쌓아가는 겁니다. 처음부터 온몸을 담구면 당연히 무리가 생깁니다. 그래서 위에서 제가 얘기했듯이, 태어나서 어느정도 지나면 엄마가 하나.. 둘 .. 가르쳐줍니다. 그리고 초등학교 들어가면 수의 개념을 배우기 시작하고, 계산을 시작하고 사칙연산을 합니다. 그리고 중학교 올라가면 삼각함수의 기초를 배우기 시작하고 기하학을 배우고 집합론을 배우고 ... 고등학교 올라가면 미적분을 배우고, 집합론을 심화하기 시작하고 삼각함수를 다시 배웁니다. 그리고 대학 들어가면 또 미적분학을 배웁니다. 그리고 수학이 아닌 물리쪽을 보자면 ...
어려서는 뭐 보고 생활하면서 '자연'이라는 것을 배웁니다. 그리고 초등학교 들어가면 물체주머니 같은 것을 보고 이것과 저것은 다르다.. 같다.. 부터 시작해서 배웁니다. 그리고 중학교 때는 물상과 생물을 배우죠. 그리고 고등학교에 올라오면 물리화학지구과학생물을 배웁니다. 그리고 대학에 들어가면 다시 일반물리학을 배웁니다. 그리고 2학년 되면 수리물리학과 고전역학, 현대물리학 등을 배우죠. 그리고 3학년쯤 되면 그동안 배웠던 것들을 모두 망라하는 전자기학, 양자역학, 열통계역학 이런 걸 배우고, 4학년되면 고체물리학, 광학, ... 이런 걸 배우고, 대학원 들어가면 그중 자신의 적성에 맞는 것을 골라서 깊이 파들고 들어가기 시작합니다.
태어나서 응애.. 하는 아기한테 양자역학을 가르칠 수 없는 겁니다. 대학교 3학년때 양자역학을 배우기 위해서 초/중/고 12년과 대학 2년, 그리고 초등학교 들어가기전까지의 8년, 합쳐서 22년이라는 시간의 공부가 필요한 겁니다. 물론, 천재들은 예외로 치고요.

자.. 그러면 중간의 개념들을 생략하면 어찌 될까요 ? 예를 들어서 삼각함수를 배울 때 ... 잤다든가, 시험에 안나온다고 공부를 안했다거나 한다면 ... 당연히 그 윗단계에서는 이해를 못합니다. 그러면 그때부터는 앞에서 교수님이 말씀하시는 내용은 ... 저쪽 딴세상 얘기입니다. 암만 교수가 앞에서 떠들고 조교가 연습문제 풀어줘봐야 소용없다는 거죠. 필기는 열심히 하고... 시험볼 땐 외워서 어찌 어찌 시험을 치뤄서 학점이야 나올 수 있겠지만, 자기의 지식이 아닙니다.


---------
귓가에 햇살을 받으며 석양까지 행복한 여행을...
웃으며 떠나갔던 것처럼 미소를 띠고 돌아와 마침내 평안하기를...
- 엘프의 인사, 드래곤 라자, 이영도

즐겁게 놀아보자.