# 최초의 컴퓨터는 현대식 컴퓨터의 형태에서 거슬러 올라가나 21세기를 살아가는 사람들에게 큰 의미는 갖지 않으므로 생략한다
# 인물 개개인의 상세한 인생사와 프로그래밍 분야 외적인 업적은 잘라낸다.
유의미한 수준의 역사는 1940년대 초에서부터 시작된다.
1940~50년대의 프로그래밍은 절차 지향 프로그래밍이 대두된다. 이는 10진법, 2진법의 기계어와 어셈블리 언어를 활용한 프로그래밍 방식이다
프로그램을 일련의 절차나 함수로 나누고, 이러한 절차나 함수를 차례로 실행하여 원하는 결과를 얻는 프로그래밍 패러다임인데, 이러한 방식은 일반적으로 C, Pascal, Fortran과 같은 언어에서 사용된다.
코딩 예시
● 종이 준비 -> 종이의 크기? -> 펜 선택 -> 펜의 굵기? -> 스케치 하기 -> 색의 종류는? -> 색 칠하기 (일방향적)
● 중간에 순서가 뒤바뀌거나 값이 명확하지 않으면 망가진다
단순하고 재사용 가능하며 실행속도가 빠르다는 장점이 있으나, 복잡한 대규모 프로그램을 관리하기 어려우며 객체 지향과 비교해 상속, 다형성 등의 개념을 활용하지 못한다는 단점이 있다
1 ) 1936년 ~ 1940년 앨런 튜링과 튜링 머신
앨런 튜링은 현대 컴퓨터과학을 정립한 인물로 평가된다. 나치 독일군의 에니그마 암호 해독을 맡아 연합군 승리에 기여했고, 세계 대전 기간 단축 및 1400만명 정도의 인명을 구한 인물이다.
1935년도 케임브리지 대학교에 다니던 앨런 튜링은 괴델의 불완전성 법칙을 자신의 방법으로 다시 증명하는 과정에서
설계된 논리를 입력으로 받고 그 논리를 따라 실행되는 기계, 즉 현대식 컴퓨터의 초안을 닦는다.
1939년도에 들어 독일을 포함한 여러 국가들이 제국주의를 팽창시키던 혼란의 시기, 독일 해군의 암호를 해독하던 튜링은
Bombe라는 메시지 해독 기계를 만들었고, bombe는 1943년도에 프로그래밍이 가능한 최초의 디지털 컴퓨터인 콜로서스 마크-1로 발전한다.
2) 1943년 ~1946년 ENIAC
ENIAC은 존 프레스퍼 에크트와 존 모틀리에 의해 개발된 전자 디지털 컴퓨터이다. 10진법을 사용하여 사칙연산과 논리 연산을 수행했다.
ENIAC은 주로 포탄의 비행 경로와 목표지점을 계산하는 데 사용되었고, 2차 세계대전에서 중요한 역할을 하였다.
ENIAC은 프로그래밍 가능한 컴퓨터로서, 현대 컴퓨터와는 성능과 무게 면에서 큰 차이가 있지만 프로그래밍의 개념을 개척하고 혁신적 아이디어를 선보인 중요한 역사적 컴퓨터이다.
2) 1949년 폰 노이만(John von Neumann)의 EDVAC
EDVAC은 ENIAC 프로젝트에서 얻은 경험을 바탕으로 제작되었다. ENIAC과는 달리 이진법을 사용하며 폰 노이만 아키텍처를 기반으로 CPU + 메모리 + 연산 장치등의 구성요소를 포함하고 있다.
프로그램과 데이터는 같은 메모리 공간에 저장되었으며, 이것이 EDVAC의 핵심 아이디어다.
존 폰 노이만 아키텍처는 현대 컴퓨터 시스템의 설계와 프로그래밍 방법론에 큰 영향을 미쳤다.
EDVAC은 과학, 엔지니어링, 통계 분석, 핵물리학, 암호 해독 등 다양한 과학 연구 분야에서 활용되었다.
3) 1950년대 첫 번째 고급 프로그래밍 언어의 등장과 과학 컴퓨팅
1957년 IBM에서 개발된 최초의 고급 프로그래밍 언어인 포트란(fortran)이 등장한다.
프로그래머가 하드웨어와 더이상 직접적인 상호작용을 할 필요가 없어졌다는 역사적 의미를 가지며,
1980년대 이후로 사용하기 쉬운 4세대 언어의 출현으로 범용 목적으로는 더이상 사용되지 않고, 대부분 C언어로 교체되었다.
2000년대~ 2010년대에 들어서는 MATLAB, 매스매티카같은 강력한 수치계산 프로그램들이나 오픈소스 언어인 Julia로 사용자층이 흡수되고 있다.
포트란 같은 고급 언어의 등장은 과학 컴퓨팅 분야의 발전과 확장을 가속시켰다.
수치 해석과 과학 및 엔지니어링 계산, 시뮬레이션, 통계 분석 같은 분야에서 컴퓨터를 효과적으로 활용하도록 도왔으며
미분 방정식을 해결하거나 복잡한 과학 모델을 시뮬레이션 하는 등의 작업이 가능했다.
포트란과 과학 컴퓨팅은 20세기 후반까지 명맥을 이어왔으며, 현재에 이르러 로켓 설계, 항공기 시뮬레이션 등의 분야에서 사용된다.
4) 1959년 COBAL, 1972년 C언어, 1980년대 이후 C++의 등장과 절차지향 프로그래밍의 현재
COBAL은 비즈니스 애플리케이션 및 데이터 처리를 위한 언어로 설계되었다. 계산 루틴을 단계적으로 실행하며 레코드 기반 데이터 처리를 지원하는 절차 지향 프로그래밍 언어다.
C언어는 절차지향 프로그래밍을 좀더 현대식에 맞게 구현한 언어로 운영체제 개발, 시스템 프로그래밍, 응용 프로그래밍 등의 분야에서 사용된다. 이후 C언어의 영향을 받아 C++이 등장한다
현대에 이르러서는 C언어를 통한 스마트폰, 자동차 제어 시스템 / 가전제품 제어 유닛등의 임베디드 시스템과 그 운영 체제의 커널을 개발하기 위한 활용만이 절차지향 프로그램의 대부분이라고 할 수 있다.
'Basic Knowledge > Paradigm' 카테고리의 다른 글
중간정리 : 패러다임에 대한 입체적 시각과 최신 트렌드 (0) | 2023.09.21 |
---|---|
프로그래밍 패러다임 (4) 함수형 프로그래밍 (0) | 2023.09.21 |
프로그래밍 패러다임 (3) 객체 지향 프로그래밍 (0) | 2023.09.17 |
프로그래밍 패러다임 (2) 구조적 프로그래밍 (0) | 2023.09.17 |