CS 노트

비전공자를 위한 이해할 수 있는 IT 지식: 2장 정리

yourhm 2024. 7. 6. 13:27
책 '비전공자를 위한 이해할 수 있는 IT 지식' 2장을 읽으면서 학습한 내용을 요약, 정리한 포스팅입니다.

 

 

사람과 컴퓨터의 소통 원리

👤 사람: 컴퓨터에게 시킬 명령을 프로그래밍 언어를 사용해 문서로 작성하여 컴파일러에 전달한다.

↪️ 컴파일러: 작성된 문서를 0과 1로 바꿔서 컴퓨터에 전달한다.

💻 컴퓨터: 전달 받은대로 명령을 수행한다.

 

- 다른 언어를 사용하는 다른 나라 사람들끼리 대화하기 위해 번역기를 사용하는 것처럼, 인간과 컴퓨터도 서로 다른 언어를 사용하기 때문에 '컴파일러'라는 일종의 번역기를 사용해야 한다고 생각하면 된다.

- 컴파일러에 전달할 문서를 작성하는 사람을 우리는 보통 개발자라고 부른다. 개발자들이 프로그래밍 언어를 사용해 문서를 작성하는 행동을 '프로그래밍 혹은 코딩' 이라고 한다. 프로그래밍을 도와주는 도구(프로그램)가 있다. 바로 IDE(통합 개발 환경). 쉽게 말해 개발을 하기 위한 모든 것들을 제공해주는 환경이라고 보면 된다. 대표적으로는 아래와 같은 것들이 있다.

 

1. Visual Studio: MS사에서 만든 C 계열의 언어를 사용하는 사람들이 많이 사용

2. Xcode: 애플 운영체제 위의 어플리케이션 개발 용도

3. Android Studio: 안드로이드 애플리케이션 개발 용도

4. Eclipse: Oracle에서 만든 IDE. Java 개발시 많이 사용.

 

 

다양한 프로그래밍 언어

자바, 파이썬, 루비, 스위프트.. 프로그래밍 언어가 단 하나만 존재한다면, 여러 언어를 공부하지 않아도 되니 아주 편할텐데 왜 이렇게 다양할까? 여러 사람이 계속해서 새로운 언어를 만들어서 등장하기 때문.

 

"여러분 제가 새로운 언어 A 를 만들었어요! 한번 써보세요~"

"더 사용하기 쉬운 언어 B 를 만들었으니 써보세요"

...

 

이처럼 새롭게 등장한 프로그래밍 언어들은 각각 장점과 단점을 갖고 있고, 사람들은 각자 어떤 언어를 사용할 지 선택한다. 그러나 결국 많은 이들의 선택을 받은 언어만이 살아남고, 선택되지 않은 언어는 점차 사라지게 된다.

 

 


프로그래밍 언어는 두 가지로 분류할 수 있다.

1. 저수준 언어

- 컴퓨터 친화적인 언어. 즉, 기계어에 가까운 언어.

- 컴퓨터가 어떻게 일해야하는지 세세한 부분까지 구체적으로 작성해야한다. 따라서 프로그래밍이 어렵고 오류가 발생하기 더 쉬워진다. 컴퓨터 입장에서는 알아듣기 쉽게 구체적으로 적혀있으니 명령을 수행하기 쉽다. 그래서 낮은 사양의 컴퓨터에서도 원활히 작동한다. (따라서 다른 메인 기능이 있는 가전제품에 컴퓨터가 들어갈 때 주로 사용된다.)

 

2. 고수준 언어

- 인간 친화적인 언어

- 사람들이 학습하기 쉽고 쓰기도 편하고 유지보수도 저수준 언어에 비해서 쉬운 편이다. 저수준 언어로는 컴퓨터에게 꼼꼼하게 설명해줘야 할 부분들을 고수준 언어를 사용하면 조금만 설명해줘도 컴퓨터가 잘 알아듣는다. 하지만 저수준 언어보다 기계어로 변환하기 위해 더 많은 연산이 필요하므로 작동이 느리다. 따라서 고수준 언어는 컴퓨터 사양에 따라 잘 작동할 수도 그렇지 않을 수도 있다.

 

 

하드웨어를 쉽게 관리해주는 운영체제

우리가 컴퓨터로 어떤 프로그램을 실행할 때, '자! 이제 하드디스크의 3번 플래터에 접근해서, 포토샵 데이터를 2번 메모리의 3번 구역에 올린 뒤 CPU에게 일을 시켜야지' 라고 마음먹지 않는다. 실제 컴퓨터의 작동 방식을 몰라도 프로그램을 사용하는 데는 아무 지장이 없다. 어떻게 가능할까?

 

'운영체제(Operating System)' 라는 일종의 소프트웨어가 이 모든 과정을 대신해주기 때문이다. 윈도우, 맥OS, iOS, 안드로이드와 같은 운영체제들이 우리 대신 하드웨어를 관리해준다. 운영체제가 하드웨어를 컨트롤하고, CPU나 메모리 등을 관리해주기때문에 우리는 클릭 몇 번만으로 편하게 포토샵 같은 프로그램을 실행할 수 있다.

 

특정 운영체제 위에서 돌아가는 프로그램을 만들려면, 해당 운영체제에서 사용할 수 있는 프로그래밍 언어를 사용해야한다. 만약에 내가 어떤 프로그램을 만드는데 사람들이 통상적으로 사용하는 운영체제가 10개가 있다고 하자. 그러면 10개의 프로그래밍 언어를 알아야하고 프로그램을 만든 후에도 하나의 버그를 수정하거나 하나의 새로운 기능을 추가해야할 때 같은 작업을 10번씩 해야한다. 이러한 문제를 '자바'라는 프로그래밍 언어가 해결해준다.

 

 

플랫폼에 독립적인 언어: 자바(Java)

사용자가 자신의 컴퓨터에 JVM(Java Virtual Machine)이라는 소프트웨어를 설치하면, 자바 언어로 만든 프로그램의 실행이 가능해진다. 즉 사용자의 컴퓨터에 JVM만 설치되어 있다면 개발자는 기존처럼 각 운영체제별로 필요한 특정 언어를 사용해서 프로그램을 만들 필요없이 자바 언어만을 사용해서 프로그램을 만들어도 되는 것이다. 이처럼 자바는 하드웨어나 운영체제 같은 플랫폼에 독립적이라는 특성을 갖고 있다.

 

그래서 과거부터 지금까지 많은 소프트웨어가 자바 언어로 개발되었다. 자바로 개발한 소프트웨어들이 너무 많기 때문에 우리는 우리도 모르는 사이 JVM을 최신 버전으로 설치해왔을 것이다.