Unix Programmer가 되려면?

geekforum의 이미지

저는 이것저것 안해 본게 없습니다. 하지만 결국 C로 돌아오더군요. 그래서 윈도 계열보단 유닉스 프로그래머가 되고 싶습니다. 그렇게 하기 위해서는 어떤 순서로 공부하는 것이 좋을까요?

저는 지금 "The C Programming Language"로 C언어를 다시 공부하고 있으며, 앞으로 "Advanced Programming In the Unix Environment", "Unix Network Programming", "The Design of the Unix Operating System" 등등을 읽어 나갈 생각입니다.

FreeBSD,RedHat Linux에서 환경에서 프로그래밍할거구요. 조언좀 부탁드립니다. Unix Programmer가 되기 위해서 나아가야 할 방향을...

익명 사용자의 이미지

아직 Console과 GUI의 이점등을 잘 모르시는것 같군요.
Console을 잘 알아보세요. GUI보다 편하고 빠르고 대량으로 처리하고 등등
M$ 윈더그 보다 좋은점이 많다고 생각이 되는데요.

특히 요즘 개발되고 있는 리눅스 같으면, 일면에서는 이미 윈도우를 따라 잡았다고 생각이 드는군요.

예를들어 Gnome2 정도?

김현욱의 이미지

윈도우즈가 훨씬 잘 만들어 졌다니요?
어떤면에서 그런 말씀을 하시는지는 모르지만요,
서버측에서 보면 그렇지 않지요.......
hotmail site 가 왜 freeBSD 로 운영되는지 아시나요?

나름대로 용도가 있습니다.

익명 사용자의 이미지

hotmail인수할때 원래 FreeBSD였기때문에 그런거지 않나요? 그런 대규모를 한번에 바꾸기힘드니까 그냥 FreeBSD쓰고 있느거 아닌가요? 이젠 프리포크만으로는 동시 접속자를 감당하기 부족한 시대인것 같습니다. 리눅스도 어서 쓰레드개발의 용이성과 쓰레드의 성능이 좋아져야할텐데요..

익명 사용자의 이미지

한꺼번에 바꿀려고 하다가 몇개 바꿨는데 계속 죽어서 원상복귀한겁니다 -_-;

익명 사용자의 이미지

서버.. 때문이죠.
특히 FreeBSD같은 경우는 더더욱 매력적인 :)

익명 사용자의 이미지

Unix application쪽을 생각하신다면 차라리 그 application가 활용되는 분야에 대한 공부가 더 필요할 것입니다. 전산이든 전자든 기계든... 설사 Unix programming 분야로 나가지 않더라도, 다른 분야에 갈 수 있는 융통성이 있으니 말입니다.

한 예로 제가 일하는 부서는 업무 특성상 Unix application 개발 능력은 기본인데, 새로 사원
뽑을 때 Unix programming 능력에 대해서는 크게 관
심을 두지 않습니다. 오히려, 업무 관련 지식을 더 크게 봅니다. 한 1년정도면 고수는 못되더라도 application 개발에 큰 문제가 없다고 보지만, 업무 관련 지식을 1년안에 안다고 하기는 힘들지요. 4~6년 배운 사람들도 업무관련 지식에서 해매는 판국인데...

물론, 제 경험에 한정된 이야기입니다.

근데, 우리나라에서는 Unix 관련 시장이 너무 작지 않는가요? 중요한 H/W, S/W 둘다 거의 대부분이 수입에 의존하고 있는 상황에서 Unix programmer가 살 수 있는 여지가 적다고 생각합니다...

익명 사용자의 이미지

전 유닉스 프로그래머로 일한지 10여년이 지났습니다. 물론 가끔 윈도우 응용 프로그래밍을 개발한 적도 있고 웹프로그래밍을 한 적도 있습니다만, 여전히 가장 많이 했던 일은 유닉스 프로그래밍이었고 이제 조금 유닉스 프로그래머다라고 말할 수 있는 느낌이 듭니다.

어쨋든 어줍잖은 저의 경험이지만 도움이 될까해서 글을 씁니다.

우선, 많은 고민후에 결정하신일이라고 생각합니다만 다시 한 번 고민하시라고 말씀드리겠습니다. 대우가 별로 좋지 않기 떄문입니다. 수요가 너무 적기때문이지요.

C/C++계열로 먹고 살자면 현재 제일 수요가 많은 것은 윈도우 응용프로그래머인 것을 잘 알고 계실 것입니다. 유닉스용 응용프로그래머는 갈수록 입지가 좁아지고 있거든요. 현재 시장에서 필요로 하는 유닉스용 응용프로그램은 FTP나 통신데몬 정도로 줄어들고 있는 실정입니다. 한때 미들웨어 붐이 불어서 아직까지 그 쪽 계통의 프로그래머로 일하시는 분들이 있긴 하지만 그나마 미래는 불투명합니다. 유닉스 응용프로그래머의 수요가 그러한데 응용프로그래머들에게 인터페이스를 제공하는 시스템 프로그래머는 암울 그 자체지요. 저또한 가끔 딴길로 샛다고 말씀드린 것이 만족할 만한 대우를 받지 못한 관계로 그런 것입니다.

이런 상황떄문에 유닉스 프로그래밍을 꿈꾸다가 SE나 CE로 지향하시는 분들이 꽤됩니다. 물론 이것은 정통 유닉스 프로그래머가 되기를 생각하신다고 가정하고 말씀드리는 것입니다. 자신의 일이 유닉스 프로그래머인지, 웹플머인지 SE/CE인지도 모르는 비기너라면 곤란하겠지요. 사실 상당수의 SE/CE나 웹프로그래머들이 단지 유닉스상에서 일한다는 이유로 자신을 유닉스 프로그래머로 착각하고 있답니다. 이런 경우 경력과 상관없이 여전히 초보자인 것이죠. 허송세월만 산것입니다. 잘아시겠시만 이런 사람들에게 유닉스 응용프로그래머와 유닉스 시스템 프로그래머의 차이를 설명한다는 것 자체가 난센스 아니겠습니까? 쩝 이야기가 딴데로 샛네요.

산전수전 다 겪으셨다니 상황을 잘아실텐데도 굳이 유닉스 프로그래머가 되시겠다는데에는 나름의 각오를 하신거라 생각됩니다. 그렇다면 우선 공부의 방향은 제대로 잡스신 것 같습니다. "The C Programming Language", "Advanced Programming In the Unix Environment", "Unix Network Programming", "The Design of the Unix Operating System" 등등과 같은 책들은 유닉스 프로그래머들의 바이블과 같은 양서죠. 대다수의 유닉스 프로그래머들이 고객들을 상대로 아키텍쳐를 설명할때 책들의 내용이 자주 언급됩니다. 이를테면, "이 방식은 Unix Network Programming에서 소개된 내용인데, 다음 모듈은 어떻다... "식으로요. 그러나, 제대로 마스터하시는데 꽤 시간이 걸리는것은 각오하셔야 할 것입니다. 그리고 공부하시면서 틈틈히 운영체제에 대한 공부를 곁들이시면 금상첨화일겁니다. 미약한 지식이나마 한 권 권하는데, Operating system concepts( galvin 저 )를 권합니다.

원하시는 바 성취을 기원합니다.

익명 사용자의 이미지

SE와 CE가 뭐에요?
이상한 질문해서 죄송 ^^

익명 사용자의 이미지

SE : System Engineer
CE : Customer Engineer

익명 사용자의 이미지

unix programmer 가 되려면?

만약 응용 어플이 목적이시라면 Kylix 만 하셔도 됩니다. 나머지는 생산성에서 밀리고요,
그것도 아니다 싶으시면 MS windows 영역으로 일찌감치 떠나세요.쎄고 쎈 언어와 툴들이 가득.
만약 지향하시는 방향이 System 엔지니어링 이상이시라면..
순서를 정해 드릴께요.

1) 아르바이트 -> Shell Script 마스터 ,TCl/Tk 마스터

2) 정규직 -> 1) + Perl 마스터,

3) 전문직 -> 2) + Unix C 마스터,

4) 백수 + 월 용돈 500이상 -> 3) + AT&T ASM(AS), Intel ASM(as86) 직독 가능(마스터는 구라)

5) 백수 + 결혼가능(출산가능) ->

- kernel 0.01 ~ 1.0 line 별 주석 가능 (1.0 이상은 바라지도 않음)
- 80286 ~ 486 까지의 cpu architecture 설명 가능
- 다음과 같은 것이 평소 궁금해야함
1) 왜 bootStrapLoader 가 각 버전별로 새로 쓰여 졌어야만 할까?
2) int 0x80 이 콜게이트 일까 트랩 게이트 일까?
3) 리누스가 헬싱키를 떠날때는 sparc 버젼이 릴리즈 되었던가?
4) 왜 RMI 서버는 shell 없이는 에플렛을 IE 에서 크래쉬 시키는가?

* 한가지 이상한건,
왜 이책 저책 보라면서 kernel 소스를 보라는 얘기가 한명도 없는지
도대체 이해가 되지 않는구만..

익명 사용자의 이미지

5) 백수 + 결혼가능(출산가능) -> 에 한가지 더...
-여자여야 함

익명 사용자의 이미지

하하 커널 폐인이신가 보군요

익명 사용자의 이미지

유닉스 프로그래머라..
유닉스 할려면 공부 많이 해야됩니다.
OS 를 애인보다 옆에 끼고 살아야 된다고 생각하는데..ㅎㅎ
말씀하신 책들은 정석입니다. 그 책들 보시고.
그런데 이상하게 네크워크 책이 빠졌군요.

유닉스 프로그래머가 될려면
(순서)
1. OS 구조 / 운영 / 방법 / 설계
2. 시스템 프로그래밍 (특히 프로세스, 스레드)
3. 네트웍 프로그래밍 (버클리 소켓)
4. X Window 프로그래밍 (Xt 툴킷, 모티프)
를 반드시 공부해야 됩니다.

부가적으로 gtk 같은 것도 공부하면 좋겠지만,
제가 보기엔 아직 표준은 모티프 같던데..
엑스 윈도 프로그램은 상당히 쉽습니다.
참고로 MS 윈도 프로그래밍은 한번도 한적이 없어서 모릅니다. MS 쪽은 완전 까막눈입니다. 그 흔한 비주얼C++/베이직 쓸줄도 모르거든요.

공부해보시면 아시겠지만... MS윈도우는 유닉스를 흉내낸 것이라는 인상이 강하게 남을 겁니다. 유닉스를 학문처럼 역사가 있고 체계적이라서 공부해보면 재미있습니다.

익명 사용자의 이미지

에릭 레이몬드가 이런 말했습니다.
"윈도우로 OS를 배우는 건
기브스를 하고 춤을 배우는 것과 같다."

그리고 컴파일러 만드는 일 하는 사람 한 명도
본적없습니다. 하지만 컴파일러를
안다는 건 프로그래밍 언어를 깊게 이해하게 해줍니다. 배우면 다 좋습니다. 당연한 거죠.

위에 있는 책이 전부 좋은 책인 것만은
사실이지만 좋은 책이 그렇듯이
정말 어렵습니다.
그래서 다들 다른 책 보다가
결국 위에 책을 다시 보게 되는 경우가 많은데요.
어떻게 보면 쉬운책 먼저 보는게 좋을 수도 있습니다.

익명 사용자의 이미지

제가 프리랜서로 컴파일러를 만들었습니다.

우리나라에서는 현실적으로 정규직으로 컴파일러 개발자는

필요가 없는것 같더군요. 안타까운 현실입니다.

익명 사용자의 이미지

음... 이쪽으로 공부를 하고 싶은데

좀더 자세히 말씀해 주시겠습니까???

구체적으로 어떤 컴파일러를 만드셨는지요???

밝히 실 수 있다면, pay는 어느정도 였는지...

그리고, 이 분야를 팠다가, 다른 기술의 흐름을 놓쳐서 고생하지는 않으셨는지...

익명 사용자의 이미지

커널을 건드려야 제대로된 유닉스 프로그래머다?

건드려서 뭐하게? 쓰잘데기 없는 장난이다?

이 두가지 의견이 팽팽하군요.
제 생각은 커널 건드려 보면 당근히 OS 에 대한 이해를 깊이있게 할수 있으니 좋다고 봅니다. 그것이 당장은 불필요한것이라고 하더라도..

OS 에 대해 빠삭히 알아야 하는 분야도 있을테니 전혀 불필요한 헛짓 같지는 않습니다.
그런데 만약에 파워빌더나 JSP 같은 것만 죽어라고 쓰는 응용레벨 프로그래머가 리눅스 커널 알아서 뭐하는데 쓰겠습니까?

결국 시스템 프로그래머로 쭉 커리어를 가지고 가겠다고 하는분은 커널 건드리는게 도움될듯 합니다.

익명 사용자의 이미지

시스템 프로그래밍에서 좀더 깊이 들어가면
결국 커널과 연관될수밖에 없더군요.. ..
제가 봤을적엔 건드릴수 밖에 없게 되어있습니다.
그리고 확실히 커널을(약간이라도) 이해하게 되면 시스템 플밍 작업이
훨씬 수월해 집니다. 문제해결을 위한 방법들이라든가,
문제에 효과적으로 접근하기 위한 그러한 방법도 찾기 쉬워지구요.

커널과 시스템플밍 이둘은 제가봤을적엔 동일한 연장선상에 있는듯,
뛰어난 시스템 플머는 원하든 원치않든 결국 커널해커로의 길로 통하게 되는듯.

익명 사용자의 이미지

황당하네요. 프래그래밍 언어 보다 도구가 더 중요하다?

이렇게 생각하는 분들도 계시군요. 도구는 도구일뿐... 중요한 핵심은 문제해결능력 이죠. 결국 적절한 알고리즘, 자료구조 그리고 프로그래밍 언어.. 이런것들이 젤로 중요하죠.

유닉스 프로그래머 수요가 있긴한데.. 다른 프로그래머에 비해 더 잘쳐주는거 같진 않아요.
엠베디드나 대용량 디비 프로그래머를 더 쳐주는 경향이 있어요.. 대기업 금융업체나 SI 업체도 물론 유닉스 많이 쓰죠. 그런데 대부분 유닉스 프로그램은 하청을 주죠. 하청업체는 보통 가난하게 사니까.. 결론은 유닉스 프로그래머는 배고픈 프로그래머???

저는 인터넷 업체에서 유닉스 프로그래밍을 주로하는데 업체 성격상 웹프로그래머를 더 쳐줘요. 너무 자주 옮기는게 경력상 않좋기 때문에 참고 버티고 있죠.

하드웨어 업체에선 유닉스 프로그래머가 제대로 대우 받을라나...? 그건 잘 몰르겠네요. 돈잘버는 유닉스 프로그래머 있으면 리플 좀 달아주세요. 희망을 좀 갖게.. ^^

익명 사용자의 이미지

저의 선배는 대충 일해 주고 한 달에 1000을 넘는 돈을 받습니다.
가끔은 2000도 넘구요. 한 두달 일하고 놀러 다니고...

꼭 프로그래머라고 보기는 어렵지만, SE이기도 하고 프로그래머이기도
합니다. 다른 프로그래머가 보기에 이 사람은 자기보다 훨씬 프로그래밍을
잘하는 SE이고, SE가 보기에는 자기보다 훨씬 시스템을 잘 다루는
프로그래머입니다.

프로그래밍만 잘 하는 경우에는 잘 모르겠지만, 시스템에 대한 빠삭한
이해와 함께, 유닉스 프로그래밍도 빠삭하게 잘 한다면 정말 비싼
프로그래머가 될 것입니다.

돈 많이 버시길....

익명 사용자의 이미지

흠.. 보통의 중소기업에서도 유닉스 프로그래머 상당히 필요로 합니다.
다만 눈에 보이기에 윈도우플머만 필요로 하는것 같아서 그렇고,
윈도우 플머에 비해서 그 수요가 적기 때문에 그런거죠
일단 모든 제품이 눈에 보이는 부분은 윈도우기반이잖아요,
그렇지만 그 기반은 유닉스 환경에서 돌아가는게 알게 모르게 상당히 됩니다.
응용어플이 아닌 기업어플 솔류션을 만드는 어느정도 규모의 회사들은 유닉스
플머를 필요로 합니다.
저도 솔류션 업체 에서 근무하고 있습니다(물론 응용어플은 아니죠, 그렇다고
임베디드나, DB 관련도 아닙니다).
중소기업이구요.
경력 3년정도에 3400 받고 근무하고 있습니다.

그리고 유닉어플은 하청개발이 많아서 싸다고 말씀하셨는데,
어차피 윈도우응용 어플도 거기서 거깁니다.
하청이 아니라고 할지라도 솔직히 돈버는 응용어플 개발하는 회사가 과연
몇개나 될까요 ?

익명 사용자의 이미지

웹서버를 유지하기 위한 유닉스 관리직이 돈을 많이 벌리가 있나요.
당신이 고용주면 돈을 많이 주고 싶겠어요?

익명 사용자의 이미지

제 생각에는 플밍 테크닉이나 운영체제에 대한 이해도도 중요하지만 플밍도구도 상당히 중요하다고 생각합니다. automake, srpm, autoconf, make, gcc 등도 자세히 알고 있어야 한다고 생각합니다. 그거 모르고 다른 사람이 작성한 코드를 분석한다는건 어불 성설이거든요.
GNU 문서에 가면 아주 자세히 나와있더군요.
아 그리고 우리나라는 영어권이 아니니까 locate나 gettext같은 지역 선택 관련 내용도 필수라는 생각도 듭니다.

익명 사용자의 이미지

저는 현재 programming for the real world POSIX.4를 읽고 있는데 이책도 괜찮더군요.
그냥 소설 책 읽듯이 그냥 읽고 있는데 유익한 이야기가 많이 있더군요...

익명 사용자의 이미지

책은 일단 기초를 다지기 위해 사용하세요.
그리고 관심있는 소스를 많이 받아서 컴파일 해보고 고쳐보고 코드를 일고 이해하세요.
코드를 보고 막히는 부분이 있으면 관련 문서를 찾아서 읽고 이해하도록 노력하세요
책만 봐서는 프로그래밍을 잘할 수 없습니다.
코드를 보세요!

익명 사용자의 이미지

영어를 잘하셔야 합니다.

익명 사용자의 이미지

프로그래머는 특정 프랫폼이나 특정 언어에 국한되어서는 안된다고 봅니다.
우리나라에서 유닉스로 프로그래밍을 해서 제품은 만들고 있는 회사가 과연 몇 개나 있는 지 궁금합니다.
보안 쪽 Firewall, VPN 쪽이 좀 사용하는 나머지는 글쎄요.
자신을 어디에 구속하지 말구 두루두루 잘하는 사람만이 살아남을 수 있는 세상입니다.

익명 사용자의 이미지

근데.. 유닉스 시스템 프로그래머는.. 무슨일 합니까??

익명 사용자의 이미지

공룡책이 뭐죠????

snowtree_의 이미지

Abraham Silberschatz, Peter Baer Galvin 저자의
"Operating System Concept" 이라는 책입니다..
대부분의 인터넷 서점에서 책제목으로 조회해 보시면 아실 겁니다.
보통 전산학과의 OS 수업교재로 사용되지요...

지금 5판이 나온것 같은데 책제목에 공룡그림이 있기 때문에 공룡책으로 부르는 가 봅니다...

익명 사용자의 이미지

공룡책(dinosaur)은 OS책이고
용책(dragon book)은 컴파일러책이오.

익명 사용자의 이미지

책 제목을 가르쳐 주세요.

의미만으로 책을 못 찾겠네요.

아니면 ISBN 이라도...

익명 사용자의 이미지

Applied Operating Systems Concepts : 0-471-36508-4

Operating System Concepts (6th Edition) : 0-471-41743-2

Compilers Principles,Techniques, and Tools by Alfred V.Aho, Ravi Sethi, Jeffrey D.Ullman, Addison-Wesley

: 0-201-10194-7

책의 ISBN이 정확한지는 모르겠으나

책의 그림은 맞습니다.....:)

책의 표지 그림들 보고 서점 가서 찾아보세요......^^;;;;

(참고로 컴파일러 책은 외국에서 평이 별로라는 소문을

들었는데 과연?...)

lovehis의 이미지

가끔 new group에 보면... 용책에 대하여 의문을 갖는 사람들이 있지만...
대부분 푸념 정도....

사실, 용책 이후로 용책 보다 좋은 책 혹은.... 그 정도 내용을 담고 있는 책은 것의 없던 것으로 알고 있습니다.

감히 말하지만... 사실 지금 까지 나온 컴파일러 이론 책중에 권위를 가질 수 있는 책은 다 합해도... 몇권 되지 않습니다.

개인적으로는 용책의 font나 뭐 그런게 마음에 들지 않고... 오래 됐다는 점은 최악 이라고 생각 하지만....
검파일러 전공자로서 그것 이상의 책은 본적이 없군요...

그럼...
--
늘...

slayer의 이미지

지나가는 이야기지만..
요즘 용책 보기 힘들더군요..
용책뿐만 아니라 Ullman이 집필에 관여한 책들은 이상하게 요즘 우리나라에 안 들어오는 것 같더군요..
혹시 이유 아시는 분 계십니까?

익명 사용자의 이미지

일단 용책은 절판이구요.

1학기때 학교 교재였는데, 절판되서 못샀어요... 미국에서도 절판이었는데, 지금은 모르겠어요

울만북은 일단 상당히 어렵지. 전체적으로...

솔직히 까놓구 얘기해서, automata나 compiler의 울만북을 학부생이 전부 이해하는건 거의 불가능 하다고 생각되는군요.

slayer의 이미지

용책 미국에선 절판이 아니던데요..
아마존에서 잘 팔고 있더군요..
제가 의문스러운 것은 왜 하필이면 Ullman이 집필한 책들만 안 들어오는건지..
Automata도 그렇고..compiler도 그렇고..
Database도 아마 안들어오는 것으로 알고 있습니다..
안 들어올려면 Addison-Wesley 전체 책이 안 들어오던가 해야지..
Ullman이 쓴 책만 안보이는게 참 이상하더군요..
이 양반이 태클을 걸어서 못 들어오는 건지..쩝..
얼른 해결되서 들어왔으면 좋겠네요..

익명 사용자의 이미지

흠... 전 세권 다 있는 상황인데...
수요가 없어서 안들어 오는거겠죠. 후후.

익명 사용자의 이미지

K.Louden이 쓴 Compiler construction을 권해드립니다.
비교적 쉽게 컴파일러 만드는데 직접 도움이 되는 내용만
골라져 있습니다.
책 부록에 보면 작은 파스칼 컴파일러 소스 코드도 있습니다.

익명 사용자의 이미지

공룡책은
컴파일러 감잡은 사람한테는 정말 대단한 책이지만
컴파일러를 배울려는 사람한테는 정말 어려운 책이죠.

공룡책이 지금은 좀 도움이 됩니다만 K.Louden이 쓴 컴파일러
컨스트럭션을 제대로 이해하기 전에는 정말 답답한 책이었죠.

만병통치약이 없듯이 모든 사람에게 도움이 되는 책은 없죠.
저도 킹콩 책이나 한번 만들어 볼까 합니다.

라키시스의 이미지

맞습니다. (언급하신게 공룡책(OS) 이 아니고 용책(Compiler) 인 거 같네요 ^^)
제 경우에도 처음 용책을 보고 좌절했었는데,
좀 쉽게 설명된 다른 책을 보고서 다시 용책을 봤었습니다.
역시 바이블은 바이블이라는 것을 다시 한번 느꼈습니다.
바이블(!)이 괜히 바이블이라고 불리는게 아니죠 :)

익명 사용자의 이미지

공룡이 있답니다.
빨간 공룡이 혹시 이공룡이 모질라 모델아닌감요? ㅋㅋ
딥따 재미는 없게 보았던 컴팔러 책이에요..
컴팔러 만드는건 재밌었는데.. 훌..

익명 사용자의 이미지

무슨 기사 같은 사람이 나오지 않나요

라키시스의 이미지

기사와 용이 싸우는(?) 그림이죠.
군생활 할 때 소일거리로 읽어 본 책입니다.
소일거리로 가볍게 읽어서 그런지, 거의 내용을 이해하지 못했었지요 ^^;;

익명 사용자의 이미지

지금 컴파일러 숙제 하다가

제대로 안 되는게 내고 잠시 쉬러 왔습니다...

FSM 따라가는거 장난 아니던데여.....

-_-;;;

익명 사용자의 이미지

저는 여섯달을 컴파일러 이론을 하나 잡고 만드는데 보냈습니다.
회사돈 몇천만원 깨먹고 나서야 조금 깨달음을 얻었습니다.
정말 인생에 도움이 안되는 학문 같지만,
컴파일러를 알고나니까 세상이 달라보이더군요.

익명 사용자의 이미지

저는 Brien W.Kernighan 과 Rob Pike이 쓴 The Unix Programming Environment를 권하고 십습니다. 오래된 책이지만 쉽고 재미있으며, 특히 Epilog는 Unix approach or philosophy에 대한 기술이 있어서 기억에 특히 남는 것 같습니다.
Unix 프로그래머가 되고 싶은 누구나 먼저 읽어 봐야되지 않을까 하는 생각이 듭니다.

......
우리는 서문에서 프로그래밍 작업에 접근하는 한 스타일인, Unix approach or philosophy가 있다고 말했다...
첫째, 머신이 일을 하게 해라. 다른 시스템에선 손으로 할 작업들을 머신이 대신 하도록(to mechanize) grep그리고 wc그리고 awk같은 프로그램을 사용하라.
둘째, 다른 사람들이 일을 하게 해라. 이미 있는 프로그램들을, 셸과 프로그램할 수있는 필터로 함께 붙여서, 당신 프로그램의 '빌딩 블록'으로서 사용해라 ... Unix환경은 수 만가지 방법으로 결합가능한 툴들로 풍성하다; 당신의 일은 때론 단지 적합한 결합(combination)을 생각해 내는 것이다.
셋째, 일을 단계적(in stages)으로 해라. 쓸만할 것 같은 가장 단순한(the simplest) 것을 만들어라, 그리고 당신의 사용 경험이(your experience with that) 다음으로 되어야할 가치가 있는 (만약 있으면) 것을 결정하게 해라. 사용 패턴들이 당신에게 어떤 것이 필요한 지를 말해 주기전엔 features와 옵션들을 추가 하지 말라.
넷째, 툴들을 만들어라. 단순히 환경에 더해지기 보단 그것을 향상 시키는, 기존 환경과 잘 맞는(to mesh with) 툴들을 만들어라(write).
......
...그리고 그 (유닉스의) 인기는, 편리하다고 여겨질만한 프로그래밍 환경의 디자인을 칠판에 스케치했던, 1969년의 몇몇 사람들의 명료한(clear) 생각에로 거슬러 올라 갈 수 있다...-에필로그 본문 중에서

익명 사용자의 이미지

A Book On C 좋은책입니다.
프로그램 공부하실때 좋은 책 보는것도 중요하겠지만,
제일 중요한건 직접 만들어 보는겁니다.
A Book On C 를 보면 기초적인 이야기(중요합니다.)기 때문에
자신이 성취감을 얻을 수 있는 프로그램을 만들기는 어렵습니다.
자신이 성취감을 얻을 수 있는 프로그램을 작은것부터 계속 만들어가면서,
고민하고 반성하고 컨닝하고.. 하는 과정에서 실력이 쌓이고 고수 되어가는 겁니다.
자료구조, 알고리즘.. 중요합니다.
하지만 왜 필요한지, 어떻게 써먹어야겠구나.. 하고 자신이 느끼지 못하면 자신의 것으로 소화를 시켜내지 못하죠.

첫번째 많이 만들어 볼것.
두번째 많이 보고, 컨닝할것.
세번째 귀를 열어 놓고 있을것.
네번째 새로운 시도를 두려워 하지 말것.

도움이 되셨는지 모르겠네요.
제가 항상 생각하는 말입니다.

top 이 궁금하시다고요?
소스를 분석해 보세요.
ls, cp, stat... 소스 rpm구해보면 다 있습니다.
상세한 주석과 함께.

익명 사용자의 이미지

유닉스에서 C 라는 건....
C + UNIX 가 융화된 형태라서
C 언어만 잘아서는 써먹을 데가 없습니다.

공부하려면 머.. 스티븐스 책 씨리즈 보면 되고여.. 아. 되도록이면 비싸더라도 원서를..
번역판 보다가 성격이 나빠지거나, 잘못된 이해를 할 수도 있습니다.

다음은 man, /usr/include/*.h

unix system 프로그래머가 잘 팔리냐구요?
글쎄요. 나만의 추측인지 모르지만, 프로그래머 인구 전체에서 5 ~ 10% 만 있어도 수요에 대한 공급은 될 거 같습니다.

익명 사용자의 이미지

진정한 고수가 되자면 플랫폼을 가리지 말아야 된다고 봅니다.
이미 많은 유닉스쪽 GNU와 Open Source프로그램들이 WIN32로
포팅되고 있지 않나요?
그런것들은 유닉스쪽만 잘하는 사람혹은 WIN32쪽만 잘하는 사람들이
해서 될일이 아니죠.

시스템전반적인 흐름을 잘 이해하고 이것들이 어떤 운영체제에서는
어떤식으로 구현되고 사용하는가를 개념적으로 잘 파악한다면
어디든지 쉽게 넘나들 수 있는 무공을 닦게 되시리라 봅니다.

그리고 유닉스프로그래밍하면 커널레벨이나 시스템레벨
프로그래밍만 생각하시는데 UNIX에서 어떻게 전반적인
Application Framework을 구현할것인가에 대한 관심은
상대적으로 작다는게 아쉽습니다.
되풀이 해서 차를 만들기 위해 바퀴 부터 다시 발명할 필요는
없는것이니까요.
M$는 욕도 많이 먹지만 그네들이 제시하고 구현한 개념과 스펙
차체는 본받을게 많다고 봅니다.
그러니 GNOME의 마구엘도 Mono프로젝트란걸로 .NET Framework을
오픈으로 구현하겠다고 나서는 것이지요.

두서 없이 적었는데..
제 말의 요지는 이제 리눅서들도 나무만 자꾸 보려하지말고
눈을 좀 넓혀서 전체적인 숲을 보는 안목을 기르고 전체적인
Framework을 넓게 보는 눈을 가졌으면 한다는 것입니다.

gnossienne의 이미지

저두 위의 님과 같은 생각입니다.
현재 대량의 영상 파일을 저장하는 시스템을 구축 중인데.
영상이라는 특성 때문에 초당 엄청난 양의 연산과 저장 공간이 필요로 하죠.
그런데 이것을 소스의 변경이 없이 win32와 linux에서 구현 되도록 하고 싶은것이 저의 생각이죠.
제가 생각하는 운영체제에서 지원하는 API의 기본적인 개념은 거의 비슷하죠.
파일, 스레드, 라이브러리..... 이와 같은 것들이요.
기본은 같은 구현이 다를 뿐이라고 생각하죠.
그래서 이런 것을 하나의 framework로 구현하고 그 위에서 작업을 하면
운영 체제에 독립적인 C/ C++코드를 생성가능하죠.
UI은 제외시키고요.
그렇게 하려면 프로그램의 구조가 무척이나 중요하죠.
그리고 프로그램은 어디서 보다는 무슨 목적을 가지고 그것을 달성하냐가
중요하죠.
즉 목적 달성에 있다고 생각 듭니다.
그리고 목적 달성은 운영체제와 관계 없고 구조적인 알고리즘에 관계가 있고요.

사실 프로그램이라는 것은 운영 체제에 대해서 아는 것도 무척이나 중요하다고 생각됩니다만.. 그에 못지 않게 중요한 것은 얼마나 안정적이고 생산성 있는 코드를 작성하는 것이라고 생각이 듭니다.
그러한 코드를 작성하려면 구조가 잘되야 되겠죠.
안정성 있는 프로그램이 되려면 밑바탕에는 자신이 사용하는 운영체제에 대한 이해가 필요로는 하는 것은 기본이고요.

아마 하나의 운영체제에 대해 잘 아시게 되면 다른 운영체제는 어떻게
이 일을 구현을 하는 것에 대해 이해 하시 될 거라고 생각이 드네요.
구지 Unix Programmer이나 Win32 Programmer나누는 것 자체가 무의미한 것이
아닐까 생각이 드네요.

우선 자신이 사용하는 언어에 대한 완벽에 가까운 이해와 자신이 사용해야할
운영 체제에 대한 이해가 필요하다고 생각 될뿐이죠.
이것을 바탕으로 해서 좋은 프로그램 구조가 된다면 아주 좋은 일이겠죠.

참고로 전 Win32프로그램을 먼저 배워서 VC++ IDE을 이용해서 프로그램 하고 IDE의 debug을 사용하여 논리적인 문제를 해결하고 이것을 Make파일을 만들어 Cygwin을 이용해서 컴파일하고 Cygwin환경에서 test을 걸치어 linux에서 컴파일하여 사용합니다.

익명 사용자의 이미지

프로라면 자신의 영역에서 주어진 어떠한 업무라도 수행해야 함으로 특별히 로우레벨의 프로그래밍이 아니라면 어떠한 플랫폼에서도 구현할 수 있는 능력이 있어야 하겠지요.

아마추어의 경우는 프로그래밍이란 자아의 구현이라고 생각합니다. 각각의 시스템에는 설계 및 프로그래밍에 대한 철학이 담겨 있습니다. 아마추어는 자신의 철학에 적합한 환경에서 그것을 실현하는 기쁨을 즐길 수 있겠습니다.

직장에서는 프로적인 접근을, 개인적인 취미로는 아마추어적인 접근을...

그러나 굳이 집에서까지 프로그래밍을.... --;

익명 사용자의 이미지

동감합니다.
누군가 이야기 했듯이 Framework속에서 프로그램 하면
컨베이어 벨트 위에서 단순작업 하는 기분이 들어서
즐겁지는 않습니다만,
(그렇다고 Framework에서의 프로그램이 단순하단 뜻은 아닙니다)

그것이 대세인듯 합니다.

그렇지만, 유닉스/리눅스 등을 좋아하시는 분은
코드 뒷편에 많은 것이 감추어져 있는 상황을 싫어하시는 것 같더군요.

익명 사용자의 이미지

이제 막 C언어에 입문하려는 학생입니다. unix프로그래머가 될려면 정말 어떻게 해야하는지 막막합니다. 밑의 글들을 읽어 보았지만 무슨말인지 이해조차되지않네요 ㅠ.ㅠ 저는 지금 A Book On C 로 C언어를
공부하고 있습니다. 초보를 위해 가야할 길을 좀 제시해 주시면 감사하겠습니다.
저는 C언어를 배우면 그 다음은 자료구조와 알고리즘을 공부하는 것으로 알고 있습니다. 근데 어떤 책으로 자료구조와 알고리즘을 공부해야 하는지 정말 모르겠습니다. 그리고 그후에 더욱더 어떻게 공부해야 하는지 모르겠습니다. 도대체 C만이용해서 화면제어를 어떻게 하죠?? C만이용해서 어떻게 비디오카드메모리에 접근하나요?? C의 라이브러리에는 그런기능을 하는 함수가 없지 않나요?? 도대체 유닉스 명령어인 top같은 프로그램을 보면 화면을 어떻게 제어하고 어디서 저런정보를 가져오는지 도대체 무엇을 공부해야 저런프로그램을 짤수 있는지 또 무슨책을 봐야 유닉스관련 프로그램을 짤수 있는지 정말로 모르겠습니다. tubo씨로 프로그램짜기 같은 프로그램책은 찾을수 있어도 unix관련 프로그램을 예제로 내주면서 차례로 edit 터나 간단한유틸리티를 짤수잇는 그런 프로그램책은 찾아볼수가 없습니다. 도대체 어떻게 해야 하는지 모르겠습니다. 고수님들 이 초보에게 광명을 빛을주세요~~~ㅠ.ㅠ
1. C의 공부방향은 어떻게 되는지 ....
C -> 자료구조, 알고리즘 -> ???
위의 공부방향도 맞는지....
2. 위의 것을 공부하실떄 무슨책으로 공부하셨는지..
3. 도대체 초보가 처음부터 짜면서 실험해볼수 있는 프로그램은 무엇인지
4. 또 제가 어떤 프로그램을 짤려고 작정했다면 그에관련된 알고리즘은 어떻게 찾을수 있는지 ...
초보의 외침입니다~~~좀 가르쳐 주세요~~~

익명 사용자의 이미지

걱정하기 전에 코딩하라..
그러면 이해 될것이다..

저는 이렇게 살아요 :)

익명 사용자의 이미지

1. C의 공부방향..
이게 자료구조, 알고리즘과 무슨관련일지..
DS,ALGORITH은 C가 아닌 다른 언어로도 구현 가능합니다.
머리속의 생각을 정리하고 응용할때 쓰는것이지요..
결론은 많이 짜세요.. 이것저것. C를 이해하세요.. 그리고 도구로 사용하시길.
2. 책은 별로 중요하지 않은듯하군요. 웹에 자료 수두룩 합니다.
조합한게 책이 되죠..
편한책으로 시작하길..
3.hello world~ 부터 :)
4.알고리즘은 사람 머리서 나온건데 님한테 필요한 알고리즘은 님이 만들어 쓰세요.. 앉아서 생각하면 떠오릅니다~ 이미 만들어진 알고리즘은 가져다 그냥 사용하시고요~ :)
즐프~~~

위즐의 이미지

/*
전 고수도 아니고 하물며 중급 수준의

프로그래머도 아닌 남들이 말하는 초보입니다.

그냥 제 생각을 편하게 써 볼까 하는데

혹시 오해가 있을까 해서 미리 말씀드립니다.
*/

제 소견으로는.. 그냥 즐기면 되지 않을까요?

그렇지 않다면 나열한 책들을 읽는 도중

회의가 들것같네요.

얼마전에 tin이라는 뉴스리더의 소스를

뜯어고친적이 있습니다. C라는 스킬보다

rfc를 해석하는 능력이 더 요구되더군요. :(

간단한거지만 재밌었습니다.

전 이걸 웹상에서 구현해보려 합니다.

이유는 편할 것 같아서. 그것 뿐입니다.

자료저장은 버클리 디비를 사용할 생각이구요.

그래서 버클리 디비를 공부하고 있습니다.

반 정도 읽었는데도 감은 아직 안 옵니다.

그래도 하루 한페이지라도 꾸준히 읽고 있죠.

이런 저는 소위 윈도우 프로그래머가 되려는 사람입니다.

앞으로 win32 API, MFC를 공부하겠죠?

남들이, 주위에서 구시대적 라이브러리를

배우려 한다며 말리기도 합니다. 사실

그런 말 하시는 분들. 그 분야 잘 모르더군요.

내가 배울 기술이 앞으로 사라진다 해도

상관없습니다. 하고 싶은걸 한다는게

내게 중요합니다. 요지는.

즐기며 목표 한바에 한발짝씩 나아가는거라

봅니다. 주위에서 뭐라 하든. :)

익명 사용자의 이미지

맞아요

사실 실제로 프로그래밍 하다보면, 스펙이란게 훨씬 양도 많고

중요해진답니다.

종이에 써진 스펙을 보고 바로 코딩으로 연결할수 있게 되면,

일좀하는 셈이 되죠..

위즐의 이미지

도움이 된다면 좋겠습니다.

아래 책은 제가 C 언어를 공부하고 있는데 참조 하고, 참조 하려는 -_-

책들입니다. 현재 모두 가지고는 있습니다.

The C Programming 2nd & Answer Book.

The Standard C Library.

C A Reference Manual 5nd. (현재는 참조조차 못하고 있습니다. ㅎㅎ)

그리고 얼마전부터 보고 있는 c.l.c의 FAQ.

공부를 하면서 느끼는건데 역시 영어는 어렵군요. -_-

사실 국어도 쉽지 않습니다. 더구나 영어는 말할필요도 없지요.

제가 그래서 영어공부를 하는 나름대로의 재밌는(?) 방법이 있는데

그건 영문 Text RPG게임인 MUD를 하는겁니다.

상당히 재밌습니다. 하지만 잘못했다간 폐인이 될수도 있으니 조심하세요.

문법을 공부하는데는 꽝입니다. 어찌보면 발악이라 할수 있지요. ㅎㅎ

위즐의 이미지

헉.. 쓰고나니 뭐가 이리 깁니까? ㅎㅎ

여러 고수님들앞에 부끄럽습니다..

앞으로 짧게 쓰겠습니다. -_-

sharefeel의 이미지

항상 궁금한 것이..

도대체 multi-thread로 짠 소스는 어떻게 디버깅하나요???

gdb 로 할 수 있습니까?

고수님들은 어떻게 디버깅 하시는지 정말 궁금합니다.

===============
Vas Rel Por

김성진의 이미지

음..리눅스를 말씀하시는건가요?
현재 gdb로 디버깅이 가능합니다. 얼마전까지 patch를 씌우고..어쩌구..
이야기가 있지만, 최근에는 그냥 가능할 겁니다.
GUI Wrapper로는 DDD를 사용하시면 될 것이구요.

ddd로 해당 어플을 attach하셔서 BreakPoint를 거신 다음
수행하시면서, 따라가면 문제없이 동작할 겁니다.

저의 테스트 환경은 wowolinux 7.1이고, gdb-5.0 이군요.

리눅스의 쓰레드 환경에는 불만이 많지만, 아쉬운 대로
쓸 수 있답니다.

김성진 드림

고도의 추상화, 극도의 구체화, 에디슨을 그리워하다.

익명 사용자의 이미지

윈도우에서 디버깅 후 리눅스에서 테스트 하시면 됩니다.

익명 사용자의 이미지

-_-;;;

익명 사용자의 이미지

아직 프로그래밍을 한건 아니지만, 제가 앞으로 할 일이 솔라리스의 CDE윈도우즈에서 돌리는 프로그램입니다. 장비제어를 GUI로 수행하는 프로그램인데, 미국회사와 제휴를 맺고 국내 모대기업에 납품하는 장비입니다. 그 장비 컨트롤 콘솔이 선 웍스테이션입니다.
이거 말고 일본장비도 비슷한 성격의 장비인데,선 웍스테이션을 장비 제어용으로 사용하는군요.
xNIX 프로그래밍의 실제 사용은 순수 소프트웨어계열보다 하드웨어 관련 업종에서 의외로 많이 쓰는것도 같네요.

익명 사용자의 이미지

프로그래머 가라사대

한 제자가 프로그래밍의 도인에게 물었다.

스승님 프로그래밍의 도는 어디에 있습니까?

"패거리를 만들지 않는데 있다"

그럼 혼자 한다면 그걸 어떻게 다 감당한답니까?
혼자는 힘들것 같습니다.

"너가 실력이 월장 할려면 무리안에 어울리면 안된다
그들은 너가 커가는데 방해를 할것이고 돕는것 마저
또한 너를 방해 할것이다"

그럼 제가 장비제어가 유망분야 같아 유닉스 계통을
공부하고자 하는데 이게 올바른 방향입니까?

"너는 이미 무리 안에 있으며 그것 조차 깨닫지 못하고 있다
너가 장비제어를 하려면 유닉스를 멀리하고
선 웍스테이션을 멀리해라"

아니 그러면 어떻게 프로그래밍의 도를 알수 있답말입니까?

LabView 를 쓰거라
이게 먼지 모른다면 너는 평생 유닉스의 편견에서 벗어나지
못할것이다 :)

익명 사용자의 이미지

그런듯.

익명 사용자의 이미지

어렵사옵니다. -_-
부디 제가 사도에 빠지지 않도록 가르침을 주시옵소서!!

corba의 이미지

LabView...

정말 오랜만에 들어보는 말이군요...^^;

지금 생각해보면 FA도 나름대로는 재밌었다는...

익명 사용자의 이미지

프로그램의 도사인 분이 80년대 마지막 해커 세대 같군요..

익명 사용자의 이미지

임베디드 리눅스 가 그냥 기존의 필요 없는 부분 빼면 된다고 하시는 분이 있었던것 같습니다 윗글에...

하지만 제 생에는 기존에 있는 것 지우는 것이야 쉽지만.... 지워진 모듈이름 말고 모듈 내부 동작 이해는 어렵지요.... 대략이라는 범위 안에서는 이해 하시겠지만.. 대략으로 뭘 할 수 있지요?

익명 사용자의 이미지

요즘에 저는 성능 때문에 Unix multi-thread 환경으로 프로그래밍 하고 있습니다.

말씀하신 스티븐 아저씨의 책들은 거의 Unix 프로그래밍에 있어서 바이블 정도 되는것 같구요. 저도 이책으로 시작했답니다.

Unix Multi-thread 방식은 생각보다 fork 방식보단 프로그래밍이 다소 좀 어렵지만 비교적 높은 성능을 얻을수 있고 현재의 대부분 Unix OS는 thread 환경을 제공하고 있어 높은 성능을 요구하는데서 적합한 기법인것 같네요

현재는 Unix multi-thread 환경에서 thread - pool 등을 응용하여 db 미들웨어 같은거 개발하고 있습니다.

주로 thread library는 Pthread 를 씁니다. 각각 Unix OS에 맞는 내장 thread 함수들이 있지만... 이것이 포팅하기에 좋더군요... 현재 Linux 와 Sun OS 두가지에서 작업을 많이 하고 있습니다.

대략의 기능은 db connection pool 정도 해주죠...직접 db에 연결하는것보다 db 미들웨어에 거는것이 컨넥션 비용이 싸기 때문에 이런거 개발하고 있답니다.

gnu gcc 를 주로 사용하며 vi 를 씁니다.
디버깅은 gdb 로 하고 있습니다.

예전에 thread 처음 공부할때 multi-thread 환경으로 아주 간단한 web서버를 만들어본적이 있는데 (스태틱한 데이타만처리) fork 방식의 apache 보다 약 2.5배정도 높은 성능이 나오더라구요. 그래도 기능성을 따지면 apache가 훨씬 좋지요...

그리고 프로그래밍에 도움이 될만한 툴들은 gnu 툴들을 공부해보시면 빌드 할때나 배포 툴을 만들때 많은 도움을 얻을수 있을것입니다.

http://www.gnu.org/manual/manual.html

autoconf, automake, libtool, m4, cvs, gcc, gdb 이정도가 가장 많이쓰는것 같네요...

구럼 유닉스 공부 열심히 합시다...

Unix 프로그래밍 처음엔 어려워도 한번 배워두면 아마도 몇년은 우려먹을수 있을것 입니다... 흐흐

익명 사용자의 이미지

perl을 만든사람도 게을러서 만들었다고 합니다.

unix system을 관리하다 보니.. 불편해서
더욱 게으름 피기 위하여 perl을 만들었다고
하는 군요.

그래서 나온말이 '게으른 프로그래머'입니다.

게으름 필려면 좀더 쉽게 살 방법을 만들어야
하지 않겠습니까?

익명 사용자의 이미지

정말 궁금하네요

시장에서 UNIX전문(?) 프로그래머에 대한 수요가 얼마나 있을런지요?

PS. 이번에 핵교에서 IPC를 배웠는데, 그래도 제대로 공부를 한듯... 셤보느라 힘들었어여 ㅠ.ㅜ

지리즈의 이미지

유닉스 프로그래밍은 정말 재미있습니다.

특히 UI를 신경안써도 되는 프로그래밍은
오직 알고리듬만이 승부이지요.
그래서 더 재미있는 것 같습니다.

C++도 좋고, Perl도 좋고 다른 언어들도 좋지만,
전 개인적으로 C가 가장 마음에 듭니다.

There is no spoon. Neo from the Matrix 1999.

여린칼날_의 이미지

책이라든지 분야들은 다른 분들이 많이 올려주셨으니, 다른 말을 해 보도록 하겠습니다.

윈도 환경에서도 예외없이 적용되는 법칙이기는 하지만, 유닉스 환경에서 더 어울리는 말이라고 생각하는데,

"좋은 프로그래머는 게으름뱅이이다."

...라죠...?
--
모두들 좋은 하루 되세요~

모두들 좋은 하루 되세요~

익명 사용자의 이미지

>"좋은 프로그래머는 게으름뱅이이다."

어떤 뜻이죠. ㅡ.ㅡ;; 좀 무식해서;;

익명 사용자의 이미지

perl을 만든사람도 게을러서 만들었다고 합니다.

unix system을 관리하다 보니.. 불편해서
더욱 게으름 피기 위하여 perl을 만들었다고
하는 군요.

그래서 나온말이 '게으른 프로그래머'입니다.

게으름 필려면 좀더 쉽게 살 방법을 만들어야
하지 않겠습니까?

익명 사용자의 이미지

그 사람 유닉스가 불편한건 아나 보군요.,.

하하하...

"게을러지기 위해 졸라 열심히 일한다".
저의 평소 철학과 같군요,

근데 가끔은 공허하죠. 하는만큼 점점 게을러져야하는데, 그런 것 같지가 않거든요.

cdpark의 이미지

좋은 프로그래머의 행동을 가장 잘 표현한 문장을 최근에 봤습니다.

더글라스 아담스가 쓴 <마지막 기회>에 있는 에피소드죠.

직접 하면 1-2분이면 끝날 일을 1초에 끝낼 수 있는 프로그램을 짜는 것이죠. 1-2시간을 들여가며... :)

익명 사용자의 이미지

좋은 프로그래머는 시간에 구애받지 않습니다.
아주 빠른 시간안에 뭐 만든다고 좋은 프로그래머는 아닙니다.

시간이 좀 걸리더라도 좋은 프로그램을 만드는 프로그래머가 좋은 프로그래머입니다.

익명 사용자의 이미지

대신 덕분에 다른 많은사람들이 1~2분더 게으름을 필수있게 되죠 :)

익명 사용자의 이미지

게으름 피우는게 목적이면, 그냥 프로그래머 때려 치우고, 레저 강사나 하는게 좋을듯 싶습니다.

프로그래머 일종의 소명 의식은 있어야하겠지요.

그냥 지 좋아서 뭐 건들고 만지고 하는건 그냥 취미 활동가라고 해야하지 프로그래머라고 하기엔 아무래도 개념이 안맞죠.

익명 사용자의 이미지

The C++ programming Language 도 추천합니다
VC++ 에만 익숙해졌다면 좀 다르게 느껴질 수도 있겠죠.

순서라...
꼭 순서가 있을 것 같진 않습니다.
지금까지 공부하신 게 어떤 식으로든 도움이 되겠죠.
님께서 말씀하신 제목의 책들을 저도 좀 읽어봤는데 좀 어렵더군요.
열심히 공부하시길

익명 사용자의 이미지

열라 열심히한다 -_-;; 당연한 말...

박명준의 이미지

언어는 C/C++를 익히시면 될 거구요.
유닉스쪽 개발도구에 익숙한 것이 중요하다고 생각이 됩니다.
일단 편집기로서 VI나 이멕스 같은 걸 하나 알고 있어야 하겠죠.
우리나라에서는 대개 VI에디터를 많이 사용하는 거 같습니다. (잡지를 보니 80% 정도)
물론 저도 VIM6.0을 주로 이용하고 있구요.
(창 나누고, 키맵 좀 하면, Visual C++이랑
비슷한 느낌으로 코딩할 수 있습니다. )
그리고 컴파일러는 대부분 gcc를 이용하더군요.

부가적으로
- make(의존성에 기반한 명령 자동화
도구, 빌드의 자동화에 사용)
- gdb(gnu 소스레벨 디버거)/ddd
- lint(소스의 validation도구)
- configure (환경설정에 기반한 Makefile생성)
- TCL/TK 등의 UI 제작 lib 한가지 정도...

그리고 좀더 기업 스타일로 해본다면...
- lex/yacc (컴파일러쪽이죠. ^^)
- CVS(소스코드 버전 제어 시스템, 여러명이 작업할 때)
- MySQL/Oracle과 연동하기

이정도만 다룰 줄 안다면, 유닉스/리눅스에서 실제 산출물을 뽑아내는 프로그래머라고 할 수 있을 듯 하네요.
물론 리차드 스티븐스의 책들은 플램짤때마다 참조해야겠죠. 이쪽분야 시스템 플램하는 사람들은 모두 가지고 있더군요.
가장 중요한 거는 유닉스로 프로젝트 하는 회사에 입사하는 것이 가장 중요하겠죠. ^^;;
그러면 위에 나열한 사항 뿐 아니라, 실무 노하우까지 배울 수 있을테니까요.

개인적인 생각으로는
언어뿐 아니라 개발도구를 익숙하게 사용하는 것도 중요하구요.
오픈소스 프로젝트 코드를 다운받아서, 살펴보고 분석해 보는 것도 좋은 방법이라고 생각합니다.
(커널 공부하시는 분들은 아예 리눅스 커널 소스 디렉토리를 보면서 공부하더군요. 커널소스를 찍은 책도 팔더라구요. ㅡ,.ㅡ )
무엇보다 중요한 거는 하나 정해놓고, 계속 코드 작성하고, 디버깅해서 결과를 만들어 남들에게 평가받는 것이 가장 좋은 것 같습니다.

익명 사용자의 이미지

> - lint(소스의 validation도구)

lint는 이것저것 써봤는데... 정말 lint free하게 만들 수 있는건가요? 고통스럽더군요.

툭하면 parse error나고... 짧은 사용기좀 부탁드립니다. 아그리고 어떤 lint를 쓰셨는지요.

익명 사용자의 이미지

학부 유닉스 서버에 깔려있는 lint를 사용했습니다. ^^;;
제가 직접 다운로드받아서 깔아본 적은 없구요.
물론 lint free하게(아마도, lint돌려서 나온 경고를 모두 해결한다는 의미 같네요.)하기는 힘들겠죠.
하지만, 변수의 적절한 초기화라든가 하는 사항들은 lint를 돌려서, 쉽게,
수정할 수 있어서, 습관적으로 쓰고 있습니다.
머 그이상은 저도 잘 모르겠네요. ^^;;

익명 사용자의 이미지

변수 초기화 정도는 gcc -Wall 정도로 해결할 수 있을것 같네요.
lint... 정말 돌려본 사람만이 그 고통을 압니다.
간단한 toy problem도 lint free하기 참 힘들더군요. -_-;

clapton_의 이미지

유닉스 프로그래머가 된다는 것도 결국은 프로그래머가 된다는 것입니다. 프로그래머라함은 특정 플랫폼에 국한되지 않는 개념이지요. 물론 유닉스에서 주로 개발은 한다면 유닉스 특유의 특징이 있겠지만 그 외에는 일반적인 OS의 개념이 유닉스에 구현되어 있기 때문에 큰 차이는 없습니다. 즉, OS에 대한 기본적인 지식, network에 대한 기본적인 지식이 있어야 합니다. 실제 유닉스에서 프로그램을 만드는 것은 그런 기본적인 개념들이 어떤 API를 통해서 제공되는가를 확인하고 그런 API를 이용해서 (물론 unix만의 특징들도 있겠지요.) logic을 구현하는 것이겠지요.

APUE, UNP와 같은 책들은 방대한 system call들을 설명하다 보니까 그러한 기본적인 부분들에 대한 설명이 많이 빠져 있습니다. APUE나 UNP를 무작정 읽는 것이 아니라 reference로 사용하시고 그전에 일반적인 OS와 Network에 대한 책을 간단히 읽는 것이 좋지 않을까 생각이 됩니다. 개인적으로 OS는 공룡책이 좋았고 network책은 TCP/IP illustrated가 실용적이어서 좋았습니다. 그런 개론서(?)를 읽으면서 소개된 개념들이 어떤 API로 제공되는가를 APUE나 UNP에서 찾아보시면 좀 더 빨리 발전할 수 있지 않을까 생각이 듭니다.

페이지