본문 바로가기

백엔드/os 및 일반 지식

소프트웨어 이해하기

반응형

* 컴파일러와 인터프리터

- 다양한 애플리케이션

●소비자 (end-user)가 직접 사용하는 프로그램

- 앱을 만드는 프로그램

- 프로그래밍 언어의 번역기, 컴파일러

● 컴파일러 : 한 언어의 코드를 다른 언어의 코드로 바꿔주는 것

● 프로그램 전체를 한 번에 번역 후 완성된 컴퓨터 언어로 만들어주는 역할

● 하지만 빠르게 개발할 수 없다.

- 실시간 코드 실행기, 인터프리터

● 한 줄씩 즉흥적으로 '실행'해주는 것(번역해주는 것이 아니다)

● 컴파일러에 비해 실행 속도가 떨어짐

● 코드 유출 가능성이 있다.

● 프로그램 용량이 더 작다

컴파일러
인터프리터

개발 편의성
코드를 수정하고 실행하려면 컴파일을 다시 해야 한다. 👎
코드를 수정하고 즉시 실행할 수 있다. 👍
실행 속도
빠르다. 👍
느리다. 👎
보안
프로그램의 코드가 유출되지 않는다. 👍
프로그램의 코드가 유출될 수 있다. 👎
파일 용량
프로그램의 실행 파일 전체를 전송해야 하므로, 용량이 크다. 👎
프로그램의 코드만 전송하면 실행이 되므로, 용량이 작다. 👍
프로그래밍 언어
C, C++처럼 비교적 저수준에 가까운 언어
Python, Ruby처럼 비교적 고수준에 가까운 언어

 

 

* 운영 체제 개요

- 애플리케이션을 도와주는 프로그램, 운영체제

●드웨어와 앺 사이에서 신호를 넘겨주고 받아주는 역할

- 운영 체제의 역할

●입력과 출력 : 여러가지 하드웨어를 고려해서 정리 후 앱에 신호를 넘겨줌

●저장과 불러오기 :

빠른 저장장치, 느린 저장장치를 쓰는 판단을 OS가 해준다

휘발성(RAM)과 비휘발성(비휘발성)의 정보를 운영체제가 저장 장치에 넘겨주는 것

수정 불가 (Read-Only Memory) : 컴퓨터 기본 세팅

수정 가능 : .avi , .dov , .png

●여러 프로그램 동시에 빠르게 실행하기

멀티 태스킹 : 여러 작업이 동시에 일어나는 것// 게임과 음악이 동시에 잘 나오게 하는 것도 운영 체제가 동 시 작업을 잘 관리해주기 때문에

- 운영 체제의 종류

●용도에 따른 분류 : 데스크톱/랩톱, 모바일, 서버, 임베디드

●Window : 사용자 설정을 더 쉽게 바꿀 수 있다. 바이러스에 취약하다

●Mac : 보안이 철저함. 그만큼 환경설정의 선택지가 제한이 되어있음

●Android : 사용자 설정을 더 쉽게 바꿀 수 있다. 바이러스에 취약하다

●iOS : 보안이 철저함. 그만큼 환경설정의 선택지가 제한이 되어있음

●Linux

- 운영 체제의 발전 역사

●많은 운영 체제들이 unix에서 출발했다.

●At&T의 소유물이던 유닉스가 비용과 여러 제약이 많자, GNU가 나왔다. Unix의 코드를 한 줄도 사용하지 않고 만든 unix와 유사한 os이다. Posix는 만족하지만 unix 공식 인증은 아니다. Unix-like

●GNU + Linux Kernel(운영 체제 핵심 부분) > GNU/Linux

●리눅스는 누구나 사용, 누구나 변형. GNU/Linux는 변형 시 반드시 코드 공개. 수많은 변형 운영 체제 등장(안드로이드, 우분투, 크롬 OS, 페도라)

 

* 네이티브 애플리케이션과 웹 애플리케이션

- 플랫폼의 파편화

●플랫폼 의존성 : 각 플랫폼에 맞게 프로그램을 만들어야 하고, 종류가 맞지않으면 실행이 되지 않는다. Cpu 마다 같은 머신코드라도 다르게 해석한다.

- 표준의 필요성

●이어폰을 예로 들었음. 이어폰의 규격과 휴대폰 단자의 규격이 동일하면 이어폰과 핸드폰의 종류에 상관없이 새 상품이 출시되어도 기존에 쓰던 이어폰을 계속 쓸 수 있음.

- 크로스 플랫폼 : 여러 OS, CPU 등에서 동일하게 실행할 수 있는 환경.

●가상 머신 : 각기 다른 플랫폼에 맞추어진 가상의 컴퓨터에 맞는 프로그램을 개발하면 됨. 이를 시도한 대표적인 언어가 Java. 그 가상의 컴퓨터가 JVM. Write Once, Run Anywhere.

●웹 :

· JVM처럼 SW의 규격을 정의하고 모든 환경에서 돌아가게 해준 또 다른 것이 웹. Html이나 Java Script 같은 언어로 웹페이지를 작성하고, IE이나 크롬같은 브라우저로 실행. JVM역할을 브라우저가 해주는 것. 웹 규격만 맞추면 만들 수 있어서 접근성이 좋고 간편하다.

· 웹은 더 간편하게 크로스 플랫폼을 만들 수 있음. 이를 반응형 웹 디자인이라고 한다.

· 웹은 규격이 ISO에 등록되어 있다. 이를 웹 표준이라고 한다.

- 네이티브 애플리케이션과 웹 애플리케이션

● 웹을 이용해서 애플리케이션처럼 동작하는 것은 웹 애플리케이션이라고 한다.

● 웹 애플리케이션과 구분하기 위해 기기의 OS에서 바로 실행할 수 있는 애플리케이션을 네이티브 애플리케이션이라고 부른다.

● 둘은 동작은 같지만 실행 방식은 다르다.

● 네이티브 애플리케이션은 바로 OS에 맞닿아 있고, 웹 어플리케이션은 브라우저에 맞닿아 있다. 하나의 브라우저도 하나의 네이티브 애플리케이션인 셈이다.

● 네이티브 애플리케이션의 단점은 설치, 배포를 반드시 거쳐야한다는 점. 버전을 앱을 다운로드하는 마켓에 계속 업데이트 시켜주어야하고, 사용자는 새로운 버전을 다운로드 받아야한다는 점

● 웹 어플리케이션은 설치, 배포하는 과정이 없다. 따라서 적은 투자와 노력으로 서비스 론칭이 가능하다.

 

- 웹을 활용하는 여러가지 방안

● 싱글 페이지 어플리케이션 :

하나의 페이지만 있는데 내용이 갈아끼워넣어지는 방식 (페이스북, 지메일, 구글맵, 구글 드라이브, 트위터)

● 하이브리드 웹 어플리케이션

바꾸고 싶은 부분만 구멍을 뚫어서 업데이트해주는 방식. 바뀌는 광고 때문에 어플을 다시 다운로드 받는다는 것은 사용자가 불편하기 때문에.

● Progressive Web Application

웹 어플리케이션에 네이티브 어플리케이션 장점을 합친 것

1) 웹 어플은 설치없이 실행 가능하고, 주소만 입력하면 접근 가능, 실시간 업데이트

2) 네이티브 어플리케이션은 인터넷 없이 실행 가능 , OS 기능 사용가능인데, 웹 어플에 이 장점을 융합한 것이 PWA이다.

 

반응형