기계어에서 객체 지향 프로그래밍 언어로

기계어 - 0과 1의 행진 / 너무나 비인간적인 언어

  1. 개요
    • 기계어는 컴퓨터 이해할 수 있는 유일한 언어로서, 0 과 1 의 이진수로 이루어져있다
    • 초기의 프로그래머들은 전구와 전선만을 사용하면서도 해당 기계어를 이해하고 작성했다
  1. 인간과 컴퓨터의 차이점
    • 인간
      • 10진법 등의 다양한 진법을 이해하고 사용할 수 있음
    • 컴퓨터
      • 오직~ 2진법만을 이해하고 사용할 수 있습니다.
      • 하지만, 빠르고 정확합니다!
  1. 기계어
    • 에드삭, 유니박
    • 기계어의 호환성
      • CPU 에 따라 기계어의 코드가 달라서, 이기종 간에 호환이 불가능합니다.

어셈블리어에 대한 이해

  1. 개요
    • 어셈블리어는 기계와 인간의 언어 사이에서 연결고리로 사용됨.
    • 0과 1만으로 사용하는 기계어는 인간에게 이해하기 어려운 언어라는 문제가 있기에, 이를 해결하기 위해 어셈블리어가 등장하였습니다.
  1. 니모닉과 기계어
    • 어셈블리어의 경우 기계어의 명령을 일상 용어로 표현하고,
    • 이를 기계가 이해할 수 있는 기계어로 번역하였다.

    ⇒ 이런식으로 1 : 1 매칭하는 코드표를 만든 것이 니모닉

  1. 어셈블러
    • 어셈블리어를 기계어로 번역해주는 소프트웨어를 어셈블러라고 한다.
  1. CPU 별의 어셈블리어
    • 각 CPU 마다 더하기 연산의 표현이 달랐음
    • 애드삭 ⇒ ADD
    • 유니박 ⇒ PLUS
  1. 한계점
    • 서로 다른 CPU 와 시스템에서의 호환성 문제떄문에, 어셈블리어 프로그래머는 이직이 어려웠음.
    • 숫자 표기법 등의 차이가 있어서 새로 배워야하는 어려움이 존재.

C언어 - 강력한 이식성 / One Source Multi Object Use Anywhere

  1. 개요
    • 기계어와 어셈블리어에 비해 강력한 이식성을 제공
    • One Source Multi Object Use Anywhere
      • 하나의 소스로 여러 컴퓨터에서 실행이 가능함.
  1. 특징
    1. 이식성
      1. 하나의 C 소스 파일의 작성
        • 기계의 종류에 상관없이 하나의 소스 파일을 사용가능합니다.
      1. 기종별 기계어 목적 파일 생성
        • 각 기계에 맞는 컴파일러로 컴파일함.
      1. 모든 컴퓨터 실행 가능
        • 같은 소스를 다양한 컴퓨터에서 실행가능
    1. 어셈블리어와의 차이점
      • 어셈블리어
        • 기계별로 하나씩 소스파일을 만들어야 했음
      • C
        • 하나의 소스 파일로 모든 기계에 대응 가능함
  1. 어셈블리어와 C언어
    • C 언어의 k = a + b; 라는 간단한 코드는 어셈블리어에서 매우 복잡하게 표현된다.
    인텔 80X CPU 어셈블리어
    ---
    load 레지스터, 110번지
    load 레지스터2, 114 번지
    add 레지스터2
    save 106 빈지, 레지스터1
    ---

C ++ 언어 - 정말 인간적인 프로그래밍 방법론, 객체 지향

  1. 개요

    C 언어에서 객체 지향 개념이 도입되어 발전한 언어입니다.

    OOP 설계 패러다임은 개발자의 작업을 쉽게 만들어주었습니다.

  1. OOP
    • 개발자를 위한 인간 친화적인 프로그래밍 방식입니다.
    실생활과 유사하지만 실상은 실생활과 조금 다른 프로그래밍 패러다임인 것 같다. 개인적으로 완전하게 인간친화적인 아닌듯..

Java - 조금더 인간친화적인 객체지향 언어

  1. 개요

    진정한 객체지향 언어

    • 객체 지향성
      • C++
        • 순수 객체 지향 개념에 충실하나, 객체가 없는 프로그래밍도 가능합니다.
      • Java
        • 클래스 없이 존재할 수 있는 것이 없습니다.
        • 모든 것이 클래스 내부에 존재합니다.
  1. Write Once Use Anywhere
    • C언어와 자바
      • C ⇒ “One Source Multi Object Use Anywhere”
        • 소스파일 ( one source ) → 목적 파일(multi object) → 실행 ( 기종별로 컴파일러가 필요합니다 )
      • JAVA ⇒ “Write Once Use Anywhere”
        • Write Once ( one source ) ⇒ One object ⇒ Use anywhere ( 기종별 컴파일러가 필요하지 않다 )
    • 자바의 VM
      • 다른 기종의 컴퓨터에서 오브젝트 파일만 가져가면 실행이 가능함
      • 하지만, 기종별 JRE 가 설치가 필요합니다.
    JRE (Java Runtime Environment) 자바로 만들어진 프로그램을 실행시키는데 필요한 라이브러리, JVM 등이 포함되어있음.

마지막 - 결론

  1. 언어의 발전사
    1. 기계어 : 최초의 프로그래밍 언어, 직접적으로 기계에 명령을 내릴 수 있게 해주었습니다
    1. 어셈블리어 : 기계어에 비해 약간 더 고수준
    1. C : 프로시저와 구조적 프로그래밍의 개념 도입
    1. C++ : OOP 등장
    1. 자바 : 플래폼 독립성 + OOP 물아일체
  1. 스프링 FW 등장
    1. IoC/DI , AOP , PSA 등의 객체 지향의 베스트 프랙티스 기반
    1. 이전 기술들의 장점을 합쳐, 거대한 프로그램도 쉽게 구현가능
  1. 기술의 발전..
    1. 모든 신기술이 환영받은 것이 아니다. 자바도 배척받았았던 과거가 있음.
    1. 신기술을 관찰해보면 이전 기술 위에서 발전함.

Uploaded by N2T