프로그래밍 입문관련 문의..

rkawkdhkd의 이미지

안녕하세요
이제 막 프로그래밍에 관심이 가 배워보려 하고 있는데요,
아직 모르는게 많아 질문드리고자 합니다.

일단 제 소개부터 하자면 20대 중반에
개인적 사정으로 대학은 1학년(사립대, 기계과) 다니다 휴학 상태구요,
어쨌든 결론부터 말하자면 수학 못하고(수포자.5등급), 영어는 잘합니다.

질문1) 지금 하는일때문에 당분간 독학해야 할것 같은데, 수학이 중요하다는 얘기가 있더군요. 그게 수학을 못하면 아예 포기해야 하는 정도인지, 궁금합니다.

질문2) 공부하는데 있어 나름 플랜을 짜고 하고싶은데, 일단을 대학 교과과정을 보고 맞춰 할생각입니다. 괜찮을 지요?

질문3) 책을 고르려니 너무 많네요. 추천을 해주시면 정말 감사하겠습니다.

lalupo20의 이미지

질문1) 프로그래밍 자체를 배우는데 수학은 크게 중요하지 않습니다. 하지만 코딩을 하다보면 기초적인 수학지식이 필요할때까 있지요. 예를 들면 등차수열, 등비수열 이런것들? 그외에것들은 필요하실때 배우시면 되겠습니다.

질문2) 대학교과과정 따라가면서 본인이 하고 싶은 분야에 따라 선택하시면 되겠네요

질문3) 일단 C언어 기준으로 말씀드리면 www.soen.kr 이 사이트에 강의가 무료로 잘 되어 있습니다. 그외에 서적은 열혈강의 시리즈 많이 봐요.

rkawkdhkd의 이미지

다행스럽게도 우려와 달리 수학은 중요하지않나보내요.
그리고 c언어 배워보려했는데, 마침 해당 사이트를 알려주셨네요.
감사합니다. 잘활용하겠습니다

Stephen Kyoungwon Kim@Google의 이미지

수학은 일반적으로 중요합니다. 다만 컴공과 (제가 이해하기로는)와 기계과, 혹은 더 정확히는 전자과의 차이는 수학이 없어도 살아남을 수 있느냐 아니냐의 차이 같습니다. 그리고 어떤 분야, 어떤 자리를 목표로 하느냐에 따라 수학의 중요성은 달라진다고 생각됩니다. 예컨대 석사나 박사 후 구글 취업하는 경우가 한국서 학사 마치고 SI 회사에 들어가는 쪽보다 수학을 훨씬 더 필요로 하겠죠.

컴공 일반에 대해서 말한다면 수학은 중요합니다. 그게 나에게 필요할 거냐는 다른 문제고, 수학이 없는 수준이라도 살 길이 있느냐면 그렇다 정도가 현실적인 대답으로 보입니다.

그리고 C는 설령 나중에 임베디드 프로그래머나 전자공학 전공을 하시더라도 첫 언어로는 그다지 추천하고 싶지 않습니다. 사람의 문제 해결을 높은 추상 수준에서 논리적이고 명료하게 표현하는 수단으로 프로그래밍을 바라볼 경우, C는 알아야 될 게 너무 많아서 집중을 방해합니다. 시스템을 이해하는 게 목적이라면, 차라리 어느 정도 논리회로, 디지털 시스템 설계, 컴퓨터 구조, 어셈블리 프로그래밍 등등에 익숙해지시면서 천천히 C를 공부하는 게 더 효율적이라고 생각하고요.

커리큘럼을 따라가면서 공부하는 방식은 괜찮다고 생각됩니다. 영어를 잘 하신다면, MIT 오픈 강좌에 파이썬으로 하는 컴퓨터 공학 입문인가 하는 과목이 있던데, 교수의 어조--자신감에 찬 어조는 아닙니다--나 성별--여성분이시고요--에 대한 편견만 없으시다면 내용은 제가 여태 찾아본 어느 입문 과목보다 훌륭하다고 생각합니다. 그거부터 시작해 보시고 첫 언어로는 파이썬을 추천합니다. (저는 C++을 주로 사용하고 파이썬은 제 4의 언어쯤 됩니다.)

그리고... 당장은 아마 오픈 소스에 기여하실 능력이 안 되실 거예요. 보통 사람이 입문 2년 내에 그렇게 되는 것은 불가능하다고 보고, 4년 내에 되면 스스로를 자랑스러워 하셔도 된다고 생각합니다. 우선은 기초에 집중하시는 게 어떨까 권합니다. 제가 어쩌다 보니 나름 한국 명문대 출신들을 많이 만났는데, 학부 기초가 제대로 잡힌 사람보다 아닌 사람이 몇 배 많습니다. 그거만 되도 기업에서 모셔가야 될 인재라고 생각합니다.

rkawkdhkd의 이미지

지인에게 첫 입문용으로 추천받았는데 말이죠, 좀 헷갈리네요.
말씀하신 MIT 파이썬 강의는 찾았습니다.
아직 다 들어보진 않았지만 도입부 들어보니 꽤 유익할것 같네요.
정보 감사합니다.

김정균의 이미지

입장에 따라 case by case 일 수 있을 것 같습니다. 저의 경우 C 를 하고 나면 다른 언어를 다루기가 훨씬 수월하기때문에 추천을 합니다. C 를 잘하려면 결국 깊게 파고 들어야 하는데 이런 경우 다른 언어를 하더라도 해당 언어의 특성을 파악하고 다루는 능력이 생길 수 있기 때문에 C 를 먼저 추천하는 합니다.

하지만 이런 특성 때문에 C를 먼저 접하고 프로그래밍을 포기하는 경우도 많이 있습니다. (심지어는 저도 그랬었으니까요.) 이런 케이스라면 좀 더 쉬운 언어로 먼저 시작하는 것도 나쁘지는 않다고 봅니다.

Stephen Kyoungwon Kim@Google의 이미지

제가 보기에 김정균님은 프로그래머로서의 지능이 평균보다는 훨씬 높으신 데도 포기한 적이 있으시고요. 저도 머리가 나쁘다는 얘기는 거의 들어본 적이 없는데도 C로 프로그래밍을 시작했다가 포기한 적이 있습니다. 어쩌면 C가 프로그래밍을 포기하게 만드는 경우가 일반적이라고 이야기하는 게 공정하지 않나 생각합니다.

그리고 당연히 파이썬이 인터프리터에서 어떻게 돌아갈지, C++가 내부적으로 어떻게 구현되는지 이해하는 데에는 C에 대한 이해가 도움이 된다고 생각합니다. 그런데 그냥 단순히 C를 프로그래밍할 줄 아는 게 파이썬이나 JAVA, 심지어 C++을 그답게 프로그래밍하는 데 얼마나 도움이 되느냐 묻는다면 저는 회의적입니다.

그래서 C를 이해하는 게 중요하고 다른 언어를 주로 하는 프로그래머에게도 도움이 충분히 된다는 데는 동의하지만, 첫 언어로 괜찮은지는 잘 모르겠습니다.

이건 제 의견이고, 실제로 비교적 다수가 파이썬을 첫 언어로 괜찮다고 생각하는 반면, 적지 않은 프로그래머는 C를 첫 언어로 추천하는 것도 사실이고요.

황병희의 이미지

영어 잘 하시면 바로 오픈소스 프로젝트에 뛰어들것을 추천합니다.
책보다 제다이들과 소통(메일링리스트)하면서 배우면 더 빨리 늡니다.

데비안/그놈/Wayland/파이썬/리눅스커널 프로젝트 등등을 추천합니다.

[크롬북에서 적었어요]

--
^고맙습니다 감사합니다_^))//

rkawkdhkd의 이미지

아직까진 기초도 안잡혀서 힘들것 같네요.
추후에 한번 도전해 보겠습니다.
감사합니다~

dongas의 이미지

제가 지금의 rkawkdhkd님 처럼 개발에 관심을 처음 가질 무렵인
IMF 시절의 선배님들은 C언어를 잘 다룰줄 알아야 뭐든지 잘할 수 있다 라고 강조하셨던 기억이 있습니다.

하지만 진입 장벽이 너무 높아 자료구조, 알고리즘 정도만 C로 공부하였고 실무에 들어갔을때는 mfc(c++클래스라리브러리) 를 사용하여 개발했습니다.
개발을 몇년정도 하다보니 처음 C를 배웠을때 저게 먼소리야 했던 것들이 다시금 깨달아지는 순간들이 있었습니다.

드리고 싶은 말씀은 개발의 기본적인 알고리즘,자료구조등은 생각 하신대로 C언어로 공부하시더라도
그 이상의 학습은 더 재밌는거로 공부하시기 바랍니다.

인기있는 테크닉 관련해서는 아래 링크를 참고하시기 바랍니다.
https://insights.stackoverflow.com/survey/2019

위에분도 언급하셨지만 파이썬 재밌고 활용도도 높은 것 같습니다.

어느정도 오래 그리고 잘 하다보면 랭귀지에 국한되지 않는 시기가 오는 것 같습니다.

그럼 좋은 결과 있으시길 바랍니다.

sylee957의 이미지

제가 학부 수준에서 어떻게 파이썬 오픈 소스 라이브러리 개발자까지 되었는데
제 생각에는 그나마 수학이 많이 필요한 프로젝트가 학부생 수준에서 커미터 까지 활약할 수 있는 기회가 많은 것 같고, 오히려 수학이 적게 필요한 분야는 무슨 현업에서의 경험적 지식이 많이 필요로 하기 때문에 오히려 힘들 수 있다고 봅니다.

아무튼 어느 수준 이상이 되면 수학적 배경이 부족하면 이해할 수 없는 알고리즘이 엄청나게 많긴 합니다.
보통 여기서 특별히 자기 손으로 그런 것을 만들어야겠다는 오기가 들어야 수학을 더 파고드는 것 같고, 그런 수준의 문제를 접하지 않았거나 다른 박사가 풀 수 있으면 그만큼은 안 해도 될 것 같고요.

alstjr7375의 이미지

수학은 잘할수록 좋죠.
근데 아주 일반적인 경우는 이산수학+선형대수+미적분+확통 정도로 커버됩니다.
AI를 한다거나 고급지식이 필요한 경우는 그 이상의 수학이 필요할테구요.
갠적으로 위 4개수학이랑 데이터구조, 알고리즘, 컴퓨터구조, OS 정도를 우선 커버한 후에 필요하면 더 깊은 수학을 공부하면 되지 않을까 생각하네요.

오픈소스 기여는 번역이나 README고치는 것부터 시작하면 두려움 없이 할 수 있을거 같아요.

언어같은 경우, 제가 권장하고 싶은것은 Racket이지만.. 사용자가 없고 활용은 이맥스 설정정도라ㅠㅠ
파이썬 좋을거 같네요!!