소프트웨어
소프트웨어의 의미
- 소프트웨어란 '컴퓨터 프로그램과 그와 관련된 문서들'
- 소프트웨어는 컴퓨터를 작동하게 만드는 논리적 바탕을 제공
- 컴퓨터 자체인 하드웨어(Hardware: H/W)에 대응하는 개념
하드웨어의 의미
- 하드웨어는 컴퓨터 시스템의 물리적인 기반을 제공
- 전자 회로와 그 밖의 물리적인 장치들로 이루어짐
- 소프트웨어에 대응되는 개념
프로그램의 의미
- 명령어들을 순서대로 나열해 놓은 것이 프로그램(program)
- 프로그램을 작성하는 작업 - 프로그래밍(programming)
- 프로그램을 작성하는 사람 - 프로그래머(programmer)
예)
5!(5의 계승)을 구하는 스크래치(scratch) 프로그램
5!(5의 계승)을 구하는 파이썬(python) 프로그램
소프트웨어의 분류
- 시스템 소프트웨어(system software) 컴퓨터 시스템을 가동시키는데 필수적인 운영체제 등
- 응용 소프트웨어(applications software) 문서작성이나 게임 등 특정 분야의 업무 처리에 사용됨
시스템 소프트웨어
- 컴퓨터 시스템들을 효율적으로 작동시킬 수 있는 프로그램
- 대표적인 것은 운영체제(Operating System: OS)
- 하드웨어와 응용 소프트웨어 사이에 위치, 컴퓨터 자원 관리
응용 소프트웨어
- 운영체제 위에서 작동되는 소프트웨어
- 워드프로세서, 엑셀, 파워포인트, 스프레드시트, 데이터베이스 관리, SAS, 동영상 플레이어, 각종 게임 등 수없이 많음
소프트웨어와 하드웨어 비중 변화
컴퓨터가 개발된 초창기에는 하드웨어가 큰 비중을 차지했음.
최근에는 하드웨어의 비중이 크게 감소.
응용 소프트웨어의 비중이 점차 커지고 있음.
운영체제(ex Windows, MacOS, Linux)
운영체제는 시스템 소프트웨의 일종
컴퓨터를 지휘하고 관리하는 프로그램으로 통상 OS라고 함.
컴퓨터 시스템 이용을 편리하게, 하드웨어를 효율적으로 관리
운영체제의 목표
① 컴퓨터 내의 하드웨어와 소프트웨어 자원들의 관리와 제어
② 컴퓨터의 편리한 인터페이스(interface)를 제공
③ 수행 중인 프로그램들의 효율적인 운영을 도와줌
④ 입출력에서 보조적인 기능을 수행
⑤ 오류가 발생할 경우 오류를 원활하게 처리함
소프트웨어를 받쳐주는 하드웨어의 구성
입력(키보드, 마우스, 스캐너, 터치 패드, 바코드)
출력(프린터, 모니터, 사운드 카드, 3D 프린터)
중앙처리 장치(CPU)
- 중앙처리 장치는 하드웨어의 성능 좌우함.
- CPU
- 마이크로프로세서가 주로 사용됨.
기억장치(Main Memory)
통상 메모리라고 불림.
소프트웨어 교육
>> 컴퓨팅 사고
소프트웨어의 중요성
소프트웨어가 다른 산업을 지배하거나 변화시킬 수 있음.
- 전 산업의 부가가치 향상에 중요한 역할을 담당함.
- 스마트화를 통하여 대부분의 제품을 혁신시킬 수 있음.
- 다른 시스템들과의 융합을 통해 생활을 편리하게 해줄 수 있음.
- 소프트웨어는 가상공간을 통하여 인간의 소통 방식을 혁신시킬 수 있음.
- 소프트웨어는 콘텐츠 생산과 유통에 기여함.
유능한 프로그래머가 부족한 원인은 우리나라 교육과도 관련이 있다.
프로그래밍은 문제 분석 후 프로그래밍 언어의 문법에 따라 작성
프로그램 작성은 매우 독창적인 일, 적성을 고려해야 함.
소프트웨어 산업과 통계
소프트웨어와 산업
- 소프트웨어는 섬유, 자동차, 가전, 교육 등의 산업에 활용됨
- 세계적으로는 구글, 애플, 마이크로소프트, 페이스북 등이 주도
- 자동차 등 일반 산업에서도 소프트웨어와 융합하여 혁신 주도
- 재난과 복지 등 다양한 사회문제 해결에도 SW가 활용됨.
소프트웨어는 점차 커지는 거대한 시장 형성
소프트웨어 대표 애플의 시가총액이 토요타차보다 3배이상이됨.
자동차, 반도체, 휴대폰 시장을 총합하면 세계 소프트웨어의 시장이 됨.
프로그래밍 언어
저급언어, 고급언어
저급언어 > 기계어, 어셈블리 언어, 목적 프로그램
고급언어 > 소스 프로그램
번역 방식
컴파일러 방식, 인터프리터 방식
- 컴퓨터는 0과 1의 조합으로 된 숫자만 다룰 수 있음.
- 중간 역할을 해 줄 프로그래밍 언어 필요
- 어셈블러, 컴파일러, 인터프리터
컴파일러와 인터프리터
특징, 방식 | 컴파일러 | 인터프리터 |
번역방법 | 프로그램 전체 번역 | 실행되는 행 단위로 번역 |
장점 | 한번 번역하면 빠른 시간 내에 전체 실행이 가능. | 큰 기억 장치가 필요하지 않으며 번역 과정이 비교적 간단. |
단점 | 프로그램의 일부를 수정하는 경우에도 전체를 다시 컴파일 | 반복문이 많은 경우 매 반복마다 번역 |
결과물 | 목적 언어로 된 프로그램 | 실행의 결과 |
적용언어 | FORTRAN, Pascal, COBOL | Lisp, Scratch |
코딩
컴퓨터 프로그램을 수행하는 절차를 적어둔 명령어들인 코드를 작성하는 행위
코딩과 문제 해결
- 코딩은 ‘문제해결을 위한 절차와 과정을 설정하고, 그것을 실행 가능한 프로그램으로 작성하는 일’
- 코딩의 궁극적 목표는 주어진 문제를 제대로 해결하는 일
알고리즘
- 효율적인 코딩은 먼저 알고리즘(algorithm)부터 구상
- 알고리즘은 ‘어떤 작업을 수행하는데 있어 적합한 절차와 과정’
컴퓨팅 사고
컴퓨팅 사고의 개념과 내용
컴퓨팅 사고는 컴퓨터과학자들의 문제해결 사고 방법 컴퓨터를 활용하여 여러 특성을 포함하는 문제해결 과정 각국에서 컴퓨팅 사고와 관련된 새로운 교과과정의 신설 다양한 사고를 통해 일상생활에도 효율적인 사고법을 적용
- 데이터 수집과 분석, 자동화 등의 능력을 활용
- 분석, 분해, 패턴인식, 추상화, 알고리즘, 평가 등의 과정
코딩과 관련된 다양한 교육 플랫폼
코드닷오알지, 코드카데미, 코드클럽, 생활코딩, 소프트웨어야 놀자
파이썬
- 1991년 귀도 반 로섬(Guido van Rossum)이 개발
- 파이썬(Python)은 고급 프로그래밍 언어
- 비영리의 파이썬 소프트웨어 재단이 관리
- 개방적이고 공동체 기반의 모델
- 어떤 값의 절대값 구하는 예와 파이썬 스크립트
파이썬의 주요 특징
- 인터프리터 언어로서 실행결과를 즉석에서 확인 가능
- 일반 프로그래밍 언어들보다 문법이 비교적 간단
- 수의 정의는 함수형 언어의 형태를 취하고 있음
- 문장의 끝을 표시하는 세미콜론(;) 기호가 없음
- 들여쓰기를 사용하여 블록을 구분하는 독특한 문법 채용
- 플랫폼 독립적이며 동적 타이핑 대화형 언어
- C언어처럼 초보자들이 어려워하는 포인터 개념을 안 씀
- 사용 방법과 다양한 예를 통한 실습은 부록 2에 있음
'독서 > 과학' 카테고리의 다른 글
K반도체 대전략 (1) | 2024.07.08 |
---|---|
카이스트 미래전략 2024 (3) | 2024.02.20 |
AI 이후의 세계 (1) | 2024.01.19 |