안녕하세요 pilsu-ni입니다.


프로그램을 시작하려는 많은 사람은 대부분이 가장먼저 크게 부딛치는 선택의 기로에 서게 됩니다.

(시작부터 상당히 신중한 선택을 해야하니... 프로그램을 개발하는게 어려운 분야인지도 모르겠네요)


프로그램 언어는 Assembly, Basic, C, C++, C#, Java, asp, jsp, 등이 있고 컴파일러 제품 및 버전에 따라 언어(문법)는 같더라도, 프로그램 코드(기본 지원라이브러리가 대부분 다름)가 바뀌어야 하는 경우가 존재함으로 제품별로 다른 언어다는 접근이 가장 적합할 듯 합니다 . 하지만, 많은 걱정이 필요하지는 않을듯 합니다. 대부분의 프로그램 입문자들은 아무생각없이 프로그램 개발을 해보겠다는 생각을 하지는 않기 때문입니다. 구체화 되지는 않았겠지만, 만들고 싶은 프로그램이 존재하기 때문입니다.


프로그램 개발의 첫 걸음은 무엇일까요?


바로 목적의 구체화 입니다. 여기서 이야기하는 프로그램의 구체화는


첫째, 결과적인 동작입니다.

 제작한 프로그램을 이용해서 얻고자하는 결과이며, 구체화된 결과여야 합니다. 예로 로또번호 생성기라면 1등 번호를 만들겠다. 이런 결과를 바란다면, 아무런 결과물도 나올수 없기 때문입니다. 1등번호는 과거일뿐, 현재 예측이 불가능한 것이기 때문입니다. 로또 번호 생성기를 만들기위한 구체화된 결과물은 무엇일까요? 바로 1~45번사이의 번호 6개를 고르는 것입니다. 여기에 좀더 구체화하여 우리나라 로또의 경우, 1장의 응모지(번호 마킹 페이퍼)에 5개의 게임까지 할수 있으므로 5개의 게임을 한번에 구할수 있게 하겠다. 라고 생각하면됩니다. 


둘째, 어떠한 조건으로 결과를 만들것인가 입니다.

  어떠한 공식(방법)을 이용하여 원하는 결과에 접근하는가 입니다. 계속된 예제로 로또를 예로들면 로또에 사용할 숫자를 선택하는가 입니다. 숫자를 고르는 방법은 사칙연산으로 숫자를 만들어 제한된 숫자(1~45)를 선택하는 방법을 사용할 지, 랜덤함수를 이용하여 제한된 숫자를 고르는 방법, 그리고, 이것저것 랜덤하게 방식을 바꿔가며 숫자를 고르는 방법등을 사용할 수도 있습니다.


셋째, 무엇(소재)을 사용할 것인가 입니다.

 어떠한 것을 사용하는지 근간을 알아야 하기 때문입니다. 계속된 예제로 로또는 제한된 숫자(1~45)로 이루어져 있습니다. 바로 로또의 소재는 숫자입니다. 


감사합니다.


ps. 기능을 동작하는 함수를 만드는것은 부품을 만드는 것에 해당합니다. 프로그램은 부품들을 조합하여 만들어낸 결과물입니다. 함수를 잘 만들지 못한다고 해서, 프로그램을 개발하지 못하는 것은 아닙니다. 다른 사람이 판매하는 부품을 이용해서도 제품을 만들수 있듯이 프로그램을 만드는 능력과 함수를 만드는 능력은 별개로 보셔도 무방합니다.


ps2. 함수는 프로그램을 구성하는 부품입니다. 아무리 잘 만든 함수 일지라도 안정적인 프로그램을 만들지 못하면, 프로그램을 구성하는 모든 함수의 오류여부를 검증할 필요가 있습니다. 프로그램 개발에 있어서 자만은 개발능력 성장의 독이 될수도 있습니다.(자부심은 필요합니다. 하지만, 모든 가능성 또한 열어둘 필요성이 있습니다.)