프로그래머라면 꼭 알아야 하는 지식은?

jeongheumjo의 이미지

경력 6년 이상이 되었지만 최근에 디자인패턴에 대해 눈을 뜨면서
C++로 디자인패턴을 구현하는 기술을 꼭 익혀야겠다는 생각을 하게 되었습니다.
"모던 C++ 디자인" 과 템플릿 관련 서적 한권 정도 반드시 독파해야겠다는 생각입니다.
또 반드시 알아야 할 것이 무엇이 있을까요?
리팩토링은 또 뭔가요?

otaku의 이미지

당연히 필수.

해피해킹당

jeongheumjo의 이미지

경력도 있는데 최근에서야 그게 몬가 알게 되었네요..
실상 현장에서는 그런거 몰라도 일 할 수 있는 분야가 많았어요..

kaeri17의 이미지

모던 C++디자인은 호불호가 많이 갈리는 편이네요. 그냥 GOF의 오리지날 디자인패턴을 보시던지 아니면 다른 C++용 디자인 패턴 책을 먼저 보시는게 좋은 것 같습니다. 실제로 성능상의 이유나 컴파일이 느려진다는 이유로(템플릿을 엄청 써서...) 모던 C++디자인에 있는 방법은 잘 안쓰는 경우가 많다고 알고 있습니다. 실제로 책이 객체 상속이나 전형적인 OOP의 방법을 쓴 디자인 패턴보다는 템플릿의 복합등의 다른 방법을 많이 써서요...

유명한 오픈소스 3d 엔진인 ORGE3D에는 모던C++디자인 방법을 많이 쓰긴 하긴 하던데 실제로 본 코드중에는 그 외에는 별로 기억나는 C++코드가 없네요.

magingax의 이미지

템플릿을 기반으로한 C++ 디자인패턴은 추천하고 싶지 않습니다.
굉장히 복잡하고, 디버깅도 어렵고, 생각만큼 유연하지도 않으며..거기다 느리기까지 합니다.
인기있는 언어를 원하시면 C# 이나 Python ,
마이너하나 강력한걸 원하시면 F# 이나 LISP 을 공부해 보실걸추천.

LISP 사용자모임
http://cafe.naver.com/lisper

LISP 사용자모임
http://cafe.naver.com/lisper
방송기술 개발업체
http://playhouseinc.co.kr

jeongheumjo의 이미지

C#, F#, Python, LISP
이런걸 쓰는 일을 본적도 들은적도 없네요...
이런 언어는 어떤 분야에 쓰이나요?

spyrogira256의 이미지

다른 언어들(F#,Python,LISP)은 모르겠지만 C#은 많이들 사용하지 않나요??
ASP.NET 개발할때 C#으로 개발하는걸로 알고 있습니다.

윈도우모바일 7도 C#개발자들이 넘어가기 편하도록 어플 개발을 C#으로 하면 된다고 들었습니다.

jeongheumjo의 이미지

아이폰이나 맥이나 안드로이드에 있는 그리고 크롬에 있는 웹킷 브라우저 엔진이 있지 않나요?
잠깐 코드를 본 적이 있는데 순전히 템플릿으로 되어있던 것 같아요.
분석하기 난해하기가 이를 데 없었어요...
하지만 성능은 가장 탁월하거든요. 모든 브라우저들 중에서요..
빠르고요..
완전 매료되었는데요..
그런데 그 웹킷이 모던 C++의 스타일과 비슷한가는 잘 모르겠어요..

jos77의 이미지

이건 COM interface 로 되어있을 텐데요.. 그걸 템플릿이라 부르던가?
VC++ 의 그 구조는 특이한 구조라서... 내가 아는 제일 빠른 ANSI C 의 퀀텀프로그래밍과 비교했을때 비슷하다고 들었습니다.
게다가 webkit 도 unix 스타일 소스가 많이 들어가 있어서 cygwin 있어야 되고...
일단 java, C#, python 등 다른 언어에 대해서 배워보는 거 추천드립니다...

-----
안녕하세요 소프트웨어 공학센터 장원석 책임입니다.
http://www.software.kr

jeongheumjo의 이미지

안드로이드도 등장했고 자바라는 언어는 꼭 배워둬야 겠더라구요..
COM 은 윈도우즈에서만 쓰이는 것 아닌가요?
웹킷 라이브러리는 C++ 표준으로만 작성되었을 거예요... 크롬 브라우저에 사용된 윈도우용 브라우저 어플코드 말고 브라우저 엔진 부분만 보면요...

comafast의 이미지

이산수학 추천합니다.
집합과 함수의 개념은 현대의 모든 프로그래밍 언어, 개발방법론의 상위 개념이며, 가장 중요하다고 생각합니다.
학부시절 등한시 한것을 지금에와서 땅을치고 후회하고 있습니다.

C/C++이라면 더더욱 중요하다고 생각합니다. 사실상 STL 자체가, 위의 개념을 근간으로 하고 있습니다.
어설픈 디자인패턴, 리팩토링 보다는, 모든것을 집합으로 모델링 하는 방법이, 훤씬 심플하고 일관성 있으며 유지보수에도 편하다는 것이 요즘 저의 생각입니다. :-)

jeongheumjo의 이미지

제가 터득하고싶은 최신 프로그램 기술을 압축하면 Open-Closed Principle 인데요, 아마도.
이산수학은 그냥 수학아닌가요?
너무 어려운 말씀이시네요..제게는..

kasworld의 이미지

언제나 가장 중요한 것은 기본이지요.
CA , OS , PL , DS
를 하시면 됩니다.
( 6년차 이상 이시면 이미 다 아시는 걸지도. ;;; )

jeongheumjo의 이미지

나머지는 뭔지 전혀 모르겠는데요?
제가 완전 헛일만 했나봐요..
OS 운영체제
DS 데이타구조
PL 프로그램언어?
CA 는 국민학교때 특별활동이었는데....

무슨 말이예요? 너무 어려워요~

jeongheumjo의 이미지

너무 당연한 말씀이신거 같네요 ㅎㅎㅎ 암호같은 답변 추측하기 힘들었습니다. 쿨럭..

winner의 이미지

Runtime에서 template이 느릴 수 있는 상황은 code bloat 뿐일 것 같은데요.
Template을 적극적으로 활용한 library를 쓰면서 code bloat을 적절히 통제하는 것은 쉽지 않을 것 같기는 합니다.

하여간 저도 template을 적극적으로 활용한 programming은 안 좋아해요. ^_^.
STL도 가끔은 싫다는...

ifree의 이미지

모던C++ 은 아니더라도 템플릿을 이용하는 디자인 패턴을 추구해 보는 것도 좋지 않을까요?
정적 polymorphism 이 더 어울리는 경우도 많이 있는 것 같은데.

대부분 템플릿 들어가는 것은 싫어 하시는 듯.

템플릿과 메타프로그래밍, 부스트를 최대한으로 활용하는 개인 프로젝트를 하고 있는데, 암흑 속에서 허우적 거리는 느낌이네요.

jeongheumjo의 이미지

하지만 C++의 표준만 사용하는 것인데도 말이죠...
제 말은 보통의 프로그래머 얘기입니다.

함부로 범접하지 못할 상당한 고급기술같아요..
배우는게 오히려 독이 될 것 같기도 하구요..
저는 그래도 배워보고 싶네요 ^^;

pastime의 이미지

What Every Computer Scientist Should Know About Floating-Point Arithmetic
http://docs.sun.com/source/806-3568/ncg_goldberg.html

What Every Programmer Should Know About Memory
http://people.redhat.com/drepper/cpumemory.pdf

댓글 달기

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