책으로 공부하기

비전공자를 위한 이해할 수 있는 IT지식 [정보요약편1]

차근차근 디지털 2023. 3. 10. 08:59

키워드 : 프로그래밍 언어, 운영체제, 네트워크, 클라이언트, 서버 (1,2장)

 

- 인간과 컴퓨터 사이에는 0과1로 통역을 해주는 '컴파일러'라는 프로그램이 있어서 인간의 요구를 컴퓨터에게 전달해준다.

- 개발자는 컴파일러에게 문서로 일을 시키는 사람이다.

- IDE(통합 개발 환경)은 개발을 위한 모든 것들을 제공해주는 환경이다. 그래서 개발자들은 0과 1이 아닌 영어(코드)로 명령을 할 수 있고 앞의 몇 글자만 치면 자주 쓰이는 문장을 추천해주거나, 코드가 아니라 그림으로 작업할 수 있게 해주는 등 개발자들의 작업을 도와주는 기능들이 들어가 있다.

- IDE 는 대부분 어떤 분야에 특화되어 있다 (특정 IDE는 여러 언어, 여러 분야를 지원하기도 함)

운영체제 안드로이드 애플 C/C++ 개발, 자바 개발, 웹 개발 용도 파이썬 개발 용도
IDE(통합개발환경) Android Studio Xcode Eclipse PyCharm

- 여러 언어가 있는 이유는, 동일하게 컴퓨터에게 0과 1을 바꿀 수 있는 언어를 만들지만 그 방법과 속도는 많이 달라서 사용자가 편해지는 방식으로 개선이 되고 발전한다.  (C언어가 발전해서 Objective-C, C++, 파이썬이 된 것처럼)

- 저수준의 언어는 컴퓨터 친화적인 언어이고, 고수준의 언어는 인간 친화적인 언어이다.

- 컴퓨터 친화적인 언어는 배우기가 쉽지 않다. 컴퓨터가 어떻게 일해야하는지 구체적으로 꼼꼼하게 적어줘야 한다. 그렇지 않으면 오류가 자주 발생한다. 하지만 컴퓨터 입장에서는 구체적으로 적혀있으니 일하기 쉽다. 낮은 사양의 컴퓨터에서도 원활히 작동한다. 즉 컴퓨터 사양을 낮춰 컴퓨터 가격이 저렴해질 수 있게 다른 메인 기능이 있는 가전제품에 컴퓨터가 들어갈 때 저수준의 언어를 사용한다.(IPTV, 복합기, 스캐너, 프린터 등)(C언어)

- 인간 친화적인 언어는 사람들이 학습하기 쉽다. 쓰기도 편리하고, 유지 보수도 상대적으로 쉽다. 즉, 원래 컴퓨터에게 꼼꼼하게 설명해 줘야 할 부분들을 조금만 설명해 줘도 컴퓨터가 알아서 행동한다는 이야기지만 그만큼 컴퓨터가 더 많이 고민해야 하기 때문에 저수준 언어보다 작동이 느리다. 고수준 언어는 컴퓨터의 사양에 따라 잘 작동할 수도, 그렇지 않을수도 있다. (스마트폰, 데스크톱, 어플)(JAVA, PHP, 파이썬, Ruby 등 )

- CPU는 컴퓨터의 머리 역할을 한다. 따로 데이터를 저장하지 않기 때문에 데이터를 연산하거나 처리하려면 저장된 데이터를 CPU로 보내줘야 한다. 창고 역할을 하는 기억장치인 HDD, SSD에 신호를 보낸다. "처리할 데이터를 줘!"

- 보조기억장치 HDD(하드디스크), SDD : 컴퓨터의 창고 역할을 한다. 전원이 꺼져도 이 안의 데이터는 남아있다. 필요한 데이터를 찾기까지 시간이 오래 걸린다. CPU보다 속도가 매우 느리기 때문에 CPU와 보조기억장치가 같이 일하면 CPU가 계속 기다려야 하므로 속도가 하향 평준화된다.

- 그래서 '메모리'라는 CPU의 개인 작업 공간을 만들었다. CPU는 보조기억장치에 필요한 데이터를 그때그떄 요청하지 않아도 작업이 필요한 큰 데이터 뭉치를 보조기억장치에서 메모리로 한 번 옮겨놓고 메모리안에서만 작업하면 된다.

- 예를 들어 포토샵은 'C드라이브-Program files-Adobe- Photoshop'을 누르거나 바탕화면의 바로가기를 클릭한다. 이는 보조기억장치에 저장된 프로그램을 실행하는 것이다. (실행한다 = CPU가 일한다) 하지만 바로 실행되지 않고 로딩화면이 뜨고 실행까지 한참 시간이 걸린다. 이것은 보조기억장치에서 '실행에 필요한 데이터'가 메모리로 올라가고 있는 것이다. 이제 CPU가 메모리 위에서 빠르게 작업을 수행할 수 있게 된다.

- CPU, 메모리, 보조기억장치를 매일 쓰지만 우리가 몰라도 '운영 체제'가 알아서 대신해준다. 대표적으로 윈도우, 맥OS, iOS, 안드로이드가 있다. 이 운영체제들은 하드웨어를 관리해준다. 

- 해당 운영체제를 소유하고 있는 회사는 영향력이 엄청 크고, 이 운영체제에서 쓸 수 있는 프로그램을 만들려면 그 회사가 지정한 언어를 써야한다. 예를 들면 애플의 운영체제 위에 돌아가는 프로그램을 만들려면 Objective-C 혹은 스위프트를 사용해야 하고, 구글 운영체저 위에 돌아가는 프로그램을 만들려면 자바 혹은 코틀린이라는 언어를 사용해야 한다.

- 과거 n개의 운영체제가 있을 때, 새로운 기능을 추가, 버그 수정할 때마다 각기 다른 언어로 같은 작업을 n번 했어야 했다. 하지만 자바라는 프로그래밍 언어가 해결했다. 자바를 만든 팀은 각 운영체제 위에 JVM(Java Virtual Machine)이라는 소프트웨어를 만들어서 JVM 위에서 자바 언어로 만든 프로그램이 돌아갈 수 있도록 했다. 즉, 사용자가 자신의 컴퓨터에 JVM을 설치하면 운영체제별로 여러 개의 프로그램을 만들 필요 없이 자바로만 만들면 된다. 즉, 자바로만 프로그램을 만들어도 모든 운영체제에서 사용할 수 있다. 하지만 운영체제 위에 프로그램을 올리도, 그 위에 또 프로그램을 돌리는 것이기 때문에 속도가 느리다. (프로그램을 1개 돌리냐 2개 돌리냐 차이) 하지만 모바일은 iOS, 안드로이드 두개가 거의 전부기 때문에 프로그래밍 언어 2개만 알면 해결되니 속도가 느린 JVM은 모바일에서 잘 사용하지 않는다. 니즈가 적다.

- 즉 개발자는 프로그래밍 언어를 통해 운영체제 위에 돌아가는 프로그램을 만드는 사람들이다. '안드로이드 개발자'란 안드로이드 운영체제(OS) 위에 돌아가는 소프트웨어를 개발하는 사람. 

- LAN : 컴퓨터가 연결된 작은 지역, MAN : 여러 LAN을 하나로 연결한 네트워크, WAN: LAN과 MAN 모두를 연결

- 앱스토어에서 카카오톡 다운로드 버튼을 누르면 목적지로 '카카오톡 설치 파일을 보내줘!' 라는 신호가 WAN를 따라이동한다.  앱스토어이기 때문에 애플이 가지고 있는 컴퓨터로 신호가 간다. 카카오가 앱스토어에 설치파일을 올려놓았기 때문에 애플은 그 파일을 가지고 있고 보내준다. 이후 앱을 클릭해 실행하면 컴퓨터(핸드폰은 작은 컴퓨터)의 보조기억장치에 카카오톡 실행 파일들이 저장되고, 아이콘을 누르는 순간 실행에 필요한 부분들이 메모리 위로 올라간다. 그리고 CPU가 이 데이터들을 처리하며 카카오톡이 동작한다. 

- IP주소 : 인터넷게 접속하는 순간 위치에 맞는 IP 주소를 갖게 된다. 12자리로 위치에 따라, 컴퓨터에 따라 고유하다. 이동하면 IP가 계속 바뀐다. IP는 4개 구분으로 0~255의 숫자만 사용할 수 있는데 점점 컴퓨터가 많아져서 숫자 구분을 6개로 늘린 IPv6을 함께 사용하고 있다. 

- 개발자들의 세상에서 클라이언트는 서비스를 사용하는 사용자들이 소유한 컴퓨터(스마트폰이나 컴퓨터)이다.

- 고객 앞에 있는 클라이언트 컴퓨터가 바로 프론트엔드(클라), 서버는 클라이언트의 요청에 응답하는 컴퓨터 백엔드

- 윈도우OS, 맥OS, iOS, 안드로이드OS 가 있는데 굳이 리눅스 운영체제를 사용하고 거기서 서버를 돌린다. 그 이유는 리눅스는 무료이기 떄문이다. 윈도우가 Window95,98,xp, 7,10 의 버전이 있듯 리눅스의 유명한 버전 중 하나는 우분투이다. 우분투는 리눅스다. 즉, 리눅스는 하드웨어를 관리해서 사용자가 프로그램을 사용하기 쉽게 도와주는 윈도우나 맥OS 같은 운영체제이고, 우분투는 그런 리눅스 버전 중 하나이다. 

- 서버는 데이터를 주는 컴퓨터다. 데이터를 주기 위해서는 프로그램이 필요하다. 로그인 처리를 위한 비밀번호 동일 여부 등 확인하는 프로그램이 필요하고 프로그램을 돌리기 위해서는 운영체제가 필요하다. 서버 컴퓨터에서는 리눅스 위에서 서버 프로그램을 돌린다.

 

참조 : 비전공자를 위한 이해할 수 있는 IT지식

저자 최원영님의 IT 지식 강의 : https://gipp.co.kr/