앨런 튜링 앨런 매시슨 튜링(영어: Alan Mathison Turing, OBE, FRS, 1912년 6월 23일 ~ 1954년 6월 7일)은 잉글랜드의 수학자, 암호학자, 논리학자이자 컴퓨터 과학의 선구적 인물이다. 알고리즘과 계산 개념을 튜링 기계라는 추상 모델을 통해 형식화함으로써 컴퓨터 과학의 발전에 지대한 공헌을 했다. 튜링 테스트의 고안으로도 유명하다. ACM에서 컴퓨터 과학에 중요한 업적을 남긴 사람들에게 매년 시상하는 튜링상은 그의 이름을 따 제정한 것이다. 이론 컴퓨터 과학과 인공지능 분야에 지대한 공헌을 했기 때문에 "컴퓨터 과학의 아버지의 아버지" 즉 "컴퓨터 과학의 할아버지"라고 불린다. 1945년에 그가 고안한 튜링 머신은 초보적 형태의 컴퓨터로, 복잡한 계산과 논리 문제를 처리..
자료구조 정의 테이터 값의 모임 또는 데이터 간의 관계, 명령을 의미한다. 신중히 자료구조를 선택한다면 보다 효율적인 알고리즘을 사용할 수 있다. 대부분의 언어는 일정 수준의 모듈 개념을 가지고 있으며, 검증된 구현은 감춘 채 인터페이스만을 이용하여 다양한 프로그램에서 사용되는 것을 가능하게 해준다. 자바와 같은 객체지향 언어는 이러한 목적으로 객체를 사용한다. 자료구조의 종류 배열 - 가장 일반적인 구조이다. 메모리 상에 같은 타입의 자료가 연속적으로 저장된다. 자료값을 나타내는 가장 작은 단위가 자료를 다루는 단위이다. 튜플 - 둘 이상의 자료형을 묶음으로 다루는 구조이다. 연결 리스트 - 노드를 단위로 한다. 노드는 자료와 다음 노드를 가리키는 참조값으로 구성되어 있다. 노드가 다음 노드로 아무것도..
알고리즘 탐색 알고리즘의 종류들부터 알아보기 이전에 탐색 알고리즘들은 기본적으로 그래프라는 데이터를 이용할 때 자주 사용된다. 그래프 데이터란, 노드(Node = Vertex = 정점)와 엣지(Edge = 간선)로 이루어진 데이터 형태이다. 아마 몇몇 분들은 딥러닝 모델 중 GNN(Graph Neural Network) 이라는 것을 알고 계실 텐데, 이 GNN에서 말하는 Graph와 비슷한 형태이다. 이러한 데이터로 이루어진 문제를 해결할 때 DFS, BFS 알고리즘이 자주 사용된다. 어쨌거나 탐색 알고리즘은 위와 같이 그래프 데이터일 때 자주 사용된다. 그런데 컴퓨터는 위와 같은 그림 형태의 데이터를 인식하지 못하고 숫자로 이야기를 해주어야 한다. 어떻게 나타낼까? 크게 2가지 방법으로 나타낼 수 있다..
서론 02/11 ~ 02/17 Node.js 미니 프로젝트주차가 시작되었습니다. 02/18 ~ 02/24 Node.js 클론코딩 프로젝트주차가 시작되었습니다. 일정 02/18 (금) 19:00 까지 : 클론 코딩 주차 S.A. 제출 02/18 (금) 19:00 : 알아두면 쓸데 많은 RDB 세션 02/21 (월) 저녁 : 클론 코딩 주차 중간 멘토링 02/22 (화) ~ 02/23 (수): 담당 매니저와 1:1 선택 면담 02/23 (수) 10:00 ~ 21:00 : 리더/부리더 신청 & 다면평가 진행 02/24 (목) 10:00 ~ 21:00 : 알고리즘 스터디 신청 02/24 (목) 오후 : 리더/부리더 선별 면담 02/24 (목) 19:00 까지 : 클론 코딩 완성본 제출 02/24 (목) 저녁 :..
1. 흐름 제어 (Control flow) 앞서 포스팅한 주제에서는 모두 하나의 방법만을 거쳐 콘솔에 출력했습니다.흐름제어는 여러 개의 결과값을 만들고, 프로그램의 진행 상황에 따라그 중에 하나의 결과값을 출력하게 합니다.결과값은 사용자의 입력값, 프로그램의 환경에 따릅니다. 2. 비교 연산자 (Comporators) 흐름 제어문의 가장 단순한 부분인 비교연산자는 총 여섯 가지가 있습니다.1) == : 서로 같다2) != : 서로 같지 않다3) a=b : a가 b보다 크거나 같다다음 예제는 불린 자료형과 비교 연산자를 사용한 예제인데요. 각각의 불린 자료형의 변수에 비교 연산자를 사용한 식을 넣고,불린값(True, False) 를 받도록 제가 식을 설계했습니다. 비교 연산자를 사용하면 알아서 불린값을 반..
어셈블리 코드 어셈블리어(영어: assembly language) 또는 어셈블러 언어(assembler language)[1]는 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어이다. 컴퓨터 구조에 따라 사용하는 기계어가 달라지며, 따라서 기계어에 대응되어 만들어지는 어셈블리어도 각각 다르게 된다. 컴퓨터 CPU마다 지원하는 오퍼레이션의 타입과 개수는 제각각이며, 레지스터의 크기와 개수, 저장된 데이터 형의 표현도 각기 다르다. 모든 범용 컴퓨터는 기본적으로 동일한 기능을 수행하지만, 기능을 어떤 과정을 거쳐 수행할지는 다를 수 있으며, 이런 차이는 어셈블리어에 반영되게 된다. 게다가 단일 명령 집합에 대해 여러 니모닉과 통사론이 대응될 수 있다. 그런 경우에는 제조사가 만든 문서에서 쓰이는 것..
Joseph Marie Jacquards가 1801년에 섬유 제직기를 만든 이후, 기계에는 설명서가 필요했다. 지난 몇 강에서 컴퓨터의 메모리에 대한 몇가지 설명이 있었지만 어떻게 메모리들이 그곳으로 이동했는지 이야기 할 필요가 있다. 펀치 카드와 종이 컴퓨터가 처음 만들어졌을 때, 사람들은 어떻게 프로그래밍을 했을까? 사실, 처음에는 하나의 프로그램을 회로로 구성해서 컴퓨터를 만들었기 때문에 다시 프로그래밍을 할 수 없었다. 초기 컴퓨터는 마치 탁상용 전자계산기와 같았다. 에니악(Eniac)도 배선판을 교체해야 다른 프로그램을 실행할 수 있었는데, 천공카드를 기억장치로 사용했다. 펀치 카드와 종이(천공 카드)는 데이터를 표현하기 위해 규칙에 따라 직사각형 모양의 구멍을 뚫어 사용하는 종이 카드로서 초기..
파이프 라인 컴퓨터 과학에서 파이프라인(영어: pipeline)은 한 데이터 처리 단계의 출력이 다음 단계의 입력으로 이어지는 형태로 연결된 구조를 가리킨다. 이렇게 연결된 데이터 처리 단계는 한 여러 단계가 서로 동시에, 또는 병렬적으로 수행될 수 있어 효율성의 향상을 꾀할 수 있다. 각 단계 사이의 입출력을 중계하기 위해 버퍼가 사용될 수 있다. 대표적인 파이프라인 구조는 다음과 같은 것들이 있다. 명령어 파이프라인: 같은 CPU 회로 안에서 여러 명령어들이 단계적으로 수행되는 것을 가리킨다. 각 명령어는 다시 페치, 디코딩, 연산 등의 세부 주기로 나뉘어 각 파이프라인 단계에 의해 수행된다. 그래픽스 파이프라인: 대부분의 그래픽 카드는 그래픽 처리 과정을 3차원 사영, 윈도 클리핑, 셰이딩, 렌더링..
1. 인텔 초기 CPU 인텔 4004 : 애니악과 동일한 연산 능력을 지닌 인텔 최초의 프로세서, 3500개의 트랜지스터로 45개의 명령어를 소화할 수 있었다. 2. 명령어 CPU가 동작하는 기계어 코드를 읽어 실행하는 반복적인 과정이다. 따라서 이 과정은 기계어 명령의 연결이다. (1)가장 기본적인 명령어 HALT : poweroff와 같은 동작을 수행 JUMP : 조건에 따른 branch 명령, 무한 루프를 방지하기 위해 추가적인 jump 요소가 필요하다. 연산 과정에 Jump라는 명령어 사용! Ex) Jump 2 -> 2번 add 명령어 실행 하지만 이렇게 되면 Halt 명령어를 만나지 못해 무한루프에 빠질 수 있음 이를 해결하기 위해 조건부 Jump (Conditional Jump) 사용, 특정상..
Central Processing Unit (중앙 처리 장치) → 프로그램을 실행하기 위해 메인 메모리에서 명령어를 인출하여 해독하고 실행한다. 연산 덧셈, 뺄셈, 곱셈 등의 산술 연산과 논리곱, 논리합, 부정 등의 논리 연산을 수행 제어 명령어를 순서대로 실행할 수 있도록 제어 저장 연산에 필요한 데이터, 연산 결과, 명령어 주소 등을 임시로 저장 cpu의 구조 레지스터(Register) CPU 내부에 있는 메모리 명령어 주소, 코드, 연산에 필요한 데이터, 연산 결과 등을 임시로 저장 고속 기억장치 다양한 종류가 있음(PC, IR, MBR 등) 제어 장치(Control Unit) 각 장치들의 동작을 결정하는 신호를 보낸다. 주기적장치에서 프로그램 명령어를 꺼내 해독하고, 그 결과에 따라 명령어 실행에..