📌 프로그램과 프로그래밍 언어
💡 프로그램이란?
프로그램(Program)이란 컴퓨터가 주어진 작업을 수행하기 위한 일련의 명령어(command) 또는 문(statement)들의 모음 이라고 한다.
💡 알고리즘이란?
알고리즘(Algorithm)이란 프로그램으로 목적하는 결과를 얻기 위한 절차나 방법을 의미한다.
- 자연어, 의사 코드(슈도코드), 순서도 등으로 표현함
- 알고리즘(설계도)에 따라 프로그램을 작성함
- 기계어(machine language) 로 번역(compile)된 결과물뿐만 아니라, 프로그래머가 작성한 소스(source)까지도 포함됨
- 소프트웨어는 프로그램뿐만 아니라 CD, 설명서, 제품 포장 등 패키지 전체를 뜻하기도 함
💡 프로그래밍 언어란?
- 컴퓨터에서 동작하는 프로그램을 작성하기 위한 언어
- 컴퓨터가 작업 지시를 이해할 수 있도록 명령하는 언어
- 컴퓨팅 환경과 개발 프로그램의 용도와 맞는 목적에 따라 언어를 선택함
📌 고급 프로그래밍 언어
고급 언어에는 포트란(FORTRAN), C/C++, 코볼(COBOL), 파스칼(PASCAL), 파이썬(Python), 베이직(BASIC), 리스프(LISP)가 있다.
💡 고급(high level) 프로그래밍 언어란?
사람이 알기 쉽도록 영문자, 숫자, 기호로 쓰여진 프로그래밍 언어
- 장점 : 저급(low level)프로그래밍 언어보다 가독성이 높고 다루기 간단함
- 컴파일러(compiler)나 인터프리터(interpreter)에 의해 기계어로 번역되어 실행됨
기계어 : CPU가 실행할 수 있는 이진 코드로 되어있는 프로그램을 말함
컴파일러, 인터프리터 : 고급 프로그래밍 언어를 기계어로 번역해주는 번역기
- C언어, 자바, 베이직 등 대부분의 프로그래밍 언어들은 고급언어에 속함
📌 저급 프로그래밍 언어
저급 언어에는 기계어(machine language)와 어셈블리어(assembly language)가 있다.
💡 기계어(machine language)
컴퓨터(CPU)가 해독할 수 있는 2진 코드로 나타낸 언어
- CPU, CPU에 연결된 장치, 주변기기를 제어하기 위해서 0과 1로 나타낸 고유 명령 형식
- CPU 종류에 따라 그 형식과 내용이 모두 다르므로 기계어로 작성된 프로그램들은 한 종류의 CPU에서만 동작함
- 일반적으로 다른 언어로 작성된 프로그램은 기계어로 번역(compile)해야 실행할 수 있음
- 기계어로 작성된 파일은 텍스트 파일이 아니어서 텍스트 편집기에서 내용을 읽을 수 없음
- 기계어로 작성된 파일의 내용을 보기 위한 간단한 방법은 debug 명령어를 이용하는 것
- 윈도우7 또는 윈도우10의 32비트에서만 debug 실행이 가능하다.
(윈도우10이어도 64비트 부터는 debug명령을 실행할 수 없음)
- 명령 프롬프트 창을 열어서 debug hello.exe를 입력하고 'r'을 입력하면 CPU의 레지스터 상태를 볼 수 있음
- 'u'를 입력하면 기계어 코드와 어셈블리어 코드를 볼 수 있음
- debug 명령어를 끝낼 때에는 'q'를 입력함
💡 어셈블리어(assembly language)란?
기계어를 영문자 및 숫자로 치환한 언어
- 기계어와 어셈블리어는 1:1로 대응됨
- CPU 종류에 따라 그 형식과 내용이 모두 다르므로 기계어로 작성된 프로그램들은 한 종류의 CPU에서만 동작함
- 어셈블러(assembler) : 어셈블리어로 작성된 프로그램을 기계어로 번역(assemble) 하는 소프트웨어
임베디드 시스템 또는 하드웨어를 윈도우 운영체제 또는 리눅스 운영체제에서 개발하고자 한다면 어셈블리어 학습이 필요함
📌 용도별 프로그래밍 언어
과학용 : FORTRAN(FORmula TRANslation)
사무용 : COBOL(COmmon Business Oriented Language)
인공지능 : LISP(LISt Processing), Prolog(PROgrammation en LOGique)
범용 : PASKAL, C, C++
웹용 : PHP(Personal Hypertext Preprocessor), JavaScript
그외 : C#, Python(Monty Python's Flying Circus), JAVA, VisualBasic.Net
📌 JAVA란?
1995년 5월 미국의 Sun Microsystems에서 발표
- 가전제품에 사용하기 위한 언어로 개발을 시작함
- 인터넷 상에서 이용할 수 있다는 장점으로 인해 개인용 Apps부터 기업용 Apps까지 사용되고 있음
- 클라우드(cloud)환경 및 loT(사물인터넷), 빅데이터, 스마트기기 환경에서도 사용할 수 있도록 발전하고 있음
1996년 자바 1.0을 발표
- 자바 버전 체계의 메이저 버전(소수점 위)이 계속 1.x로 고정
마이너 업데이트로 여기는 경우들이 있어서 1.5 버전부터 5.0(1.5), 6(1.6)의 형태로 제품 버전을 코드 버전과 별개로 발표함
2021년 java SE 16 버전을 발표
💡 JAVA 기술 소개
- Oracle에서 JAVA를 프로그래밍 언어가 넘버원 프로그래밍 언어 및 개발플랫폼이라고 이야기 함
- 비용을 절감하고 개발 기간을 단축하며 혁신을 주도하여 애플리케이션 서비스를 개선함
- 전세계 510억 개 이상의 JAVA Virtual Machine을 실행하는 수백만 명의 개발자와 함께 JAVA는 기업과 개발자가 지속적으로 선택한 개발 플랫폼이다
- 대부분의 주요 산업 분야에서 사용됨
다양한 종류의 기기, 컴퓨터 및 네트워크에서 JAVA 기술을 찾아볼 수 있음
융통성, 효율성, 플랫폼 이식성, 보안성을 통해 이상적인 네트워크 컴퓨팅 기술로 자리매김함
- 랩탑에서 데이터 센터, 게임 콘솔에서 과학용 수퍼 컴퓨터, 휴대전화에서 인터넷에 이르기까지 510억 개 이상의 기기에 사용됨
ex. 개인용 컴퓨터 및 대형 컴퓨터, 휴대전화 및 모바일 스마트 기기, 셋톱박스, 프린터, 웹 카메라, 게임, 자동차 네비게이션 시스템, 복권 단말기, 의료기기, 주차료 계산 시스템 등
💡 운영체제에 종속적인 C 프로그래밍 방식
- Windows용 C 코드 ➡️(컴파일) ➡️ Windows용 실행코드 ➡️(실행) ➡️ Windows용 C코드
- Unix/Linux용 C 코드 ➡️(컴파일) ➡️ Unix/Linux용 실행코드 ➡️(실행) ➡️ Unix/Linux
- 애플 MAC OS용 C 코드 ➡️(컴파일) ➡️ 애플 MAC OS X용 실행코드 ➡️(실행) ➡️ 애플 MAC OS
💡 운영체제에 독립적인 JAVA 프로그래밍 방식
공통 <자바 프로그램 ➡️ 컴파일러 ➡️ 바이트 코드>
- ➡️ Windows용 JVM ➡️(Windows용 실행 파일) ➡️ Windows PC
- ➡️ Linux용 JVM ➡️(Linux용 실행 파일) ➡️ Linux PC
- ➡️ MAC용 JVM ➡️(MAC용 실행 파일) ➡️ 매킨토시
📌 JAVA의 기본적인 3가지 특징
💡 객체 지향(object-oriented)언어
- 프로그램의 기능을 그룹별로 나누고 이것을 조합하여 프로그램을 작성해 나간다는 개념
- JAVA를 사용하면 보다 복잡하고 수준 높은 프로그램을 만들 수 있음
💡 실행 파일 수준의 호환성
- 기존의 프로그램은 대응하는 기본 운영체제 상에만 동작함
- JAVA 프로그램은 JAVA VM(가상머신)이라는 실행환경만 있으면 어디서든지 실행할 수 있음
💡 개발 환경이 충실
- JAVA 개발 툴은 웹에서 무료로 다운로드할 수 있음
- 풍부한 기술을 포함하고 있는 라이브러리들을 표준으로 이용할 수 있어 다양한 스타일의 프로그램을 만들 수 있음
📌 JAVA로 할 수 있는 것
CUI 응용프로그램, JAVA 애플릿, JSP, JAVA 빈즈, JAVA 서블릿, GUI 응용프로그램
💡 CUI 응용프로그램
- 명령 프롬프트나 MS-DOS 프롬프트처럼 문자 기반의 실행환경
- CUI 환경에서 동작하는 프로그램은 많은 프로그램들의 기본형
💡 JAVA 애플릿
- Web 브라우저 상에서 동작하는 프로그램
- HTML 문서 안에서 애플릿을 지정하면 Web 서버로부터 자동으로 다운로드되어 클라이언트의 Web 브라우저 상에서 동작함
💡 JSP
- HTML 문서와 JAVA 프로그램을 조합하여 동적인 Web페이지를 간단히 만들 수 있음
- 서블릿 프로그램의 기능을 HTML 파일 내에 스크립트 형식으로 구현하는 기술
- JSP는 서버에서 서블릿으로 변환되어 실행되고 그 결과를 클라이언트에게 보내줌
- HTML 문서 안에 JAVA 코드를 삽입하는 형태로 작성함
💡 JAVA 빈즈
- JAVA로 작성한 프로그램을 부품(컴포넌트)로서 다루는 것
- 이 부품을 조합하여 애플리케이션을 간단하게 만들 수 있음
💡 JAVA 서블릿
- Web 서버 상에서 동작하는 JAVA 실행 파일
- 서버에서 동작하는 다른 형태의 프로그램에는 CGI가 있는데 이것보다 효율적이므로 사용이 증가하고 있음
- 서버에서 실행되고 실행한 후 Web 페이지를 클라이언트에게 보내줌
💡 GUI 응용프로그램
- 정해진 폰트의 글자만 보여주는대신 CUI 대신 윈도우처럼 그래픽으로 표시되는 실행환경
- JAVA를 이용하여 윈도우즈 응용프로그램 같은 프로그램을 만들 수 있음
📌 Java VM (JVM 가상머신)
JAVA로 작성된 프로그램을 실행하기 위한 환경
- JAVA 프로그램의 실행 파일은 플랫폼에 의존하지 않는 바이트 코드로 만들어짐
- 바이트 코드를 기종 고유의 코드로 변환하여 실행하는 기능을 가지고 있음
- JAVA VM만 있으면 기종이나 운영체제에 관계없이 JAVA 프로그램을 실행할 수 있음
- Windows에는 Windows용 JVM을, Unix/Lnux에는 Unix용 또는 Linux용 JVM을, MAC에는 MAC용 JVM을 설치해야 함
- JVM의 역할을 하는 소프트웨어를 JAVA 소프트웨어 또는 JRE라고 함
💡 자바 가상머신 탑재 기기
- Google Maps
- Sony
- Ricoh
- Livescribe