[ITWILL : JAVA]컴퓨터와 자바 기초이론

컴퓨터와 자바 기초이론을 아래에 정리해보았다.

Bit

0 또는 1의 정보를 나타내는 최소 단위
쉽게말해 64bit라면 64개의 선들이 한번에 cpu로 들어가는 간다.
그리고 신기한 점은 똑같은 0001, 0001이라도 컴퓨터가 알아서 저 비트가 명령어인지 숫자1인지 구분해준다

Q 그렇다면 비트는 모스부호와 같은 건가?
궁금해서 검색해보았는데 단순히 이진수의 개념인듯하다. 다음주에 강사님 만나면 물어봐야지




Adapter

어탭터는 전압을 맞춰주는 역할을 한다
만약 220볼트라면, 어탭터는 0~5볼트처럼 컴퓨터가 쓸 수 있는 낮은 전압으로 바꿔 준다.




프로그래밍 언어의 변천사

  1. 기계언어 = 이진수로 나타내는 언어
    • ex) 0000000010101010, 01010110101110
    • 기계언어로는 너무 복잡해서 사람이 프로그램을 짤 수 가 없다.
  2. 그래서 생긴 언어가 어셈블리어 : 니모닉 기호로 이루어짐
    • ex) add 1, 1
    • 그래도 자료구조 표현 어렵고 복잡함
  3. 그래서 만들어진 게 고급언어
    • Pascal, Algol, visaul Basic, C/C++, C#, Lisp, Fortran
    • ex) a =1+1
    • 개발자가 작성한 고급언어를 기계어로 바꾸어주는 것은 컴파일이라고 함
    • 내가 언어를 만든다고 사용할수있을까? NOPE! 컴파일러가 있어야지만 가능. 자바도 자바컴파일러(javac)도 있고 파이썬도 파이썬컴파일러가 있다
  4. 기타
    • 기계언어 + 어셈블리어 = 임베디드와 관련이 있다고 한다.
    • 내 절친 라미가 임베디드 공부했었다던데… 그가 얼마나 어려운 언어를 했는지 조금이 짐작이 간다.




절차지향적언어 VS 객체지향적언어

  1. 절차지향언어
    • 흐름도에 따라 일련의 동작들이 순서에 맞게 실행
    • 기능 위주의 언어. 예를 들어 python, c등등
    • 소스 코드 분석시 경비가 높아 기술의 한계가 있음
  2. 객체지향적언어
    • 효율적 개발을 위해 등장
    • 소프트웨어의 조립화




스크립트언어

스크립트언어란 소스코드를 compile하지 않고도 실행할 수 있는 프로그래밍 언어이다
객체지향적언어가 너무 코드가 기니까 짧게 만든게 스크립트언어이고 그 예로 java에서 jsp가 있다.
기존에 이미 존재하는 어플리케이션을 제어하기 위한 용도로 쓰이는 언어이고 인터프리터 형식의 언어이다.
수정이 빈번하게 일어나는 곳에서 쓰인다




Compile VS Interpreter

둘 다 고급언어로 작성된 원시 프로그램(Source Program)을 목적 프로그램(Object Program)으로 번역하는 번역 프로그램이며, 프로그램 번역 방식에 따라 구분된다.

  • 컴파일
    • 목적프로그램을 생성
    • 번역과정과 번역시간이 복잡하고 오래 걸리지만 한번 번역 후에는 다시 번역하지 않아도되므로 실행속도 빠름
    • 대표적 JAVA, C언어
    • 예시: 소스코드(.java) -> 자바 컴파일 -> 바이트코드(.class) -> JVM 의 JIT 컴파일러 -> 머신코드 -> 실행
  • 인터프리터 : 컴파일로 번역된 내용을 메모리에 올려서 실행을 해준다 대표적 JS, PYTHON
    • 목적프로그램을 생성하지않고 위에서 아래로 순차적으로 실행(웹 브라우저에 포함되어있음)
    • 번역속도는 빠르지만 프로그램 실행시 매번 번역해야해서 실행속도가 느리다
    • 대표적 JS, PYTHON
    • 예시1 : 소스코드(스크립트) -> 인터프리터 -> 실행
    • 예시2 : A.class 파일을 메모리에 올리고 cpu가 해석하고 실행

참고링크1: 컴파일러와 인터프리터란 무엇인가
참고링크2 : 컴파일언어와 스크립트언어 차이




java의 특징

  1. 플랫폼 독립적
  • 컴퓨터는 개발환경(intel CPU, 애플mac / 윈도우,맥,리눅스)를 플랫폼이라고 하는데 c언어는 개발환경이 다른 경우 구현이 불가능함.
  • 하지만 자바는 가능함 이걸 플랫폼 독립적이라고 함. 가능한 이유는 JVM(java virtual machine)이 해줌. 거의 모든 컴터에 기본적으로 다운로드 되어있음
  • java 프로그램의 단위는 Class이다.
    • Class의 첫문자는 대문자이다
    • ex) Class XXX {}
    • 위의 예제를 순서대로 Class=예약어, XXX=클래스의이름, {}=실행코드
  • C#언어와 거의 똑같다.
  • C보다는 처리속도가 느리지만 C만큼 빠르다




자바실행환경

소스파일(.java) -> 컴파일 -> 바이트코드(기계어.class) -> JVM이 인터프리터 -> 실행




로딩

CPU를 동작시키는 프로그램을 메모리에 올려놓는 작업