본문 바로가기
CNU/2023 CNU SW 아카데미

[CNU SW 아카데미] 네트워크 수업(23-02-13)

by 김뱅쓰 2023. 2. 13.

이성호 교수님

 

프로그램 : 일종의 명령서

 

프로그램 실행 : 컴퓨터가 명령서에 따라 명령을 수행하는 과정

 

사람은 자연어를 쓰고 컴퓨터는 기계어를 사용 해서 의사소통 불가

-> 컴파일 : 프로그램을 번역하는 과정

 

프로그래밍 언어란

사람이 프로그램을 작성할 떄 사용하는 언어

 

구문 구조: 프로그래밍 언어 구문의 생김새

의미 : 프로그래밍 언어 구문의 동작

 

번역 프로그래밍 언어 : 컴파일러에 의해 번역되느 프로그래밍 언어 

 - 번역 과정에서 다양한 안정성 검증 과정을 수행

 - 번역 과정에서 다양한 최적화 과정을 수행

 - 컴파일러의 안정성 검증을 통과해야 하므로 상대적으로 어렵고 자유고가 낮음

 - 안정성 검증 및 최적화 수행으로 프로그램의 성능 및 안정성 보장

 - c/c++ , java, ocaml 등

 

해석 프로그래밍 언어 : 해석기에 의해 해석, 실행되는 프로그래밍 언어

 - 번역 과정이 없으므로 안정성 검증과 최적화를 수행하지 않음

 - 안정성 검증 과정이 없어 상대적으로 학습이 쉽고 자유도가 높음

 - 오류 발생시 탐지가 어렵고 해석기를 거쳐 실행되므로 성능이 대체적으로 낮음

 - Python, Javasript 등

 

프로그래밍 언어 패러다임

- 프로그래밍 언어마다 추구하는 패러다임이 존재

 - 명령형 언어: 프로그램의 상태를 변화시키는 서술을 순차적으로 수행하여 명령을 수행

 - 절차지형 언어 : 서술의 연속으로 구성되는 절차를 정의하고 이를 통해 명령을 수행

 - 함수형 언어 : 입력과 출력의 매핑의 함수의 조합과 적용으로 프로그램을 구성

 - 객체지향 언어: 상태와 행동을 갖는 객체들의 관계로 프로그램을 구성

 한 언어가 여러 언어일수 있다. ex) javascript : 명령형언어이면서 절차지향언어

 

Java Programming Language

- java는 대표적인 객체지향 프로그래밍 언어

- 하드웨어 및 운영체계에 독립적인 특성 ( Wrinte Once, Run Anywhere)

- 자동메모리 관리를 수행

 

java는 번역 언어

- java 프로그램은 컴파일러를 통해 java bytecode로 번역

- java bytecode는 java 가상기계(jvm) 에 의해 해석 & 실행

 

java가 해석 프로그래밍 언어이면서 번역 프로그래밍 언어인 이유

기계, 운영체제에 따라 기계어가 서로 다르기 때문

ex) 기계마다 기계어 해석이 다르다

java bytecode를 해석할 수 있는 해석기를 각각 고용하여 프로그램 해석(wora)

-> 결국 모든 기계, 운영체계에 맞는 해석 가능

 

 

Java 개발환경 구축

- java development kit (jdk)

 - java 프로그램 개발에 필요한 도구들과 jre(jvm과 실행에 필요한 라이브러리로 구성)로 구성

 

java 프로그램 컴파일

- java 컴파일러, javac 를 사용하여 프로그램 컴파일

 

프로그램의 배포

- 실행 가능한 java archive 생성 (excutable jar)

 - 여러 개의 bytecode 파일을 하나의 압축파일로 엮음

 

Manifest 파일을 통한 프로그램 시작점 지정

터미널을 통한 개발은 어렵고 복잡

->통합개발 황경의 사용

 

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

- 프로그램 작성, 컴파일, 디버깅, 배포 등 프로그램 개발의 복잡한 절차 보조 도구

- 기본적인 구문 오류 및 간단한 의미 오류 등을 탐지