Today : 2024-10-24 Thursday
홈 현재 경제노트 가족은 388,872명 입니다.
당신은 14,355,396번째 방문객 입니다.
경제노트 서가 가족이 쓰는 노트 책밑줄긋기 독서모임
로그인 |
회원가입없이 경제노트를 이메일로 받고 싶으신 분은 이름과 이메일을 입력해 주세요
개인정보 수집및 이용 안내에 동의
(확인하기)
뉴스레터 수정/해지
추천인
이름
메일
추천받는 분
이름
메일
인사말
개인정보 수집및 이용 안내에 동의
(확인하기)
한번에여러명추천하기
IT과학 테크 일반글
[컴퓨팅의 역사]1936년: 프로그래밍(programming), 그리고 기계어(machine language)의 탄생
입력 2004-09-28 오후 1:29:35
트위터에 담기 스크랩하기 내모임에담기 이메일추천하기 인쇄하기
[튜링은 서툰 말투와 추레한 옷차림 덕에 항상 외롭게 지냈으며, 선천적인 동성애자로 평생 독신으로 삼--동성애 기질은 이후 그를 파멸로 몰아넣음]

 

 

영국의 수학자이자 논리학자인 앨런 튜링(Alan M. Turing)이 컴퓨터의 가장 근본적인 작동원리를 기술한 "유니버설 머신(Universal Machine)" 보고서 발표. 이 보고서에서 튜링은 0와 1만 구분할 수 있는 '기계'에 명령을 내리는 방법, 그 명령을 수행하는 방법, 명령에 의해 결과가 산출되는 방법을 구체적으로 묘사함으로써 디지털 컴퓨터 '프로그램(program)'의 원리를 정의하고 있었음.

 

이론상으로만 존재했던 이 튜링의 '기계'는, 우리가 실제로 만질 수 있는 하드웨어가 아니라, '컴퓨터 프로그램'을 말하는 것이었습니다. 튜링의 '기계'에는 수없이 나열된 네모 칸과, 그 네모 칸 안에 O과 X(컴퓨터의 0과 1에 해당)이 기입된 긴 종이 테이프가 있었습니다. '기계'는 테이프에 함께 입력된 일련의 명령어를 읽어 들이고, 각 네모 칸마다 한차례씩 명령을 수행할 수 있었습니다.

 

기계는 각 명령어에 따라 네모 칸들을 옮겨 가면서 각 네모 칸 위의 X나 O 표시를 변경하거나, 건너 뛰게 됩니다. 가령, …OOXXOOOO…로 적힌 종이 위에서 1XO2라는 1번째 명령어는 기계에게 "현재 네모 칸 위에 X가 있으면 O로 변경하고 2번째 명령으로 넘어가라"고 명령하고, 2번째 명령어 2OR3는 "현재 네모 칸 위에 O가 있으면 오른쪽 네모 칸으로 옮겨가 3번째 명령을 수행하라"는 식으로 명령을 계속 진행하는 것이죠.

 

결국 이 일련의 명령어들에 따라 처음 적힌 네모 칸 위의 X와 O 배열이 바뀌고, 이 바뀐 X와 O의 배열이 사용자가 의도했던 '결과'가 되는 것입니다. 오늘날의 컴퓨터로 설명하자면, 테이프는 메모리, 네모 칸은 메모리 셀(cell: 최소 단위), 네모 칸에 입력된 X와 O의 배열은 마이크로프로세서에 의해 '처리'되는 프로그램 명령과 데이터에 해당됩니다.

 

튜링의 유니버설 머신은 X와 O의 배열, 그리고 명령어 세트에 따라 매번 다른 작업을 수행할 수 있습니다. 명령어를 어떻게 배열하느냐에 따라 처음 배열된 X의 개수를 덧셈, 뺄셈, 곱셈, 나눗셈, 제곱근 등에 의해 변경할 수 있는 것이죠.

 

컴퓨터를 "프로그래밍 가능한 기계"라고 하는 까닭은 바로 여기에 있습니다. 현대 디지털 컴퓨터는 서로 다른 문제를 해결하기 위해 매번 기계를 새로 만들지 않습니다. 컴퓨터는 마이크로프로세서라는 중앙처리 장치 하나로, 매번 '프로그램'(유니버설 머신에서는 O과 X의 배열, 그리고 명령어 세트에 해당)을 변경할 때마다 각각의 다른 문제를 처리할 수 있습니다.

 

, 컴퓨터는 0과 1이라는 '심볼'들을 이용해 사용자가 원하는 어떤 형태의 작업이든 수행할 수 있는 "범용 기계(Universal machine)"입니다. 프로그램(program) 컴퓨터가 매번 필요한 작업을 수행할 수 있도록 은 0과 1의 심볼들을 이용해 컴퓨터에 명령을 내리는 것입니다. 이렇게 컴퓨터를 다양하게 조작하는 프로그램을 작성하는 것(프로그래밍: programming)은 바로 프로그래머(programmer)의 몫이고요.

 

이렇게 0과 1(X와 O)을 나열하는 컴퓨터에 명령을 내리는 프로그램을, 기계가 직접 이해할 수 있는 언어라 해서, '기계어(machine language)'라고 부릅니다.

 

하지만 프로그래머 혼자서 컴퓨터 기계가 이해하고 작업을 수행하도록 수없이 많은 0과 1을 나열하는 일은 너무나 복잡합니다. 따라서 현대 컴퓨터 프로그램은 이렇게 0과 1을 나열하는 기계어로 작성되는 것이 아니라, 사람이 이해하고 작성하기도 쉬운 언어로 작성됩니다. 

 

기계어보다 한단계 인간의 언어 쪽에 가까워 진 프로그래밍 언어가 '어셈블리 어(assembly language)'입니다. 어셈블리 어에서는 프로그래머가 0과 1 대신 영어 단어를 이용해 프로그램을 짤 수 있습니다. 그리고 이렇게 어셈블리 어로 완성된 프로그램 코드는 어셈블러(assembler)라는 프로그램을 통해 기계가 이해할 수 있는 기계어로 '번역'해 주죠. 그러나 어셈블리 어로 프로그래밍을 하기 위해선 각각의 데이터와 결과를 메모리의 어느 위치(유니버설 머신에서의 네모 칸)에 입력해야 하는지 일일이 지정해 줘야 합니다. 이 역시 매우 복잡한 작업이죠.

 

이런 불편함을 덜기 위해 BASIC과 FORTRAN과 같은 고급 프로그래밍 언어(high-level language)가 탄생합니다. 고급 프로그래밍 언어는 처리하는 데이터를 자동으로 메모리에 할당해 줄 뿐만 아니라, 더욱 일반 영어 문장에 가까운 구문으로 프로그램을 짤 수 있게 해줍니다. 따라서 프로그래머들은 이 고급 프로그래밍 언어를 통해 더 쉽고 빠르게 프로그램을 작성할 수 있는 것이죠. 이런 고급 프로그래밍 언어 역시 컴퓨터의 마이크로프로세서가 처리하도록 하기 위해선 기계어로 번역해 줘야 합니다. 이때 필요한 '번역 프로그램'을 컴파일러(complier), 혹은 인터프리터(interpreter)라고 합니다. (Tool For Thoughts by Howard Rheingold)

예병일의경제노트 추천정보
 
공유하기
덧글(0) 스크랩(0) 이 노트 글을...
예병일의경제노트 노트지기 덧글
덧글 달기
덧글달기
이름     비밀번호
엮인글(트랙백) 쓰기 주소 : http://note.econote.co.kr/tb/fastidio/23634    
[컴퓨팅의 역사]1937-1939년: 네트웍 컴퓨팅의 기원
[컴퓨팅의 역사]1935-1938년: 최초의 디지털 컴퓨터
노트 목록으로 이동
필자 예병일 소개 경제노트 소개 1:1문의하기 개인정보 취급방침
예병일의 경제노트    대표자: 예병일    개인정보 관리책임자: 조영동 팀장    전화: 02-566-7616   팩스: 02-566-7619