1%의 프로그래밍 작동 원리 - 성공과 실패를 결정하는
가와마타 아키라 지음, 권기태 옮김 / 성안당 / 2019년 8월
평점 :
장바구니담기


프로그래밍에 대한 구체적인 설명이 나오기 전에 아날로그와 디지털의 차이점을 설명하고 왜 디지털을 선호하는지 알려준다.

아날로그는 예를 들면 음계의 도와 레 사이의 음을 짚어낼 수 있는 것이다. 하지만 외부환경에 의해 미묘한 변화를 쉽게 받아드리므로 정확한 답을 도출하려면 철저하게 환경설정을 해야 한다. 디지털은 일정한 값에 대해 일률적으로 수치화 함으로써 주변 환경에 민감하지 않다. 그래서 남극이던 적도 부근이던 동일하게 동작하는 기기를 만들어낼 수 있는 것이다.

값 도출 논리에 대해서는 입력 데이터와 조건에 따라 o,x로 나누고 이것을 true, false라고 표현하며 다시 0,1이라고 한다. 논리의 종류는 양, 음의 논리가 있고 조건의 종류는 and, or, not, xor가 있다. 양, 음이 바뀌면 조건도 반대로 인식하면 된다.

입력 데이터의 종류는 0,1,부호(음,양), 소수점 이하의 수가 있으며 소수점 이하도 이진수로 표현할 수 있다. 예를 들면 -0.5는 -0.1, -0.25는 -0.01이다.

흥미로운 사실은 어차피 디지털은 아날로그와 다르게 미묘한 것을 표현하지 못하기 때문에 각종 오버플로 값을 1을 더하여 동일시 한다. 이렇게 함으로써 CPU의 용량을 줄일 수 있다. 그리고 덧.뺄셈 기능을 모으기 위해 음양의 종류를 통일할 수 있는데 예를 들면 음수를 2의 보수(모든 비트를 반전 후 1을 더함)로 표현하는 시스템이 있다. 현재 컴퓨터나 스마트폰으로 활용되고 있다.

이런 논리의 활용으로 귀결되는 것은 CPU용량을 줄이고 기계 부속품을 줄이는 것이다.

2장에서는 CPU(중앙처리장치) 구조와 활용에 대한 내용이다. 모든 부품이 서로 만나 처리하도록 하려면 부속이 10개 일 때 통신 전선은 90벌, 개개의 통신선은 64비트로 부속 하나와 연결할 경우 64벌의 전선이 필요하고 합계 5,760벌의 전선이 필요하다. 이럴 경우 전선 배열이 복잡하고 고장 없이 가동시키는 것은 매우 어렵다. 이 모든 부품을 한 세트에 전선으로 집속하여 공유할 수 있도록 하는 것이 있는데 이 전선을 '버스'라고 부른다. 동시에 사용하면 쇼크가 일어나므로 시분할 해야하고 시분할에서 사용하는 버스를 시분할 버스라고 한다. 이후 내.외부버스, 주소버스에 대한 설명이 이어진다.

Intel8080은 8진수, 16진수 보다 친숙한 표기를 통해 프로그램을 기술하고 명령을 이행하도록 하는 것이다. 이 언어를 어셈블리 언어라고 하고, 번역하는 것을 어셈블이라고 한다.

이후로 원하는 값을 도출할 수 있는 수단으로써의 논리들을 열거하고 CPU에서의 연산작용에 대해 설명한다.

3장은 시스템 관련이다. 기억장치, RAM, ROM, 백업, 캐시메모리, 특정 주소에서 이용 가능한 메모리 뱅크 전환 등 작동논리, 그리고 입출력 장치의 종류와 설명, 종류별 제어기(컨트롤)에 대한 설명, 이외에도 텍스트 VRAM 과 그래픽 VRAM, 사운드 생성기, 디코더(코드를 컴퓨터가 명령을 이행할 수 있게 변환), 클럭 생성기(동작의 기준이 되는 신호를 만들어 냄), 버스버퍼, 키보드와 마우스 인터페이스, 전원(전력 공급), 각종 기능이 있는 부품 탑재를 위한 보드에 대해 설명 및 초창기부터 현재까지의 활용내용을 덧붙인다.

4장은 펌웨어는 시스템이 리셋될 때 최초로 실행되는 소프트웨어이다. 구동 스타일은 여러 가지일 수 있으며 구동 순서와 그에 대한 설명이 이어진다.

5장은 운영 체제(OS)편이다. 역할은 크게 두 가지인데 인간을 위한 셸 기능과 프로그램을 위한 API(Application Programming Interface 프로그래밍 접근 적용)이 있다.

API처리를 위해 BDOS(Basic Disk Operating System)가 운용되며 하드웨어 접근이 필요할 경우 BIOS(Basic Input/Output System)를 호출한다. BIOS의 기능으로 하드웨어 초기화, 구동스타일 정하기를 들 수 있다.

6장은 어셈블러 편이다. 기계어를 사용하여 컴퓨터를 구동하도록 한다. 기계어를 16진수로 표현하도록 하거나 16진수를 기계어로 번역하도록 한다. 절대.상대.간이 어셈블러가 있으며 장.단점을 설명한다.

7장은 고급언어 편이다. 블로그 이웃 중에 C#언어 강좌를 진행하시는 분이 계시다. 책에서처럼 CPU가 어떤 운영체제든 활용 가능하니 수요가 많은 듯하다. 인터프리터와 컴파일러가 있는데 인터프리터는 입력 코딩을 해석하여 실행하도록 하는 것이고 컴파일러는 입력 코딩을 '실행 파일'로 번역하도록 한다. 최근에는 둘의 절충형 언어를 주로 쓰며 무수한 변종을 갖고 있다. 메모리 호율도 좋고, 활용도가 높다는 뜻이다.

8장은 보안이다. 보안은 기본은 복제인가 보다. 그리고 키입력 감시프로그램, 자기삭제 프로그램을 소개한다.

책은 다정하고 세심하게 풀어나가서 컴퓨터라는 딱딱한 이미지를 잊고 이야기책 읽듯 다가갈 수 있어 좋았다. 하지만 버퍼, 플래그플리플롭, 엔디언 등 각종 논리에 대한 설명과 시스템에 대해서도 아무런 정의 없이 비교나 사용에 대한 역사가 이어지는데 어떨 경우 이런 조건들을 사용하는지에 대한 예시가 부족하여 활용에 대한 이해가 어려웠다. 그리고 분야별 연혁보다는 최신형 프로그램 작동에 대한 설명이 더 자세했다면 더 흥미로웠을 것이다. 아니면역사와 저자의 개인 의견은 때로 부록으로 하고 최신 프로그램의 안내와 설명, 예시 위주로 편성되었다면 더 일목요연하지 않았을까 한다. 부록은 선물같이 느껴졌을 듯.

이 책은 컴퓨터에 대한 전체적인 흐름 체크에 편리하며 프로그래밍 분야 전문대 이상의 지식을 가지고 봐야 각종 논리에 대한 구체적인 사항을 이해하여 원하는 데로 적용할 수 있을 것이다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
언플러그드 교과서 1 - 재미있는 놀이로 알아보는 언플러그드 교과서 1
전재천 외 지음 / 아티오 / 2019년 4월
평점 :
장바구니담기


이 책은 대구 초등학교 선생님들이 만든 책으로 이 분들은 '소프트웨어와 정보'라는 대구교과서를 집필하신 분들이다. 책 내용을 따라가다 보면 소프트웨어 구상을 위한 논리력 향상에 도움을 준다. 좌뇌 발달에 좋다는 것이다

우뇌는 감각적인 행위를 통해 감수성과 영감을 키워준다. 좌뇌는 타고나거나 훈련 외엔 별 방도가 없다. 1때 학원에서 컴퓨터 베이직 언어를 배운 적 있다. 매일 그 날의 명령어를 통해 주어진 값을 구한다. 골치 아팠지만 성취감도 있고 이런 류의 답내기를 위한 해결 시간이 빨라지는 것을 느꼈다. 지치지 않고 꾸준히 일정시간 훈련 한다면 많은 도움이 될 것이다다혈질에 성질부터 나는 나로서는 이런 훌륭한 책이 있어 다행이라고 생각한다.

 

책 제목은 '언플러그드 교과서'이다. 소프트웨어 교육용 책인데 필기구를 이용한 훈련용 책이다. 흥미롭고 간편해서 좋다.

스프트웨어란, 어떤 기기에 코딩 프로그램을 입력하여 원하는 대로 활용하는 것이다. 데이터와 조건이 주어져야 하며 이를 활용하여 일련의 과정을 통해 결과값을 도출한다. 주변 사례를 통해 응용 사례를 추가로 도출한다면 목표를 이룬 것이다. 주변 사례로는 도서관 등의 기관, 가전제품, 마트, 신호등, 자판기와 드론, 자율주행 자동차, 자동번역기 등의 로봇이 있다. 여기서 더 나아가 전화기와 컴퓨터의 결합인 스마트폰, 시계와 몇 가지 프로그램이 입력된 기기와의 결합인 스마트 시계가 있다.

2권으로 구성되어 있는데 1권은 5세도 이해할 수 있게끔 코딩이란 어떤 것인지 어떻게 활용되고 있는지 알기 쉽게 되어 있다.

 

프로그래밍을 활용한 연산과 조건을 통해 원하는 값을 얻을 수도 있고 그림이나 사진을 파일로 만들 수도 있다.

2권에서 소개하는 예시로는 목적지까지 가는 최단거리 찾기, 버스 도착시간 알려주기, 호우.폭염.지진.건조 등 재난 사항 알려주기, 날씨 안내 등이 있고 알고리즘 짜기는 해당 사이트에 접속하여 코딩해 볼 수 있다.

훈련 과제들로는 온라인 쇼핑, 무선으로 영상기기를 통한 영화 및 음악 감상, 시계를 통한 건강상태 체크 등의 소프트웨어 사용 경험 나누기, 규칙이나 조건을 주고 답 구하기, 하루일과 등의 순서가 있는 과정을 알고리즘화 하기, 이진법 이해하기(케이블에는 적은 수의 데이터가 지나가야 오차가 줄어드므로 형태를 0,1이라고 표현하기로 함)

 

결국 '삐리삐리 주인님 뜻대로 하겠습니다.'할 명령어  잘 만들기 훈련이라 보면 된다. 가까이 이용하고 이용할 수 있는 기계는 명령어 기반이 잘 된 컴퓨터를 이용하여 활용하는 것.

 

 

 


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo