정지 문제, 또는 Halting Problem으로 불리는 판정 문제의 한 갈래로 "유한한 수의 단계 후에 주어진 프로그램이 해결하고자 하는 문제가 해결되는지 우리에게 미리 말해줄 수 있는 어떠한 알고리즘이 존재하는가?" 라는 질문이다. 다르게 말 하지면 튜링머신에 1개의 프로그램과 Input자료 1개를 넣으면서 "야 너 이게 유한한 단계 후에 답이 나올지 나에게 풀어보기 전에 미리 알려줄 수 있어?" 라는 질문을 할 때 이를 해결해줄 수 있는 특정한 단일 프로그램이 있는가가 정지 문제이다. 2. 의의[편집] 결론부터 말하자면, 그런 거 없다. 정지를 정지합니다1936년 앨런 튜링은 이것을 해결할 수 있는 일반화된 방법은 없다라는 결론을 내렸으며[1], 이는 논리학적으로 결정불가능함(undecidable)..
5명의 철학자들이 있습니다. 이 철학자들은 원형 테이블에 앉아 있고 각자 앞에는 먹음직스러운 스파게티가 놓여있습니다. 그리고 스파게티 접시 사이에는 5개의 포크가 있습니다. 철학자는 생각할 때는 어떤 일도 하지 않고 배가 고파지면 가장 가까이에 놓인 두 개의 포크를 이용해 스파게티를 먹습니다.(반드시 두 개의 포크를 이용해야 합니다.) 옆 사람이 사용하고 있는 포크는 사용할 수 없습니다. 이 상황에서 어떻게 하면 철학자 모두 스파게티를 잘 먹을 수 있을까요? (이 문제는 젓가락 두 쪽과 밥으로 표현되기도 합니다.) 단순하고 어쩌면 기이한 이 논제는 대학에서 컴퓨터공학을 공부하는 사람이라면 한번쯤 접하는 `철학자들의 만찬 문제(The Dining-Philosophers Problem)'입니다. 네덜란드 출..
1. 기계학습이란? 초창기 인공지능은 컴퓨터가 모든 경우의 수를 따져서 가장 좋은 수를 택하는 것이었어 다들 체스 챔피언을 꺾은 슈퍼 컴퓨터 '딥 블루'에 대해서 들어본 적이 있을 거야. 딥 블루도 마찬가지로 체스의 모든 경우의 수를 따져서 가장 최적의 결과를 선택하는 방식으로 프로그래밍 되었지. 슈퍼컴퓨터인 딥블루는 수많은 코어들로 1초에 2억가지 경우의 수를 계산했어. 그 결과 세계 챔피언도 이기는 위엄을 보여줬지. 예전 인공지능은 대부분 이런 경우의 수를 모두 계산하거나 특정 상태에서 특정한 행동을 하는 식으로 직접 프로그래밍 해서 인공지능을 만들었어. 하지만 이런 방식의 인공지능은 어느정도 룰이 있거나 지정된 범위가 있을 때만 가능한 방법이었어. 수많은 경우의 수가 있는 여러가지 문제들 (필체 및..
"한 마리의 말로 수레를 끌 수 없다면 여러마리의 말이 함께 끌면 된다.""수레를 끄는데 필요한건 백마리의 닭이 아니라 한 마리의 소다." 위에 말은 어떤 유명한 놈이 한말인데 이름이 기억나지 않네.아래는 Cray 사(당시엔 Cray research)를 설립한 Seymour Roger Cray라는 사람이 한 말이야. 처음엔 크레이의 말대로 성능 좋은 벡터방식(여러개의 동일한 연산을 동시에 처리하는)의 CPU를 개발했어.말이 처음이지 불과 10년전까지도 벡터방식의 SMP머신이 대세였음.SMP머신은 자세히 설명하면 좀 복잡한데, 그냥 하나의 존나 빠른 컴퓨터라고 생각하면 된다.하나의 컴퓨터에 씨피유랑 메모리를 존나 박는거임. SMP머신은 성능은 확실히 짱짱맨이었어, 병렬화 하기도 편했고.근데 이게 문제가 몇..
「CPU의 캐시는 L1이 32KB, L2가 256KB, L3가 2MB라는 식으로 다층으로 나눠져 있는데 왜 32KB+256KB+2MB처럼 하나로 된 L1 캐시는 사용하면 안 될까?」 위 질문에 대한 간단한 버전의 대답은 「각각의 캐시에는 따로 정해진 역할이 있으니까」 입니다. 살짝 추가하자면 캐시는 용량이 클 수록 데이터 전송 속도가 느려지고 기억 밀도가 높으며 전력을 절약하는 성질이 있기 때문에 필요에 따라서 다른 종류의 캐시를 나눠서 사용하는 것이 유리하니까 라는 대답이 나올 것입니다. 어느 정도 지식이 있고 두뇌가 명석한 사람이라면 위와 같은 간단한 버전의 대답으로 이해할 수도 있을 겁니다. 하지만 아무런 지식이 없는 사람이라도 알기 쉽도록 회사원을 비유로 하여 각각 다른 캐시의 역할을 설명하겠습니..
프로그래밍이란 무엇인가프로그래밍이란 컴퓨터를 이용하여 창의적으로 문제를 해결하는 과정이야. 그렇다면 프로그램은 뭘까?사실 정의에 대해서는 사람마다 다 말이 조금씩 달라. 가장 무난한 정의를 말하자면 '명령어의 집합' 이라고 말할 수 있을거야. 프로그램은 모두 인터넷 브라우저, 여러분이 하는 게임처럼 거창하지는 않아. 기본적으로 컴퓨터가 인식하는 명령은 입력(읽기), 출력(쓰기), 덧셈, 뺄셈, 곱샘, 나눗셈 정도야. 즉, '명령어의 집합' 이라는 정의에 따르면 1 + 1 의 결과를 출력해주는 명령어 집합도 프로그램이라고 말해. 만약, 프로그래밍을 배운다면 이런 덧셈 뺄셈 하는 프로그램을 만드는것에서 출발하게 될거야. 1. 프로그래밍으로 무엇을 할 수 있는가.사실 입출력을 제외하면 할 수 있는건 산술밖에 ..
구글이 미국 전역에 있는 도서관 사서들이 컴퓨터교육을 진행하는 프로그램을 지원한다. 최근 도서관은 단순히 책을 빌리는 공간이 아니라 컴퓨터 및 다양한 디지털 도구와 멀티미디어 교육 자료를 구비하여 소프트웨어 교육까지 진행한다. 컴퓨터과학 및 컴퓨팅적 사고는 21세기를 살아가는 데 필요한, 읽고 쓸 줄 아는 능력과 다름없다. 도서관들은 점점 컴퓨터과학에 대한 중요성을 잘 인식하고 있다. 앞으로 미국도서관협회와 협력해 SW 교육 자료와 연수 프로그램을 개발할 예정이다. 이미 구글은 뉴욕공립도서관과 함께 'NY 코딩 클럽’이라는 교육을 운영한 바 있다. 이 프로그램에서 구글은 대학의 도움을 받아 사서와 도서관 직원을 교육시키고 어린이를 위한 코딩 교육을 무료로 진행했다. 소외된 지역에 컴퓨터과학 교육을 확산시..
인텔의 프로세서에는 하이퍼쓰레딩이 있다. 하이퍼쓰레딩은 보통 SMT(Simultaneous multithreading) 라고 부르는데, 하이퍼쓰레딩은 인텔의 마케팅 용어라고 보면된다. 1. CPU 파이프라인 CPU가 맨처음 만들어질때 CPU가 작동되는 순서는 아래와 같다. 명령어인출(Fetch) - 명령어해석(Decode) - 명령어실행(Execute) - 기록(Writeback) (사이클을 고려해야 하지만 일단 모든 과정은 1사이클(1Hz)이라고 가정하자) 램에 올라온 프로그램의 명령어 하나를 CPU가 실행하기 위해서는 4사이클(4Hz)이 걸린다는 이야기다. F-D-E-W 저 네가지 순서를 거치는동안 하나의 과정을 제외한 모든 과정은 놀고 있게 된다. 그래서 각 파이프라인이 놀지 않도록 파이프라이닝화 ..