컴파일러와 인터프리터

  • 컴파일러(Compiler) : 번역기
    - 고급언어를 바로 기계어로 변환
    - 실행속도가 빠름
    - 전체 소스코드를 보고 명령어를 수집, 재구성

 

  • 인터프리터(Interpreter) : 통역기
    - 고급언어를 기계어로 변환하는 과정 없이 한줄씩 해석하여 바로 명령어를 실행하는 것(번역 보다는 실행에 목적)
    - 번역 속도는 빠르지만 프로그램 실행 시 매번 번역해야하므로 실행속도는 느림
    - CPU의 사용시간 낭비가 큼
    - 소스코드의 각 행을 연속적으로 분석하며 실행





자바의 번역과정(총 6단계)

 

   

 

1) 형태소 분석(기호를 모두 분해)

2) 구문 분석 (순서가 올바른지 분석)

3) 의미 분석 (어떤 연산인지 파악)

4) 중간코드 생성(=바이트 코드, 슈도 코드)

5) 최적화 (CPU에 종속)

6) 물리코드 생성 (기계어로 번역)

 

API(Application Programming Interface)

  • 서비스 중에 있는 프로그램의 환경을 사용자의 환경에 이식받아 서로 소통이 가능하게 하는 도구의 집합체.
  • (상대방의 환경을 나의 환경에 다운로드 받아서 활용할 수 있음)
  • 자신들의 기능을 도구화 시켜놓음
  • 서버와 클라이언트를 이어 사용자가 사용할 수 있게 해주는 도구.
  • 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로
    통신할 수 있게 하는 메커니즘

입출력 장치(I/O 장치)

  • 간단하게는 마우스, 키보드, 모니터, 마이크 등등이 있다.
  • 사용자가 컴퓨터에 입력을 할 수 있게 해주고(키보드, 마우스), 컴퓨터는 사용자가 원하는 답변을 출력해주는 도구
    (모니터, 스피커, 프린터)

프로그래밍에서의 함수란?

  • 프로그램 소스 코드에서 일정한 동작을 수행하는 코드(들)
    - 매개변수가 있어 그에 맞는 값을 할당해주어야 작동함.
  • 기능 덩어리
  • 공구통 안의 공구들. 없어도 할 수 있지만 있으면 매우 간편하고 편리하게 해주는 도구.
  • 함수를 이용해서 식을 간결하게 만들고(중복되는 부분을 함수로 정의하고) 인자값을 받아서 활용할 수 있다.
  • 이를 통해 아래의 효과를 얻을 수 있다.
    - 코드 파편화(커다란 코드를 나눠서 사용하기 위해 잘라낼 수 있음)
    - 코드 집중화(반복되는 코드를 지워 중요한 코드를 부각시킬 수 있음)
    - 코드 은닉화(어렵게 정의한 내용을 볼 필요 없게 감추고, 내부적으로 바꿔도 결과만 잘 나올 수 있게 해줄 수 있다.)

WORA(Write Once Run Anywhere)

  • ‘한 번 작성된 코드는 모든 플랫폼에서 실행된다’는 의미
  • C언어 등 기존 언어가 가진 플랫폼 종속성을 극복
  • (C언어에서는 컴파일러를 기종별로 따로 구비해야하나,
    자바는 기종에 맞는 JRE를 셋팅해주면 됨)
  • 이식성이 좋다(호환성이 좋다)

WORA를 가능하게 하는 자바의 특징

  • 바이트코드 : 가상 컴퓨터가 이해할 수 있는 중간코드로 컴파일한 코드(환경에 맞춰서 중간코드로 컴파일해서 어디든 호환)
  • JVM(Java Virtual Machine, 자바 가상 기계)
    - 동일한 자바 실행환경을 제공해주기 위해 각기 다른 플랫폼에 설치하는 소프트웨어
    - JVM 자체는 플랫폼에 종속적이지만 자바는 독립적
    - 오라클과 IBM 등에서 개발, 공급됨
    - 자바 응용프로그램을 실행시키려면 JVM이 응용프로그램을
      구성하는 클래스 파일(.class)의 바이트 코드를 실행

 

 

 

통합 개발 환경(IDE, Integrated Development Environment)

  • 개발을 하면서 사용되는 도구들의 집합, 환경이다.
  • 효율적으로 소프트웨어를 개발하기 위한 애플리케이션 인터페이스로, 프로그램을 개발하는 과정에서 텍스트 에디터, 컴파일러, 디버거 등 프로그래밍에 필요한 툴을 하나의 인터페이스로 통합하여 사용이 가능하게끔 만든 개발 환경으로 이해할 수 있다.
    (들여쓰기, 컴파일러 등 필요한 기능 기본으로 지원)

 

워크벤치(Workbench)란?

  • 사전적 의미 : 작업대
  • Editors, Project Explorer, Outline… 같은 프로그래밍을 위한 작업환경

워크벤치와 IDE의 차이점

 

1. 워크벤치(WorkBench)

우리가 목수라고 가정하면 ‘Workbench’는 나무를 올려두고 작업할 수 있는 공간을 의미한다.

 

2.통합 개발 환경(IDE)

 

 

 

 

 

 

 

IDE는 ‘Workbench’ +’도구’ 작업하기 더 수월하게 만든 통합환경이라고 생각하면 이해하기 쉽다.

 

 

 

 

● 컴퓨터 프로그램

 

- Program : 컴퓨터에게 처리 방법과 순서를 기술한 명령문의 집합체

- Application : 특정한 업무를 수행하기 위해 만들어진 프로그램. 차이점으로는 사용자의 편의성을 고려하여 사용자가 원하는 기능을 수행하기 위해 제작


● 프로그래머와 개발자

 

- 프로그래머 : 문제 해결과 구현에 집중하며, 기술적인 부분에 집중하여 요구사항을 충족하는 코드를 작성하는 역할을 수행함.

 

- 개발자 : 사용자의 요구 및 수요에 따라 프로그램을 만드는 사람. 개발 기획, 설계, 개발 유지/보수를 모두 수행함.


● 플랫폼 (Platform)이란?

 

- 사전적 정의 : 역에서 기차를 타고 내리는 곳.

-  플랫폼은 많은 사람들이 이용하며, 모이고 움직이면서 다양한 활동들이 일어나는 곳.

 

- 즉, 많은 사람들이 모여서, 각자 여러 가지 활동을 하고, 사람들끼리 네트워크가 형성되고, 확장되는 곳.

 

● CPU (Central Processing Unit)

 

- ALU (Arithmetic Logic Unit, 연산장치) : 산술연산, 논리연산(AND, OR, NOT, XOR 등) 및 시프트를 수행하는 중앙처리장치 내부의 회로장치.

 

- CU (Control Unit, 제어 장치) : 기억 장치에 축적되어 있는 명령을 해독 및 소요 신호를 통해 각 장치의 동작을 지시

 

- Register (기억 장치) : 컴퓨터의 중앙처리장치에 들어 있는 소규모 데이터 기억장치, bit, byte, 기계어와 같은 지정된 기억 용량을 가짐

 

- Memory 

    └ ROM (Read Only Memory) / RAM (Random Access Memory)

   

ROM은 전원이 꺼져도 기록이 소멸되지 않는 비휘발성 메모리, 데이터를 지속해서 저장해 사용할 수 있지만 지울 수 없다는 단점 존재, 기억된 내용만을 읽을 수 있음(read only).  

 

RAM은 전원이 꺼지면 기억된 모든 내용이 사라지는 휘발성 메모리, 읽고 쓰는 것이 자유로워 응용 프로그램 로딩, 데이터 일시 저장 등에 주로 사용.

 

 

- (참고) 프로그램이 실행되는 보편적인 순서:

 

입력CU(컨트롤 유닛)가 메모리에 프로그램 데이터를 호출 → 메모리에서 레지스터로 자료가 이동 → ALU(연산 장치)에서 프로그램을 계산 또는 해독 → 출력

(더 자세하게는 CU가 각 과정에 대해 많이 관여)


● 인터넷이란?

 

- 컴퓨터와 컴퓨터를 연결하여 정보를 주고받을 수 있는 글로벌한 컴퓨터 네트워크입니다.

- TCP/IP (Transmission Control Protocol/Internet Protocol)을 기반으로 전세계의 네트워크를 하나로 연결 하여 각각 PC가 가지고 있는 자료나 정보를 주고 받을 수 있는 광역 네트워크

 

 

+ Recent posts