구조적 프로그래밍.

moonzoo의 이미지

쓰레드를 읽다 보니까.

구조적 프로그래밍이란 것이 마치 ,

일부 어설픈 C개발자들이 전역변수나 남발하면서

이루어놓은 산출물 같다는 뉘앙스가 풍기네요.

구조적 프로그래밍에 관한 괜찮은 글이 있길래 퍼왔습니다.

Quote:

구조적 분석/설계의 원리

구조적 분석과 설계는 구조적 프로그래밍에서 출발한 만큼 구조적인 프로그래밍이 이루어질 수 있는 분석과 설계가 되도록 유도하고 있다.
가장 큰 특징은 역시 두서 없는 프로그래밍이 되지 못하도록 미리 전체 기능의 관점으로부터 Top-Down의 형태로 진행된다는 점이며, 철저하게
모듈화하여 분석, 설계, 프로그래밍이 이어진다는 점이다.
그 밖의 5가지 원리는 다음과 같다.

추상화(Abstraction) : 문제를 이해하고 표현하기 위해 세부사항을 모두 기술하지 않고도 추상화, 또는 개념화시켜 표현하는 원리이다.

정보은닉(Information Hiding) : 각 모듈은 다른 모듈에 독립적이며 한쪽 모듈의 변경이 다른 모듈의 세부내용에 영향을 미치지 않는다.

구조화(Structuring) : 소프트웨어에 계층적인 구조를 부여하여 상위 모듈이 하위 모듈을 활용하는 질서를 갖도록 한다.

단계적 상세화(Stepwise Refinement) : 하향식으로 진행하면서 점차적으로 내용을 구체화시켜가는 것이다.

모듈화(Modulization) : 하나의 시스템을 서브시스템, 프로그램, 모듈 등으로 구분하여 정의하고 개별적으로 설계한다. 모듈이란 이름을
가지며 하나의 작업단위를 처리할 수 있는 최소한의 프로그램 단위라고 볼 수 있다.

오호라의 이미지

한시대를 풍미했던 패러다임은 나름대로 멋진 철학이 있던데...

물론 시대가 달라지고, 환경이 달라지면...

참으로 바보같더라도...

Hello World.

moonzoo의 이미지

--;;

C++흉내내기에 답글로 쓸려고 했는데.

새로운 글이 되버렸네요 --;

옮기는게 가능할까요?

corba의 이미지

좋은 글이네요. :)

creativeidler의 이미지

그렇습니다. 실질적으로 구조적 프로그래밍(SP)에서 이미 추상화, 캡슐화, 구조화 등은 커버했던 부분이고 OOP는 그걸 조금 더 세련되게 하는 것, 데이터와 프로세스를 결합했다는 것, 그리고 다형성 정도만큼 더 진보한 것입니다. OOP가 더 발전한 개념임은 틀림 없지만 OOP는 SP 위에 올라탄 것이지 SP를 지양하는 어떤 개념인 것은 아닙니다. 뉴튼이 했던가, "우리 모두는 거인들의 어깨 위에 있다"라는 말을 기억합시다.

mach의 이미지

좋은 글입니다.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

wslee의 이미지

소스짜다 보면.
가장 속도가 빠르고 가볍게 만드는 방법은
뭐니뭐니해도 스파게티 쏘스가 최고입니다.
문제는 1년뒤 그걸 소스를 짠 자신도 이해를 못한다는거죠 ㅋㅋㅋ

그래서 구조화,
더 나가 객체~!
하지만 갈수록 속도는 점점 느려지고 덩치는 점점 커지지만.
컴퓨터는 점점 빨라지므로...

대체로 gui는 리눅스가 좀 느리잖아요..
아무래도 소스를 타인이 알기쉽게 구조화 객체화에 힘써서 그런거 아닐까 합니다.
윈도그 소스는 스파게티 소스 아닐까 사료됨..

dalmagi의 이미지

위엣분 진지한 말투는 아니지만 뭔가 대단히 말이 안되는 소릴 하신 것 같은데..

화이팅(fighting) 말고 화이트닝(whitening) 하면 안되나요.

ㅡ,.ㅡ;;의 이미지

요즘 혹자들중에는 마치 구조적과 객체지향이 반대되는것처럼 말하며 구조화를 마치 구닥다리 하면안되는것처름말을하고.
객체지향이 절대적이다라고 믿는사람이 간혹있던데 뭐라할말이 없었죠..


----------------------------------------------------------------------------

체스맨의 이미지

새로운 시장 개척을 위해 컴파일러 업계나 출판 업계가 OOP 를 전면에 내세우고, 기존 개념과 차별화를 두기 위해 그렇게 이끌고 가면서, 당시에 거기에 편승했던 많은 개발자들이 갖게 된 편견은 아닐지 생각해 봅니다.

Orion Project : http://orionids.org

ydhoney의 이미지

객체지향 프로그래밍과 함께 일반화 프로그래밍이 왜 각광을 받고 있는지(우리나라는 아직?) 모르는 분들이라면야 구조적 프로그래밍은 버려야 할 구시대 산물이라는 생각밖에는 안하시죠.

댓글 달기

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