컴퓨터 만의 특별함

사람이 만든 모든 도구는 사람이 필요로 하여 만든 것으로, 특정 기능을 수행합니다.


  • 예를 들어:
    • 의자 > 지탱하는 작업
    • 바퀴 > 구르는 작업
    • 자동차 > 이동하는 작업

특별히 컴퓨터는 (게임, 인터넷, 데이터 관리, 전화, 로봇, 인공지능 등) 거의 모든 부냐에 다양하게 사용되어 다른 도구와 구별되는 점입니다. 따라서 컴퓨터를 '보편 만능의 기계 (Universal Machine)'라고 합니다.
Turing's "Universal machine" Turing's "Universal machine"

컴퓨터는 도구이고 , 이것을 다루는 방법은 분석과 언어입니다. 컴퓨터는 계산 및 데이터 처리를 기반으로 하는 도구이므로 분석하여 확인된 내용을 준비된 언어로 표현하여 처리하게 됩니다.
즉, 컴퓨터를 이용하여 원하는 작업을 수행하기 위해서는 사람에 의한 분석이 선행되어야 하고, 분석된 것을 실해하는 것이 컴퓨터의 일입니다.

사람은 다음과 같은 과정을 거처 수행할 작업을 분석합니다.

1.  무엇을 수행할 것인가? (목표의 설정)
2.  목표의 달성을 위하여 어떤 단계와 과정을 수행할 것인가?
3.  각 단계와 과정별로 어떤 작업을 수행할 것인가?

반복시키는 절차와 순서를 정하는 것

컴퓨터는 판정, 선택, 응답, 기억의 네 가지 주요 회로로 구성된 기계입니다. 주어진 문제의 해결을 위하여 네 가지 기능을 반복 수행합니다.
my life's algorithm

프로그래밍 (Programming)

프로그래밍 (Programming)은 프로그램을 기획하거나 작성하는 과정입니다. 즉, 컴퓨터 프로그래밍이란, 컴퓨터로 수행해야 하는 작업을 단위 자업으로 분류하고 처리 순서(알고리즘)를 정하는 과정을 말합니다.


프로그래밍은 꼭 컴퓨터 용어는 아닙니다, 일반적으로 사용되는 용어입니다. 예를 들면, '결혼식을 프로그래밍 한다'는 의미는 결혼식에 필요한 작업을 단위 작으로 분류하고 이것의 처리 순서를 정하는 과정을 말합니다.


코딩 (Coding)

코딩 (Coding)은 알고리즘을 컴퓨터가 알 수 있는 언어로 바꾸어 작석하는 것이며, 컴퓨터에서 코딩은 프로그래밍된 단위 작업의 처리 절차를 특정 '언어'로 변환 하는 작업을 말합니다.


간단한 예를 들면, 컴퓨터가 저를 도와주는 사람이라고 생각합시다. 이 사람은 미국 사람이고, 제가 어떠한 작업을 해결해달라고 지시하려면 '영어'라는 언어로 명령해야 할 것입니다. 코딩언어는 컴퓨터가 이해할수 있는 언어입니다.


단위 작업

프로그래밍은 주어진 과제를 단위 작업으로 분리하고 이것의 처리 순서를 정하는 과정이라고 했습니다. 이렇게 주어진 과제를 단위 작업으로 분리하는 것을 분석 작업이라고 합니다. 그러면 단위 작업을 어떤 것을 의미할까요? 단위 작업은 개발자가 프로그래밍을 위하여 사용할 수 있는 최소 단위입니다(즉, 더 이상 쪼개면 의미가 없음).


  • 단의작업의 예
    • 데이터의 타입을 선언하는 것
    • 데이터를 입력받는 것
    • 데이터를 보여주는 것
    • 데이터를 파일이나 데이터 베이스에 저장하는 것
    • 데이터를 조작하는 것
    • 데이터를 다른 프로그램에게 전달하는 것

결론적으로 프로그래밍을 잘 하기 위해서는 주어진 과제를 단위 작업으로 나누고, 나눈 단위 작업의 처리 절차를 효과적으로 기술하는 것이 중요합니다. 이 과정을 '알고리즘'이라고 합니다.

알고리즘은 무엇이고 왜 중요한가?

알고리즘의 정의

알고리즘(Algorithm)은 주어진 문제를 해결하기 위한 절차로서, 정해진 입력에 정해진 출력이 나와야 하고, 무한히 반복되어서는 안 됩니다.
컴퓨터에서의 알고리즘은 주어진 문제를 단위 작업으로 나누고, 문제를 해결하기 위한 처리 순서를 정하는 과정이며 당연히 무한히 반복되어서는 안됩니다.

알고리즘의 종류

  1. 정렬(Sort) : 한줄로 모여 있는 데이터를 오름차순이나 내림차순으로 배치하는 방법

    예) 단순 정렬, 선택 정렬, 쉘 정렬, 퀵 정렬, ...

  2. 검색(Search) : 데이터 중에서 원하는 것을 찾아내는 방법

    예) 순차 검색, 이진 검색, ...

  3. 문자열 패턴 매칭(SPM : String Pattern Matching) : 주어진 문자열에서 지정한 문자열과 일치하는 부분을 찾아내는 방법

    예) 문자열 검색, KMP 검색, BM 검색, ...

  4. 계산(Calculation) : 수학이나 공학의 문제 해결을 위한 방법

    예) 데이크스트라(최단 경로 찾기), 가우스 소거법(방정식 풀기), ...

알고리즘의 표현

알고리즘은 다양한 방식으로 표현할 수 있습니다. 그중 가장 많이 사용되는 방법이 흐름도를 사용하는 것입니다.
알고리즘

다음 포스팅 주제 '알고리즘 게발'