ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Computing 이란?
    유용한 자료 2020. 6. 19. 23:30

    컴퓨터공학을 공부한다면 알아야하는 두 단어가 있다.

    Computing과 Programming이 두 가지는 무엇을 뜻하는가?

     

    이 답을 하기 위해서는 알아야할 것들이 있다.

    보통 '컴퓨터공학과'라고 한다면 아래의 단어들을 듣게 된다.

    Computer Engineering, Computer Science, Information Technology.

    그렇다면 위 3가지의 다른 점은 무엇인가?

     

    - Computer Engineering : 전산 뿐만 아니라 전자의 개념이 들어간다. 

    - Computer Science : 컴퓨터 과학으로 컴퓨터를 활용하는 것을 말한다. 

    - Information Technology : 컴퓨터를 쓰는 약간 더 넓은 범위

     

    - Computing Science : Computing이란 개념은 비단 컴퓨터에만 종속되지 않는 '논리' 이다. Computing Science 는 위의 것들을 포함하는 개념이다. 그러므로 컴퓨터공학을 전공한다는 것은 Computing Science를 한다는 것을 말해야한다. 

     

    이 때 Computing이란 무엇인가? 전산. 자동화된 계산

    그렇다면? Calculation과 Computing의 차이점은? 계산기와 컴퓨터의 차이점은 무엇인가?

     

    이를 설명하기 위해서는 컴퓨터의 역사를 알아야한다. 

     

    1. George Boole 

    Boolean 아저씨

    - Calculus of reasoning '기호논리학'을 형성했다.

    - 논리가 철학의 범주가 아니라 수학의 범주에 속해있어야 한다고 주장하였다.

    - 사람의 직관에 의한 계산을 나타낼 수 있는 수학 법칙이 있다고 논하였다.

    - 아리스토텔레스의 syllogistic logic이 algebraic equitation으로 나타낼 수 있다는 것을 보였다.

     

    이 분은 어떤 명제, 문제를 수학으로 표현했다. 논리적인 전개가 수학적으로 표현이 가능하다 즉, 사람의 직관에 의해서만 이루어지던 논리를 수학으로 연산할 수 있음을 정리했다. (참고로, Boolean logic을 만들지는 않았다. 후세의 사람이 이 사람을 기리기 위해 그 이름을 붙였다고 한다.)

     

    2. Charles Babbage

     

    찰스

    - 계산을 물리적인 방법으로 할 수 있는 방법을 개발하였다.

    - 컴퓨터의 개념을 제시하였다.

     

    이 때 '뉴턴'이란 사람이 있었다. 이 분이 말한 것은 '모든 것이 수학으로 설명이 가능하며, 그것이 간단하다.' 였다.

    이때 모든 것을 설명할 때 쓴 것이 미분방정식였다 - 하지만 미분방정식을 풀기는 굉장히 어렵다.

     

    이 미분방정식을 쉽게 풀기 위해 미분표가 만들어졌다. 이를 활용하여 미분방정식을 풀어주는 일을 Charles Babbage가 하였는데, 계속해서 계산을 하다보니 규칙성이 보였다. 

     이를 위해 일단 기초연산자들을 만들고, 기초 연산자들을 조합해서 특수한 상황을 나타낼 수 있을 것 같다는 것이 아이디어였다. 

     

    이 아이디어를 실현하여 기계를 만들기 위해 펀딩을 하러 다녔는데, 이 펀딩과정에서 대부분 거절 당한다. 이 때 이 분의 논리를 알아들은 사람이 있었는데, 세계 최초의 프로그래머인 Ada Lovelace였다. 이 분이 만든 것이 아래와 같은 것이었다. ( 결국 Charles Babbage는 이 기계를 못 만들었다고 한다 )

    Ada Lovelace

    위와 같이 '기초 연산자들을 조합하여 특수한 상황을 나타내는 것'이라는 논리를 기초로 아래의 앨런 튜링, 폰 노이만이란 분들이 현대의 컴퓨터의 구조를 만들어낸다. 

    앨런 튜링은 인간이 짤 수 있는 프로그램이 무엇이냐에 따른 탐구를 수학을 기반으로 했다.

    생각은 덧셈과 뺄셈 이상이 될 수 있을까? 기계와 사람이 본질적으로 다른 것이 무엇이냐? 에 대한 고민이 지금도 계속되고 있다고 한다.

     

    앨런 튜링!
    폰 노이만

    위의 논리를 구현가능한 물리적 형태로 만든 사람이 폰 노이만이다. 

     

    이 구조에서 Computer라는 것은 2가지로 이루어져있다고 볼 수 있다. 

    Processor와 memory

     

    이 때 Processor와 비슷하게 생각할 수 있는 것이 계산기이다. 

    입력을 숫자로 입력하고 그 결과를 받아보는 것이 계산기의 역할이다. Processor도 비슷하다. 하지만 이 Processor에는 

    '코드'라는 것이 추가적으로 들어간다. Processor에는 데이터 뿐만 아니라 instruction stream이 있어서 코드라는 데이터의 순서에 따라 계산이 수행된다. 이를 통해 '비슷한 문제를 만났을 때 일반적인 해결 방법을 정의' 해준다.

     

    즉, Computing이라는 것은 meta-Calculation이라고 할 수 있다. 어떤 순서로 계산을 할 것이냐, 추상화해서 계산하는 과정을 말한다. 그런 의미에서 이것을 Problem-solving이라고 한다. 내 사고 과정이 기계적으로 일어날 수 있게 해주는 것을 computing이라고 한다.

     

    그렇다면 Coding, Programming, Software Engineering / Software Developing 의 차이점은 무엇인가?

    - Coding은 어떠한 문제를 해결하는 데 필요한 로직(알고리즘)을 코드로 옮기는 과정이다. 즉, 이미 문제해결 방법이 있을 때, 이것을 컴퓨터 언어로 옮기는 것에 불과한 일이므로 단순작업이다.

     

    - Programming은 이 로직을 적용하는 것고 coding까지 하는 것을 말한다.

     

    - Developing이 Engineering보다는 조금 더 큰 개념인데, 어떤 문제를 발견해내고 그 문제의 해결방법을 설계하고 최적화까지 하는 것을 Developing / Engineering 이라고한다.

    댓글

Designed by Tistory.