본문 바로가기
728x90
반응형

컴퓨터공학42

화면 및 2D 그래픽 1960년 PDP-1은 초기 그래픽 컴퓨팅의 훌륭한 예이다. 왼쪽에 캐비닛 크기의 컴퓨터가 있고, 전기 기계식 텔레타이프 기계가 중간에, 오른쪽에 둥근 스크린이 있다. 이런 구조는 당시에 텍스트 기반 작업과 그래픽 기반 작업 업무가 뚜렷했기 때문이다. 사실 이 초기 컴퓨터 화면은 선명한 텍스트를 렌더링 하기 매우 어려웠다. 반면, 타이핑된 용지는 훨씬 더 높은 대비 및 해상도를 제공했다. 초기 컴퓨터 화면의 가장 일반적인 용도는 레지스터의 값과 같은 프로그램 운영을 추적하는 것이었다. 텔레타이프 머신이 이것을 종이에 반복해서 인쇄하는 것은 의미가 없다. 그것은 많은 종이를 낭비하고, 속도도 느리다. 반면 스크린은 동적이고 신속하게 업데이트되어 임시 값을 나타내는 데 적합하다. 그럼에도 컴퓨터 화면은 프로.. 2022. 9. 18.
키보드 & 명령 라인 인터페이스(CLI) 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 사용자가 컴퓨터와 소통을 가능하게 하는 다양한 입출력 장치(I/O device;Input-output device)들이 있다. 이러한 장치들은 인간과 컴퓨터 사이의 인터페이스를 제공한다. 그리고 오늘날에는 인간-컴퓨터 상호작용(Human-computer Interaction)에 대한 분야가 존재하고 연구하고 있다. 이러한 인터페이스는 사용자 경험(UX;User eXperience)에 근본적인 요소이다. 가장 초기의 기계 및 전자 기계 컴퓨팅 장치는 기어, 노브 및 스위치와 같은 입출력용 물리적 제어 장치를 사용했다. 이는 휴면 인터페이스의 범위였다. 콜로서스나 애니악의 같은 첫 번째 전자 컴퓨터조차도 거대한 기계적 .. 2022. 9. 12.
압축 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 기본적인 텍스트, 소리, 그림의 파일 형식은 오늘날에도 여전히 사용될 정도로 완벽하지만, 동시에 이러한 형식의 단순함은 매우 비효율적이다. 이상적으로는 파일 크기를 가능한 작게 해서 하드 드라이브를 가득 채우지 않고도 파일을 많이 저장하고 빨리 전송하기를 원한다. 이러한 이상을 가능하게 해주는 것이 바로 데이터를 더 작은 크기로 바짝 붙이는 압축(Compression)이다. 이렇게 하려면, 원래 표현보다 더 적은 수의 비트를 사용하여 데이터를 인코딩해야 한다. 이미지는 전형적으로 픽셀 값 목록으로 저장된다. 그리고 이미지 파일은 행의 끝을 알기 위해 이미지 파일은 차원과 같은 속성을 메타 데이터로 갖고 있으며, 파일.. 2022. 9. 9.
파일 & 파일 시스템 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 서로 연관된 데이터를 기록하기에 적합한 것을 일반적으로 컴퓨터 파일(Files)이라고 부른다. 파일에 임의의 형식화되지 않은 데이터가 포함되는 것은 문제가 없지만, 어쨌든 파일 내부가 조직화되어 있는 것이 가장 유용하고 실용적이다. 이를 파일 형식(File format)이라고 한다. 프로그래머들은 가끔 자신만의 파일 형식을 만들기도 하지만, JPEG 및 MP3와 같은 기존 표준을 사용하는 것이 가장 쉽게 파일을 만들 수 있다. 파일 형식 중 가장 간단한 것은 텍스트를 포함하고 있는 TXT 파일이다. 모든 컴퓨터 파일과 마찬가지로, 이 파일 형식은 이진수로 저장된 숫자 목록의 방대한 파일이다. 이 데이터를 해석하는 열.. 2022. 9. 4.
메모리(Memory) & 저장 장치(Storage) 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 이전에도 메모리에 대해서 이야기했지만 일반적으로 컴퓨터 메모리는 비영구적(Non-permanent)이다. 일반적으로 파일을 수정하다가 실수로 전원이 꺼진다면 메모리에 저장된 모든 데이터가 손실된다는 것이다. 이러한 이유로, 휘발성 메모리라고 불린다. 하지만 하드 디스크 같은 저장 장치에 기록된 모든 데이터는 전원이 나가거나, 지워지거나, 덮여쓰여질 때까지 유지된다. 이것은 비휘발성이다. 이전에는 휘발성 메모리가 빠르고 비휘발성 저장장치는 느렸다. 하지만 컴퓨팅 기술이 향상되면서 구별이 점차 사라지고 용어가 썩이기 시작했다. 요즘 우리는 USB와 같은 기가바이트의 용량을 제공하는 기술을 당연하게 사용한다. 가장 초기의.. 2022. 8. 28.
운영 체제 OS 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 1940년대와 50년대 초반의 컴퓨터는 한 번에 한 개의 프로그램을 실행했다. 프로그래머는 자신의 책상에서 프로그램을 펀치카드에 하나를 쓰듯이 썼다. 그런 다음, 그것을 방 크기의 컴퓨터가 있는 방으로 가져와서 전용 컴퓨터 운영자에게 건넸다. 운영자는 프로그램을 컴퓨터에 공급한다. 컴퓨터는 그것을 실행하고 출력을 내뱉고 정지한다. 이 수동적인 프로세스는 컴퓨터가 중간에 느려졌을 때, 다시 처음으로 돌아가서 프로그램을 실행하는 데에는 종종 몇 시간, 며칠 또는 몇 주가 걸렸다. 그러나 컴퓨터는 계속해서 빨라졌고, 인간이 뛰어다니면서 판독기들에게 프로그램을 삽입하는 것은 실제 프로그램 자체를 실행하는 것보다 오래 걸리게.. 2022. 8. 25.
집적 회로와 무어의 법칙 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 약 50년 이내에 소프트웨어는 복잡성에 있어서 많은 성장이 있었다. 종이테이프에 펀치 된 기계 코드에서 통합개발환경에서 컴파일된 객체 지향 프로그래밍 언어까지 이르렀다. 그러나 이러한 정교한 발전은 하드웨어의 개선 없이는 불가능했을 것이다. 컴퓨터 하드웨어의 힘과 정교함에서 폭발적인 성장을 인식하기 위해서는 전자 컴퓨팅의 탄생부터 살펴보아야 한다. 대략 1940년대부터 1960년대 중반까지 모든 컴퓨터는 개별 부품으로 제작되었으며 이들은 개별 구성 요소(Discrete Components)로 불렸고, 모두 유선으로 구성되었다. 예를 들면, ENIAC은 17000개 이상의 진공관, 70000개의 레지스터, 10000개.. 2022. 8. 20.
소프트웨어 공학 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. Microsoft Ofiice는 대략 4천만 줄의 코드를 가지고 있다. 그것은 혼자서 알아내고 쓰기에는 너무 크다. 이러한 거대한 규모의 프로그램을 만들기 위해서 프로그래머들은 일련의 도구와 실습을 사용한다. 종합하면, 이것들이 소프트웨어 공학(Software Engineering)의 한 분야를 형성한다. 이것은 엔지니어인 Margaret Hamilton이 만든 용어이다. 그녀는 NASA가 아폴로 미션을 수행하던 중 문제가 발생하지 않도록 도운 사람이었다. 그녀는 "이것은 신경치료와도 같아요. 당신은 끝까지 기다렸지만, 그것은 미리 할 수 있었던 일이 아니었습니다. 그것은 예방용 건강관리와 같지만 그것은 예방용 소프.. 2022. 8. 18.
앨런 튜링 Alan Mathison Turing 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 앨런 튜링은 현대의 컴퓨테이션을 강조하는 많은 이론적 개념을 공식화한 사람으로 컴퓨터 과학의 아버지라고 불린다. Alan Mathison Turing은 1912년 런던에서 태어났다. 그는 조기 교육에서 수학과 과학에 대한 놀라운 적성을 보여주었다. 처음 컴퓨터 과학이라고 부르게 된 것은 1935년 케임브리지의 King's College에서 석사 과정을 밟으며 시작되었다. 그때 그는 독일 수학자 David Hilbert가 고안한 Entscheidungsproblem(= Decision problem ; 의사 결정 문제)을 풀기 시작했다. 이것은 형식 논리학적으로 쓰인 문장을 입력으로 받아들여 항상 정확하게 "예" 또는.. 2022. 8. 15.
자료구조 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 알고리즘이 실행되는 데 데이터가 어떻게 컴퓨터 메모리에 저장되는지에 대해서 얘기해 보자. 데이터는 일고 불러오기 쉽게 구조가 탄탄하고 잘 정리되어 있어야 한다. 이것을 위해서 컴퓨터 과학자들은 자료 구조라는 것을 사용한다. 배열(Arrays), 리스트(Lists), 벡터(Vectors) 이것들은 메모리에 연속적으로 저장되어 있는 값이다. 그래서 'j=5'와 같이 한 개의 변수에 한 개의 값을 저장하는 대신, 여러 개의 숫자를 지정한 다음 배열에 저장할 수 있다. 'j=[1,26,73,94,65,36,17]' 배열에 있는 특정한 값을 찾으려면 인덱스(index ; 목록)를 지정해 줘야 한다. 거의 모든 프로그래밍 언어.. 2022. 8. 9.
알고리즘 소개 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 알고리즘(ALGORITHM)은 계산을 완성하는데 사용되는 특정 단계이다. 알고리즘은 같은 결과를 생산해낼 지라도 다른 알고리즘이 보다 우수할 수 있다. 일반적으로 계산에 소요되는 단계가 줄어들수록 더 좋은 결과를 얻을 수 있지만, 때로는 사용하는 메모리 양과 같은 다른 요인들을 고려해야 한다. 알고리즘이라는 용어는 페르시아의 천재였던 Muhammad ibn Musa al-Khwarizmi라는 천년 전에 대수학의 아버지라 불리던 한 사람에게서 비롯된 것이다. 현대 컴퓨터 이전에 존재했던 효율적인 알고리즘의 제작 문제는 현재 과학 분야로 진화한 컴퓨팅을 둘러싼 전체 과학을 이끌어 냈다. 바로 컴퓨터 과학이다. 컴퓨터 과.. 2022. 8. 8.
프로그래밍의 기본 : 문장과 함수 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 많은 낮은 수준의 세부 사항은 복잡한 프로그램을 만드는 데 장애가 된다. 이러한 낮은 수준의 세부 사항을 추상화하기 위해 프로그래밍 언어는 프로그래머가 계산 문제 해결에 집중하고 하드웨어적인 핵심들은 줄이도록 개발되었다. 우리가 말하는 언어(구어)와 마찬가지로, 프로그래밍 언어에도 문장(statements)이 존재한다. 이 문장들은 개별적인 완전한 생각을 나타낸다. 그리고 다른 단어를 사용하여 의미를 바꿀 수 있다. 그러나 문법적으로 옳지 않게 바꿀 수는 없다. 이러한 언어의 문장 구성 요소와 구조들을 다루는 규칙 세트를 구문이라고 한다. 모든 프로그래밍 언어도 구문(syntax)이 있다. "a = 5"는 프로그래밍.. 2022. 8. 5.
728x90
반응형