2010년 12월 12일 일요일

Herbert.A.Simon

Herbert.A.Simon

허버트 알렉산더 사이먼(Herbert Alexander Simon, 1916년 6월 15일 ~ 2001년 2월 9일)은 독일계 미국인으로 제한된 상황에서의 의사 결정 모델에 관한 이론으로 1978년 노벨 경제학상을 수상한 미국의 심리학자/경제학자 및 인지과학자다.

그는 인간 인지능력의 한계(제한적 합리성)라는 관점을 가지고 주류 경제학이 가정하는 합리성에 대해 그 체계를 비판한 최초의 사회학자였다. 사이먼의 주장은 후에 경제학과 심리학이 결합하는 행동 경제학으로 꽃을 피우지만, 그가 처음 합리성에 의문을 제기한 당시에는 그의 논점이 아직 개념적 단계에 머물렀고, 모델화가 어려웠기 때문에 대다수의 경제학자들에게 인정받지 못했지만 후에 행동 경제학 형성에 큰 영향을 끼친다. 또한 그는 디지털 컴퓨터는 단순한 숫자 조작 기계라기보다 ‘범용 목적의 상징(기호)조작체계’(general purpose symbol manipulation system)인 튜링기계로 간주할 수 있다고 주장하였다

생애
미국 위스콘신 주 밀워키에서 태어난 그는 전자 제어부분 디자이너로 피드백 장치를 개발하는 데 크게 기여한 아버지의 영향을 받아 20여개국의 언어를 읽을 정도로 다재다능했던 인물로 알려져 있다. 1933년 시카고 대학에 입학하여 정치학을 전공했으나, 이후 대공황과 세계대전의 여파로 사회 문제에 관심을 가지게 됨에 따라 평생동안 연구한 주제인 '신고전주의 경제학에서 가정하는 합리성이 충족되지 않은 상황에서 인간은 어떻게 논리적으로 사고하는가?'에 몰두하게 된다. 1939년 - 1942년까지 캘리포니아 버클리 대학의 행정 연구소에서 '캘리포니아 주 정부 산하 구제사업부에 몇명의 사회사업가를 두는 게 적절한가'를 결정하는 연구로 '조직 이론' 발전에 영향을 주며, 이후 RAND의 시스템 연구소에서 오랜 연구 파트너인 앨런 뉴얼(Allen Newell),을 만나 1956년 인지과학(Cognitive Science)의 탄생에 지대한 역할을 한다. 또한 다니엘 카너먼 (Daniel Kahneman)과 함께 행동 경제학 탄생에 결정적인 역할을 한다. 이후 문제해결과 관련한 연구를 수행하다 84세의 나이로 세상을 떠났다. 그는 경영학, 조직학, 컴퓨터 과학, 인공지능, 인지 과학, 경제학 등 다양한 분야에 막대한 영향을 준 학자로 평가 받고 있다.


정보처리 이론
1960년대 까지 학습이론의 결합주의적 관점이 주류를 이루었다. 그러나 결합주의적 관점은 유기체의 적극적인 기능을 설명하기가 힘들었다. 이에 인간이 외부 세계로부터 획득한 정보를 어떻게 지각하고 이해하고 기억하는가를 연구하는 정보처리이론이 등장하게 되었다.

* 인간기억은 복잡하고 능동적인 정보조직자다. 기억체제는 정보를 장기 기억고에 저장하기 위해 변형시킨다.

* 학습과정은 자극에 주의를 기울이고, 그 자극을 부호화 하여 저장, 인출하는 단계를 거친다.

* 학습은 환경에서 들어온 정보가 인지구조로 변형되어 들어가는 과정이다.

* 학습과정에 대응되는 교수과정은 새로운 자극의 수용안내, 부호화 촉진, 저장과 인출의 촉진이다.

* 교수계획의 주요 요점은 새로운 학습을 기존의 인지구조에 관련 시키는 것이며, 정보를 유의미한 부호로 변형시키는 것이다.

* 정보처리 이론에서는 학습이 일차적 연구과제가 아니며, 관련된 교실 적용은 간접적인 추론일 뿐이다. 그러나 실제 교실에 적용할 수 있는 많은 시사점을 가지고 있다.



노벨 경제학상을 수상할 정도로 경제를 이해할 수 있다는 것이 놀라웠고, 이런 위인들의 이론, 업적등을 조사하다 보면 도움이 되지 않을까 해서 조사해 보았다. 책을 접하기 전에는 알지 못하는 사람이었지만 조사하고나니 대단한 사람인 것을 알았다. 항상 위인들을 조사하면 느끼는 것이지만 열심히 노력해서 훌륭한 사람이 되야겠다 라는 생각이 든다.

2010년 11월 20일 토요일

Disk Scheduling

디스크 스케줄링이란?
- 디스크 입출력을 위해 대기하고 있는 요구 ( Request )들 중에서 어느 요구를 먼저 처리할 것인가를 결정
- 대기 중인 요청 들에 대해 서비스하는 순서를 어떻게 결정하는가에 따라 디스크 시스템의 성능이 크게 달라지기 때문이다.

< 디스크 스케줄링 대상 >
탐구시간 ( Seek Time ) - 데이터의 기록/판독을 위해 디스크 헤드를 필요한 실린더로 이동시키는 데 소요되는 시간
회전지연시간 ( Rotational Delay, Latency Time ) - 디스크 헤드가 지정된 실린더에 도착한 후 지정된 섹터가 헤드 아래에 도착
                                                                               할 때까지 기다리는 시간
데이터전송시간 ( Data Transmission Time ) - 디스크 주소 상의 표면 번호에 따라 해당 섹터를 읽어 전송하거나 전동된 데이터를
                                                                       해당 섹터에 기록하는 시간
데이터 접근 시간 ( Data Access Time ) - 탐구 시간 + 회전 지연 시간 + 데이터 전송 시간
비중 - 탐구 시간 > 회전 지연 시간 > 데이터 전송 시간

< 탐구 시간 최적화 스케줄링 >
FCFS ( First Come First Served ) 스케줄링
- 디스크 입출력 요구들이 도착한 순서대로 서비스 하는 기법, 디스크 입출력에 대한 부하가 작을 경우에 적합 /  순서대로 서비스 하는 것이기 때문에 비효율 적이다.
160/200/90/170/20/190/120/130
100 160 200 90 170 20 190 120 130 순서로 진행.
# 처음 디스크 헤드 위치 - 100번 실린더
# 총 이동거리 - 60 + 40 + 110 + 80 + 150 + 170 + 70 + 10 = 690

SSTF ( Shortest Seek Time First ) 스케줄링
- 응답 큐에 대기 중인 요구들 중, 현재 헤드의 위치부터 가장 가까운 요구를 먼저 서비스하는 방식
- 큐의 요구들을 처리하는 동안 헤드의 이동 거리 극소화 -> 단위 시간당 처리량 극대화
- 평균 응답 시간도가 비교적 낮게 유지 -> 단 디스크 시스템의 부하가 크지 않을 경우
- 응답시간에 대한 예측성이 저하됨 ( 부하가 커지면 무기한 연기 현상 초래 가능 )

가장 가까운 위치부터 서비스하기 때문에 avg seek time이 적으나 공평하지 못하다.

160/200/90/170/20/190/120/130
100 90 120 130 160 170 190 200 20 순서로 진행

# 처음 디스크 헤드 위치 - 100번 실린더
# 총 이동거리 - 10 + 30 + 10 + 30 + 10 + 20 + 10 + 180 = 300

SCAN 스케줄링
- SSTF 기법과 비슷함
- 현재 큐에 대기 중인 요구들 중에서, 현재 헤드의 진행 방향으로 현재 헤드의 위치와 가장 가까운 요구를 먼저 서비스하고, 마지막
  실린더에 도착했을 때에 방향을 전환한다.
- SSTF 기법의 예측성이 저하되는 단점 해결
  - 대체적으로 단위 시간당 처리량, 평균 응답 시간의 면에서 우수함
  - 실제 디스크 시스템에서 사용되는 스케줄링 기법의 근간
  방향을 바꾸지 않고 한방향으로만 서비스한다.
    가장 안쪽, 바깥쪽 track은 상대적으로 손해이다.
160/200/90/170/20/190/120/130
100 90 20 0 120 130 160 170 190 200 순서로 진행
# 처음 디스크 헤드 위치 - 100번 실린더, 먼저 0번 실린더 쪽으로 이동
# 총 이동거리 : 10 + 70 + 20 + 120 + 10 + 30 + 10 + 20 + 10 = 300

LOOK 스케줄링 / 엘레베이터 알고리즘
- SCAN 스케줄링 기법과 유사
- 헤드가 진행하는 도중 진행 방향의 앞쪽으로 더 이상의 요구가 없으면 양 끝의 실린더까지 진행하지 않고 그 자리에서 방향을 바꿈

160/200/90/170/20/190/120/130
100 90 20 120 130 160 170 190 200 순서로 진행

# 처음 디스크 헤더 위치 - 100번 실린더, 먼저 0번 실린더 쪽으로 이동, 서비스 하는 동안 추가 요구는 없다고 가정,
# 총 이동거리 - 10 + 70 +100 + 10 + 30 + 10 + 20 + 10 = 260

N-step SCAN 스케줄링
- SCAN 스케줄링 기법과 유사
- 디스크헤드가 방향을 바꾸는 시점에서 큐에 대기 중인 요구들만을 대상으로 서비스 진행
- SCAN과의 차이점 ( 서비스가 진행되는 중에 도착한 요구들에 대해서는 다음번 방향을 바꾼 후에 처리 )
- SSTF나 SCAN기법 보다 응답 시간의 분산이 작음, 무기한 연기의 가능성 배제

# 만약 헤드가 0번 실린더 쪽으로 이동 중 80번 실린더에 요구가 추가로 도착한 경우
SCAN - 90번 실린더 요구 처리 후, 80번 실린더로 이동하며 서비스 시작
N-step SCAN - 20번 실린더 처리 후 0번 실린더에서 방향을 바꾼 후 서비스 시작

C-SCAN ( Circular SCAN ) 스케줄링
- SCAN 기법과 유사
- 미리 정해진 서비스 방향 ( 안쪽 또는 바깥쪽 )으로 헤드가 이동할 때에만 큐의 요구들을 처리
- 응답 시간의 분산이 매우 작은 기법, 응답 시간에 대한 예측성이 매우 높다.

160/200/90/170/20/190/120/130
100 90 20 0 255 200 190 170 160 130 120 순서로 진행

# 처음 디스크 헤더 위치 - 100번 실린더, 먼저 0번 실린더 쪽으로 이동, 서비스 하는 동안 추가 요구는 없다고 가정,
# 총 이동거리 - 10 + 70 +20 + 255 + 55 + 10 + 20 + 10 + 30 + 10 = 490

C-LOOK 스케줄링
- C-SCAN 기법과 기본적으로 비슷하다.
- LOOK 기법처럼 헤드의 진행방향을 더 이상 요구가 없다면 즉시 방향을 바꿈

[출처] [Win] Disk Scheduling|작성자 OpenSec


avg seek time 효율성 순서 : SSTF → SCAN → C-SCAN → FCFS
fairness 효율성 순서 : FCFS → C-SCAN → SCAN → SSTF
disk heavy load인 경우 효율성 순서 : C-SCAN → SCAN → SSTF 


2010년 10월 31일 일요일

Assembly language로 프로그래밍 하기!!

세가지 수를 입력 받아서 큰수부터 나열하는 프로그램을 짜라는 과제다.

먼저 프로그래밍을 어떤식으로 할 건지에 대해서 방향을 잡기 위해

먼저 C로 코드를 작성하자.

#include <stdio.h>
int main(void)
{
 int num1, num2, num3;
 scanf("%d %d %d" , &num1, &num2, &num3);
 if (num1 < num2)
  if (num2 < num3)
   printf(" num1 num2 num3 ");
  else
   if (num1 < num3)
    printf(" num1 num3 num2 ");
   else
    printf(" num3 num1 num2 ");
 else
  if(num2>num3)
   printf(" num3 num2 num1 ");
  else
   if(num1 < num3)
    printf(" num2 num1 num3 ");
   else
    printf(" num2 num3 num1 ");
 return 0;
}
이런식의 코딩이 가능하다

그러면 이제 이를 활용해서 assembly langauge로 코드를 짜보자

BR      main
num1:    .BLOCK  2                                       
num2:    .BLOCK  2                                       
num3:    .BLOCK  2                                       
main:    DECI    num1,d                                  
            DECI    num2,d
            DECI    num3,d
         BR      num12
num12: LDA    num1,d
         SUBA    num2,d
         BRLT    num12a
         BR      num12b
num12a: LDA    num2,d
         SUBA    num3,d
         BRLT    num123
         BR      num23

num23: LDA    num1,d
         SUBA    num3,d
         BRLT    num132
         BR      num312
num12b: LDA    num3,d
         SUBA    num2,d
         BRLT    num321
         BR      num13
num13: LDA    num1,d
         SUBA    num3,d
         BRLT    num213
         BR      num231
num123: DECO num1,d
              DECO num2,d
              DECO num3,d
              BR finish

num132: DECO num1,d
              DECO num3,d
              DECO num2,d
              BR finish
num213:DECO num2,d
              DECO num1,d
              DECO num3,d
              BR finish
num231: DECO num2,d
              DECO num3,d
              DECO num1,d
              BR finish
num312: DECO num3,d
              DECO num1,d
              DECO num2,d
              BR finish
num321: DECO num3,d
              DECO num2,d
              DECO num1,d
              BR finish
finish:  STOP
         .END


명령어는 그렇게 많이 필요한 건 아니었지만, 그래도 오래걸렸다 ..휴

그래도 역시 C로 코딩 하는게 편하고 좋은듯 .... (익숙해서그런진몰라도 ㅋㅋ)

2010년 10월 27일 수요일

효율성이 보장되면서 가격이 저렴한 컴퓨터를 만들어보자!!

컴퓨터를 사용하는 데에 있어 중요하게 여기는 건 인터넷 사용에 무리가 없을정도로 돌아가야 하고, 고샤양의 게임은 아니더라도 기본적인 게임들은 돌아가야 합니다.
문서작업과 여러 부가 기능들은 인터넷이 잘 돌아가고 중간사양의 게임이 잘 돌아간다면 무리가 없을 것으로 보입니다.
저는 게임을 하더라도 그렇게 고사양의 게임은 안하는 편이기 때문에 가격의 효율을 따져 컴퓨터 부품들을 골라보았습니다.

CPU : AMD 페넘II-X4 965 Black Edition (데네브)
게이밍, 편집과 HD 컨텐트까지 할 수 있는 강력한 기능에, 적절한 가격으로 사람들이 많이 선호하는 제품입니다.
3.4GHz의 동작 속도와 4개의 코어 수, 배수 제한 해제의 특징을 가지고 있습니다.
가격대비 성능이 좋은 것 같아 골랐습니다.

메인 보드 : GIGABYTE GA-H55M-USB3
그리 비싸지 않은 제품인데 불구하고 소비자 선호도 1위를 차지한 제품입니다.
이유는 제품의 안정성과 조립시 편의성이 보장되고, 좋은 성능과 부가기능 덕분입니다.
이 제품은 가격비 성능비가 워낙 좋기 때문에 피시방에서도 주로 쓰이는 제품으로, 신뢰가 가서 선택했습니다.

그래픽 카드 : XFX 라데온 HD 5670 D5 512MB Rextech 
보급형을 뛰어넘은 3D 성능, 동영상 가속, 저발열, 저전력 그리고  DirectX 11 과 ATI Eyefinity 까지 소비자의 마음을
충족시켜 줄 수 있는 모델입니다.
그리고 중요한 것은 가격이 다른 제품에 비해 상당히 저렴한 편이기 때문에 선택했습니다.

케이스 : BESTECH 세븐
무난한 모양에 충분한 공간이 확보되어 있고, 가격이 상당히 저렴합니다.
물론 케이스가 내부 기기들은 보호하고, 이를 잘 조립해야 컴퓨터의 성능이 최고로 발휘되지만,
케이스는 디자인을 제외하고, 낮은 가격에 치중하도록 노력했습니다.

RAM : 삼성전자 DDR3 2G PC3-10600
2GB의 용량을 가지고 있는 제품입니다. RAM의 가격이 계속 내려가고 있는데,
그 중 무난한 제품입니다. 그리 비싸지 않으면서 호환성이 좋고, 안정적인 메모리 이기 때문에 선택했습니다.

HDD/SDD : Seagate 1TB Barracuda 7200.12 ST31000528AS (SATA2/7200/32M)
1TB의 대용량을 지원하고, 뛰어난 성능을 자랑하는 제품입니다. 전송률은 최대 3.0GB/s 입니다.
또한 작동환경이 변하면 알아서 헤드와 원판의 거리를 조절하는 안정성을 높인것이 눈에 띄는 제품 입니다.
또한 가격도 적당하고, 친환경 하드디스크로서 소비전력, 소음, 용량 모두 줄일 수 있는 효율적인 제품이라 선택했습니다.

ODD : LG전자 Super-Multi GH-22LS50
ODD로 유명한 회사인 LG전자 제품을 택했는데, 하나의 드라이브로 모든 DVD 미디어를 기록할 수 있는 장점이 있는 제품입니다.
또한 디스크 손상이 있어도 부드럽게 재생할 수 있는 기능을 탑재하였기 때문에 안정성을 높일 수 있습니다.
가격도 그리 비싼 편이 아니기 때문에 무난한 제품입니다.
하지만 단점이 있다면, 작동시 발생하는 소음이 있을 수 있습니다.

파워 : Heroichi HEC-Rapter 500WP
에너지 절감, 시스템 고장의 따른 이상과 내부 이상으로부터 시스템을 보호 할 수 있고, 확장성,
안정적인 전원 공급, 고효율 설계를 통한 에너지 절감 등의 장점이 있는 제품 입니다.
가격도 저렴하고, 여러가지 장점이 많은 제품으로 보여 선택했습니다.

이렇듯 효율성 높고, 가격이 저렴한 제품 위주로 골라 보았지만, 아직 이를 직접 사서 조립해 본것이 아니기 때문에
각 부품간 호환이 될지도 알지 못하고, 각 제품이 조화롭게 동작해서 앞에 제시했던 조건들을 만족할 지는 모르겠지만,
이렇게 한 번 부품을 골라 봄으로서 향후에 컴퓨터 부품을 조립할 기회가 생겼을 때 훨씬 수월하게 일을 진행 할 수 있을 것 같습니다.
의미있었던 과제였던 것 같습니다.

2010년 10월 9일 토요일

Boolean algebra (불 대수, 부울 대수)

1. Boolean algebra는?

영국의 수학자 조지 불(George Boole)이 18세기 중엽에 창안한 대수의 한 형식. 컴퓨터 동작의 기초가 된다. 불 대수는 x나 y의 수치적 상관관계를 다루지 않고 논리적 상관관계를 다루는데, 이것은 연산의 종류와 변수들이 참인가 거짓인가에 따라서 논리적 명제들이 참 아니면 거짓이라는 논리에 바탕을 두고 있다. 불 대수의 2가지 중요한 측면은 ㉠변수들을 참 또는 거짓의 단지 두 값 중의 하나로 한정할 수 있고, ㉡이들 변수 간의 상관관계를 논리곱(AND), 논리합(OR), 부정(NOT) 등의 연산자로 논리적으로 나타낼 수 있다는 것이다. 불 대수의 이 2가지 측면은 디지털 계산에 사용되는 전자 회로에 응용될 수 있으므로 정보를 처리하고 문제를 해결하는 데 사용된다. 예를 들면, 참과 거짓은 전압의 유무에 의해 쉽게 컴퓨터 고유 언어의 2진수 1(참)과 0(거짓)으로 나타낼 수 있다. 또한 불 논리는 ‘만일 A가 참이고 B가 참이면 결과는 언제나 참이다.’를 의미하는 ‘A AND B=true’와 같은 명제에 바탕을 두고 있다. 이러한 논리는 컴퓨터 회로에 논리 게이트 로 설계해 놓을 수 있다. 논리 게이트는 비트 1과 비트 0이 불 논리에 일치하는 결과(출력)를 생성하도록 전기의 흐름을 제어한다. 하나의 컴퓨터 내에 AND, OR, NOT이나 기타 불 연산자를 나타내는 논리 게이트를 결합할 수 있으며, 하나의 논리 게이트 출력이 다른 논리 게이트 입력으로 투입되어 최종 결과가 두 수의 합과 같은 의미 있는 데이터가 되도록 할 수 있다.

2. Boolean algebra 기본 공식

1]

1) X + 0 = X 2) X * 1 = X
3) X + 1 = 1 4) X * 0 = 0
5) X + X = X 6) X * X = X
7) X + X(bar) = 1
8) X * X(bar) = 0
9) X(bar*2) = X

2]

◎ 교환 법칙
⑩ X + Y = Y + X
⑪ X Y = Y X

◎ 결합 법칙
⑫ X + ( Y + Z ) = ( X + Y ) + Z
⑬ X ( Y Z ) = ( X Y ) Z

◎ 분배 법칙
⑭ X ( Y + Z ) = X Y + X Z
⑮ X + Y Z = ( X + Y )( X + Z )

3. Boolean algebra 에서 변수들의 상관관계를 표현하는 방법인 논리 게이트

1.OR Gate
 1+1 = 1

입력
출력
A
B
Y
0
0
0
0
1
1
1
0
1
1
1
1





논리식 : A+B

2.AND Gate
 
1*1=1,1*0=0
입력
출력
A
B
Y
0
0
0
0
1
0
1
0
0
1
1
1


논리식 : A*B

3.NOT Gate
낫게이트. 부정게이트 컴퓨터는 참을 0 아닌 모든수. 거짓을 0. 게이트를 통과하게 되면 값이 1 0으로 0 1 반전
입력
출력
A
Y
0
1
1
0

논리식 :  A(bar)

4.NAND Gate
AND+NOT.

입력
출력
A
B
Y
0
0
1
0
1
1
1
0
1
1
1
0

논리식 : A*B(전체 bar)

5.NOR Gate
OR+NOT.

입력
출력
A
B
Y
0
0
1
0
1
0
1
0
0
1
1
0

논리식 : A+B (전체 bar)
  
6.EX - OR Gate (배타적 논리 게이트)
서로 같지 않으면 1이 출력.
입력
출력
A
B
Y
0
0
0
0
1
1
1
0
1
1
1
0

7.EX - NOR Gate (일치 논리 회로)
서로 같으면 1출력.

입력
출력
A
B
Y
0
0
1
0
1
0
1
0
0
1
1
1

 

2010년 10월 5일 화요일

ASCII and Unicode

유니코드 (Unicode)


국제표준으로 제정된 2바이트계의 만국 공통의 국제 문자부호 체계(UCS: Universal Code System)를 말한다. 애플컴퓨터·IBM·마이크로소프트 등이 컨소시엄으로 설립한 유니코드(Unicode)가 1990년에 첫 버전을 발표하였고, ISO/IEC JTC1에서 1995년 9월 국제표준으로 제정하였다. 공식 명칭은ISO/IEC 10646-1(Universal Multiple-Octet Coded Character Set)이다.


데이터의 교환을 원활하게 하기 위하여 문자 1개에 부여되는 값을 16비트로 통일하였다. 코드의 1문자당 영어는 7비트, 비영어는 8비트, 한글이나 일본어는 16비트의 값을 지니는데, 이를 모두 16비트로 통일한 것이다. ISO/IEC 10646-1의 문자판에는 전세계에서 사용하고 있는 26개 언어의 문자와 특수기호에 대해 일일이 코드값을 부여하고 있다. 최대로 수용할 수 있는 문자수는 6만 5,536자이다. 이 가운데 3만 8,885자는 주요 국가의 언어를 구현하는 용도로 이미 할당되어 있고 6400자는 사용자 정의 영역으로, 나머지는 2만여 자는 새로 추가될 언어 영역으로 각각 비워두고 있다. 코드 할당비율을 보면 한자가 39.89%로 가장 많고, 한글 17.04%, 아스키 및 기호문자 10.39% 등의 순이다.

여기에 포함된 한글 코드 체계는 옛 한글의 자모를 포함한 한글자모 240자(HANGUL JAMO, 11열)와 한국표준인 KSC 5601의 조합형 한글자모 94자(HANGUL COMPATIBILITY, 31열), 한글에서 구현할 수 있는 최대 글자수 1만 1,172자를 가나다순으로 배열해 놓은 완성형(HANGUL, AC열∼D7열) 등 3종으로 되어 있다. 또한 각국의 문자를 2바이트로 수용하기 위해 우리나라와 중국·일본·타이완의 한자를 통합하였다. 한자의 비중이 높은만큼 동양권에서는 서체의 통합과 입출력 방식에 대해 계속 논의를 해오고 있다.

* 영문/숫자/한글/한자 등 모든 글자는 이론적으로 2바이트입니다. 그리고 파일에 저장될 때도 2바이트로 저장됩니다.

아주 희귀한 문자들은 2바이트를 초과할 수도 있습니다.

단, UTF-8 유니코드가 파일에 저장될 때, 영문/숫자는 아스키 코드와 똑같이 1바이트를 사용하고, 한글 등은 3바이트로 파일에 저장됩니다. UTF-8 유니코드는 아스키 코드와 영문 영역에서는 100% 호환됩니다. 만약 UTF-8 유니코드 문서에 한글 등이 전혀 없고, 영문과 숫자로만 이루어져 있다면, 그 파일은 아스키 코드와 동일합니다.

웹페이지를 유니코드로 만들 때에는 UTF-8 유니코드를 사용합니다.


* 전세계의 모든 언어를 하나의 파일에 쓸 수 있습니다. 물론 각 언어에 해당하는 폰트가 설치되어 있어야 합니다.

* 유니코드의 역사가 그리 오래되지 않아서, 아직도 유니코드를 잘 인식하지 못하는 컴퓨터가 있습니다. 특히 윈도우98이나 오래된 유닉스 시스템의 경우입니다. 그렇지만 유니코드로 작성된 인터넷 웹페이지는 대부분 잘 인식합니다.


(1) 보통의 한국어 텍스트 문서: 이것은 아스키 문서이며 유니코드가 아닙니다. 영문/숫자/기호는 1바이트. 한글과 한자는 2바이트로 표현됩니다. euc-kr 또는 ksc_c_5601-1987 로 불리는 인코딩이며 웹페이지 작성에 사용할 수 있습니다. 특수한 외국어 문자나 일본식/중국식 한자는 표현할 수 없습니다.

다음의 2개가 유니코드입니다:

(2) 일반 유니코드(Unicode): 모든 글자를 2바이트로 표현합니다. 전세계 모든 글자들을 한꺼번에 표현할 수 있습니다. 인터넷에 HTML 파일로 올릴 수 없습니다. 즉 웹페이지 작성에 쓸 수 없습니다.

(3) UTF-8 유니코드: 영문/숫자/기호는 1바이트로, 한글과 한자 등은 3바이트로 표현합니다. 전세계 모든 글자들을 한꺼번에 표현할 수 있습니다. 웹페이지 작성에 쓸 수 있습니다. (저의 mwultong.blogspot.com 이 블로그도 UTF-8 로 되어 있습니다)



아스키코드 (ASCII)




1963년 미국표준협회(ASA)에 의해 결정되어 미국의 표준부호가 되었다. 미니컴퓨터나 개인용 컴퓨터(PC)와 같은 소형 컴퓨터를 중심으로 보급되어 현재 국제적으로 널리 사용되고 있다.

아스키는 128개의 가능한 문자조합을 제공하는 7비트(bit) 부호로, 처음 32개의 부호는 인쇄와 전송 제어용으로 사용된다. 보통 기억장치는 8비트(1바이트, 256조합)이고, 아스키는 단지 128개의 문자만 사용하기 때문에 나머지 비트는 패러티 비트나 특정문자로 사용된다.

일반적으로 컴퓨터는 데이터를 8개의 비트 단위로 묶어 한 번에 처리한다. 비트는 2진법의 0과 1 가운데 하나를 나타내는 단위이다. 즉, 1비트는 0이 될 수도 있고, 1이 될 수도 있다. 비트 8개를 모아 놓은 것을 바이트(byte)라고 부른다. 그러므로 1바이트로 표시할 수 있는 최대 문자의 수는 256조합이 된다.

따라서 컴퓨터에서는 8비트씩을 묶어 처리하는 것이 가장 효율적이다. 예컨대 7개 비트 이하로 묶을 경우에는 표현 가능한 수가 128이 된다. 그러나 이 숫자로는 세계 여러 나라에서 사용하는 모든 숫자·국가언어·기호 등을 충분히 표현할 수 없다. 반면에 9비트 이상일 경우에는 512가지나 되어 필요없는 영역이 많이 생기게 된다. 이 때문에 256가지의 영역마다 어떤 원칙에 의해 표현 가능한 모든 숫자·문자·특수문자를 하나씩 정해 놓은 것이 곧 아스키코드이다.

* 현재 사용되는 아스키(ASCII) 코드의 더 정확한 이름은 ANSI Code 입니다. (색깔을 나타내는 앤시 코드가 아니고 문자를 나타내는 규약입니다.)

* 영문/숫자 1글자는 1바이트, 한글/한자 1글자는 2바이트입니다.

* 하나의 인코딩당, 영문과 또다른 하나의 언어만 사용할 수 있습니다. 한국어 아스키 코드인 완성형(euc-kr) 인코딩에서는 영문과 한글 그리고 한국에서 사용되는 한자만 표현할 수 있습니다. 물론 일본어 가나도 섞여 있지만, 일본어 인코딩이 아니기에 일본인은 읽을 수 없습니다.

그래서 하나의 파일에 여러 언어를 동시에 표현하기 힘들거나 불가능합니다.

* 컴퓨터 초창기부터 사용되어 왔기에, 호환성이 아주 좋습니다.

* MS윈도우2000/XP이상의 운영체제에서는, 내부적으로 유니코드를 사용하지만, 사용자가 실제 읽고 쓰는 텍스트 문서는 대부분 아스키 코드입니다.

진법에 관하여~

진법

가장 간단한 진법은 1진법으로, 모든 자연수를 그 수 만큼의 숫자로 표현하는 것이다. 예를 들어서 숫자 7은 *******라고 표현할 수 있다. 일반적으로 1진법은 작은 숫자에 대해서만 유용하지만, 컴퓨터 과학 분야에서 사용되기도 한다.

1진법 표기는 좀 더 큰 값을 나타내는 다른 기호를 도입해서 간소화할 수 있다. 보통 이 기호들은 10의 거듭제곱을 표시하는 경우가 많다. 예를 들어서, *로 1을 나타내고, #로 10을 나타내고, @로 100을 나타낸다면, 403은 @@@@ ***로, 125는 @ ## *****로 간단하게 나타낼 수 있다. 고대 이집트 수 체계가 이러한 방법을 사용하며, 로마 숫자는 이 방법의 확장이다.

어떤 기호가 반복된 횟수를 나타내기 위한 특별한 기호를 도입해서 이를 더 간소화할 수 있다. 예를 들어서, 라틴 알파벳의 첫 아홉 글자(A부터 I까지)를 각각 "한 번"부터 "아홉 번"을 나타내기 위해서 사용한다면, 403이라는 숫자를 D@ C*라고 표현할 수 있다. 문자로 나타낼 때의 수 체계와 상관 없이, 한국어("사백 삼")와 영어("four hundred [and] three")를 비롯한 많은 자연어들이 이런 방법을 사용한다.

이보다 더 발전된 형태는 위치 기수법이다. 앞에서 사용한 "한 번"부터 "아홉 번"까지의 기호에 0을 나타내는 o라는 기호를 덧붙이고, 이 기호가 실제로 의미하는 값은 기호의 위치에 따라 10의 거듭제곱을 곱해서 표시한다고 하면, 2005라는 숫자는 BooE로 표현할 수 있다. 이때 0은 해당 거듭제곱을 "건너 뛰기" 위해서 필요하며, 다른 수 체계에서는 사용하지 않지만 매우 중요한 역할을 한다. 인도로부터 유래한 아라비아 숫자는 10을 밑으로 하는 위치 기수법으로, 현재 세계적으로 널리 쓰이고 있다.

위치 기수법을 사용한 계산은 앞에서 설명한 다른 기수법을 사용할 때보다 훨씬 쉽다. 또한 위치 기수법은 가능한 어떤 숫자를 표현하기 위해서 무한히 많은 기호를 도입할 필요가 없다. 예를 들어서 아라비아 숫자의 경우 0부터 9까지의 10개의 기호만으로 모든 자연수를 표현할 수 있다.

10진 위치 기수법은 현재 가장 널리 사용되고 있다. 이는 인간이 열 개의 손가락을 가지고 있다는 데서 유래한 것으로 보인다.

현재까지 역사적으로 사용되었거나 현재 사용되고 있는 기수들은 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 16, 20, 60이 있다. 그 중 2진법과 8진법, 그리고 16진법은 컴퓨터에서 자주 사용된다.






1. 진법 계산

10진법을 다른 진법으로 변환시키는 방법
10진법의 수를 다른 진법으로 나누어서 그 나머지를 취한 결과를 의미한다.

10진법을 8진법으로 변환시키는 방법
예) 10진수 259를 8진법으로 변환
259를 8로 나눈후 나머지 값을 뒤에서부터 쓰면 된다.

10진법을 2진법으로 변환시키는 방법
예) 10진수 125을 2진법으로 변환
125를 2로 나누어서 그 나머지를 뒤에서부터 쓰면 된다.

10진법을 16진법으로 변환시키는 방법
예) 10진수 735를 16진법으로 변환
735를 16으로 나누어 그 나머지를 뒤에서부터 쓰면 된다.

다른 진법을 10진법으로 변환시키는 과정
8진법을 10진법으로 변환시키는 과정
예) 8진수 413을 10진법으로 변환
4 * 82 + 1* 8 + 3 * 1

2진법을 10진법으로 변환시키는 과정
예) 2진수 1101을 10진법으로 변환
1 * 23 + 1 * 22 + 0 * 2 + 1 * 1

16진법을 10진법으로 변환시키는 과정
예) 16진수 AC5를 10진법으로 변환
A * 162 + C * 16 + 5 * 1 =

2진법을 8진법으로 변환시키는 방법
2진수 11011011011001을 8진법으로 변환시키는 과정
오른쪽부터 3bit씩 묶는다.
11 011 011 011 001


11011011011001(2) =33331(8)


2진법을 16진법으로 변환시키는 방법
①2진수 1110101011011를 16진법으로 변환시키는 과정
②오른쪽부터 4bit씩 묶는다.
1110101011011(2) = 1D5B(16)

8진법을 16진법으로 변환시키는 방법
8진수 1572를 16진수로 변환
8진수 1자리를 2진수 3bit로 펼쳤다가 2진수 4bit씩 오른쪽부터 묶는다.
1572(8) = 37A(16)
소숫점 이하 자릿수의 진법 변환
10진법을 8진법으로 변환시키는 과정
8진법을 10진법으로 변환시키는 과정
2진법을 10진법으로 변환시키는 과정


2. 진법의 연산

덧셈
10진수에서 더한 값이 10이 되었을 때 자리 올림(Carry)이 발생하듯이, 2진수에서는 더한 값이 2가 되면 자리 올림이 발생한다.

뺄셈
전자계산기에서의 뺄셈은 빼는 수의 보수를 더하여 계산한다.

보수는 2의 보수와 1의 보수가 존재한다.

2진수의 보수
1의 보수 : 각 자리값을 1은 0으로, 0은 1로 바꾸어 구한다.
2의 보수 : 1의 보수와 1을 더해서 구한다.
보기) 01001의 보수

1의 보수 : 10110
2의 보수 : 10111
1의 보수를 이용한 뺄셈
빼는 수의 1의 보수를 더한다.

자리 올림수(Carry) 발생시 : 자리 올림수를 버린다.

자리 올림수(Carry) 미발생시 : 결과값의 2의 보수를 산출한 후 부호 -를 붙인다.

예 1) (11101)2 - (00110)2의 계산


11101

+ 11010 (←00110의 2의 보수)

올림수는 버린다← 110111

올림수가 발생했으므로 올림수를 버린 나머지 결과가 최종 결과값이다.

(11101)2 - (00110)2 = (10111)2

예2) (1001)2 - (1101)2 의 계산
1001 .

+ 0011 (←1101의 2의 보수)

1100

올림수가 발생하지 않았으므로 결과값 1100의 2의 보수를 구하면, 0100이 나오고 이 값에 (-)를 붙인 값이 최종 결과값이다.

(1001)2 - (1101)2 = (-0100)2


곱셈과 나눗셈
2진수의 곱셈은 덧셈의 반복으로, 나눗셈은 뺄셈의 반복으로 이루어진다.

3.진법 변환

2010년 9월 14일 화요일

1. IT를 빛낸 위인 Blaise Pascal

블레이즈 파스칼 Blaise Pascal (1623 .6 .19~ 1662 .8 .19)

1623년 : 프랑스 클레르몽페랑 출생
1635년 : 유클리드 기하학 정리
1640년 : 파스칼의 정리 발표
1642년 : 세계 최초의 계산기 ‘파스칼리느’ 발명
1646년 : 얀세니즘 개혁운동 참가
1658년 : 적분법 창안
1662년 : 39살 젊은 나이로 생 마감
프랑스의 수학자·물리학자·철학자·종교사상가. 16세에 ‘파스칼의 정리’를 포함한 <원추 곡선론>을 발표하여 수학자들의 주목을 받았다. 그 뒤 산꼭대기에서의 실험으로 대기의 압력을 확인하였고, 확률론을 연구하여 <파스칼의 삼각형>을 썼으며, 적분의 선구자가 되었다. 또한, 유체의 압력 전파에 관한 ‘파스칼의 원리’를 발견, <유체의 평형>을 발표했으며, 오늘날의 계산기의 원조가 된 가감산기를 고안하는 등 수학 물리학에 크게 이바지하였다. 1654년부터 종교에 깊은 관심을 보여 수도원에서 성경과 아우구스티누스를 연구하고, 인간성의 모순을 비판하기도 하였다. 또한, 예수회와 신학 논쟁을 벌여 <시골 친구에게 부치는 편지(프로방샬)>란 제목으로 익명의 서한을 간행하여 일대 센세이션을 일으키기도 하였다. 종교에 관한 만년의 유고는 뒤에 <팡세>로 출판되었는데, 그 속에 “인간은 생각하는 갈대”라는 유명한 문구가 있다.
파스칼은 액체에 가해진 힘은 모든 방향으로 전해진다는 ‘파스칼의 원리’로 과학적 업적을 세운 사람이다. 뿐만 아니고, 그의 아버지를 위해 만들었다는 계산기 ‘파스칼리노’는 컴퓨터 역사에서 빠질 수 없는 중요한 업적이다.

파스칼의 삼각형

파스칼의 삼각형은 수학에서 이항계수를 삼각형 모양의 기하학적 형태로 배열한 것이다. 이것은 블레즈 파스칼에 의해 이름 붙여졌으나 이미 수세기 전에 다른 사람들에게서 연구된 것이다.
단순한 형태로, 파스칼의 삼각형은 다음과 같은 방법으로 만들 수 있다.
먼저 첫 번째 줄에는 숫자 1을 쓴다.
그 다음 줄을 만들려면, 바로 위의 왼쪽 숫자와 오른쪽 숫자를 더한다. 예를 들어, 네 번째 줄의 숫자 1과 3을 더하여 다섯 번째 줄의 4가 만들어진다.
수학적으로, 이 구조는 파스칼의 법칙을 사용하여 아래와 같이 표현한다. n 번째 줄의 k 번째 값을 ank라고 하면, 이 값은
an1 = 1
ann = 1
ank = an − 1k − 1 + an − 1k (n,k > 1)
으로 정의된다. 이때,
라는 성질에 의해
가 성립한다. 즉, n 번째 열의 k 번째 값은 과 같은 값을 가진다.
파스칼의 삼각형은 더 높은 차원으로 확장하여 일반화할 수 있다. 3차원 형태는 파스칼의 피라미드 또는 파스칼의 4면체로 부른다. 더 높은 차원의 유사체를 일반적으로 총칭하여 "파스칼의 단체"라고 일컫는다. 피라미드, 사면체, 단체(單體)를 참조하라.
다음은 14줄의 파스칼의 삼각형
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
1 11 55 165 330 462 462 330 165 55 11 1
1 12 66 220 495 792 924 792 495 220 66 12 1
1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1
1 14 91 364 1001 2002 3003 3432 3003 2002 1001 364 91 14 1
1 15 105 455 1365 3003 5005 6435 6435 5005 3003 1365 455 105 15 1

파스칼의 원리

유체(액체 . 기체)의 압력에 관한 법칙. 1653년에 프랑스의 B. 파스칼에 의해 발견된 것으로, 밀폐된 용기 안에 있는 정지 유체의 일부에 압력을 가하면 그 압력이 유체 내의 모든 곳에 같은 크기로 전달된다는 원리이다. 즉 밑넓이 A인 피스톤과 밑넓이 B인 피스톤을 연결하고 A에 P의 압력을 가하면 B에는 B/A*P가 되는 힘이 작용한다. 유압기, 수압기, 공기 제동기, 증기 해머, 압축 공기 해머 등은 모두 이 원리를 응용한 것이다.

파스칼의 계산기

지방의 세금공무원이었던 아버지를 위해 둔 프랑스 수학자 파스칼(Blaise Pascal)은 세금 세금계산서의 긴 항목을 더해야만 하는 지루한 작업에서 아버지의 수고를 덜어주고자 19세때 나이에 1642년 계산기구를 만들었다.
파스칼린(pascalin)으로 불리던 이 계산기는 0에서 9까지의 숫자가 톱니바퀴의 회전으로 돌아가면서, 더하기와 빼기, 자리올림을 할 수 있었던 최초의 기계식 계산기였다. 이 계산기는 구두 상자만한 크기의 단순한 기계였지만 이후의 계산기 발달에 세 가지 중요한 원칙을 세웠다.
첫째 자리올림은 자동으로 수행해야 한다.
둘째 뺄셈은 다이얼을 역으로 회전시킴으로써 수행한다.
세째 곱셈은 덧셈의 반복적인 수행으로 가능하다.
파스칼의 계산기는(나중에 여러 종류가 개발됨) 일을 능률적으로 처리할 수 있었지만 덧셈과 뺄셈이외의 연산은 할 수가 없었기 때문에 큰 관심을 끌지 못했다.
이를 해결한 사람이 바로 독일의 라이프니츠(Gottfried Wilhelm Von Leibnitz, 1646-1716)이다. 라이프니츠는 1672년 파리에 머물면서 동료 수학자인 호이겐스와 천문학적인 숫자를 계산할 수 있는 계산기를 발명하고자 연구를 시작하게된다.
독일의 수학자였던 라이프니쯔는 덧셈, 뺄셈에 의한 반복을 통해서 곱셈과 나눗셈 그리고 평방근을 구할 수 있는 기계를 만들었는데, 이것은 오늘날 컴퓨터에 2진수를 도입하는데 큰 영향을 준 가산기이다.
본질적으로는 파스칼린과 같은 톱니바퀴식이었지만, 스탭 실린더 (stepped cylinder)라는 9개의 이를 가진 커다란 기어들을 사용한 것이 라이프니쯔 계산기의 가장 차별화 되는 요소였다.
각각의 기어는 크기가 달라, 보다 작은 기어들이 그 위에 위치하며, 각각의 기어들은 피승수를 표시하고, 커다란 기어의 대응되는 숫자에 맞춰질 수 있도록 위치해 있게 했다. 커다란 기어들 각각의 완전한 회전 한번은 일단 피승수로 기록되며, 승수는 큰 기어들의 회전수로 표시되는것이었다.
그러나, 기계는 완벽하게 작동을 했었지만 그 결과가 대부분 믿을 수 없는 수치였기 때문에 오랫동안 사용하기에는 무리였을 따랐고 사용법도 불편했다.
이러한 라이프니츠의 구상은 천공카드 시스템을 개발한 홀러리스를 거쳐 현대 전자식 컴퓨터의 기초가 된다.

2010년 9월 5일 일요일

Computer Science illuminated..........

아직 생소하고 낯이 익지 않은 컴퓨터 과학 개론 과목이지만 이번 과제를 통해서 대략적인 개요와 내용을 파악할 수 있기를 바란다.



1. Laying the Groundwork

- 1장은 컴퓨터 전반에 관한 내용이다. 컴퓨터 시스템 계층에 대해서 다루고 있고, 하드웨어와 소프트웨어에 대해서 다루고 있다. 아직 컴퓨터에 대한 지식이 미숙한 나에게 꼭 집고 넘어가야 할 장이 될 듯 하다. 컴퓨터 하드웨어와 소프트웨어의 역사를 배울 수 있고, 더 나아가 컴퓨터를 사용하는 데에 있어 유저의 역할과 프로그래머의 역할에 대해서도 다루고 있다.
이는 컴퓨터 프로그래밍과 데이터에 관한 공부에 있어서도 기본이 될만한 내용이다.

2. The Information Layer

- 2장은 chapter2, 3으로 이루어져 있으며 1장에 비해서는 자세한 내용으로 들어간다. chapter2에서는 수의 범주 구분, 표기법의 위치, 컴퓨터 하드웨어가 나타내고 정보를 관리하는 방법인 2진수에 관해서 다룬다. 2진수는 C 프로그래밍에서도 중요하게 다루어진 바 있고, 컴퓨터를 이해 하는 데 있어 필수적이라고 생각된다. 또한 chapter3에서는 데이터와 압축에 관해서 다룬다. 아날로그 데이터와 디지털 데이터의 구분, 데이터 압축과 압축률, asc2코드, 유니코드, 텍스트 압축 등 데이터의 표현에 관한 내용이다. 이는 데이터 구조 및 실습 수업과 연관이 될 것으로 생각된다.

3. The Hardware Layer

- 3장은 제목에서 알 수 있듯이, 하드웨어에 관해 다룬다. 먼저 chapter4 에서는 기본적인 게이트들의 작동, 트랜지스터에 의한 게이트의 작동, 기본적 게이트 들의 서킷과 결합 등 컴퓨터가 어떻게 전기적 신호를 사용하는 지에 대해 알 수 있다. 그리고 다음 chapter5 에서는 컴퓨터를 구성하고 있는 주요한 구성요소들에 대해 다룬다. 3장을 이해하면 컴퓨터에 대해 한층 더 깊은 이해가 가능할 것이다.

4. The Programming Layer

- 다른 장이 1~3개의 chapter로 이루어져 있는 반면, 4장은 chapter 6~ 9로 이루어져 있다. 즉 다른 장에 비해서 분량이 많은 장이다. 그만큼 중요하다는 의미와 함께 깊은 이해가 필요한 단원일 것으로 예측된다. 먼저 chapter6은 컴퓨터 시스템의 이용 방법, 프로그래밍 언어, assembly language, 알고리즘을 표현하는 pseudocode의 개념을 다룬다. 그리고 chapter7~9는 각각 문제 해결과 알고리즘, abstract data types, high-level language 등을 다룬다. 프로그래밍에 대한 자세한 이해를 요구하는 것으로 보아 c언어와 java 등 프로그래밍 언어와 밀접한 연관이 있을 것으로 생각된다.

5. The Operating Systems Layer

- 5장은 운영 체제 관련 단원으로서, 컴퓨터 운영체제에 대한 이해, CPU, 메인 메모리에 대해 다룬다. 또한 특정한 데이터를 조직적으로 제공하는 것을 가능하게 하는 file system과 directory에 대해서 자세히 다루고 있다.

6. The Applications Layer

- 6장은 실질적으로 컴퓨터의 적용에 대해서 다룬다. 먼저 다양한 application system의 작동 방법, general information system에 대해 밝히고, 미래 컴퓨터에게 필수적이고 핵심적인, 기계를 인간화 시켜줄 인공 지능(artificial intelligence)에 대해서 다룬다. 그 이후에는 다양한 컴퓨터의 적용 사례를 살펴본다. 예로서 시뮬레이션이나 그래픽, 게임 등이 있다. 이 장을 공부한다면 프로그래밍을 어떻게 적용할 수 있는지 알 수 있을 것 같다.

7. The Communications Layer

- 7장은 현재 우리가 사용하고 있는 네트워크에 대해 다룬다. 편리하게 사용하고는 있지만, 그것의 근본적 원리는 알지 못하는데, 이 단원을 통해 배울 수 있을 거라 생각한다. 먼저 데이터의 이동을 가능하게 하는 컴퓨터 네트워크를 이용한 의사소통에 대해 다룬다. 또한 네트워크 의사소통을 편리하게 해주는 www (world wide web) 의 발달과 함께, web을 더욱 생산적으로 만들어 줄 수 있는 기술에 대해서 배운다. 이 단원은 컴퓨터에 대해 많은 이해가 이루어 진 이후에 중요하게 작용할 것으로 생각된다.

8. In Conclusion

- 컴퓨터 없는 세상은 상상할 수 없지만, 컴퓨터에게도 한계가 있다. 이 단원에서는 컴퓨터가 할 수 없는 것들, 즉 하드웨어, 소프트웨어와 그들이 가진 한계를 규명하고, 컴퓨터의 한계점을 밝히는 단원이다.


개략적으로나마 8개의 장을 살펴보았는데, 앞으로 배울 내용에 대한 기대보다는, 걱정이 앞서는게 사실이다. 하지만 이 책의 내용들을 습득하다 보면 컴퓨터에 대해 전반적으로 잘 알게 될 수 있을 것이라 믿는다. 어렵겠지만, 열심히 따라가 볼 생각이다.