zzzzzzzzzzz

South128의 이미지

zzzzzzzzzzzz

klyx의 이미지

창띄우고 버튼 만들고 하는 식의 인터페이스를 GUI라고 하는데, 아마 GUI프로그램을 만들고 싶다는 뜻의 글로 보입니다.
GUI라고 해서 지금 '검은 화면'에서 하는 것과 다른 걸 하는게 아닙니다. 검은 화면에서 하는 걸 응용해서 GUI도 만드는 겁니다.
GUI를 시작하면 기본적인 언어 스펙외에도 추가로 알아야 할게 훨씬 많기 때문에 우선 언어를 익히는데 적합한 '검은 화면의 프로그램'만 만들고 있는 것입니다.

다만, '백날 해봐야 검은화면에 출력되는것이면 상업적으로나 보나 뭘로보나 별 쓸모없는거 아닌가요?'이건 크나큰 오해입니다.
실제로는 말씀하신 '검은화면'에서 돌아가는 프로그램이 훨씬 더 많습니다.
당장 지금쓰고 게신 VC++의 컴파일러도 검은 화면에서 돌아가는 프로그램입니다.
VC++은 그 컴파일러를 호출해서 사용하고 있는 거고요.

South128의 이미지

호오.. 그렇군요..

실제로 보이는것보다 그 검은화면.. 백그라운드에서 실행되는게 더 많다는 말씀이시죠?

신기하네요.. 실제로는 안보여서 몰랐지만.. 실제로는 그 검은화면에서 대부분의 것들이 일어난다는 말씀이신거죠?

근데 c++나 c로 실행시키는 그 검은화면은 웹이랑은 연결시킬수가 없어서 크나큰 프로그램을 만들기에는 무리가 있다고

생각하는데 제 편견이나 생각을 확장시켜줄만한 c or c++로 만든 프로그램이 어디 없을까요?

c나 c++로 만든 프로그램이 어느정도의 프로그램으로까지 커질수가 있는지 가늠을 할수가 없네요 ㅠㅠ..

klyx의 이미지

웹이랑 연결시키면 그 순간 말씀하신 '검은 화면'의 향연입니다.
서버처럼 자원이 소중한 환경에서 GUI같은걸 올리는건 자원의 낭비입니다.
기본적으로 대부분의 서버는 GUI자체를 사용하지 않으며, 서버에서 돌아가는 수많은 데몬이나 인터프리터는 모두 CLI환경으로 조작합니다.
프로그램 하나로 서버가 돌아가는 건 아니므로 콕 찝어 말하기는 힘들지만, 웹서버를 구성하는 유명한 AMP환경(Apache + MySQL/MariaDB + PHP)은 모두 C로 작성되었고, GUI가 없는 프로그램들입니다.

South128의 이미지

으어.. 제가 컴퓨터공학적인 지식이 많이 부족하여 써주신 전체적인 글을 다 이해하지는 못했지만

요지는 제가 지금하고있는 C++,C언어가 검은화면에 뿌려지는게 단순한 것이 아니다 라는걸 느꼈습니다..

감사합니다!

South128의 이미지

침대에 누워서 생각하다가 시간지나서 못물어보면 후회할것 같아서 다시 컴을켜고 글을 이렇게 남깁니다.

컴퓨터쪽 공부는 나름대로 하고 있는데 님이 달아주신 답변을 이해못한게 자꾸 머릿속에 켕겨서 잠이 오질 않습니다.

변명을 해보자면 저뿐만은 아니겠지만..

학교 학점 공부하랴, 토익도 챙기랴 자격증, 봉사활동 기타 등등챙기느라 요즘 전공공부에 소홀히 하고 있기는 하다만,

명쾌하게 답변을 해주신것에 대해서 " 아 그렇구나! " 시원하게 받아들이지 못하는 제 자신의 한계에 대해서 느겼고 제 자신이 한심해서

도움을 청하려고 합니다.

그리고 지금의 제 단계에서 어떻게 해야 한단계 도약을 해서 좀더 폭넓은 방대한 지식을 빠르게 흡수할수 있는지,

그리고 어떻게 해야 프로그램이라는 것을 좀더 잘 이해할수 있는지에 대해서도 묻고 싶습니다.

제가 요근래 컴퓨터 공부를 하는 위주의 방식이 예를들어 어떤 소규모의 프로젝트를 만든다고 할때 (DB연동없이 )

C++나 C로 만들고 나름대로의 차곡차곡 프로젝트를 만들어 가는 방식으로 공부를 하고 있습니다.

이리저리 C나 C++로 만든 프로젝트 책들도 가져다가 만든것도 한번 따라 만들어보고 따라 만들면서 내것이 되고 자료구조도 접목시켜서 만드는 등 이런 방식으로

공부를 하고 있습니다만 계속 이런식으로 하는것도 좋지만, 위에서 말했다싶이 이렇게만 하다보니 "검은화면"에만 뿌려지는 소스가 약간 질릴때가 되어서

글을 올린것도 같은 맥락이라고 보시면 될거같습니다.

지금 저의 이런 상황에서 한단계 벽을 부수고 더 높게 도약을 하고 싶은데 어떻게 해야 할까요?

차라리 웹에 시간을 쏟았더라면, 눈에 보이는 가시적인 효과가 커서 홈페이지라도 만드는 연습이라도 해봤을텐데 ..

물론 제 시야가 좁고 실력이 없어서 이런 생각이 드는것이겠지만, 저의 현재 상황들을 타개할 방법을 구하고자 도움좀 부탁드립니다.

yhsuk의 이미지

다른 분들이 이미 좋은 답변들을 달아 주셨는데, 저는 하고 싶은 얘길 주절주절 써보도록 하겠습니다.

겉으로 보이는 UI나 UX도 매우 중요합니다. 사용자와 소통하는 부분인데, 중요하지 않을리는 없지요.
UI나 UX편리성에 따라 프로그램에 대한 평가도 매우 갈립니다. 잘못 만들면 죽기도 하지요.

하지만, GUI프로그램이라고 하더라도 GUI와 관계없이 계산등의 처리하는 코드가 많습니다.
예를 들어, 코레일 기차예매 앱을 생각해 보시면 GUI도 중요하지만,
출발점과 도착점, 시간등을 선택했을 때, 어떤 경로로 가야 할지 정하는 코드가 있겠습니다.
이런건 내부 계산이고, 이런 계산을 할 때는 UI나 UX가 관여할 여지가 없고, 내부 계산 결과 목록을 GUI로 보여주게 됩니다.
이렇게 보면 GUI를 쓰는 프로그램을 만들든 그렇지 않은 프로그램을 만들든 GUI없이 동작하는 코드가 많습니다.

GUI를 쓰는 프로그램은 플랫폼별로 다른 프레임워크를 사용해야 하거나, 유행을 타는 경우가 많지만, 계산 코드들은 공통적으로 사용할 수 있는 여지가 많지요.
다른 분들도 얘기해 주셨지만 서비스를 제공하는 서버 프로그램들은 GUI가 없는 경우가 많습니다.
물론 서버 프로그램도 관리를 위한 GUI가 존재하는 경우도 있지요.
하지만 관리를 위한 GUI는 보통 서버 프로그램과 통신하는 식으로 되어 있고, 서버 프로그램 자체는 GUI가 없는 경우가 많습니다.

빙산의 일각이라는 표현이 있는데, 구글의 검색엔진 같은 걸 생각해 보시면 되겠네요.
검색 화면 자체는 간단하지만, 검색 요청시 붙어 있는 수많은 서버들을 생각해 보시면 되겠습니다(키워드 검색, 이미지 검색, 동영상 검색...)

그런데, GUI가 중요하지 않다는 얘기는 절대 아닙니다.
그래픽 에디터 등의 전문 상업적인 툴을 생각해 보시면, 서버등의 서비스보다 더 어렵고 복잡한 경우도 있습니다.
하지만 그런 프로그램조차도 GUI와 관계없이 계산 코드가 더 많을 수 있다는 것입니다.
GUI없는 코드들이 심심하고 재미없더라도, 기초가 되는 코드, 문법, 구조 등은 GUI프로그램이든 그렇지 않은 프로그램이든
어차피 공부하셔야 하는 것들입니다.

Signature :) - "여유를 갖고 행동하되 게을러지지 말자"

South128의 이미지

좋은답변 감사드립니다..
항상 공부하면서 궁금했던 부분이었는데 점차 좋은 답변들을 읽어가면서 완벽하지는 않지만 그동안 몰랐던 부분에 있어서
어느정도 윤곽이 잡혀 가는것 같습니다.
정말 진심으로 감사드립니다.

klyx의 이미지

한단계 도약이라는 건 말은 좋지만 너무 추상적이라 별 의미가 없는 말입니다.
구체적으로 무엇을 하고 싶으신 거고, 무엇을 공부했고, 무엇을 만들어봤고, 지금 무엇을 공부하고 있고, 무엇을 준비하고 있나요?

South128의 이미지

현재는 컴퓨터공학적인 부분이외에 관련 자격증이랑 어학점수 소위 말하는 스펙을 쌓고 있느라 깊게 컴퓨터공부를 하고 있지는 않습니다.

하지만 근 3개월내로 스펙쌓는 과정이 거의 마무리가 되어가기에 끝나갔을무렵 예전에 했던 c++와 c프로그램을 더 갈고 닦을지 아니면

모바일 앱개발 관련해서 그동안 생각해왔던 프로그램을 만들어볼지 고민을 하다가 예전에 제가 만들어봤던 c와 c++프로그램을 계속 공부할 경우

"과연 검은화면에서만 동작하는것일까"에 대한 부분에서 해답을 얻고자 궁금해서 질문을 했던것입니다.

c와 c++로 만들어본 프로그램은 전화번호부나, 가위바위보 프로그램, dvd대여 프로그램 , 테트리스 같은 허접한 프로그램들 뿐입니다.

그리고 궁금했던 부분이 해결되어서 이제 다시한번 목표를 재조정 해야 할것 같습니다.

Necromancer의 이미지

원래 컴퓨터 자체가 계산기에서 출발한 겁니다.

그리고 현장에서는 그 GUI를 직접 구현하는 경우 거의 없습니다. 라이브러리 갖다 씁니다.

그래도 GUI쪽 해보고 싶다면 윈도우 GUI는 Win32 API를 보세요. 지금은 Windows API로 개정되었군요.
리눅스 쪽은 X-Window, GTK, QT 등의 라이브러리에 관한 책(가급적이면 GTK나 QT 추천) 보세요.
일단 GUI 들어가면 예제에 담을 수 없을 정도로 코딩량이 수십배이상 폭증(?)하는건 감안하셔야 합니다.

Written By the Black Knight of Destruction

South128의 이미지

그..그렇군요

근데 언어는 알고 있다고해도 GUI 쪽을 아예 배워보지 않는다면 실제로 현업에서 프로그래밍 할때

그떄 되서야 GUI 가져와서 공부한다고하면 좀 늦지 않을까요?

그래서 그러는데 미리 공부하는게 도움이 더 될런지요..?

아니면 그냥 지금하고있는 언어나 자료구조 쪽을 더 공부하고 나중에 현업에 가서

그때서야 GUI 공부를 한다고해도 늦지 않나요?

jick의 이미지

"현업"에서 프로그래밍 12년째 하고 있습니다.

GUI 쓴 적 없습니다. -_-;;

"현업"의 세계는 무척 방대합니다.

...물론 GUI를 배워둔다고 해서 나쁠 건 없고 GUI가 꼭 필요한 분야도 있으니까, 본인이 흥미가 당긴다면 GUI에 관련된 공부를 해보시는 것도 좋습니다. 원래 본인이 재미있어서 하는 공부만큼 공부가 잘 되는 경우가 없으니까요.

하지만 한 가지 확실한 건 자료구조 같은 건 반드시 배워둬야 하는 거고 나중에 현업에서 배우려고 하면 늦는다는 것입니다.

(그러니까, 길게 보고 관심있는 분야는 이것저것 시도해 보시되, "기본"을 소홀히 하지는 마세요.)

South128의 이미지

학교생활을 하면서 자세히는 볼수 없었던 부분에 대해서 알려주셔서 감사합니다.

hxploit의 이미지

정말 제대로 공부했다면 GUI 라이브러리 공부 따로 안했어도
필요에 따라 갖다가 레퍼런스 보면서 바로 만들 수 있습니다.

정말 중요한 건 특정 라이브러리 API 공부하는 수준이 아니라,
어떤 것이 와도 바로 구글링으로 정보를 빠르게 얻고 적용시킬 수 있는 능력입니다.
본인이 대학에서 Qt 만 공부했는데, 현업에서 리눅스에서 gtk+ 로 만들라고 하면
못한다고 하실 건 아니겠지요.

그리고 GUI 짜는 건 사실 엄밀히 말해서는 정말 세분화하는 경우
디자이너의 몫으로 가는 지분이 오히려 더 많습니다. 프로그래머가 할 일은
GUI 가 아니라 실제 필요한 연산들입니다. 그런 것의 기초가 대학에서 배우는
기초적인 자료구조, 알고리즘과 같은 언뜻 보면 추상적인 것 같은 학문들입니다.
눈으로 보는 것을 중요시하지 말고 추상적인 것들을 더 열심히 하시기 바랍니다.

South128의 이미지

아 그렇구나..
좋은답변 정말 진심으로 감사드립니다.
지금부터라도 구글링으로 영어로된 소스 찾아보고 같다 끌어써보고 하는 능력을 길러야 겠네요.

세벌의 이미지

http://python-gtk-3-tutorial.readthedocs.org/en/latest/ 참고하셔요.

때를 떄라고 치는 오타 자주 나죠? 세벌식을 배워보셔요.