1. 컴퓨터 등장 이전
1. 개요
"Q. 컴퓨터란 무엇인가요?"
: C 언어를 배우기에 앞서, 이 고리타분한 질문에 대답할 수 있어야 하는 이유를 알아봅시다.
이유1.
모든 기술은 특정한 문제를 해결하기 위해 등장합니다.
C 언어는 1970년대 초에 등장했습니다.
이 시기는 컴퓨터를 사용한다는 것이 곧 소프트웨어와 하드웨어를 동시에 설계하고 개발하는 것과 거의 동일하던 시대였습니다.
컴퓨터의 내부 동작 원리를 깊이 이해한 소수의 컴퓨터 기술자(엔지니어)만이 프로그래밍을 수행하던 시기이기도 합니다.
이러한 환경은 2024년 현재의 개발 환경과는 본질적으로 다릅니다.
오늘날처럼 소프트웨어와 하드웨어의 역할이 명확히 분리된 시대에는,
특정 목적과 분야에 맞는 소프트웨어를 보다 효율적으로 개발하기 위해
C#, Java와 같은 고수준 프로그래밍 언어들이 등장했습니다.
이들 언어는 C 언어와 비교했을 때
출발점 자체가 다르며, 해결하고자 했던 문제와 설계 철학 또한 근본적으로 다릅니다.
다시 말해,
따라서 C 언어를 제대로 이해하기 위해서는
2024년의 개발자 관점에서 접근하는 것이 아니라,
1970년대에는 어떤 문제가 존재했고,
그 문제를 해결하기 위해 왜 C 언어가 필요했는지
당시 기술자들의 관점에서 바라볼 필요가 있습니다.
그들이 어떤 배경 지식을 바탕으로 작업했는지,
어떤 하드웨어적·환경적 제약 속에서 개발을 진행했는지,
그리고 C 언어가 그러한 제약과 문제를 어떻게 해결하며
오늘날까지 이어지는 프로그래밍의 기준이자 표준으로 자리 잡게 되었는지를
함께 이해해야 합니다.
이를 위해 우리는 먼저
"컴퓨터란 무엇인가?"라는 가장 근본적인 질문으로 돌아가,
컴퓨터의 가장 기본적인 동작 구조부터 차근차근 살펴보려 합니다.
1970년대의 기술자들처럼 생각하고 그들의 관점에서 당시의 문제점을 살펴보고
C언어가 어떻게 그 문제를 해결해 나가며 대세가 되었느지 살펴봅시다.
이유2.
자연스럽게 이해하기 위해서입니다.
C# 이나 Java 와 같은 현대의 프로그래밍 언어를 주로 사용하는 개발자라 하더라도,
중급으로 올라서기 위해서는
컴퓨터의 동작 구조와 메모리 구조, 그리고 그 근본적인 동작 원리를 이해해야 하는 순간이 옵니다.
그리고 그 학습의 출발점은 언제나
컴퓨터란 무엇인가요?라는 질문입니다.
그리고 이 질문에 답을 찾아가는 과정에서
컴퓨터의 역사 그리고 컴퓨터의 동작 구조와 원리를 하나씩 이해하다보면
어느세 자연스럽게 C언어를 만나게 됩니다.
이유3.
C 언어는 등장한 지 반세기에 가까운 역사를 가진 언어이지만,
오늘날까지도 다양한 산업과 기술 분야에서
쉽게 대체될 수 없는 필수적인 역할을 수행하고 있습니다.
(프로그래밍 언어의 발전 ☜ 클릭)
최근에는 Rust, Carbon과 같은 새로운 프로그래밍 언어들이
C/C++를 대체하기 위한 대안으로 주목받고 있습니다.
그러나 현실의 개발 현장에서는 종종
“굳이 바꿔야 할 이유가 있는가?”라는 질문에 직면하게 됩니다.
기술의 전환에는 단순한 성능 향상만이 아니라,
시간과 비용, 기존 시스템과의 호환성, 그리고 오랜 기간 축적된 신뢰가 함께 고려되어야 하기 때문입니다.
이러한 이유로 C 언어는 지금 이 순간에도
현실적인 선택지로서 굳건한 위치를 유지하고 있습니다.
기계어, 이진수, 16진수
어셈블리어, 하드웨어에 종속적, 유닉스, 리눅스, 아키텍처,
컴파일러, 빌드, 실행, 메모리, 저장공간,
2. 컴퓨터 등장 이전
2.1 Computer 의 어원
- Computer 란 어떤 의미인가요?
컴퓨터
컴퓨터 (computer)는 이진법 을 이용하여 논리 연산 을 수행하는 기계 의 총칭이다. 간단한 전자 계산기
namu.wiki
2.2 최초의 컴퓨터
2.3 정리
인간은 계산을 편리하게 하고 싶었습니다.
컴퓨터라는 현재 우리가 사용하는 기계의 형태를 만드는 것이 최초의 목적이 아니었습니다.
컴퓨터 이전에 인간은 수학 계산을 위해, 주판, 기계식 계산기, 그리고 전자식 계산기를 만들어 사용합니다.
2.4 다음
01:40 : 덧셈을 반복함으로써 곱셈을, 뺄셈을 반복함으로써 나눗셈
02:18 : 찰스 베비지의 해석장치와 펀치카드를 현대의 계산기와 컴퓨터 프로그램과 비교해봅시다.
주판에서 기계식 계산기로,
그리고 전자식 계산기에서 컴퓨터까지 연결되는 과정에서 이해한 부분까지만 정리해봅시다.
참고) "아마존 고" 를 통해 기술자들이 가장 많이 하는 착각을 방지해봅시다.
(블록체인, VR, 자율주행, 인공지능, 정보 세대 격차 등)
문제가 아닌 문제를 해결하려고 하는 공대생 마인드를 알아봅시다.