숲을 보지 못하는 저에게 권할 만한 서적..

leolo의 이미지

안녕하세요..
저는 항상 코딩을 하면서 숲을 보지 못하죠..
아주 두서 없이 그때 그때, 데이터 구조를 선언하다 보니
항상 문제가 되더군요..

자료구조를 생각하고 오브젝트를 생각하고..
그 이후에 함수를 구현하는 순으로 하라는 소리를
들었는데.. 이와 관련된 책은 없나요..
예를 들어 설명한 자세한 책은 없나요.
그러니까? 일반적인 자료구조만을 다룬 책이 아닌
자료구조를 어떻게 생각하고
이를 통해서 어떠한 기능한을 하는 오브젝트를 생각하고
이를 함수로 구현하고 뭐.. 이런식의 책을 말씀드리는 겁니다.
시중에 나와있는 자료구조를 설명하고 그냥.. 몇가지 예제만
있는 책은 불필요합니다.
단순히 알고리즘을 논하는 책도 이젠 저에게 필요없습니다.
직접 실무에 응용이 가능하고 이를 예시로 든 책이 필요합니다.
원서도 좋고.. 번역서도 좋고.. 다 좋습니다..
소개 부탁드립니다..

한가지더. 부탁드리면..
제가 듣기로.. C++로 코딩된건 C언어로 대부분 구현이 가능하다고
들었습니다.. 그러면, OOP의 개념을 C언어로 설명한 책은 없는지
궁금합니다..
소개 부탁드립니다..

asteroid의 이미지

글쎄요, 도움이 될지 모르겠습니다만...

한번 디자인 패턴에 대한 책을 보는건 어떨까 생각합니다.

그리고, C로 OOP에대한 생각을 했던 책중 제가 알고있는 책은

Object Oriented Programming in ANSI-C 라는 책입니다.

저자께서 자신의 웹사이트에 공개해두었네요.

http://www.cs.rit.edu/~ats/books/ooc.pdf

Preface에 써둔 글이 재미있네요. :-)

No programming technique solves all problems.
No programming language produces only correct results.
No programmer should start each project from scratch.

cedar의 이미지

asteroid님이 언급하신 디자인 패턴(Design Pattern)은
OOD(Object Oriented Design)의 한 방법론을 말하는 겁니다.
먼저 프로그램을 객체 지향적으로 설계하는 것이 중요하지,
구현은 어떤 언어로 해도 가능은 하죠.

그렇지만, 역시 OOP를 직접 지원하지 않는 C를 써서
OOP를 흉내내는 것은 역시 엄청난 삽질이라고 생각합니다.
C++이면 컴파일러가 해주는 작업을, C에서는 직접 수동으로 모든 것을 구현해야 하는 거죠. C++에 비해 코드양이 몇 배 이상 늘어나게 될테고, 이것을 해결하기 위해 복잡한 #define 매크로를 사용하겠지만, 디버깅과 유지 보수가 상당히 곤란하게 되어버리죠. :cry:

그래서 저는 C로 OOP를 하는 것은 쓸 데 없는 삽질이라고 생각합니다.
그냥 C++을 쓰실 것을 권합니다.
ANSI C++ 라이브러리의 핵심인 STL(Standard Templete Library)에는 웬만한 자료구조와 알고리듬이 다 들어 있습니다. 개발자가 이것들을 적당히 연결해서 조합하면 원하는 프로그램이 만들어 지는거죠.

leolo의 이미지

먼저 답변 감사드립니다.
저는 OOP를 하고자 하는게 아닙니다.
코딩을 하는 원론적인 방식을 배우고자 합니다.
그리고, 제가 하는 주된 작업이 리눅스에서 일어나고
대부분의 일들이 임베디드와 관련된 부분입니다.
따라서, 제가 하고자 하는 것은 OOP의 개념만을
빌려서 적절한 자료구조를 이끌어 내는 사고를
배우고 이를 여러 함수로 생각할 수 있는 사고를
책에서는 어떻게 가르치고 있는지 하는 방법을 알고자 합니다.
물론, 이런한 것들은 단기적으로 이루어지지 않고
많은 경험을 통해 얻어진다는 사실도 알고 있습니다.

실력이 있으면 삶이 편하다... 영차 영차...

NeoTuring의 이미지

SW공학서적을 구입하여 보시면 좋을듯 하군요.

말씀하시는걸로 보아서 실무적인 구현능력과..기본은 있으신듯 하니

SW개발 방법론이라는것이 어떤건지.. 틀에 얽매이지 않고 한번

훑어보는 식으로 체계적으로 정리가 될 필요가 있을듯 싶습니다.

교재로는 아무래도 대학의 정규 커리큘럼에서 쓰여지는 서적이

좀 낫구요..

서점에 들러 본인에게 맞는책을 구하셔서 보시면 될것 같습니다.

댓글 달기

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