책 '비전공자를 위한 이해할 수 있는 IT 지식'을 읽으면서 몰랐거나 알아두면 좋은, 복습할만한 내용을 정리하였다.
※ 지극히 개인 기준입니다 😃
IDE(통합 개발 환경)
- Xcode : 애플 운영 체제 위의 어플리케이션을 개발 용도
- Eclipse : C/C++, Java, 웹 개발 용도
프로그래밍 언어 - 저수준 언어 vs 고수준 언어
저수준 언어는 컴퓨터 친화적이기 때문에 낮은 사양의 컴퓨터에서도 원활히 작동하며 컴파일러 속도가 빠르다.
따라서, 가전제품에 저수준 언어를 사용하는 이유는 컴퓨터 사양을 낮춰 가격을 떨어뜨리기 위함이다.
메모리
보조기억장치인 HDD와 SSD는 컴퓨터의 창고라고 볼 수 있다.
CPU는 따로 데이터를 저장하지 않기 때문에 데이터를 연산하거나 처리하려면 저장된 데이터를 CPU에 보내줘야 한다.
하지만, 보조기억장치가 워낙 커서 필요한 데이터를 찾기까지 시간이 오래 걸린다.
※ 속도 : CPU > 보조기억장치
따라서, CPU와 보조기억장치 사이의 속도 차이를 보완하기 위해 메모리(RAM)가 필요하다.
※ CPU의 개인작업 공간이라고 생각하자!)가 존재한다.
운영체제
운영체제는 우리 대신 하드웨어를 관리해준다.
하드웨어의 용량이 얼마나 있는지 확인할 수 있는 것도 운영체제가 보조기억장치(HDD, SDD)를 관리하고 있기 때문이다.
과거에는 운영체제의 종류가 훨씬 다양했다. 따라서 개발자가 배워야 하는 프로그래밍 언어도 많았다.
버그를 수정하거나 새로운 기능을 추가할 때면 운영체제 수 만큼 작업을 반복해야 한다. (비효율적)
이를 자바 프로그래밍 언어가 해결하였다. → JVM
JVM(Java Virtual Machine) 소프트웨어란?
JAVA를 만든 팀은 각 운영체제 위에 JVM이라는 소프트웨어를 만들어서 JAVA로 만든 프로그램이 돌아갈 수 있다.
→ 다양한 운영체제에서 커버가 가능하다.
리눅스 운영체제를 많이 사용하는 이유.
리눅스는 기본적으로 '무료'다. 따라서, 일반적으로 UI/UX가 필요하지 않은 서버 프로그램을 리눅스 위에서 돌린다.
우분투(Ubuntu)는 리눅스의 유명한 버전 중 하나이다!
또 다른 유명 버전으로는 레드햇(Red hat) 리눅스가 있다. 레드햇은 리눅스를 개량해서 유료로 판매하는 회사다.
※ 유료를 굳이 사용하는 이유는? 안정적인 서버가 필수인 '금융'이 있다.
리눅스의 유명한 개량 버전으로 '안드로이드'가 있다.
구글이 리눅스를 모바일 운영체제 형태로 개량해서 발전시킨 운영체제이다.
윈도우와 맥OS는 왜 리눅스에 비해 비싼가?
- 두 운영체제에는 그래픽 UI가 붙기 때문이다.(ex 마우스)
반면 리눅스는 서버 프로그램을 24시간, 365일 '안정적'으로 돌아가게 하는 것이 중요하다. → UI가 필요 없다. 하지만, 리눅스를 사용하기 위한 명령어 공부가 필수! - 개인 컴퓨터로 서버를 구축하려면 엄청난 비용이 든다.(24시간 365일...)
- 환경적으로도 힘들다. (컴퓨터 손상의 위험)
따라서, 개인 컴퓨터로 구축하기 힘든 '서버' 구축을 지원해주는 기업들이 있다.
- 국내 : Cafe 24, 가비아
- 해외 : AWS
API
API는 클라이언트, 서버와 같은 서로 다른 프로그램에서 요청과 응답을 주고 받을 수 있게 만든 체계
ex) 컴퓨터주소(IP주소 = 서버주소)/명령어
cf) IP주소는 컴퓨터가 이해하기 쉬운 숫자주소다. 하지만 사용자는 이것이 불편하기 때문에 문자로 변환시킨 것이 '도메인 네임'이다.
ex) IP주소(172.168.223.244) = 도메인네임(www.tistory.com)
API를 설계할 때 CRUD로 접근하게 되는데 수 많은 주소와 네이밍이 겹치는 문제가 생길 수 있다.
이를 보완하기 위해서 RESTful API라는 체계가 등장한다.
<Request 파트>
- Create : POST
- Read : GET
- Update : PUT(전체 수정) / PATCH(일부 수정)
- Delete : DELETE
< Response 파트>
HTTP 상태코드 : 404, 400, 500 등
SDK
SDK(Software Development Kit) : API를 제공해주는 '다른 소프트웨어', 소프트웨어를 개발하기 위한 도구다.
ex) 구글 지도 API(SDK)
즉 하나의 기능을 만들 때 다른 사람이 구현한 것을 가져와서 쓰는 것을 말한다.
웹 & 애플리케이션
HTML + CSS = '퍼블리싱' 작업이라고 한다.(퍼블리싱 작업을 하는 사람을 퍼블리셔)
웹과 애플리케이션의 차이점(장단점)
웹은 서버에서의 원본(HTML, CSS, JS)을 바꾸면 클라이언트가 문서를 받아서 렌더링한다.
'새로고침'으로 발생시키는 요청을 통해 문서를 받기 때문에 네트워크 속도에 영향을 받는 단점이 있다.
반면 애플리케이션은 사용자에게 서비스를 제공하기 위해서는 업데이트가 필요하다.
(모든 사용자가 같은 버전으로 통일되어야 동일한 서비스를 제공할 수 있다.)
ex) 크롬, 익스플로러, 사파리, 오페라, 파이어폭스와 같은 브라우저도 응용프로그램이다.
→ caniuse.com에서 브라우저의 파편화 확인이 가능하다.
'CS' 카테고리의 다른 글
애자일(Agile) (0) | 2020.12.31 |
---|---|
개발 배경지식 - Computer Science 기초 (0) | 2020.12.13 |
댓글