** OOP는 필연성을 가지고 등장

  * 객체지향 기술에 대한 일반적인 견해
 – 현실 세계의 사물을 보는 견해에 따라 소프트웨어를 만드는 전혀 새로운 사고 방식
 – 종래의 개발 기술을 바꾸어 놓을 것.

  * OOP(필자의 견해)
 – 그 이전의 프로그래밍 기술을 기초로 결점을 보완하기 위해서 고안된 것.

  * 객체지향 기술
 – OOP를 발전, 응용한 것으로 종래부터 있던 우수한 개발 기술의 연장 선상에 있던 것.
 – 품질 좋은 프로그램을 높은 생산성으로 만들기 위한 실천적인 기술.

   ** 초창기에는 기계언어로 프로그램을 작성

  * 컴퓨터?
 – 2진수로 스여진 기계 언어밖에 해설할 수 없음.
 – 1940년대 처음 등장

   ** 프로그램 언어의 첫걸음은 어셈블리 언어

   ** 고급 언어의 발명으로 보다 친숙해진 프로그램

  * 고급언어
 – 컴퓨터가 이해하는 명령어를 하나하나 기술하는 것이 아님
 – 보다 사람이 알기 쉬운 “고급스러운” 형식으로 표현
 – FORTRAN(1957년), COBOL(1960년)

  * 1960년대 말 북대서양조약기구(NATO)
 – “소프트웨어 위기” 선언

   ** 알기 쉬움을 중시하는 구조적 프로그래밍

  * 구조적 프로그래밍
 – “소프트웨어 위기”에 대응하기 위해 제안된 아이디어
 – 기본적인 사상
+ 바르게 동작하는 프로그램을 작성하기 위해서는 알기 쉬운 고조로 하는 것이 중요하다.
 – 구체적인 방법
+ GOTO문 폐지
+ 프로그램 논리를 3가지 구조(순차 진행, 조건 분기, 반복)만으로 표현

   ** 서브루틴의 높은 독립성을 유지보수에 강점

  * 서브루틴?
 – 1940년대 발명
 – 여러 장소에 나타나는 같은 명령의 나열을 한곳에 모음
 – 효과
+ 프로그램 사이즈가 작아짐
+ 프로그램 작성 시간 절약

  * 서브루틴의 독립성을 높이는 방법
 – 메인루틴과 서브루틴에서 공유하는 정보를 적게 하는 것.

  * 전역변수(global variable)의 문제점
 – 프로그램 전체의 어디에서도 접근 가능
 – 어느 서브루틴이 언제 변경하거나 참조하고 있는지 알기 어려움
 – 전역변수의 변경 시 : 프로그램 전체 논리 확인 필요

  * 전역 변수 문제점의 해결 방안
 – 지역변수 사용
 – 값 복사에 의한 인수값 전달 방법(Call by value)

   ** “GOTO 없는 프로그램” 구조적 언어

  * 구조적 언어 등장
 – 구조적 프로그램 이론을 기초로 함
 – ALGOL, Pascal, C언어 등
 – 명확한 제어 기술 가능
+ if문, case문, while문, for문 등의 명령을 사용
+ 당시 COBOL과 FORTRAN등에서는 기본 3구조를 기술할 수 없음
 – 별칭 “GOTO없는 프로그래밍”
 – 대표적인 언어 : C

   ** 진화 방향은 유지보수성과 재사용성

 – 기계언어 : 컴퓨터가 직접 해석하는 기계 언어를 2진수/16진수로 기술
 – 어셈블리 언어 : 기계 언어를 기호로 기술
 – 고급 언어 : 복수의 기계 언어를 중요한 고급 문법으로 기술
 – 구조적 언어 : 기본 3구조(GOTO 없는)의 제공으로 서브루틴의 독립성 강화

   ** 남겨진 문제는 전역변수와 빈약한 재사용

  * 구조적 프로그래밍
 – 수년 전까지 대학과 기업의 신입사원 연수에서 거론되는 주제
 – 아직 해결되지 않은 2가지 주제가 남아 있음
 – 2가지 문제
+ 전역변수
+ 빈약한 재사용

  * 전역변수 문제
 – 해결안 : 지역변수 사용, Call by value
 – 미해결 부분 : 전역변수로 보전
 – 대규모 프로그램에서 전역변수 문제는 심각

  * 빈약한 재사용의 문제
 – 구조적 언어에서 재사용 가능한 것은 “서브루틴”

Tags: ,

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.