1. 프로그램이란?

  • "현실의 어떤 대상"을 디지털화Digitization하여 인간의 편리성 향상을 목적으로한다.
    "현실의 어떤 대상"을 소스 코드로 구현된 프로그램으로 대체하는 것이다.
    예) QR 방역패스, 출석체크, 은행업무, 주민등록증, 음식주문배달, 게임, 티켓팅 등
  • 프로그램은, 모두 현실에서 기반된다.
    프로그래밍 기술은 현실의 구조를 본떠서 만들어져왔다.
  • 앞선 기술보다 인간의 필요성이 먼저다.

Q. 프로그램은 왜 만들까요?

 

2. 프로그램의 구성 - 변수와 로직

 

"HRD 프로그램"의 로그인 기능을 분석하여, 프로그램을 구성하는 변수와 로직의 개념을 이해해보자.

 

  1. HRD-Net 어플 실행
  2. 로그인 버튼 클릭
  3. 로그인 페이지 보여주기
  4. 아이디 입력
  5. 비밀번호 입력
  6. 아이디 비밀번호가 일치하는지 확인
  7. 일치하면 > 로그인 성공
  8. 실패하면 > 재입력 안내

 

위의 순서(로직)는 개발자가 설계한 것이다.

컴퓨터는 스스로 알아서 동작하지 않는다.
컴퓨터가 수행해야 할 일을, 개발자가 프로그램으로 지시해야 한다.

 

로그인 프로세스는 동일한 순서(로직)로 동작한다.

수많은 사람들이 HRD-Net 프로그램을 사용해서 로그인을 진행한다.

그리고 동일한 순서로 로그인을 진행한다.

그 과정에서 다른 것은 ID, PW 뿐이다.

 

ID와 PW를 변수라는 것을 사용하여 ID와 PW라는 데이터를 저장하고, 판단하는데 사용한다.

 

고로, 순서 로직은 변하지 않는다.

단, 데이터는 변한다.

 

파이썬과 C언어를 배우는 과정에서
로직은 순서도로 공부하고
데이터는 변수를 사용하는 방법을 배운다.

 

3. 소프트웨어 개발

 

소프트웨어 개발 프로세스에서, "설계"는 분석된 요구사항을 어떻게 소스코드로 구현할 것인지 정하는 것이다.

이를 알고리즘이라고도 하는데 알고리즘은 "문제를 해결하는 방법"을 의미한다.

 

개발자는, 프로그램을 만드는 사람이다.

프로그램은, 컴퓨터가 수행해야 할 동작의 순서를 정해놓은 명령문 덩어리다.

컴퓨터는 개발자가 지시한 순서대로만 동작한다.

 

이때 프로그램을 만드는 과정을 "프로그래밍"이라고 하고, 사용되는 언어를 "프로그래밍 언어"라고 한다.

프로그래밍 언어로 작성된 문서를 소스코드 또는 명령문이라고 한다.

 

우리가 Python 이라는 프로그래밍 언어로 프로그램을 만드는 목적은,

Python 소스코드로 컴퓨터가 수행해야 할 일을 지시하는 것이다.

 

 

4. 프로그래밍의 목적과 파이썬

프로그래밍의 목적은, 프로그램이라는 결과물을 만드는 것이다.

영어 학습의 목적이 의사소통인 것과 같다.

 

하나의 프로그램이 완성되는 과정은 회의와 협의의 연속이고, 분석과 설계를 비롯한 서류 작업에 많은 비용과 시간, 전문적 기술 지식을 필요로 한다. 프로그래밍 언어를 통한 구현은 프로그램을 만드는 과정에서 중요하지만, S/W 개발 프로세스의 일부분임을 명심해야 한다.

 

프로그래밍의 목적은 프로그램을 만드는 것이지, 프로그래밍 언어의 문법을 배우는 것이 아니다.

영어 학습의 목적이 토익 점수나, 영어 문법 학습이 아닌 것과 같다.

 

파이썬의 장점은 다른 프로그래밍 언어에 비해 상대적으로 쉽고 빠르게 프로그램이라는 결과물 구현이 가능하다.
그렇기에 프로그래밍 언어 학습과 문법적 기술 구현에 치우치지 않고, 전체적인 프로그램 개발 프로세스를 경험하고 이해 가능한 장점이 있다.

 

파이썬의 단점

프로그램은 여러 프로그래밍 언어와 시스템, 프로토콜이 복잡하게 얽혀 있다.

파이썬으로 쉽게 배우게되면, 다른 프로그래밍 언어나 연동 해야 할 시스템 구조를 이해하고 파악 할 전문지식이 부족하여 어려움을 겪을 가능성이 높다.

 

 

5. 하드웨어, 소프트웨어 그리고 개발자

 

하드웨어란?

  • (컴퓨터를 구성하고 있는) 기계다

소프트웨어란?

  • 사용자가 원하는 것을, 하드웨어로 처리하는 방법과 순서가 기술된 명령문이다.

개발자란?

  • 소스코드로 로직을 구현하여 하드웨어를 다루는 사람이다. 
  • 개발자는, 하드웨어를 제어하는 소프트웨어를 만드는 사람이다.

정리

  • 개발자는, 소프트웨어로 하드웨어를 제어하는 소스 코드를 구현해 프로그램을 만드는 사람이다.
  • 즉, 소프트웨어가 하드웨어에서 어떻게 동작하는지를 이해해야 한다.
  • 하드웨어, 소프트웨어, 개발자 같은 기초 용어 조차 정리 되어 있지 않으면, 면접도 통과 못한다.