컴퓨팅 사고의 4대 핵심 개념

 

 

 

 

 

1. 분해(Decompostion)

 

문제를 잘게 나누어 문제를 해결하는 것입니다.

엄두가 안 날 정도로 큰 문제는 "분해"의 방법을 사용합니다.

 

"분해"는 우리가 목표를 달성하기 위해 잘게 나눌 때도 사용하고 있습니다.

공장에서도 물건을 만들 때 부품을 하나씩 나눠서 각 파트에 맞게 만들 때도 사용됩니다.

 

 

 

 

 

 

 

2. 패턴인식(Pattern Recognition)

 

유사한 문제 해결 유형을 모아서 이것을 공식화하는 것을 말합니다.

프로그래밍에서는 함수(Function)를 만드는 것과 같습니다.

 

비슷한 문제가 발생 시 유사한 문제 해결 방법을 적용합니다.

이런 패턴인식 해결 방법을 많이 가지고 있으면 문제를 좀 더 쉽게 해결할 수 있습니다.

 

경험이 많은 숙련자가 문제를 빠르고 쉽게 해결하는 것 과 비슷합니다.

 

 

 

 

 

 

 

 

3. 추상화(Abstraction)

 

단순화라고도 불리고 있습니다.

사용자가 전체 시스템을 이해하지 못해도 지장이 없도록 해줍니다.

 

우리가 자동차의 세부적인 작동원리를 몰라도 기능을 사용 가능 한 것과 같습니다.

좌회전, 우회전 등 기능이 어떻게 작동되는지 몰라도 조작이 가능합니다.

 

이런 추상화는 사용자를 위한 서비스에 따라 형태와 내용이 달라 질 수 있습니다.

 

 

 

 

 

 

4. 알고리즘(Algorithms)

 

알고리즘은 문제 해결을 위한 공식 또는 절차를 의미합니다.

잘게 분해해 놓은 문제들의 해결책을 엮어서 전체의 해결책을 만듭니다.

 

입체 도형을 만들기 위해 점을 이어나가 면을 만들고, 면을 연결해 만드는 것과 같습니다.

 

처음에는 작은 알고리즘을 구성하고, 마지막에는 자동차를 만드는 전체 알고리즘을 만들게 되는 것입니다.

 

 

 

 

 

 

* 참고 도서

- 논리적 문제 해결을 위한 컴퓨팅 사고 (저자 김두진)

반응형

 

 

 

컴퓨팅 사고란?

 

컴퓨팅 사고는 컴퓨터가 만들어낸 사고방법이 아닙니다.

오래전부터 수 많은 사람들이 어려운 문제를 해결하기 위한 방법이였습니다.

 

과학자들이 이런 문제해결 방법을 컴퓨터에 이식시킨 것 입니다.

 

 

 

 

 

 

 

컴퓨터 사고는 이미 사용하고 있다.

 

컴퓨팅 사고는 우리 일상생활에서 수 없이 사용되고 있습니다.

예로 퇴근, 하교길을 갈 때도 우리는 효율적인 길을 생각하고 찾습니다.

 

컴퓨터가 있기 전부터 인간의 삶에는 수 많은 문제들이 발생했습니다.

그것을 해결하기 위해 다양한 방법들을 생각했습니다.

 

요즘은 컴퓨터가 데이터를 수집해서 문제를 해결하는데 도움을 주고 있습니다.

 

집에 가는 효율적인 길도 "네비게이션"이라는 기능을 통해 해결방안을 제시합니다.

 

 

 

 

 

 

사람의 사고와 컴퓨터 사고의 차이

 

사람은 경험이라는 데이터를 근거로 문제를 해결합니다.

하지만 경험은 지속적인 시간과 노력이 필요합니다.

 

컴퓨터는 데이터만 축적 되어 있으면 쉽게 활용이 가능합니다.

 

사람의 경험에 의한 데이터는 감정에 쉽게 영향을 받을 수 있습니다.

주관적인 생각이 들어가 있을 수 있습니다.

 

반대로 컴퓨터는 상당히 객관적인 데이터입니다.

객관적인 데이터는 기업에서 선호합니다.

 

기업의 성장을 위해서는 주관적인 데이터가 아닌 객관적인 데이터가 필요하기 때문입니다.

이런 이유에서 컴퓨팅 사고는 상당히 큰 발전을 이루고 있습니다.

 

 

 

 

 

 

 

 

 

컴퓨팅 사고를 효과적으로 사용

컴퓨팅 사고는 방식에 불과합니다.

결정은 결국 사람이 내립니다.

 

우리는 컴퓨팅 사고를 도구로 잘 활용해야 합니다.

컴퓨터가 축적한 데이터를 바탕으로 효율적인 결과를 도출하는 것 입니다.

 

 

 

 

* 참고 도서

- 논리적 문제 해결을 위한 컴퓨팅 사고 (저자 김두진)

반응형

코딩을 공부하면서 느낀점이 하나 있습니다.

 

코딩을 하면서 오타로 인해 꽤나 고통을 받는다는 것 입니다.

 

그래서 오타를 줄이기 위해 타자연습을 하게 되었습니다.

 

구글링을 하다가 무료로 연습 가능한 사이트 2개를 발견해서 소개해 드릴려고 합니다.

 

 

 

 


TypingClub(클릭시 링크로 이동)

 

위 사이트는 키보드 버튼을 누르는 손가락부터 알려주는 기초적인 사이트입니다.
저는 실제로 타이핑하면서 거의 검지만 사용하는 흔히 말하는 독수리 타법인걸 알았습니다.

타이핑 연습이 지루하지 않게 여러 시각적인 효과와 게임을 넣어놨습니다.
회원가입을 하면 내가 타이핑 한 것을 데이터로 보여줍니다.(굳이 안해도 연습에 문제는 없다고 봅니다.)

 

 

 

 

 

 

 

typing.io(클릭시 링크로 이동)

 

위 사이트는 프로그래머를 위해서 만들어진 타이핑 연습 사이트입니다.
자신이 주로 사용하는 프로그래밍 언어에 맞게 타이핑 연습을 할 수 있습니다.

프로그래밍 언어에서 주로 사용하는 키워드를 위주로 연습하게 됩니다.

 

반응형

세상에는 다양한 컴퓨터 언어들이 있습니다.

ex) C, C++, C#, Java, 파이썬 등

 

이러한 언어들을 크게 객체지향 프로그래밍, 절차지향 프로그래밍으로 나눌 수 있습니다.

 

 

 

 

 

절차지향 프로그래밍의 구조

 

 

◎ 절차지향 프로그래밍이란?

(Procedure Oriented Programming, POP)

 

말그대로 절차, 순차적인 처리를 중요시 되는 프로그래밍입니다.

물이 높은곳에서 아래로 흐르는 강물처럼 유기적으로 연결되도록 만드는 프로그래밍 기법입니다.

 

 

 

절차 지향 프로그래밍 언어

 

 

장점

▶ 컴퓨터 작업 처리 방식과 유사해 실행속도가 빠르다.

단점

▶ 유지보수가 어렵다.

정해진 순서가 바뀌면 동일한 결과를 보장받기 어렵다.

변하는 현실세계와 사용자의 요구에 유연하게 대처하지 못한다

 디버깅이 어렵다.

 

 

 

 

 

 

 

객체지향 프로그래밍 언어

 

◎ 객체지향 프로그래밍이란?

(Object Oriented Programming OOP)

 

'현실 세계를 프로그래밍 세계로 옮겨 놓는 행위'

이런 기능을 다른 말로 "모델링"이라고도 합니다.

현실 세계의 업무를 프로그램화 시키는데 도움을 줍니다.

 

 

컴퓨터 프로그래밍의 한가지 기법으로 객체를 만들고,

객체를 사용하는 프로그래밍 방법이라고 할 수있습니다.

 

 

 

 

 

객체지향 프로그래밍의 구성요소들

 

 

객체지향 프로그래밍의 기본 구성 요소

 

▶ 클래스(Class)

같은 종류의 집단에 속하는 속성과 행위를 정의한 것입니다.

객체, 컨트롤, 컴포넌트 등을 만들어내는 설계도

 

 

▶ 객체(Object)

현실 세계에서 어떤 특징(속성)을 가지며 어떤 동작(메서드)을 수행할 수 있는 단위 하나를 개체로 표현 가능합니다.

 

자동차 설계도(클래스) -> 조립(인스턴스화) -> 자동차(객체, Object)

 

객체를 만들어 내는 설계도(클래스), 이 클래스에서 조립된 물건 하나가 바로 객체입니다.

* 클래스는 대문자로 시작하고, 객체는 소문자로 시작하는게 기본 원칙

 

 

▶ 메서드(Method)

메서드는 클래스의 기능과 동작을 나타내는 가장 많이 사용하는 구성요소입니다.

자동차로 예를 들면, 전진(), 후진(), 좌회전() 같은 동작을 나타냅니다.

 

장점

잘 설계된 클래스를 만들어 라이브러리로 재사용해 생산성 향상.

▶ 수정해야할 부분이 클래스 내부에 멤버 변수 혹은
    메서드로 존재하기 때문에 유지보수가 용이하다.

객체단위로 모듈화시켜 개발할 수 있어, 여러명이 투입되는 
   대형프로젝트에서 업무분담에 용이하다.

단점

▶ 객체가 많아지면 용량이 커진다.

설계 시 많은 시간이 소요 될 수 있다.

처리속도가 상대적으로 느리다.

 

 

 

 

객체지향 프로그래밍의 특징

 

▶ 캡슐화 (Encapsulation)

 

객체의 속성(Data fields)과 행위(Method)를 하나로 묶고, 실제 구현 내용 일부를 외부에 감추어은닉.

 

캡슐화는 구조화된 데이터 개체 값 또는 상태를 숨겨 권한이 없으면 접근하지 못하도록 차단합니다.

 

캡슐화의 또 다른 의미는 연관된 자료 구조와 메서드(함수)를 한 테두리로 묶는 것입니다.

 

 

 

 

▶ 추상화 (Abstract)

 

자료 추상화는 불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단히 만드는 것

실제로 존재하는 객체들을 프로그램으로 만들기 위한 공통적인 특성을

파악해서 필요없는 특성을 제거하는 과정.

 

 

▶ 다형성 (Polymorphism)

 

특정 클래스의 메서드는 매개변수에 따라 여러 가지 다양한 형태일 수 있습니다.

한 객체가 다른 여러형태(객체)로 재구성 되는 것을 말합니다.

 

즉, 이러한 클래스의 특징을 다형성이라고 합니다.

 

 

 

▶ 상속 (inheritance)

부모 클래스의 멤버를 자식 클래스에서 재사용하는 개념을 상속이라고 합니다.

 

 

 

 

 

 

※ 참고자료(Reference)

▷ <C#교과서> 박용준 저서(길벗출판사)

radait.tistory.com/4

ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D    (위키백과)

 www.learnqtp.com/tutorial-class-object-properties-methods-uft/

www.ajonit.com/

반응형

 

4차 산업혁명의 핵심적인 것 중 하나는 소프트웨어에 있습니다.

 

 

 

 

 

 

새로운 시대가 다가오면서 가장 이슈가 되는 것이 있습니다.

바로 인공지능(AI: Artificial Intelligence)이 사람이 하던 일을 대신하게 된다는 것이죠.

 

 

 

 

 

이런 변화는 코로나 바이러스의 영향으로 더욱 빠르게 다가오고 있습니다.

 

 

소프트웨어가 중요한 이유는 바로 우리 생활 곳곳에 다 쓰이고 있다는 것입니다.

 

미국, 이스라엘과 같은 나라는 코딩을 미래의 언어로 보고 있습니다.

학교에서도 필수과목으로 자리 잡혀 조기 교육을 실행한다고 하죠.

 

 

 

 

 

 

" 모든 국민은 코딩을 배워야 합니다. 코딩은 생각하는 법을 가르쳐주기 때문이죠."

- 스티브 잡스 -

 

 

 

 

 

 

코딩(Cording)이란

 

  • 코드라는 컴퓨터 언어로 만드는 프로그램을 만드는 과정
  • 컴퓨터 프로그래밍과 동일한 개념

 

사람들과 소통을 하는 언어처럼, 컴퓨터와 소통하기 위한 언어를 코딩이라고 합니다.

 

 

 

우리가 무의식적으로 지나가는 자동문도 코딩의 원리로 작동됩니다.

 

1. 사람이 감지되면 신호 전달

2. 문 열림 동작 실행

3. 입력된 시간만큼 기다리기

4. 문 닫힘 동작 실행

 

 

 

이 외에도 자판기, 에스컬레이터, 휴대폰 등 거의 모든 것에 포함되어 있습니다.

 

 

 

 

 

전문가들은 코딩을 알지 못하면 새로운 시대에서 뒤처질 것이라고 말합니다.

일자리를 구할 때 폭이 좁아지고 회사 생활에서도 경쟁력이 떨어지게 되는 거죠.

 

 

 

 

 

선진국에서는 단순 반복 업무들을 AI, 로봇으로 대체하도록 연구하고 있습니다.

그러면서 수많은 일자리가 사라질 것을 보고 있죠.

 

변화하는 시대에서 살아남기 위해서는 코딩을 공부하고 자신만의 경쟁력을 잡아놔야 합니다.

코딩의 공부는 권장사항이 아닌 필수사항이 돼버렸기 때문입니다.

반응형

+ Recent posts