본문 바로가기
생각/코딩(프로그램 개발) 배우기

프로그래밍 언어의 변천사

by 3604 2023. 4. 6.
728x90

프로그래밍 언어의 변천사

출처: 프로그래밍 언어의 변천사 :: 범슈의 연구실 (tistory.com)

  • 폰 노이만에 의해 세계 최초로 프로그램 내장 방식 컴퓨터 등장
    • 일반적으로 말하는 프로그래밍 언어는 이 때부터 시작한다

프로그래밍 언어 살펴보기

포틀란

  • 과학 응용 분야를 위한 효율성을 강초한 최초의 고급 언어
  • 설계 목표 : 매우 빠르게 실행 되는 코드 생성
    • 미리 메모리를 시스템에 넣어둬서 메모리 체크 필요 x
    • 하드웨어 처음으로 부동 소수점 연산 가능
  • 주요 기능 : 배열, For 반복문, 분기 if 문 등

코볼

  • 사무용으로 설계된, 영어와 비슷한 구문을 갖는 [[Notes/명령형 언어|명령형 언어]]
    • 변수를 지정할 때 출력 포맷까지 정해져서 나온다
  • 주요 기능 : 레코드 구조, 프로그램의 실행부와 분리된 자료 구조
  • 다양한 출력 기능 등

LISP (List Processor)

  • 리스트 자료 구조와 함수 적용을 기반으로 한다
    • 인공지능 관련 언어가 빠르게 발전하며, 수학 분야에서 인공지능을 하고 싶어했음
    • 이들의 공통적 요구 사항은 리스트 처리가 가능한 언어였다
  • 재귀 호출이 매우 일반적이다
    • 함수형 언어 중 최초로 지원
  • Lisp의 후속 언어인 Scheme 인공지능 분야에 많이 사용 된다

Algol60/68

  • 알고리즘을 기술하기 위한 강력한 범용 언어
  • 파스칼, C , Ada 같은 현대의 명령형 언어에 영향을 줌
  • 주요 특징
    • 구조적 문장, begin, end 블록
    • 자유 양식(스페이스 바)
      • 스페이스 바를 몇 칸을 둬도 문제 없이 동작
      • 공백을 잘 알아먹는 언어
    • 변수의 타입 선언
    • 재귀 호출, 값 전달 매개 변수
      • 명령형 언어 중 최초로 재귀 사용
    • [[Notes/BNF (Backus-Naur Form)|BNF (Backus-Naur Form)]] 을 처음으로 도입
  • 범용성이 좀 낮아서 상용이 어렵다

PL/I

  • 일반적이고 보편적인 언어, 모든 언어를 통합하는 언어
    • 포틀란, 코볼 등의 가장 좋은 특징을 모두 결합하고 병행성과 예외 처리 기능 등을 추가
  • 배우기도 어렵고, 사용하는데 오류가 많이 발생
    • 너무 복잡함
    • 잔기능이 많아 서로 상호 작용을 어떻게 하는지도 모름
  • 당시 하드웨어 용량이 많지 않았는데 기능이 많아 컴파일러가 고생했다는,

시뮬라 67

  • 최초의 객체지향 언어
  • 객체와 클래스 개념을 소개함으로써 공헌함
    • 추후 smalltalk에 의해 구체적으로 구현 되었음

Basic

  • 단순한 언어로 PC로 이전 되어 교육용 언어로 많이 사용 된다
  • 이후 마이크로소프트 사에 의해 visual basic 형태로 발전됨

PASCAL

  • 교육용 언어로 Algol의 아이디어를 작고, 단순하고, 효율적이고, 구조화된 언어로 세련 되게 만듬
  • 대표적인 블록 구조 언어
  • 애플 초기 제품들이 파스칼 언어로 만들어진 것들이 있다

C 언어

  • 유닉스 운영체제 개발을 위해 개발된 시스템 프로그래밍 언어
  • 기계에 대해 많은 접근을 제공하는 중급 언어(middle-level)
  • 모든 컴퓨터 시스템에서 사용할 수 있도록 설계된 언어

Prolog

  • 술어 논리를 사용하는 대표적인 논리 프로그래밍 언어
    • 규칙에 맞는 정보를 뽑아 오는 일을 할 때 사용함
  • 증명하는 것을 계산하는 것으로 간주함
  • 인공지능, 자연어 처리 등의 분야에서 많이 사용됨

[[Notes/Scheme|Scheme]]

  • 더 형식적이고 람다 계산에 더 가깝게 설계된 향상 된 LISP 버전
  • 언어 자체는 최대한 간단하게 만들고, 라이브러리를 통해 확장하는 방식 추구
  • 2010 년 즈음에는 MIT 신입생들의 프로그래밍 입문 언어였다고 함

ADA

  • 미 국방성(DoD)의 후원으로 개발된 영향력 있고 포괄적인 언어
  • 주요 기능
    • 패키지 (추상자료)
    • 태스크 (병행프로그래밍기능)
    • 예외처리 등과 같은 새로운기능을 포함
  • 임베디드 시스템 간 다른 CPU 등을 포괄하는 프로그래밍을 만들고 싶어서 생겼다
    • 유지 보수 비용이 감당이 안되었다
    • 굉장히 크고 복잡함
    • 하지만 전투기 등 요즘도 사용하고 있음

스몰토크

  • 시뮬라 67의 객체지향 개념을 실제로 만들었음
    • 다른 객체 지향 언어에 영향을 주었다
  • 순수한 객체지향 언어
  • 최초로 윈도우즈 gui 환경을 제공한 언어

C++

  • C 언어를 확장
  • 포인터와 같은 C 언어의 중요한 특징을 그대로 포함하고 있음
    • C 언어의 효율성을 유지하면서도 객체지향 프로그래밍 가능
  • 속도가 중요한 곳에서 많이 사용 되고 잇음

Python

  • 대화형 인터프리터 방식의 프로그래밍 언어
  • 플랫폼 독립성, 객체지향, 동적 타입(dynamic type)
  • 교육용 및 빅데이터를 비롯한 다양한 분야에서 응용되고 있음

Java

  • 인터넷 환경을 위한 객체지향 언어
  • 웹 애플리케이션, 모바일 앱 개발 등에 가장 많이 사용하는 언어
  • 플랫폼 독립성
    • 컴파일된 바이트코드가JVM이 설치된 어느 플랫폼에서도 실행가능

JavaScript

  • 웹 브라우저 내에서 실행되는 클라이언트 프로그램에 주로 사용
  • Node.js와 같은 런타임 환경과 같이 서버 프로그래밍에도 사용

C#

  • JAVA를 모방한 마이크로소프트 버전
  • 닷넷 프레임워크를 기반으로 한다

스칼라

  • 객체 지향과 함수형 언어의 요소가 결합된 다중 패러다임 언어
  • 자바 바이트 코드를 사용하기 때문에 JVM에서 실행 가능
  • JAVA 언어와 호환 : 대부분 JAVA API를 그대로 사용 가능

Objective-C와 Swift

  • Swift는 기존의 Mac 용 언어인 Objective-C와 함께 공존
  • Objective-C처럼 LLVM으로 빌드되고 같은 런타임 시스템을 공유
  • 특징: 클로저, 다중 리턴 타입, 네임스페이스, 제네릭, 타입 유추
728x90
반응형