-
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
- Calculus of reasoning '기호논리학'을 형성했다.
- 논리가 철학의 범주가 아니라 수학의 범주에 속해있어야 한다고 주장하였다.
- 사람의 직관에 의한 계산을 나타낼 수 있는 수학 법칙이 있다고 논하였다.
- 아리스토텔레스의 syllogistic logic이 algebraic equitation으로 나타낼 수 있다는 것을 보였다.
이 분은 어떤 명제, 문제를 수학으로 표현했다. 논리적인 전개가 수학적으로 표현이 가능하다 즉, 사람의 직관에 의해서만 이루어지던 논리를 수학으로 연산할 수 있음을 정리했다. (참고로, Boolean logic을 만들지는 않았다. 후세의 사람이 이 사람을 기리기 위해 그 이름을 붙였다고 한다.)
2. Charles Babbage
- 계산을 물리적인 방법으로 할 수 있는 방법을 개발하였다.
- 컴퓨터의 개념을 제시하였다.
이 때 '뉴턴'이란 사람이 있었다. 이 분이 말한 것은 '모든 것이 수학으로 설명이 가능하며, 그것이 간단하다.' 였다.
이때 모든 것을 설명할 때 쓴 것이 미분방정식였다 - 하지만 미분방정식을 풀기는 굉장히 어렵다.
이 미분방정식을 쉽게 풀기 위해 미분표가 만들어졌다. 이를 활용하여 미분방정식을 풀어주는 일을 Charles Babbage가 하였는데, 계속해서 계산을 하다보니 규칙성이 보였다.
이를 위해 일단 기초연산자들을 만들고, 기초 연산자들을 조합해서 특수한 상황을 나타낼 수 있을 것 같다는 것이 아이디어였다.
이 아이디어를 실현하여 기계를 만들기 위해 펀딩을 하러 다녔는데, 이 펀딩과정에서 대부분 거절 당한다. 이 때 이 분의 논리를 알아들은 사람이 있었는데, 세계 최초의 프로그래머인 Ada Lovelace였다. 이 분이 만든 것이 아래와 같은 것이었다. ( 결국 Charles Babbage는 이 기계를 못 만들었다고 한다 )
위와 같이 '기초 연산자들을 조합하여 특수한 상황을 나타내는 것'이라는 논리를 기초로 아래의 앨런 튜링, 폰 노이만이란 분들이 현대의 컴퓨터의 구조를 만들어낸다.
앨런 튜링은 인간이 짤 수 있는 프로그램이 무엇이냐에 따른 탐구를 수학을 기반으로 했다.
생각은 덧셈과 뺄셈 이상이 될 수 있을까? 기계와 사람이 본질적으로 다른 것이 무엇이냐? 에 대한 고민이 지금도 계속되고 있다고 한다.
위의 논리를 구현가능한 물리적 형태로 만든 사람이 폰 노이만이다.
이 구조에서 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 이라고한다.
'유용한 자료' 카테고리의 다른 글
혼자 공부할 수 있는 프로그래밍 강의 링크 모음(국내) - 2 (0) 2020.06.21 혼자 공부할 수 있는 프로그래밍 강의 링크 모음(국내) - 3 (0) 2020.06.05 혼자 공부할 수 있는 프로그래밍 강의 링크 모음(국내) - 1 (0) 2020.06.05 혼자 공부할 수 있는 프로그래밍 강의 링크 모음(외국) (0) 2020.06.05