커널소스를 읽는다라는 개념이 무엇인지 잘 모르겠습니다.

jwoo0122의 이미지

어떤 분이 저에게 리눅스나 os x 커널 소스를 읽어보길 권하셨습니다.
정확히 "소스를 읽고 또 읽어라"라고 하셨습니다.
일단 www.kernel.org에서 소스를 받아두었고
opensource.apple 에서 xnu 소스도 받아두었습니다.
소스를 읽다보면 문서작업이 필요한 곳이 어딘지 알게 될 것이도,
그런 부분의 문서작업을 해나가면서 운영체제의 알고리즘, 데이터구조등에 익숙해 지라고 하셨는데

소스를 읽는다 라는 표현이 정말 c 등의 언어로 코딩된 소스파일을 컴퓨터로 열어서 읽으라는 뜻이고,
문서작업은 그 소스가 어디에 쓰이고 어떤 기능을 하는지 소스 파일 안에 주석을 달아주라는 뜻인건가요?
만약 제가 알고있는 의미가 아니라면 어떤 의미인지 정확하게 설명해주셨으면 좋겠습니다.

감사합니다.

biosvos의 이미지

"소스코드를 읽고 또 읽어라"
라는 말은 유명한 말입니다. 나름,

뭐 구체적으로 말하자면 글쓴이님 처럼 하는게 맞습니다.
더 나아가서 동료의 코딩을 보는게 좋겠네요.

동료들의 코드를 보다보면 스타일이 상당히 다릅니다.
저같은 경우는 그냥 책으로만 한권하고 인터넷서핑으로 기술을 채득한지라 상당히 특이한테 저 같은 케이스는 수두룩하거든요.

암튼, 동료들의 코드를 보다보면 같은 것을 할지라도 성능에서도 차이가 있고 가독성에서도 차이가 납니다.
이럴 때 성능이 좋고, 참신하면서 가독성이 좋은 그런 것들을 보면서 자신의 코딩 실력을 업시키라는 말입니다.

그리고 문서 작업같은 경우는 제가 보기엔 README 파일 처럼 정리를 하라라는 말같네요.
이 함수는 어디에서 쓰이고 그런게 중요할 수 도 있지만, 전체적인 맥락같은 것을 적으라는게 아닐까요.
주석은 아닐겁니다. 주석다는게 문서작업은 아니잖습니까;;

jw8704의 이미지

일단 지금 님나이의 분에게 커널 소스를 읽어라 라는 말이 무엇인지는 납득시키기도 어렵고 , 말해줘도 님이 그 뜻을 다 알아듣지 못하십니다.

만약 님께서 지금 당장 컴퓨터 프로그래밍 회사에 연구원으로 취직하거나 혹은 대학에 입학하셔서 3년정도 매주 자신이 공부하고 학습한 내용을 발표하고 다른사람들이 발표하는것을 듣고 , 또 어떤 연구주제나 프로젝트를 정해서 연구하고 발표하다보면 자연스레 문서화와 소스를 읽는다는 표현이 뭔지 체감하게 되나.. 지금 소스를 읽는것이 뭔지.. 문서화가 뭔지.. 이런의미에대해 말해줘도 님께서 다 체감하지못합니다. 그리고 이런 표현에 대해 님께서 이렇게 물어보는것도 당연한겁니다.

이런걸 통틀어서 저는 연구 능력 이라고 하고싶네요.. 연구능력이 우선 갖춰져야 소스를 읽고 , 문서화를 하고 할수 있는것 같습니다.

무협지나 중국 영화를 보면요..

무술을 배우고싶은 사람이 고수에게 찾아가서 어떻게 해야 잘할수있습니까? 라고 물어보면 뭐라고 대답하나요? 그냥 열심히 수련해라 입니다.

님께서 한 100장 , 200장 , 300장 아무렇게나 정리를 해보세요.. 그러다보면 그중에 한장정도 쓸만한게 있겠죠..

소스를 읽고 문서화하고 ,, 이게 마치 공부의 시작을 하는 방법 처럼 들리는 문장이지만.. 사실은 공부가 어느정도 되어야 저 의미를 알수있습니다. 님께서 이부분에있어서 무언가 받아들이는데 걸리는 느낌이있어서 이런 질문을 하신것같은데 , 아무 느낌없이 받아들여지는것보다 , 이렇게 걸리는 느낌을 받는걸 행운으로 아시고 ㅎㅎ 그런 걸리는 느낌을 즐기시고 그느낌이 없어질때까지 계속 생각하고 해보세여..

http://kldp.org/node/138100 근데 여기에 글올리셨던데 답글 안읽어보셨으면 읽어보세요 ...

jwoo0122의 이미지

답변하신 말씀이 옳다는 것에는 인정하겠습니다. 그래도 설명은 해주셨으면 좋겠습니다. 이해할 수 있는 만큼 이해하고 싶거든요.

Stand Alone Complex의 이미지

그렇게 이해하여 습득한 지식은 모래성이나 마찬가지입니다.
기초는 정말 중요합니다.
기초부터 차근차근 습득하시기 바랍니다.

RET ;My life :P

snowall의 이미지

문자 그대로, 소스코드를 열심히 읽으라는 뜻입니다.

읽으면서 왜 그렇게 작성했는지 생각해 보고, 어떻게 작동하는지 생각해 보고, 같은일을 하는 함수나 코드를 나라면 어떻게 만들었을지 생각해 봅니다.

그러다가 뭔가 적어놔야겠다는 생각이 드는게 있다면 잘 적어둡니다. 그게 문서화에요. 그런 생각이 안들면요? 그건 코드를 완전히 다 이해했거나, 전혀 이해하지 못했거나 둘 중 하나인데, 어느 경우든 어차피 적을게 없을테니 문서화 안하면 됩니다.

뻔히 아는 것에는 주석을 달 필요가 없고, 전혀 모르겠는 것에는 주석을 달 수 없습니다.

커널 소스를 읽으라 했다면, 다른 사람들이 문서화 작업해 둔 것도 읽어보세요. 커널이 왜 그렇게 생겼는지에 대한 이해와 문서화를 어떻게 해야 하는건지 알아볼 수 있습니다. 읽었는데 전혀 이해가 안된다면? 영어가 부족하거나 내공이 부족한 경우겠죠.

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

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.