파이썬/개념

[알기 쉽게 해설한 파이썬 with 컴퓨팅 사고력] Ch01. 소프트웨어와 컴퓨팅 사고력

2024. 10. 9. 14:09
728x90

이 글은 '알기 쉽게 해설한 파이썬 컴퓨팅 사고력'을 중심으로 작성되었습니다.

알기 쉽게 해설한 파이썬 with 컴퓨팅 사고력 | 김충석 - 교보문고 (kyobobook.co.kr)

 

알기 쉽게 해설한 파이썬 with 컴퓨팅 사고력 | 김충석 - 교보문고

알기 쉽게 해설한 파이썬 with 컴퓨팅 사고력 | 파이썬으로 컴퓨팅 사고력을 기르고 실생활 문제를 컴퓨터로 해결하자!이 책은 프로그래밍과 코딩을 처음 배우는 학습자에게 적합합니다. 컴퓨팅

product.kyobobook.co.kr

 

 

 

 

 


 

 

 

 

 

Section 01 4차 산업혁명과 소프트웨어

 4차 산업혁명 시대의 컴퓨터란 개인용 PC나 노트북에서부터 우릭 항상 휴대하고 다니는 스마트폰(smart phone) 등 모든 컴퓨터를 의미한다.

 최초의 컴퓨터는 1946년 미국에서 개발된 에니악(ENIAC)으로 알려져 있다. 현재 우리는 집, 학교, 사무실 등 어디에서나 컴퓨터를 사용할 수 있다. 누구나 사용하는 대중이 도구가 되었다.

 

 

1. 4차 산업혁명의 개념

 4차 산업혁명은 인공지능(AI), 사물 인터넷(IoT), 클라우드 컴퓨팅, 빅데이터, 모바일 등 지으 정보 기술이 기존 산업과 서비스에 융합되거나 3D 프린팅, 로봇공학, 생명공학, 나노기술 등 여러 분야의 신기술과 결합되어 실세계 모든 제품 및 서비스를 네트워크로 연결하고 사물을 지능화하는 것을 의미한다.

 4차 산업혁명은 초연결성(hyper-connectivity)과 초지능성(super-intelligence)을 기반으로 구축되기 때문에 기존 산업혁명에 비해 더 넓은 범위에서 더 빠른 속도로 우리 생활에 영향을 끼치고 있다.

 

제 1차 산업혁명(18세기): 증기기관 기반의 기계화 혁명

제2차 산업혁명(19~20세기 초): 전기 에너지 기반의 대량생산 혁명

제3차 산업혁명(20세기 후반): 컴퓨터와 인터넷 기반의 지식정보 혁명

지능(AUSW) 정보(빅데이터 IoT 클라우드) 기술

제4차 산업혁명(제2차 정보혁명, 21세기 초반 ~)

 

 

2. 4차 산업혁명 시대의 컴퓨터와 인간

 1950년대 계산하는 기계로 탄생한 컴퓨터는 20시게에는 주로 빠른 계산 능력과 무한한 기억 용량으로 일상생활의 많은 문제들을 처리하였다.

 인간과 컴퓨터를 비교하면 신속성과 정확성을 겸비한 컴퓨터가 인간을 압도하는 분야가 아주 많다. 그러나 아무리 자동화된 세상이라도 컴퓨터에만 의존해 살아갈 수는 없다. 컴퓨터와 프로그램은 우리가 작성한 코드대로 입력한 작업을 수행하는 것뿐이다. 컴퓨터의 완벽한 업무 수행은 인간이 입력해둔 범주 내에서만 가능한 일이다.

 

 

3. 컴퓨터와 소프트웨어

 컴퓨터 하드웨어는 입력장치, 출력장치, 기억장치, 연산장치, 제어장치, 네트워크로 구성되어 있다. 이러한 하드웨어를 작동시키기 위해서는 관련된 소프트웨어나 펌웨어가 필요하다.

 펌웨어는 컴퓨터를 구동하기 위한 가장 간단한 프로그램을 하드웨어 형태로 만든 것이다. 일반적으로 펌웨어가 시스템 소프트웨어인 운영체제9Operating System)를 가동시키고 운영체제는 사용자가 요구하는 소프트웨어를 가동시킨다. 그리고 소프트웨어는 네트워크와 데이터를 이용하여 작동하고 겨로가를 만들어 낸다. 요즘은 스스로 학습을 수행하기도 한다.

 현대 시대는 하드웨어도 중요하짐나 어떤 소프트웨어가 어떤 데이터를 사용하는지가 더 중요한 시대이다. 입력을 제대로 해야 제대로 된 결과를 얻을 수 있다.

 우리가 컴퓨터를 사용한다는 것은 소프트웨어를 사용한다는 의미이다. 정보는 좋은 소프트웨어에 의해 제공된다.

 

컴퓨터를 통해 쇼핑을 합니다.

 사용자 컴퓨터에 설치되어 있는 검색기 소프트웨어(프로그램)를 실행시킨 것이다.

 

컴퓨터를 통해 친구와 대화합니다.

 사용자 컴퓨터에 설치되어 있는 대화 전용 소프트웨어(프로그램)를 실행시킨 것이다.

 

컴퓨터를 통해 보고서를 작성합니다.

 사용자가 컴퓨터에 설치된 문서 편집기 소프트웨어(프로그램)를 실행시킨 것이다.

 

 공통적인 것은 컴퓨터에서 소프트웨어(프로그램)를 실행시킨다는 점이다. 즉 우리가 컴퓨터를 사용한다는 의미는 컴퓨터에게 우리가 원하는 소프트웨어를 실행시킨다는 것이다.

 

 

 

 

 


 

 

 

 

 

Section 02 컴퓨터와 프로그래밍 언어

 

 

1. 사람과 컴퓨터의 상호 작용

 컴퓨터는 전기를 통하여 동작하므로 '전기가 흐른다' 또는 '흐르지 않는다'만 기억할 수 있게 되었습니다. 즉 컴퓨터는 두 가지 상태(0 또는 1)만 기억할 수 있는 기계로 발명된 것이다.

 이러한 컴퓨터가 2진법 컴퓨터인데, 1950년대 이후 2진법 컴퓨터는 현재까지 사용되고 있다.

 

사람의 언어를 컴퓨터가 인지

 자연어(Natural Language)를 컴퓨터가 인식할 수 있도록 하기 위한 노력이 인공지능(Artificial Intelligence, AI) 분야에서 이루지고 있다. 현재 시점에 이 방법은 작은 규모의 간단한 응용 분야에서나 사용 가능한 것으로 판단되고 있다.

 

컴퓨터 언어를 사람이 사용

 컴퓨터 언어인 2진법만을 이용해서 컴퓨터를 사용한다는 것은 사람에게 매우 어려운 일이다.

 

사람과 컴퓨터의 공동 언어 사용(프로그래밍 언어)

 컴퓨터와 사람이 제3국어에 해아되는 언어로 상호 작용할 수 있는 프로그래밍 언어(Programming Language)로 의사소통해야 한다.

 결론적으로 컴퓨터와 사람이 상호작용 하기 위해서는 반드시 프로그래밍 언어를 사용해야 한다.

 

 

 

2. 프로그래밍 언어

프로그래밍 언어의 발전 단계

 1950년대에 컴퓨터가 개발된 이후로 프로그래밍 언어는 느리지만 꾸준하게 발전되어 왔다.

  • 1세대 언어
    기계어. 0과 1로 구성된 언어이다. 기계어는 컴퓨터가 사용하는 언어이다.
  • 2세대 언어
    기계어에 가까운 첫 번째 프로그래밍 언어. 너무 불편했던 기계어를 일부 기호화한 언어이다.
  • 3세대 언어
    본격적인 프로그램 언어. 주로 절차 지향 중심의 언어들이 개발되었다.
  • 4세대 언어
    데이터베이스 관련 프로그램을 개발할 수 있는 언어. 주로 윈도우 상에서 쉽게 개발할 수 있는 환경을 제공한다.
  • 5세대 언어
    본격적인 객체 지향 언어의 세대이면서, 네트워크 관련 기능이 강화된 언어.
1세대 2세대 3세대 4세대 5세대
기계어 어셈블리어 C
포트란(FORTRAN)
베이직(BASIC)
코볼(COBOL)
비주얼 베이직
델파이
파워빌더
자바
C++, C#, 파이썬
ASP, JSP, PHP

 

 

 

3. 컴퓨터가 프로그램을 인지하는 기법

 사람에 의해 작성된 프로그램은 번역기를 거쳐 기계어로 번역되어 컴퓨터에게 전달되며, 컴퓨터는 기계어로 작성된 코드들을 실행하여 결과를 출력하게 된다.

 결론적으로 컴퓨터에서 프로그램을 실행하기 위해서는 무조건 컴퓨터가 인식할 수 있는 0과 1의 형태로 실행할 수 있다.

 

컴파일 기법

 컴파일(conplie) 기법이란 프로그램이 컴파일러(conpiler)에 의해 이진파일(0과 1로 구성된 파일)로 번역된 후, 번역된 파일이 컴퓨터에서 실행되는 기법이다.

 우리가 특정 언어를 사용하여 프로그램을 작성하면, 작성된 프로그램을 컴퓨터가 알아들을 수 있는 0과 1로 번역해 주는 컴파일러가 반드시 필요하다.

 컴파일 기법은 한 번 작성된 프로그램이 번역되어 실행 파일이 생성되면, 다음부터느 번역 절차 없이 실행 파일만 실행시키므로 빠르게 실행할 수 있어 효율성이 뛰어나다. 하지만 특정 시스템(예. 윈도우 운영체제)에서 번역된 실행 파일이 다른 시스템(예. 리눅스 운영체제)에서는 실행되지 않는다는 점이다.

 현재 대표적인 컴파일 기법의 언어로는 C 언어가 있다.

 

인터프리트 기법

 이너프리트(interpret) 기법이란 인터프리터(interpreter)로 프로그램을 실행시키는 방법이다. 0과 1로 구성된 실행 파일을 생성하지 않고, 프로그램을 직접 한 줄씩 번역한 다음 바로 실행시켜 그 결과를 나타내는 방식이다. 웹이 동작하는 방법이 전형적인 인터프리트 기법이다.

 전형적인 인터프리트 언어로는 HTML, 자바스크립트(JavaScript), ASP, PHP, Perl 등이 있다.

 

하이브리드 기법

 하이브리드(Hybrid) 기법은 컴파일 기법과 인터프리트 기법을 모두 사용하는 방식이다. 최근 개발된 언어(자바, C# 등)에서 주로 사용하는 기법으로, 한 번 작성된 프로그램이 네트워크(인터넷) 환경에 연결된 다양한 종류의 컴퓨터에서도 실행될 수 있는 이식성을 제공하고 있다.

 하이브리드 기법은 우선 사용자에 의해 작성된 프로그램이 컴파일러에 의해 중간 코드로 변환된다. 중간 코드는 컴퓨터에서 직접 실행될 수 없는 코드로, 컴퓨터 하드우ㅞ어에 독립적인 코드이다. 이 중간 코드는 다양한 형태의 서로 다른 시스템에서 인터프리터에 의해 직접 실행된다.

 하이브리드 기법을 사용하면 인터프리트 방식의 단점인 소스 프로그램의 공개와 컴파일러 방식의 단점인 특정 컴퓨터에 종속적이라는 문제를 해결할 수 있다. 이식성이 매우 높다. 네트워크(인터넷) 환경에서 강한 장점을 가지고 있다.

 대표적인 하이브리드 기법의 언어로는 자바가 있다.

 

 

 

 

 


 

 

 

 

 

Section 03 컴퓨팅 사고력의 이해

 

1. 컴퓨팅 사고력의 개념

  • 컴퓨팅의 기본적인 개념과 원리를 기반으로 문제를 효율적으로 해결할 수 있는 사고 능력
  • 컴퓨터와 같이 문제를 인식하고 해결해가는 과정을 따르는 생각 방식
  • 컴퓨터가 효과적으로 수행할 수 있도록 문제를 정의하고 그에 대한 답을 기술하는 것이 포함된 사고 과정 전체
  • 문제를 수립하고 해결책을 만들어 컴퓨팅 시스템을 통해 효과적으로 수행되도록 표현하게 하는 사고 과정

 결론적으로 컴퓨팅 사고력은 '컴퓨터 과학의 기본 개념과 원리를 기반으로 실생활 및 다양한 학문 분야의 문제를 이해하고 창의적으로 해법을 구현하여 적용할 수 있는 능력'으로 정의할 수 있다.

 

컴퓨팅 사고력의 구성 요소는 크게 3단계로 나눌 수 있다.

① 1단계 : 자료 수집, 자료 분석, 자료 구조화

② 2단계 : 추상화

③ 3단계 : 자동화

구성 요소 정의
①-1. 자료수집 문제 해결에 필요한 자료 모으기
①-2. 자료 분석 자료의 이해, 패턴 찾기, 결론 도출
①-3. 자료 구조화 문제를 그래프, 차트, 그림 등으로 시각화
② 추상화 분해 문제를 관리 가능한 수준의 작은 문제로 나누기
모델링 문제 해결을 위한 핵심 요소를 추출하고, 모델 만들기
알고리즘 분해된 문제를 해결하기 위한 일련의 단계를 알고리즘으로 표현
③ 자동화 코딩 알고리즘으로 표현된 문제를 프로그래밍 언어를 이용해 자동화
시뮬레이션 프로그램 실행
cf. 일반화 문제 해결 과정을 다른 문제에 적용

 

 

 

2. 컴퓨팅 사고력 1단계 : 자료 수집, 자료 분석, 자료 구조화

 해결하려고 하는 문제에 대한 자료를 수집하고, 수집된 자료를 분석하여 유용한 정보를 추출하고, 이러한 정보를 구조화하여 표현하는 단계이다. 여기서 자료(data)란 사람, 동물, 물건, 기계 등이 만들어 낸 사실, 의미, 관측 결과 등을 숫자, 문자, 기호 등으로 표현한 것을 말한다.

 

자료 수집

주어진 문제에 대한 자료를 다양한 경로로 수집하는 과정. 최대한 객관적인 상황에서 공정하게 수집되어야 한다.

  • 양적인 자료 수집: 실험·관찰을 통한 측정, 설문조사의 객관식 응답, 단답식 응답, 검색 자료 등
  • 질적인 자료 수집: 관련 인터뷰, 현장 방문 조사, 설문조사의 주관식 응답 등

 

자료 분석

자료 수집 단계에서 수집한 자료들의 관계를 분석하여 의미 있는 정보를 추출하는 것. 수집된 자료의 종류에 따라 다양한 분석 방법을 통하여 정보를 추출할 수  있다. 여기서 정보(infomation)란 어떤 목적이나 문제 해결에 도움이 되도록 자료를 편집 및 가공한 것이다.

 

자료 구조화

자료 분석의 겨로가를 표현하는 것. 문제를 알아보기 쉽도록 관계를 구조화하여 표현하는 것.

  • 선형 구조: 스택, 큐, 리스트 등으로 표현하는 방법
  • 비선형 구조: 트리, 표, 그래프. 다이어그램(미안드맵) 등으로 표현하는 방법

 

 

 

3. 컴퓨팅 사고력 2단계 : 추상화

① 추상화 1단계: 문제를 해결 가능한 수준의 작은 문제들로 나누는 단계

② 추상화 2단계: 문제 해결을 위한 핵심 요소를 추출하여 추상화된 모델을 만드는 단계

③ 추상화 3단계: 작게 나누어진 문제들을 해결하기 위한 절차를 기술하는 알고리즘을 작성하는 단계

 

분해

 규모가 크고 복잡한 문제들을 한번에(하나의 프로그램으로) 해결하려면, 방법이 매우 복잡하고 우류가 발생할 가능성이 높아진다. 컴퓨팅 사고력을 통한 문제 해결에서도 복잡한 문제는 작은 문제로 나누어 처리하는 것이 원칙을 분해라고 한다.

 일반적으로 분해는 큰 문제를 이해가 쉬운 작은 문제로 나누는 작업이다. 어느 크기까지로 나눌 것인가의 문제는 나누어진 기능이 독립적이면서 이해하기 쉽고 명료한 논리구조를 가질 때까지 나누는 것이 원칙이다.

 

모델링

 모델링(Modeling) 단계는 문제의 핵심적인 요소나 원리를 찾아서 모형이나 그림, 식, 기호 등으로 표현하는 것을 의미한다. 주요 기능을 하나의 그림으로 표현한다. 해결하고자 하는 문제의 핵심 부분만을 표현한다.

 

알고리즘

 알고리즘(Algorithm)이란 작게 분해된 문제에 대한 해결 단계를 절차적으로 표현한 것을 의미한다. 절차적 표현은 자연어, 순서도, 의사코드 등 다양한 방법으로 표현할 수 있다.

 알고리즘은 프로그램을 작성하기 위한 논리를 포함하고 있으며, 잘 작성된 알고리즘은 쉽게 프로그램으로 변환할 수 있다. 분해 단계를 거쳐 나누어진 각 가능들은 모두 알고리즘으로 표현되어야 한다.

 

 

 

4. 컴퓨팅 사고력 3단계 : 자동화

 자동화는 추상화 단계에서 만들어진 알고리즘을 컴퓨터가 실행할 수 있는 언어로 코딩하고, 코딩된 프로그램을 실행시키는 단계이다. 이 단계가 완료되면 컴퓨팅 사고력의 모든 단계가 완료되어 제시된 문제를 컴퓨터를 통해 해결하게 된다.