generic programming?

lazylady의 이미지

제너릭 프로그램이란 무엇을 말하는 것인가요? 전에 무슨 이유에선지 generic이 genrate에서 파생된 형용사고 generic programming이란 스스로 코드를 만드는? 프로그램 방법이라고 막연히 생각하고 있었는데 사전을 찾아보면 generic의 뜻은 general과 거의 동의어더군요.

generic programming에 대해 쉽게 설명해 주실 수 있으신가요?

죠커의 이미지

lazylady wrote:
제너릭 프로그램이란 무엇을 말하는 것인가요? 전에 무슨 이유에선지 generic이 genrate에서 파생된 형용사고 generic programming이란 스스로 코드를 만드는? 프로그램 방법이라고 막연히 생각하고 있었는데 사전을 찾아보면 generic의 뜻은 general과 거의 동의어더군요.

generic programming에 대해 쉽게 설명해 주실 수 있으신가요?

generic programming에 대해서는 잘 모릅니다. managed C++의 팀원들이 C++에 generic 키워드를 추가하길 원하는 시점이라서 더 모르겠습니다. 하지만 템플릿 메타 프로그래밍은 약간 이야기 할 수 있을 것 같습니다.

프로그램은 여러 공학 분야에서 보기 힘든 다양성을 가진 분야이고 그에 따라 디자인이 중요하게 여겨지는 분야입니다. 그래서 흰 수염의 프로그래머들이 활약을 하는 것이겠지요.

모든 일을 할 수 있는 디자인은 사실 아무것도 할 수 없는 디자인입니다. 그렇다고 하나하나 목적에 맞추어 클래스나 함수를 만들어 낸다면 설계자도 실제로 이용할 사람에게도 유익하지 못합니다.

그렇기 때문에 여러가지 다양한 요구사항의 변화를 하나의 틀안에 담아내는 시도가 필요합니다. 그러한 틀은 실제로 코드를 만들어 내지는 못합니다. 하지만 개발자에게 천 줄의 실체가 있는 코드보다 유익함을 줍니다.

하지만 위와 같이 다양한 요구사항을 담을 수 있는 틀을 만들기 위해서는 언어 차원에서 융통성이 있는 메커니즘이 필요합니다. 프로그램의 디자인에 필요한 틀은 붕어빵을 만드는 빵틀과 같아서는 안됩니다. 융통성있는 메카니즘을 제공하기 위해 최근의 객체지향 언어 들은 generic 키워드를 도입합니다.

그 융통성 있는 메카니즘을 중요시 여기는게 일반화된 프로그래밍. 즉 제너릭 프로그래밍이라고 생각합니다. 그리고 C++ 프로그래머는 템플릿을 통해서 템플릿 메타 프로그래밍을 한다고 생각합니다.

doldori의 이미지

저도 "GP란 이거다"라고 말로 설명을 하지는 못합니다만
C++의 템플릿을 보시면 감이 잡히실 듯 합니다.
위키피디아의 글도 참고하시고요.

댓글 달기

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