시야를 확장하고 싶은데요..선배님들 조언좀부탁드립니다

oneclubs의 이미지

이제 컴과대학생 절반정도 지난 풋내기에 불과합니다.
학교공부를 성실하게 따라갔다고 나름 생각하는데

해놓은걸 보니 너무 한심하네요 과연 내가 멀했지? 라는 회의감이 듭니다.

학교에서 할수있는 범위밖에 할줄 몰라서 이런 생각이 드는거 같습니다.
군대까지 갔다와서 완전히 다시 시작한다는 기분으로 했는데
내가 할줄 아는게 먼가..라는 절망감이있네요.. 전역후에 1년간 학교를 다녀봤지만
제 실력이늘었다는 느낌이 없습니다..

이제와서 다시 수능을 봐서 머 어쩌고 저쩌고 하긴 싫고 이왕 온거 최선을 다하고 싶습니다.
남은 학교기간동안 학교와는 별개로 좀 치고 나가고 싶습니다..
표현이 좀 그런가요.. 실력을 확 올리고 싶은데요

푸념이 길었는데 몇가지만 질문이 있습니다. 조금은 많을지도..

1.
다른 과 를 보면 특히 공대를 보면 공모전이라던지... 이런 외부대회가 많던데
제가 너무 우물안의 생활을 해서 그런지..잘 모르겠습니다.
컴과에 관련된 공모전이 있을까요?

2.
지금 제가 다룰줄 아는 언어가 그나마 C++입니다.
다른 언어도 조금씩은 다뤄봤지만.. 100줄 단위의 아주작은 프로그램 만드는정도.. 언어의 기본적인부분 이해하는정도입니다.
혼자 공부를 조금더한게 C++인데요..
그래봐야 걸음마 수준이지만..
하나를 깊이 더 파는게 좋을까요
아니면.. 여러 언어를 더 깊이 들어가는게 좋을까요.. 언어적인 대세가 머냐? 라는 질문은 아니고..
선배님들의 경험상 하나를 집중적으로 파는게 도움이 될지...아닐지 궁금합니다.

3.
소위 말하는 자격증....
프로그래밍 관련하여 자격증은 어떤게 취직에 도움이 될까요..
취직할때 꼭 도움이 될만한 자격증이 있다면..
심지어는 그냥 있으면 참고할만한 자격증이라도 알려주시면 감사하겠습니다.

4.
수학이 약한거 같습니다. 고등학교때는 나름 수학엔 자신 있었는데
선배님들이 느끼시기엔..수학이 어느정도나 비중이 있습니까?
학교 커리큘럼에는 미적분조차 없었습니다.. 지금은 바껴서 들어갔지만..
혼자서 수학을 다시 파는 노력이 필요할까요..
수학과 프로그래밍을 저울질 해야하니 어느쪽에 비중을 둬야할지..

5.
마지막 질문입니다..
괜찮은 잡지같은게 있을까요..
저의 좁디좁은 시야를 확장시켜줄만한 도움이 될만한 잡지같은게 있을까요

여기까지 읽어주셔서 감사합니다.

kmsr819의 이미지

아직 대학생은 아닙니다만, 일단 제가 아는 바로는.. 마이크로소프트웨어 월간잡지가 있는걸로 알고있습니다.
* 그리고 MSDN도 비싸서 그렇지 구독받는 사람 얘기 들어보면 평이 대부분 좋더라구요.

cleol의 이미지

2번, 제 생각에는 성격이 확연히 다른 언어 두세 가지를 잘 익히는 것이 좋을 것 같습니다.
하나를 잘 한다고 다른 것들까지 잘하게 되는 것은 아니니까요. 골고루 먹어야지요.
C++ 에 익숙하다고 하시니, 많이 쓰이는 dynamic language 중에서 하나 (python/ruby/perl 등등) 를 고르시고,
약간 색다른(?) 녀석들 중에서 하나 (haskell/lisp/ocaml/scala 등등) 를 고르시면 어떨지요.
java/C# 이 많이 쓰이니 미리 공부해둘 필요는 없을지 궁금하실 수도 있는데,
C++ 에 익숙하다면 이 녀석들은 필요할 때에 공부해도 어렵지 않을 겁니다.
세가지나 되는 언어를 능숙하게 다루게 되려면 시간이 필요합니다.
조급해하지 마시고 큰 배포로(?) 공부하심이 어떨지.

4번, 일을 하실 분야에 따라 다른데, 대부분은 수학이 실제로 도움이 되지는 않을 겁니다.
수학이 약하다고 왠지 꿀리는 듯한 자격지심이 있는 분들이 계신던데
제 생각에는 그럴 이유가 없습니다. 그래도 왠지 찝찝하시면 그냥 취미처럼 공부를 하셔도 괜찮지 않을런지요.
스타하듯이...등산하듯이...^^;

oneclubs의 이미지

언어 공부를 하다가 haskell이랑 perl을 접할 기회가 있어서 훝어보기만 했었는데요..
괜찮은 서적같은거 있을까요..

kmsr819의 이미지

하스켈 서적은 아무래도 프로그래밍 하스켈이;;

imyejin의 이미지

벌써 같은 내용의 답변을 다른 분이 해주셨네요 -.-;

임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin

[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin

cleol의 이미지

freestyle의 이미지

1. 공모전
프로그래밍쪽 공모전에 분류가 다양함
크게 '아이디어 제출 / 프로그램 제출'로 나눌 수 있을 듯 함
그 외에도 삼성소프트웨어 멤버십이라는 것도 있음

2. C/C++, JAVA
실무에서 가장 많이 쓰이고, 나름 베이스라 생각하는 언어가 C/C++.
JAVA는 개인적으로 싫어하는 언어지만, JAVA + a로 할 수 있는 게 많음
그 외 'cleol'님의 글에 나온 언어의 큰 분류 중 하나씩 골라서 컨셉만
이해하는 정도면 될 것임

3. 자격증
정보처리 기사는 갖고 있어야 원하는 곳 갈 때 부담 없이 집어넣을 수 있음
CCNA/OCP/MCSE/CISSP 등 원하는 분야를 선정한 뒤 그쪽으로 집중하면 됨
자신의 실력이 뛰어나다는 걸 증명할 길은, 프로젝트 결과물과 자격증임

4. 수학
사실 수학 자체보다, 프로그래밍시 분석력, 사고력, 창의력, 집중력 등이 요구됨
수학 공식이야 필요할 때 책 찾아서 대입해 쓰면 되지만,
왜 그런 공식이 필요한지 이해를 못한다면 말짱 꽝

단, 분야에 따라 수학공식이 신나게 많이 나오는 경우가 있으니
그런 쪽으로 가고자 한다면, 고등학교 수학 책을 보는 것이 좋음
문제 풀고 넘어가는 것이 아니라 뜯어보고, 다시보고 하면서 머리 굴리는 훈련을 해야 함

5. 컴 잡지
관심을 안 가져서 마이크로소프트웨어 밖에 기억이 안 남

------------------------------
Go to the U-City

----------------------------------------------------------------------------------------
Don't Feed the Trolls!
----------------------------------------------------------------------------------------

Darkcircle의 이미지

1.2.3번은 워낙 아는게 없어서 -_-;

4. 전 고등학교 쩍부터 수학 ... 똥 맞을 정도로 못했습니다. 100점만점중에 30점 넘으면 엄청 잘한 것입니다. -_-;
근데 제가 컴공을 전공하다가 전기전자쪽을 복수전공하려고 공학수학과 전자기학쪽을 작년에 "어쩔 수 없이" 했는데...
(물론 컴공에선 이산수학과 기초미적분학을 뗐죠... 다행스럽게 학고는 면했습니다. =ㅂ=...;;;)
이 악물고 하면 안될게 없더군요 -_- ... 전자기학 점수 꽤 잘나왔습니다. A+ ...
"아... 난 수학 못하니까 앞으로도 계속 못하겠지?"라고 생각하면 영원히 수학 못하는겁니다.
'옛날에 이랬으니 조금 더 잘해서 어쨌든 해봐야지' 라는 긍정적 마인드를 -_-)/...

5. 마소 말고 지금 개발쪽으로 살아있는 잡지가 있으려나 모르겟습니다.
옛날에 프로그램세계라는게 있었는데... (지금은 망했나요?)

---------------------------------------------------------------
폐인이 되자 (/ㅂ/)

---------------------------------------------------------------
폐인이 되자 (/ㅂ/)

ohhara의 이미지

1. ACM 프로그래밍 대회를 알아보시면 동기부여가 될 듯 합니다.

2. 언어는 C/C++을 극도로 깊숙히 파 보는 것을 추천합니다. C/C++이 좋은 언어가 아니고 다소 사용이 어렵습니다만 그만큼 컴퓨터와 가까운 언어고 현재 가장 실용적으로 많이 사용되는 언어입니다. C/C++을 사용하다 보면 이게 프로그래밍 언어인지 macro화된 assembly언어인지 헤깔릴 정도로 보이기도 합니다. C/C++로 짜여져 있는 거대 소프트웨어를 만들어 보고 기존의 것을 분석해 보면 많은 공부가 될 것입니다.
충분히 C/C++이 파악이 되면 기타 다른 언어는 쉽게 접근이 가능합니다. ( functional language같은 경우는 다소 예외겠습니다만... )

3. 자격증은 가지고 있으면 그 자격증에서 증명하는 기술밖에 할 줄 아는게 없다라는 인식을 가지게 할 수도 있습니다. 해당 기업이 요구하지 않거나 꼭 필요한 경우가 아니면 필요가 없을 것으로 생각합니다. 예를 들어 나 excel 쓸 줄 안다 라고 이력서에 적으면 좋지 않은 평가를 받는 것과 비슷합니다.

4. 컴퓨터공학에 필요한 수학은 어려운 수학은 그다지 많지 않기 때문에 수학에 그다지 걱정을 하지 않아도 된다고 생각합니다. 고등학교 수학으로 충분하다고 생각합니다. 하지만, 요즘 고등학교 수학은 미적분도 안 가르친다고 하던데 그 소리 들으니 조금 걱정은 되는군요. -_-; 일단 어떤 분야던지 공대를 나와서 공학을 하게 되면 미적분 정도는 필수이니 해 두시는게 좋을 거 같습니다. 어려운 수학을 하는 것보다 쉬운 수학을 탄탄히 해 두는게 중요할 것으로 생각합니다.

5. 요즘은 인터넷의 보급으로 잡지가 예전만큼 큰 힘이 없는 것 같습니다. 보통 IT 뉴스는 zdnet(cnet)으로 보고 underground IT 뉴스는 slashdot으로 보고 학술적인 뉴스는 ieee의 논문으로 보고 하는 것이 좋을 것 같습니다. 구체적인 기술적인 내용이라면 여러 web site의 동호회, 강좌 등을 찾아보는게 잡지보다 더 도움이 될 것입니다.

Taeho Oh ( ohhara@postech.edu , ohhara@plus.or.kr ) http://ohhara.sarang.net
Postech ( Pohang University of Science and Technology ) http://www.postech.edu
Digital Media Professionals Inc. http://www.dmprof.com

Taeho Oh ( ohhara@postech.edu ) http://ohhara.sarang.net
Postech ( Pohang University of Science and Technology ) http://www.postech.edu
Alticast Corp. http://www.alticast.com

oppor의 이미지

언어를 극도로 깊숙히 판다는게 무슨 의미인가요?

단순히 문법에 대해서 빠삭하게 아는거와는 다른거 같은데

시스템 프로그래밍이나 소켓프로그래밍 같은 분야를 공부해보라는 건가요?

Darkcircle의 이미지

C나 C++류의 언어는 컴파일러에 의해 번역이 되어 중간 언어가 되고 중간언어에서 다시 기계어 번역과정을 거쳐서 실행가능한 이진코드가 되지요.
실행가능한 이진 코드라 함은 운영체제 어디에선가 이진 코드를 해석해서 머신에서 바로 동작하게끔 한다는건데,...
운영체제마다 지원하는 실행파일의 형식이 다릅니다. 그 형식에 맞춰서 실행가능한 파일을 만들어주는 것이 운영체제와 기계에 맞는 컴파일러구요.

C언어나 C++ 헤더파일을 뜯어보시면 함수 껍데기만 나와있고 정작 중요한 바디는 다른 곳에 있습니다.
그 바디를 뜯어보면 인라인 어셈블리로 되어있는데... 우리가 직접 인라인 어셈블리 언어로 복잡하고 화려한 프로그램을 짜내기란 힘들지요.
할 수는 있는데 시간이 오래걸리고 복잡합니다. 학교에서 어셈블리를 처음배울때 듣는 이야기가
"어셈블리 언어는 기계어를 기호화해서 표현한 것이다" 라는 한마디죠. 그러면 C언어는요? C언어도 마찬가지입니다.
C언어의 애초 개발목적은 다른데 있지만, 어셈블리 코드를 감싼 구조로 되어 있습니다.
(ohhara님께서 말씀하신대로 매크로 화 되어있다고 오해할 정도입니다. -_-;; 하지만 모든 면에서 어셈을 C 언어로... 매크로화 되어 있는 언어는 "절대" 아닙니다.)
C언어가 하드웨어를 다루는데 가장 최적의 언어다라고 말하는 이유가 거기에 있구요.

언어를 극도로 깊숙히 판다는건 C언어에선 이를테면 sizeof가 어떻게 동작하는지 printf나 scanf가 어떻게 실행되는지 그걸 뜯어보라는 것이지요.
( putchar() 이런 단순한거 말고요. putchar는 어셈으로 쉽게 짤 수 있습니다. )

물론 뜯어보시면 재미있습니다만, 첨에는 머리가 굉장히 아플 것입니다. -_-)/

p.s. 막상 써보고 보니 튜링 교수 생전에 제자들에게 기계어를 안쓰고 저급한 어셈으로 짠다고 구박했다는 일화가 떠오르는군요... (튜링교수맞나 -_-;;)

---------------------------------------------------------------
폐인이 되자 (/ㅂ/)

---------------------------------------------------------------
폐인이 되자 (/ㅂ/)

vacancy의 이미지


C언어는 좀 익혀두셔도 좋을 것 같습니다만,

C++보단 C#이나 Java를 익히시는 걸 추천합니다.

snowall의 이미지

수학, 알고리즘, 전산, 이런걸 한번에 공부하시려면 오일러 프로젝트도 괜찮죠.
http://projecteuler.net/

여기 가서 문제를 해결하면, 다른 사람들이 어떻게 풀었는지도 볼 수 있습니다.
전세계 사람들과 같이 문제를 푸는 재미도 있습니다.
렙업하는 재미도 있구요.
여기 있는 문제는 수학적인 사고를 요구하지만 수학적 지식 자체를 많이 요구하지는 않습니다.

--------------------------
피할 수 있을때 즐겨라!
http://snowall.tistory.com

피할 수 있을때 즐겨라! http://melotopia.net/b

lacovnk의 이미지

전 취직이 아니라 학문의 길을 걷고 있습니다만.. 적어봅니다.

1. 주변 사람들과 친해지면 좋습니다.
분야가 달라도 좋고, 같아도 좋습니다.
보통 컴과에 소모임도 있을 텐데.. 이게 아니더라도 맘 맞는 친구가 있으면 참 좋죠.

2. 언어는 한 가지를 파야 합니다.
안 파보면 다른 언어 본다고 시야가 넓어지지 않습니다.
언어 자체의 특성을 이해하는 것도 중요하지만 (C++의 상속은 이제 잊었음-_-)

3. 프로그래밍도 분야가 있습니다
GUI도 있고 입출력 위주도 있고 네트워킹도 있고 멀티쓰레드 위주도 있고..
다 경험해보면 좋지만 하나 파기 시작하면 또 끝이 없는 세계가...

3. 기초 통계, 확률, 논리, 이산은 필수지만, 나머지는 분야 따라 다릅니다.
예를 들면, 미적분이나 XX 변환 류는 어디 가면 필수지만 어디 가면 별로 쓸일 없습니다.
위에서 다른 분이 적었듯이 적용하는 줄 아는게 중요합니다.

----

그냥 간단히, 저라면

필요한 프로그램을 공개 할 수준으로 만들어보겠습니다. 웹 어플이든 데스크탑 어플이든 라이브러리든...

프로그램 하나를 끝까지 만들어보면, '설계'와 '구현'도 해보고, 어떤 '요구사항'과 '예외'들이 있는지도 알게 됩니다.
또 어떤 '알고리즘'을 써야할지 분석하고 판단하게 되지요.

...그 산을 넘고 나면 '인간과의 의사소통 스킬'이 가장 어려운 것을 알게 될 껍니다 ㅎㅎㅎㅎㅎㅎ

neogeo의 이미지

어떤쪽 분야를 하고 싶으신지 혹시 결정하셨나요?

학부때는 여러분야를 접해보면서 자신이 하고 싶은일을 확실히 결정해야하는 시기라고 생각합니다.

컴퓨터공학에도 워낙 여러가지 분야가 있으니 결정하기 어렵지만, 적어도 고등학교때보단 컴퓨터공학에 어떤 분야가 세세적으로 있는지 알게 되셨을테니 하고 싶은 일이 생기셨기를 바랍니다.

그런게 애매하면 가고 싶은 회사를 결정하세요 ( 대학원도 좋습니다. )

그 회사/대학원 연구실에서 요구하는게 뭔가 알아보세요. 그걸 알면 공부해야할 길이 보이리라 생각합니다.

여타의 것이 하나도 안보인다면,

학점 높이고, 토익토플성적 잘받고 , 자격증 여러개 따두는 수 밖에 없지요. ( 그게 나쁘단 소리는 아닙니다. )

그리고 사회생활하시면서 좀 더 하고 싶은걸 찾아보시는것도 좋은 방법입니다.

Neogeo - Future is Now.

Neogeo - Future is Now.

semmal의 이미지

많은 언어도 다뤄보고, 많은 툴도 다뤄보고, 많은 OS도 다뤄보고, 많은 책도 디벼보세요.

게임도 만지작거리고, 웹도 만들어보고, 그래픽스도 해보고, 커널도 만져보고, 어플도 만들어보세요.

리습도 해보고, 펄도 해보고, 자바도 해보고, 프롤로그도 해보세요.

MFC도, Qt, wxWidget, Gtk도 써보세요.

OpenGL도, DirectX도 써보세요.

맥도, 리눅스도, BSD도, 윈도즈도 왠만큼 써보세요.

phpBB도 써버고, mediaWiki도 써보고, Google Docs도 써보세요.

국내서적도 보고, 외국서적도 보고, 논문도 디벼보세요.

깊게 파려면 넓게 파야합니다.

깊은 구덩이를 파려고 바늘로 계속 찔러봤자 바늘 깊이 밖에 안파집니다.

삽으로 아주 넓게 판 다음에 점점 깊게 파는게 정석이지요.

넓게 파다보면 파고 싶은 분야도 보이고, 더 잘파는 방법도 보일 겁니다.

깊게 파는 거요? 직장가면 깊게 파기 싫어도 파야합니다.

그냥 냅다 파다가 내 적성에 안맞아~ 할 줄 아는 건 이것밖에 없어~ 라며 눈물 흘려며 후회하지 마시구요.

내 인생을 프로그래머로 사는데 바치겠다는 확실한 의지(?)가 있다면...

1. 공모전은 그냥 자신의 능력을 테스트 해보는 정도에 그치세요. 그냥 자극제 정도? 너무 깊게 매달려서 나무만 보고 숲을 못보는 경우도 생깁니다. 물론 때에 따라 이거다 싶으면 매달리는 것도 필요하긴 할겁니다.

2. 언어는 많이 알면 많이 알수록 좋은 것이고, 깊게 알면 깊게 알수록 좋은 겁니다. 현업에서 많이쓰는 C/C++, Java 정도는 당연히 기본으로 하시고, Lisp/Scheme계열 하나, ML/Haskell계열 하나, Perl/Python/Ruby계열 하나정도는 필요할 수 있고, Smalltalk나 Objective-C같은 언어도 만져보는게 좋다고 생각합니다. 더 많은 언어를 익히는 건 당연히 추천합니다.

3. 자격증 따서 손해보는 건 술값/담배값 정도의 돈이겠지요. 딸 수 있으면 따는게 좋습니다. 다만 그게 시간을 너무 소모해서 생활의 주가 되어서는 곤란하다고 생각합니다.

4. 수학은 잘하는게 좋지만 꾸준히 공부하면 됩니다. 고등학교수학+물리학+공업수학 정도의 지식이면 컴퓨터를 다루는 어느 분야에서도 기초정도는 다 갖추는 겁니다.

5. 시야를 확장시키는데 유명한 사람의 블로깅, 유명한 커뮤니티, 유명한 논문지, 외국의 뉴스그룹 정도를 꾸준히 읽는게 도움이 되리라 생각합니다.
------------------------------
How many legs does a dog have?

------------------------------
How many legs does a dog have?

ddeng72의 이미지

언어보다는 원리에... How 보다는 Why에 집중해야 할 시기라고 생각됩니다.

How를 배우기는 책을 보면 알수 있지만 왜 사용하는지에 대해서는 시간이 필요합니다. 그만큼 생각을 해야하고요.

그리고, 그 시기에는 자신이 정말 뭘 하고 싶은지에 대해서 고민해야 할 때입니다.

무엇을 하고 싶은지와, 왜 이것이 이렇게 돌아가냐느냐에 집중한다면... 좋은 개발자가 될 거라 생각합니다.