IT 산업 모습

IT 산업은 발전 속도가 매우 빠르기 때문에 처음 부터 완성된 형태를 만드는 것이 아니라 점진적으로 발전할 수 있도록 핵심 기능에 중점을 두어 만들어가면서 바꿔야 합니다.
다른 산업은 정해진 완벽한 프로세스가 있어서 프로세스만 잘 따라가면 어려울 일이 없지만,
IT 서비스는 완벽한 프로세스가 없고 고객의 요구사항과 회사의 사정에 맞춰 서비스가 계속 발전되어 갑니다.

프로그래밍 언어 란?

컴퓨터는 0과 1로 이루어진 기계어를 사용합니다.
개발자는 프로그래밍 언어를 사용해서 문서를 작성합니다.
프로그래밍 언어로 문서를 작업하는 것을 “프로그래밍 or 코딩” 이라고 합니다.
컴파일러(번역가)는 개발자가 작성한 문서를 해석하여 컴퓨터가 알아들을 수 있게 기계어로 번역을 해줍니다. 개발자는 문서로 컴파일러에게 일을 시키는 사람입니다.

정리하자면, 개발자는 자바, 스위프트, 파이썬, 루비 등 프로그래밍 언어로 컴파일러에게 명령을 주면 컴파일러는 기계어인 0과 1로 변환해 컴퓨터에 전달합니다.

프로그래밍 언어로 문서 작성을 쉽게 해주는 도구가
IDE(Integrated Development Environment) 통합개발환경이라고 부릅니다.
개발을 하기 위해 모든 것들을 제공해주는 환경입니다.
안드로이드 위에 돌아가는 애플리케이션을 만들기 위해서는 안드로이드 스튜디오(Android Studio) IDE가 필요하고,
아이폰, 아이패드, 맥북 등 애플 기기의 앱을 만들기 위해서는 엑스코드(Xcode) IDE가 필요합니다.

프로그래밍 언어는 왜 여러 가지 일까?

많은 천재들이 다양한 언어와 컴파일러를 다른 방식으로 개발하다 보니 여러 개가 나오게 되었습니다.
지금까지도 여러 언어들이 생기고 사리지고 있습니다.

프로그래밍 언어를 구분하는 기준

  1. 저수준 -> 컴퓨터 친화적
  2. 고수준 -> 인간 친화적

저수준 = 저급언어(Low-level Language)
고수준 = 고급언어(High-level Language)

저수준은 단점은 컴퓨터 언어에 가깝게 작성을 해줘야 합니다.
장점은 컴퓨터 입장에서 이해하기 쉽기 때문에 낮은 사양의 컴퓨터에서도 원활히 작동합니다.

고수준은 쓰기도 편하고 유지보수도 저수준 언어에 비해 쉽습니다.
단점은 그만큼 컴퓨터가 이해하는데 시간이 좀 걸려서 느리고(저수준에 비해) 컴퓨터의 사양에 따라 잘 동작할 수도 있고 그렇지 않을 수도 있습니다.

저수준 언어를 왜 사용할까?
컴퓨터 사양을 낮추고 싶어서 입니다. 그래야 컴퓨터 가격이 저렴해지기 때문입니다.

저수준은 복합기, 스캐너, 라디오, 프린터 등에 사용됩니다.
이 기기들에는 컴퓨터 만큼의 성능은 필요없기 때문에 컴퓨터 사양은 낮추고 가격을 떨어트리기 위해 사용합니다.

고수준은 스마트폰 or 데스크탑의 애플리케이션을 개발하는데 사용됩니다.

컴퓨터의 구성 요소

CPU(중앙처리장치)는 컴퓨터의 머리 역할

HDD(하드디스크), SSD : 보조기억장치 -> 컴퓨터의 저장소 역할을 합니다.
전원이 꺼져도 이 안의 데이터는 남아있습니다.

CPU는 데이터를 저장하지 않기 때문에 데이터를 연산하거나 처리하려면 보조기억장치한테 요청을 보내서 저장된 데이터를 CPU에 보내야 합니다. 하지만 보조기억장치는 CPU에 비해 속도가 매우 느려서 CPU가 항상 기다리는 상황이 발생합니다. 그래서 메모리라는 CPU의 개인 작업 공간을 둡니다.

ex) final cut 프로그램을 더블 클릭해서 실행 시키면 보조기억장치에 있는 프로그램이 실행되고,
로딩 화면이 뜨면 보조기억장치에서 실행에 필요한 데이터가 메모리에 올라가고 있는 과정입니다.
로딩이 완료되면 CPU가 메모리 위에서 영상편집을 할 수 있게됩니다. 

운영체제(Operating System)

대표적인 운영체제는 윈도우, 맥 OS, iOS, 안드로이드(Android)
윈도우맥 OS -> PC에서 많이 사용하는 운영체제
iOS안드로이드 -> 모바일에 특화된 운영체제

윈도우(Window) -> 마이크로소프트(Microsoft)가 만듬
맥 OS, iOS -> 애플(Apple)이 만듬
안드로이드(Android) -> 구글(Google)이 만듬

운영체제는 하드웨어를 컨트롤하고, CPU와 메모리 등을 관리해줍니다.

애플이 만든 운영체제 위에서 돌아가는 프로그램을 만들려면 Object-C or 스위프트(Swift)라는 언어를 사용해야 합니다.
구글의 안드로이드는 자바(Java) or 코틀린(Kotlin) 언어를 사용해야 합니다.
마이크로소프트의 윈도우는 C#, Visual Basic, C++, JavaScript 등의 언어를 사용합니다.

예전에는 애플 회사의 운영체제에 올라가는 프로그램을 만들기 위해서 Object-C를 많이 사용하였지만, 점차 Object-C보다 스위프트 개발에 집중하면서 Object-C를 사용하던 개발자들은 스위프트 언어로 넘어올 수 밖에 없었습니다.

운영체제 회사들의 움직임은 개발자들에게 큰 영향을 미치고 있습니다.
그렇게 때문에 개발자들은 항상 운영체제 회사의 동향을 파악할 필요가 있습니다.

개발자란 운영체제 위에 프로그래밍 언어로 프로그램을 만드는 사람

느낀점

프로그래밍 언어가 왜 여러개 인지 하나면 얼마나 편할까라는 생각을 했었는데, 이 책을 통해서 그 해답을 어느정도 찾은거 같다. 세상에 천재들은 너무 많고 각자 자신들이 만든 언어가 장점이 더 좋다고 발표를 하다보니 각각에 언어에 장단점을 가진 언어들이 탄생한 것이였다.
프로그램을 실행 시켰을 때 컴퓨터 내부에서 돌아가는 과정을 간단하게 나마 알 수 있었고, 개발자들에게 운영체제를 만든 회사들의 움직이 얼마나 중요한지 알게 되었다.

reference

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