c언어 중~상급 이라 하면?

boardholic의 이미지

완전 마스터란 없겠지만 어느정도 중~상급정도

c를 할줄 않다고 할려면 어떤 것들을 배워야 하면 어느정도 해야하

는지 궁굼합니다.

항상 보면 기본적인 문법책밖에 모르겠고 c언어 책을 봐도 다 거기

서 거기인데 추가로 더 배워야 할 것들이 어떤것인지 궁굼합니다.

c문법책은 몇권씩 있어도 정작 c할줄아냐 그러면 쪼그라드는 그런

실정입니다. 문법다음에 어떤것들을 배워야 합니다까?

다크슈테펜의 이미지

포인터...파이프...시그널....세마포어.....쓰레드...프로세스...소켓 뭐 이런거 아닌가요...? 저도 이런부분에 공부하는 상태라서 잘은 모릅니다.

인생이란게 다 그런게 아니겠어요....? 뭘(?)
http://schutepen.egloos.com

kihongss의 이미지

기본적으로 C 코드를 보고 이해할 정도가 되었으면,
유닉스/리눅스 계열에서 윗분 말씀처럼, IPC, 프로세스, 소켓, 시그널 등 시스템 프로그래밍을 공부하세요.
윈도우즈 계열에서는 Win32 API나 MFC 정도부터 시작되면 되겠네요.
물론 다른 길도 많습니다. 저는 일단 C언어부터 시작하셨다는 가정하에서 조언 드린거고요.
여러쪽으로 공부하다보면, 좀더 공부하고 싶은 분야가 눈에 들어올것입니다.

feelpassion의 이미지

darkschutepen wrote:
포인터...파이프...시그널....세마포어.....쓰레드...프로세스...소켓 뭐 이런거 아닌가요...? 저도 이런부분에 공부하는 상태라서 잘은 모릅니다.

C언어에 대한 개념만 잡히면 파이프 세마포어 쓰레드 소켓 ... 전부 다 똑같이 쉽습니다... 쉽다는 표현 자체가 좀 거시기할지는 모르겠지만 하여튼 어렵지는 않습니다.
쪼금 더 어려운 개념이란 ... 자료구조에 관한 내용이죠... linked list, Stack, Queue, Binary Tree, Graph등에 관한 내용들은 조금만 응용하면 제대로 C를 공부하지 않은 사람들이면 금방 바닥을 드러냅니다. 이 단계를 넘어서면.....

운영체제를 분석하라고 권하고 싶습니다.

남으로 창을 내겠소.
밭이 한참갈이 괭이로 파고 호미론 김을 메지요.
구름이 꼬인다 갈리있소. 새들의 노래는 공으로 들으랴오.
강냉이가 익거든 와자셔도 좋소.
왜 사냐건 웃지요.

sorcerer의 이미지

문법 알면 끝이죠.
다음은 간단합니다.
필요한걸 만들어요.

프로그래밍을 잘 한다는건 결국 만들어 놓고 버리는 그런 것을 만드는게 아니라 만들어 놓고 계속 쓸 수 있는 것을 만드는 거라 생각되거든요.
정말 프로그래밍을 잘 한다고 느끼는 사람들을 한번 보세요. 대부분, 그들이 만들어 놓은 무엇인가를 우리가 쓰고 있지 않나요?

문법 다음은 활용입니다. 무언가를 만들어요. 만들 때 필요한 것을 그때 그때 추가적으로 공부하면 되는 것입니다. 기능을 수십, 수백개 알아봐야 쓸 줄 모르면 다 필요 없지요. 우리가 쓰는 언어를 공부하는 것과 마찬가지가 아닐까요?

SOrCErEr

pynoos의 이미지

C 를 비롯해서 언어 문법을 아는 것은 프로그래밍의 반 밖엔 안됩니다.
중요한 것은 환경을 알아야죠. 환경이란 OS, Library, DB 등등입니다.
언어와 환경 중에 환경에 대해 깊이 알지 못한 채 C 문법을 아는 것으로
아무리 잘해봐야 50점입니다.

언어는 소켓이나, OS, 파일구조, 권한 등등에 대한 것을 실제 구현하는데
필요한 도구일 뿐입니다.

영문법안다고, 소설쓸수없는 것과 같은 이치죠.. 영문법안다고 영어를
다 마스터 했다고 생각하기엔 소설이라는 패러다임을 무시하는 것입니다.
마찬가지로 소설도 언어를 떠나서 있을 수 없듯이, 둘은 한쪽을 깊이 알 수록
다른 한 쪽을 깊이 아는데 도움을 줍니다.

이제 시작인것 같군요. 열심히 하셔요....

r0x2tk1t의 이미지

하고 싶은거 다 해보세요.
또 다시 C를 보게될지도 모르죠 :)
재미가 있을만한걸 하세요.
해서 재미있으면 공부는 배로 잘 되요~

日新 日日新 又日新
Google Talk::chanju_dot_jeon(at)gmail_dot_com

charsyam의 이미지

darkschutepen wrote:
포인터...파이프...시그널....세마포어.....쓰레드...프로세스...소켓 뭐 이런거 아닌가요...? 저도 이런부분에 공부하는 상태라서 잘은 모릅니다.

쉬울때는 쉽고, 어려울 때는 어렵습니다. 같은 C 문법인데,
리눅스 커널을 볼 때는 어렵고, Hello, World를 볼때는 어렵습니다. 압축 알고리즘을 볼 때는 어렵고, 네트웍 프로토콜을 볼 때는 또 쉽더군요. 결국, C는 기본 문법을 익히고, 배경지식이 얼마나
커지는 가에 따라서, 뭔가 봤을때, 쉽다 어렵다가 결정되지
않을까요? C는 단순히 언어일 뿐이니깐요. 고운 하루되세요.

=========================
CharSyam ^^ --- 고운 하루
=========================

IsExist의 이미지

초보: 천라인정도의 프로그램 작성이 쉽다.

중급: 만라인 정도의 프로그램 작성이 쉽다.

단순히 라인이라기 보다는 저정도 짜다 보면 갖가지 것들을 많이 써야
하는 환경이 되리가 생각되네요.

중급자는 아무래도 포인터와 매크로 사용에 능숙하고 va_list 를 서슴없이
다룰수 있는 경지가 아닐지.

---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

cinsk의 이미지

GNU glib의 소스를 (gobject 코드 포함) 이해할 수준이면 상급이라 할 수 있을 것 같습니다.

moonzoo의 이미지

프로젝트 경험이 없다면 초급.

있다면 중급.

많다면 고급.

경험이 중요한게 아닐까 합니다.

boardholic의 이미지

헛! 근데 갈수록 질문의 요지가 중,상급을 구분진는 쪽으로 간것 같

군요^^; 저는 중,상급이 되려면 어떤 것들을 공부해야 하는지

알고 싶은거였는데 ^^ 아무튼 좋은 말씀 참고 하겠습니다.. ..

그럼 중급이 되기위해서 오늘도 열심히 공부를 하겠습니다. -_-;

나에게 있어 한계란 없다.
무한한 꿈을향해 나아간다.

익명 사용자의 이미지

시스템 프로그래밍을 시도하세요.
1) 운영체제관련
*유닉스/리눅스( 파일처리, 프로세스관리 디바이스 드라이버등...)
*윈도우즈( 파일처리, 프로세스관리, 디바이스 드라이버 등...)
2) 컴파일러 제작
* Lex, Yacc같은 도구를 사용하거나, 아니면, 직접 만들어보는...
* 간단한 인터프리터같은것
* 신택스 하이라이트같은데도 쓸수 있겠지요?
* SQL파서 제작등
3) DBMS 제작
* 아주 간단한 스펙의 DB를 제작해 보는 연습
* B-Tree, Hash같은 인덱싱 메카니즘의 구현
* 거대파일내에 레코드셋을 저장할 수 있는 메카니즘 구현
* 간단한 SQL 파서제작
4) 채팅서버/클라이언트 제작
* 사용자관리 테이블은 자신이 제작한 DB사용
1부터 해보세요. 4까지 가면 중수 이상이라고 볼수 있겠습니다.

litdream의 이미지

어느 교수님께서 하신말씀중에,
하드웨어 아키텍쳐, 오퍼레이팅 시스템, 컴파일러, 네트웍 프로그래밍은
전산전공자의 핵심이라고 하셨습니다. 특히, OS 의 기본개념과 Compiler 의
기본개념은 직접 제작할때 얻는것이 많다고 했습니다.

학점좀 잘 받으려고 몇과목은 피했는데, 요즘 열심히 할껄~ 하는생각이 듭니다.

삽질의 대마왕...

오호라의 이미지

C언어자체에는 스킬이 없는거 아닌가요?!

전 한국어 잘하니까!! 상급!!

영어는 못하니까!! 하급!!

예전에는 언어란 도구란 말을 이해하기 힘들었는데...

정말 공부하면 하면할수록 언어란 정말 도구같습니다. ^^;

C언어를 잘한다는건 어느 면에서는 [BNF]를 잘 이해한다는거겠죠.

중상급을 구문짓는 방법에서 위분들이 말씀하신게 다 맞는거 같네요.

개인적으로 어떤 언어를 배우던지 패러다임을 중시합니다. 보통은 언어를 전부 공부하고 나고 한참지나야 패러다임에 대한 통찰이 생기지만 그 전에 많은 상상(?)으로 추론해볼수 있죠.

전 개인적으로 두가지 그리고 한가지를 중요시합니다.

패러다임과 메카니즘!! 그리고, 끈기(노력)

패러다임이란 언어를 이해하는데 최고죠. 절차적, 구조적, 객체지향, 함수형, 문제중심형...

가끔 C언어를 객체지향적으로 쓰는 사람도 있고, C++를 절차적으로 쓰는 사람도 있고, 자판가는대로 간다고 그냥 생각나는대로 쓰는 사람도 있습니다.

메카니즘중에서도 기본적인 요소들(파이프라인, 병렬, 스케쥴링, 세마포어, 데이터전송...)을 이해하고 있다면 어떤 분야던 빠른 적응력과 응용력을 보이라 믿습니다.

그리고, 끈기(노력)이 없는 사람중에 위의 두가지를 잘하는 사람은 못봤습니다.

Hello World.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.