① 하드웨어
①.① 하드웨어, 소프트웨어 그리고 개발자
하드웨어란?
소프트웨어란?
- 사용자가 원하는 것을, 하드웨어로 처리하는 방법과 순서가 기술된 명령문이다.
개발자란?
- 소스코드로 로직을 구현하여 하드웨어를 다루는 사람이다.
- 개발자는, 하드웨어를 제어하는 소프트웨어를 만드는 사람이다.
② 프로그래밍 언어
②.① 프로그래밍 언어는 왜 등장했을까?
②.② 하드웨어는 0과 1만 이해하고 사용한다.
- 개발자는 하드웨어를 제어하는 명령문(소프트웨어)을 작성하는 사람이다.
- 하드웨어는 0과 1만 이해 가능하다.
- 개발자는 하드웨어가 이해 가능한 0과 1로 명령문을 개발한다?
②.③ 하드웨어의 0과 1 연산
②.④ 하드웨어의 0과 1 저장
②.⑤ 프로그래밍 언어의 기본 역할
- 개발자가 프로그래밍 언어를 통해 소스 코드를 작성하면, 컴파일러가 0과 1로 이루어진 기계어로 변환한다.
②.⑥ 프로그래밍 언어 문법과 기술을 바라보는 관점
- 모든 프로그래밍 언어 문법과 기술은 필요해서 등장했고 발전하고 있다.
- 개발의 효율성 향상을 위해서다.
③ 로직과 용어
로직의 정의
로직의 종류 1
로직의 종류 2
- 개발자의 의도를 명령문으로 정해 놓은 순서
- 실행이 항상 True 인 상태
용어를 바라보는 관점
- 개발자는 평생 공부해야 하는 직종이다.
- 용어는 지식의 이정표다.
- 전문가, 기술자, 프로
④ 소프트웨어 개발이란?
④.① 응용 소프트웨어란?
- "현실의 어떤 대상"을 소스 코드로 구현된 프로그램을 만들어 대체하는 것이다.
예) QR 방역패스, 출석체크, 은행업무, 주민등록증, 음식주문배달, 게임, 티켓팅 등
- 디지털화Digitization
- 프로그램은, 현실을 기반으로한다.
④.② 현업 소프트웨어 개발은 어떻게 진행될까?
- 소프트웨어 개발이란 소프트웨어 제품이 탄생하는데 수반되는 모든 과정을 포괄하는 의미다.
- 규모가 큰 회사에서는 개발자의 역할을 위에 나열한 업무마다 할당할 수도 있다.
- 규모가 작은 회사에서는 소수의 개발자(한 명)이 모든 업무를 수행하기도 한다.
- 프로그래밍 언어를 공부한다는 것은, S/W 개발 프로세스에서 어느 부분에 해당할까?
- 신입 또는 경력으로 입사한 당신의 업무는?
- "소트트웨어 개발" 구글 검색, "소프트웨어 공학" 구글 검색, 신입포폴예시
④.③ 소프트웨어 개발자란?
⑤ 실행
⑤.① 빌드
⑤.② 실행
⑤.③ 에러
- 컴파일 에러
- 런타임 에러
- 로지컬 에러
- 시멘틱 에러
⑥ 플랫폼
⑥.① 하드웨어와 C 컴파일러
기계어가 다르다. 운영체제가 처리하는 구조가 다르다.
⑥.② 하드웨어에 종속적
⑥.③ 다중 플렛폼을 지원하는 프로그램
⑥.④ Cross Platform
③ 소프트웨어 생명주기 (SDLC)
⑦ 참고
⑦.① 프로그래밍 언어
- 소프트웨어 개발에서 "현실의 어떤 대상"을 소스 코드로 구현할 때 사용되는 도구
- 컴퓨터 프로그래밍 언어는 데이터data(언어의 명사noun), 명령어instruction, 코드code(언어의 동사verb)로 구성된다.
- 사람의 언어보다 모호함과 예외가 적고 일관성 있기 때문에 배우기 쉽다.
⑦.② 프로그램
- Program : 그리스어에서 유래, "지시 사항 등이 순서대로 나열된 것"
- Computer Program : Data와 Logic이 논리적으로 나열된 명령문
- Computer Programing : "Program" 을 작성하는 작업
⑦.③ Computer & Calculator
- Calculator : 정해진 기능만을 수행하는 단일 목적 장치
- Computer : Program에 작성된 여러 개의 명령을 차례로 읽어들여,
현재 상태를 기억하고, 조건에 맞는 기능을 작동한다.
- HTML의 경우 계산기에 가까우며, Programming 언어라고 하지 않는다.
⑦.④ Computational Thinking
- 문제 분해(decomposition)
- 자료 표현(data representation)
- 추상화(Abstraction)
- 모형(modeling)
- 알고리즘(Algorithm)
- 일반화(generalization)
- 크고 복잡한 문제를 작은 문제 단위로 분해
- 큰 문제 분석 > 패턴(반복) 발견 > 이용할 데이터 결정 > 문제 일반화 > 모델링 > 큰 문제 해결