비전공자가 c언어를 가장 먼저 시작하는게 정말 옳은건가요?

개성만점의 이미지

안녕하세요.

전 비전공자입니다.(예술분야 대학나왔습니다)

최근 c언어(열혈 c 윤성우)를 공부하다가 무슨말을 하는지 그 순간만 이해가고

너무 어렵고 이게 어떻게 굴러가는지 상상도안되고 외계어같아서 컴퓨터구조에대해 조금씩 공부했는데

수박겉핥기만 하다가 뭔가 수박의 하얀 과육을 먹는 느낌을 받았습니다. 충분한 이해는 안되어도 뭔가 깊이가 조금씩 생기는거같아요.

그런데 의문이 들었습니다.

비전공자분들은 그럼 컴퓨터 구조같은것도 모르고 컴공학과에서 배우는 전공필수나 컴퓨터 관련교양(중요한것위주)을 안배워도

그냥 프로그래밍 언어만 공부해도 그걸 다 이해할정도의 머리를 갖고 계신건가요?

비전공자라고하면 이과 계열( 수학, 물리 ...전자..등등) 이런분야분들은 그래도 사고력이 도움이 된다 생각하는데 (아닌가요?ㅠㅠ)

아예 저같이 전공과 거리가 먼 분야분들이 프로그래머가 된 경우, 진짜 언어만 파고 취업한건지 궁금합니다.

회사의 구성원이 되어서 민폐끼치지 않을 정도라서 취직이 된거라고 생각하는데 ..

전 컴퓨터 구조를 모른채로 c언어를 이해하는 사람이 너무너무 신기하고 제가 이쪽 분야에 너무 뒤쳐진사람인가? 하는 생각도 솔직히 들었습니다 ㅠㅠ..

그분들도 처음에는 이해가 안되도 그냥 가볍게만 이해하고 코딩을 계속하시면서 코딩실력을 올리신건가요?

그건 아니라 생각하고있지만 그게 사실이라면 신으로 보이네요.. 아니라면 , 그분들은 어느정도 컴퓨터 지식을 갖고계신걸까요?

ㅠㅠ뭔가..저는 컴퓨터구조를 조금이라도 보고나니 컴퓨터 구조 모르고는 c언어 부터 시작하라고 어디가서 말을 못하겠네요..ㅜㅜ

제가 부족한것도 맞는데 다른분들이 너~무 뛰어나신건가요..?ㅠㅠ

그리고 코딩 입문으로 c부터 하라는 분들이 너무많은데(학원이나 인터넷 곳곳, 그리고 개발자분들도 그런말 많이하시는데)

c가 어려워도 기본이고 이해를 다 못해도 해보라고 그걸 먼저 하라는건가요? 아니면 컴퓨터 구조는 나중에해도 된다 생각해서 그러는건가요?

제 생각엔 진짜 마음먹고 할 사람들은 c언어 책을 가장 먼저 살게아니라 얇고 쉽게 설명한 책이라도 컴퓨터구조 책을 2번정도 읽고 시작하는게

훨씬 낫다고 생각하거든요.. (입문한지 3개월인데 이런말 하기가 좀 거만하긴하지만)

c언어는 어려운건데ㅜ_ㅜ... 컴퓨터구조 조금만 익히고 c언어하면 멘붕하는 시간을 1/3은 줄일수있을거라 생각합니다.

다른분들 생각은 어떠신가요?

* 글이 좀 두서가 없긴한데 질문의 요지가 c언어 말고 다른 언어를 선택하는건 어떤가요? 이런 질문은 아닙니다 ㅜ.ㅜ
처음부터 c를 알고가는게 장기적으로 좋을거같아요 ..

chadr의 이미지

컴퓨터를 배우기 위해서 정석적으로 공부한다면 컴퓨터 구조부터 시작해서 알고리즘, 자료구조 그리고 마지막은 언어라고 생각합니다.
그런데.. 뭐... 사실 그렇게 배우기는 쉽지 않죠.. 왜냐하면 재미가 없으니까요.

그렇다고 언어를 먼저 배우면 나중에 가면 갈수록 뭔가 허전하다는 느낌이 많이 들겁니다.
왜냐하면 처음에는 시키는대로 그냥 함수호출하고 시키는대로 변수 선언하고 시키는대로 변수에 값을 대입하는데 나중에 가면 이 원리가 궁금해지기 때문입니다.

이 원리를 알기 위해서는 컴퓨터 구조가 필요하게 되고 os구조도 필요하게 되고... 점점 원론적인 것을 배워야지만 알수 있습니다.

저도 컴퓨터를 전공하고 그걸로 밥벌어먹고 있습니다만 처음 c언어를 배울때는 어려웠습니다. 다들 그렇지만 특히 포인터이지요.
포인터라는 관문을 넘느냐 못넘느냐에 따라서 대학에서 컴퓨터 전공을 하는 친구들도 프로그래머를 직업으로 할 것인지, 아니면 다른 노선을 탈 것인지 정하는 허들이었으니 어렵긴 어려운 것이었지요.

그러면 저는 어떻게 넘었느냐에 대해서 궁금하실것입니다.

간단합니다.

"이해 안가는건 넘어가자"

일단 이해 가는 것으로 연습을 위해서 간단한 프로그램을 짜보고 나중에 이해 안가는 부분을 다시 공부했습니다.
그리고 다시 이해 안가면 넘어가고를 반복하다보니 나중에는 다 이해가더군요.

저와 같은 일반적인 사람들이(심지어 전공자도) 공부하는 방법은 비슷할것입니다.

뭐.. 가끔씩 천재분들이 있는데 그분들은 논외로 하시죠. 아인슈타인과 비교해서 자괴감밖에 더 들겠습니까?

여기까지는 전공자이었던 제 이야기이고 글쓴이 님과 같은 비 전공자의 입장에 생각해봅시다.

일단 비 전공자이시니(특히나 상대적으로 공대에 비교해서 숫자와 익숙하지 못하신 전공)이시니 원론적인것부터 배우면 아마 얼마 못가 포기 하실 확률이 높습니다.
그러면... 가장 좋은건 흥미 위주로 먼저 시작하는 것이지요.

제가 만약에 비전공자에게 컴퓨터 언어를 추천한다면 절대 c언어는 추천 안할것입니다.
왜냐하면 흥미를 가져야하는데 너무 어려워요.

흥미를 가지려면.. 내가 원하는대로 뭔가 즉각즉각 나와야하는데 c언어는 해야할게 너무 많습니다.
메모리도 관리해야하고.. 파일 입출력하나 하려고 해도 복잡하고.. printf하나 하는데 변수 타입에 따라서 %d니 %s니.. 알아야할게 너무 많아요.

그래서 전 c언어가 아닌 생산성이 좋은 언어를 먼저 배우라고 추천할 것입니다.

컴퓨터 프로그래밍은 기본적으로 "내가 컴퓨터한테 일을 시키는게 목적"입니다.

컴퓨터는 바보라서 대충 말하면 대충하기 때문에 1부터 10까지 다 알려줘야합니다.
그 1부터 10까지 알려주는 방법을 "알고리즘"이라고 하고 알고리즘을 수행하면서 필요한 데이터 관리 방법을 "자료구조"라고 합니다.

컴퓨터 프로그래밍에서는 이 두개가 매우 중요해요.
뭐.. 컴퓨터 프로그래밍의 50%이상을 차지한다고 할수 있겠습니다. 그러면 나머지 50%는 뭐냐하면 위에서 말한 원론적인 것과 기타 소프트웨어 공학적인 것들이지요.

아무튼.. c언어는 이런 알고리즘과 자료구조를 만들기 위해서는 좀 불편한 언어입니다.
말이 길어졌습니다만 간단히 말하면 c언어는 원래 어려운 언어이라는 것입니다.

비전공자이시지만 공부 하는 방법은 많이 아시는것 같습니다.
컴퓨터 구조 등 원론적인것 까지 관심을 가지시니 말입니다 ㅎㅎ

c언어는 컴퓨터의 원론적인 구조를 거의 추상화 하지 않고 그대로 투영한것이라서 컴퓨터 구조를 선행 하시고 os도 조금 선행하시면 c언어를 이해하는데 많은 도움이 되실겁니다.
그럼 화이팅하셔요.

-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.

개성만점의 이미지

ㅠㅠ힝 포기안할껀데 ㅠㅠ^^ 정말 감사합니다. 사실 포기 10번 넘게하지만 조금씩 방법찾으면서아직도 싸우고있습니다

drinkme의 이미지

언어간 장단점 등은 인터넷 검색 해 보시면 나옵니다.
그냥 하고싶은 언어 공부하세요.
첨에는 뭘 배워도 다 고만고만합니다.
일단 한두개 익숙해질만 하면, 다른 언어 접근도 쉬워집니다.
어짜피 이바닥 있으면서, 언어하나 배워서 뭐 할려던거는 아니잖아요.

내가왜리눅스썼지의 이미지

C도 병행 하면 좋겠지만 프로그램 짤 떄 고려해야 할 부분이 더 많아 져서 C 언어 보다는 나중에 나온 언어로 시작하는 걸 전 추천 합니다. 누구는 파이썬 추천하고 누구는 자바를 추천 하기도 하더군요. (간혹 C#도)

하지만 현재 자주 쓰이는 언어 중에서 하드웨어에 접근을 좀 많이 하는 언어가 C 이기 때문에 초반에는 다른 언어로 공부하시다가 C도 병행하시면서 하는 걸 저는 추천합니다.

그리고 언어 따라서 문법이 많이 비슷한 것들도 있기 때문에 최대한 가볍게 (이걸 추상화라고 부르려나요?) 생각할 수 있는 언어 부터 시작해서 좀 자세히 배우기 쉬운 언어로 가는 걸 전 추천합니다.

이보게 친구, 속도는 생명이라고.
망하면 재수강. Re: 제로부터 시작하는 재수강