프로그래밍 실력 어떻게 하면 늘 수 있습니까?

ratmhun의 이미지

안녕하세요. 독학으로 C를 공부하고 있습니다.
A Book on C를 읽었습니다. 예제를 타이핑해 보기도하고 나름대로 연습문제도 풀어보았습니다만...
책을 읽기 전에 비해 나름대로 일취월장했다고 느끼는 부분은

/* In this file */

#include <stdio.h>

int main(void)
{

}

위의 부분을 빠르게 코딩할 수 있게 되었다는 점 정도.
제 스스로 창의적인 코드를 만들 수 있는 그 날은 언제일까요?
프로그래밍 실력을 쌓기 위해선 어떤 계기가 필요하지 않을까요? kldp의 geek 처럼 되기 위해서는 어떻게 하면 될지 의견 부탁드립니다.
novice의 이미지

저도 초보 입니다.

다만 주위에서 말씀하시기를.. "Learn and Run"이 최고다.. 라고-_-;

I don't belong here..

feanor의 이미지

글을 잘 쓰려면 다독 다작 다상량이라고 하는데, 글이 아니라 코드를 잘 쓸래도 마찬가지인 것 같습니다.

많이 공부하시고, 많이 좋은 코드를 읽어보시고, 많이 직접 코드를 짜 보세요. 저도 아직 멀었지마는 지금까지는 저 방법으로 잘 해온 것 같습니다.

--feanor

alfalf의 이미지

하시는 일 자체가 프로그래밍이라면 필요없지만 그렇지 않다면
자신만의 프로젝트를 하나 하세요. 전공이 전산이라면 그쪽으로
전산이 아니라면 자신의 전공지식을 최대한 활용하여 그쪽 분야의
좀 복잡한 프로그램에 개발 프로젝트를 만들어서 시작부터 끝까지
쭈욱 문제를 해결하면서 개발 하시다보면 어느센가 프로그래밍의
고수( :wink: )가 되어 있으실 겁니다. 참고로, 개발 하시면서
고수분들의 코드를 참조하시면 좋은 기술들도 많이 배우실 수
있을겁니다.

ratmhun의 이미지

전공은 아닙니다.
뭐 그렇기도 해서 그렇겠지만 주변에 C와 관련해서 이야기를 나눌 상대조차 없답니다. C 스터디 같은 것을 하는 것도 불가능하고, 가진 밑천이라곤 책, internet이 전부입니다.
설상가상 C와 관련한 커뮤니티는 제대로 되어 있는 곳이 없는 것 같구요. 체로 운영 중단된 곳이 많은 듯 합니다. 필요성 때문인가요? C는 기본적인 소양이기 때문에 특별이 이와 관련해서 커뮤니티가 필요없다는...

제 C 학습 방법은 책에 있는 예제를 타이핑해 보고 소스를 보면서 원리를 이해하는 것이 전부입니다. 혹은 예제를 이렇게 저렇게 변경해 본다거나 하는 정도죠. 당연히 이런 방법으로는 한계가 있기 마련입니다.

제 생각으로는 아무래도 여러분들이 학부때 다양한 프로젝트를 경험해 보았기 때문이 아닌가 추측합니다. 전공 학부 과정에서는 어떤 C 프로젝트들을 수행합니까?

jachin의 이미지

저도 묻고 싶을 정도로 궁금한 얘기네요. ^^
창의적인 소스를 구현하는 것은, C에 대한 전반적인 지식과 이해가 있어야 가능한 얘기가 아닐까요?
가령 로봇팔에 구현할 C코드를 짠다고 했을 때, 어드레스 직접 접근으로 I/O핀에 할당할 데이터를 보내는 소스를 만들때라든가, 아니면 새로운 보드에 대한 I/O 메모리 맵핑이라던가, 파일제어를 위한 파일 포인터 등등...
모든 기능적인 지식이 있어야 가능할 일일것 같습니다.

이미 책을 통해 예제를 연습하고 원리를 이해하셨다니 다행입니다. 원리 이해가 되었다면 더욱 고급 지식을 접근하시는 방법을 선택하셔야 할 시기인듯 싶습니다만...
(고급 지식이란 조금더 구체화되고 실체를 갖춘것을 뜻합니다. C에 대해 배우셨다니, 일반적인 파일관련 유틸리티 소스를 한 번 분석해보시는건 어떨까요?)

저도 아직 C에 대한 전반적인 지식을 갖추지 못한 것 같습니다. 개인적으로도 너무나 모자르지만, 한 말씀 올립니다. (_ _)

vacancy의 이미지

사실 C라는 언어는 그저 Tool일 뿐이죠.
다른 언어들도 마찬가지고요.
언어는 레퍼런스 찾아가며 쓸 수 있을 정도면 됩니다.
( 무슨무슨 기능이 있는지 정도 알면 된다는거죠. )
어차피 자주 쓰는 건 쓰다보면 외워지니까요.

프로그래밍이 늘고 싶으시다면,
뭔가 목표를 하나 정해서 직접 코딩해보시는게 좋을것 같고요.
아직 자료구조나 알고리즘 서적을 읽으신게 없다면,
이 두 가지는 필수적으로 공부하시는게 좋다고 생각합니다.
이런 것들은 좀더 하이레벨의 Tool이라고나 할까요.

사실 공부하자면 한도 끝도 없죠. -_-;

sDH8988L의 이미지

예전에도 이런 질문을 하신 분이 계셨더랬습니다...

그 때, 제가 답변해 드렸던 내용을 말씀 드리겠습니다...

답변을 드린다고 해서 제가 생각하기에 제가 프로그램을 썩 잘한다고는 생각하지

않습니다... 그냥 참고로 하시면 될 듯 합니다...

위에 계신 많은 분들께서 직접 목표를 정하고 그걸 짜보라고 하셨지요...

사실 그게 정답입니다...

그렇지만, 처음에는 뭘 목표로 잡아야 하는 지도 잘 모르죠...

그렇다면, 이거 한 번 해보세요...

'공학용 계산기'

물론, EL-9300이나 그 상위 기종들 같이 복소수 연산, 연산 편집 다 되는 것으로요...

특히 편집 기능은 확실히 구현해야 됩니다...

이거 하다보면, 사용해야 될 기능이 한 두개가 아닙니다...

편집 기능이 있어야 하니 간단한 Editor를 구현해야 하고 문자열 Parsing의 기본을

다 해야 합니다...(, )도 다 생각해 줘야 하고요... 각 연산자의 특징과 사용에

대해서도 알아야 하고...

하여튼 많은 걸 알아야 합니다...

이런 거 하나하나 찾아가서 하다보면, 어느 새 프로그램 실력이 확 늘어 있는 것을

확인할 수 있을 겁니다...

Windows용 Program을 짜시던 어떤 분은 일단, 새로운 Language가 나오면 무조건

탐색기를 짜신다고 하던데요... 그렇게 하면, 그 Language가 가지고 있는 기능이나

Library들을 적절하게 활용할 수 있게 된다고요...

그와 비슷하다고 생각하시면 될 겁니다....

보통은 Editor를 짜시는 경우가 많지 않을까요???

ratmhun의 이미지

관심 가져주셔서 감사드립니다.
'어느정도 기본적인 흐름 정도는 자주 쓰다보면 외우게 된다.'는 말씀 잘 들었습니다.
음...
이를테면 바둑 처음 시작하는 거 하고 비슷한 거로군요.

issue00의 이미지

갠적으로는 프로젝트 하나 뛰고(?) 나면 업글된 것을 자신이 느끼겠더라구요.

플젝할때는 힘들어두 ,시간이 시간이다 보니, 자료도 많이 찾게 되고,
같이 일하시는 분들한테도 많은 조언도 얻고,
가끔 논쟁이 심해지기도 하지만,,,그러면서,,,,깨달아가게 되더라구요..
이렇게 하면 안되는구나...이렇게 해야 하는구나......

전 이쪽 관련 스터디 하나 하게 되었는데,
것도 많은 도움이 되고 있습니다.
아무래도 이야기 방향이 맞다보니, 다른곳에서는 할수 없는 ...머 말해도 잘 이해못하는 실정들을 서로 이해할수 있다는것이...또 지식들도요.....
부담없이 물어보고...그러니깡......

혼자 책들고 하는건 아무래도 한계가 있는것 같습니다.
자신이 어느정도 아는지도 잘 안보이구용....

항상 깨어있어라 ~~~

nachnine의 이미지

일단 '교과서' 를 많이 읽으시구요..

- 기본이 탄탄해집니다

그다음은 '좋은 소스코드의 분석'입니다.

- 훌륭한 프로그래머의 사고를 배울수 있습니다
- 좋은 코드란 어떤것인지 그대로 따라하는 것만으로 실력이 늡니다
- 소스코드를 분석하는 능력이 신장됩니다.

onemind555의 이미지

하다 보면 됩니다..

-----------^^ ^^ ^^ ^^ ^^ ----------
..........................................................

ratmhun의 이미지

답변 감사드립니다.
특히 '~게 해 보세요.'라는 구체적인 답변이 큰 도움이 되는군요.

NeoTuring의 이미지

소설이나 수필류의 글을 써보시죠.

단, 이야기는 처음부터 끝까지 완결된 형태여야 하고

큰 이야기를 작은 이야기들로 쪼개어 나가는 방식으로 이야기를 전개해

나가되 A에서 언급된 부분이 B에서 부정되는식이 없어야 하겠고,

쓸데없는 중복이나 논리적 모순이 발생하지 않도록 그리고

될 수 있으면 일관성에 문제가 없도록 그렇게 글을 써보세요.

제 생각에 프로그래밍은 개념(컨셉)의 '건축'입니다.

그리고 최고의 프로그래머는 단연 개념의 건축을 제일 잘해내는 사람입니다.

서지훈의 이미지

프로그래밍에도 역시 왕도는 없습니다...
저 같은 경우...
이거 하고 싶어서 하는거구...
전 원래 싫은건 때려 죽이면 하지 그 전엔 절대 하지 않는 사람입니다.
프로그래밍에 대한 흥미는 정말 예전 부터... 초딩때...
이땐 필요에 의해 한거 같군요...
게임에서 자료 고쳐서 유리하게, 편하게 하기 위해...
컴퓨터 내부(조립 수준)를 알기 시작한것도...
게임을 하기 위해서 어쩔 수 없이...

이렇게 좀 오래 사용을 하다 보니...
기본기는 웬만큼 익힌것 같고...
대학도 관력학과 컴공으로 진학을 했습니다.
근데... 여기서 소프트웨어 보단 하드웨어에 더 비중을 두는거 같아...
처음엔 좀 황당하고 적응이 어려웠음...
그리고 처음 접하는 C언어에서 교수가 처음 강단에 서는 사람인데...
말 알아 듣기 힘듬...-_-ㅋ
지금도 이분 어버버로 좀 유명하더군요...-_-ㅋ
열심히 설명은 하시는데...
알아듣는 학생은 거의 없는...-_-ㅋ

이렇게 허송세월 아닌 허송세월로...
제가 좋아하는 책들만 무쟈게 읽었습니다...
역사소설... 삼국지, 수호지, 초한지 등등... (뭐.. 고딩때 거의 다 읽었지만... 남는 시간에 할게 없어서...)
그러다... 4학년 때인가?
제가 여기와서 무얼한건지 알 수가 없더군요...
지금 손에 들려있어야 하는건 이게 아닌데?
그래서 과감히 책 종류를 바꾸기로 하고...
앍던 열국지 6편이던가 에서 완전 접구...
전공 서적만 들고 파기 시작을 했죠...

C / C++ 책들 위주로...
책을 바꿔가면서 계속 읽기...
아무리 읽어도 이해가 안되면 그냥 넘어가고...
여하튼 끝까진 읽고 또 다른책...
이런식으로 책이랑 사이트를 돌아다니며 정보를 수집하고 공부를 한거 같습니다...
그러다 저의 실력이 어느 정도인지 확인하기 위해...
부모님이 보내주신 2학기 등록금...-_-ㅋ
거의 음주가무로 다 날리고... 휴학을...
(이렇게 안하면 집에서 휴학을 인정을 안해주기 때문에... 어떨 수 없는 극단적 방버...)
휴학하고 unix 계열에서 C를 할 수 있는 회사에서 작업을 하다 보니... 실력이 좀 느는거 같더군요...
이때 느낀건 자신감...
이렇게 자신감이 붙으니... 이거저것 해서 막 손을 데게 되고...
이러다 보니... 시간이 지날수록... 점점 나아지는것 같더군요...

저의 경우는 이런데...
다시 정리를 하자면...
저같은 경우는 책과 사이트 위주로 공부를 하는데...
책은 새로운 지식을 얻고 모르는것을 찾기 위해...
사이트(웹)은 모르는 것을 해결하기 위해...
전 사람들과의 교류는 좀.(이거 술먹을 때는 짱 잘 함)...

책은 새로운거 좋은거 있음 거의 무조건 적으로 사모으고 다 읽진 못하더라도 무슨 내용인지 파악을 하고...
새로운 무언가가 나오면 절대 이해하려고 노력함...

이 정도만 되면 앞으로 점점 훌륭한 프로그래머가 되지 않을까 하는 생각이 드네요...

<어떠한 역경에도 굴하지 않는 '하양 지훈'>

추신_덕분에 요즘엔 책은 대부분이 전공책들 뿐인데...
너무 메마른건 아닌지? 예전엔 시집도 많이 읽고, 다른 문집들도 많이 좋아 했건만...-_-ㅋ 요즘엔 쫌 까칠하네...

#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);