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

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

서론


네트워크, 서버, 프로그래밍 언어, 자바, 클라이언트, 깃허브 다 뭔데
개발자나 디자이너와 혹시나 협업할 미래의 나를 위해서
'티스토리' 하려면 읽어야 해서

R, Python 공부를 늦게 시작한 편이다. 통계 전공 2학년을 마친 나로서는 꽤 고민이 많은 시기.

특히 사회조사분석가와 광고 마케팅이라는 분야에 관심이 많았던 나의 진로와 공부 간의 접점을 좁히는 것은 쉽지 않은 일. 주변 동기들처럼 CPA, 경영 등 여러 분야로 나아가는 것보다는, 나름 흥미로웠던 데이터 분석 공부에 심혈을 기울이려 마음먹었다.

고민이 계속되는 중 개발자 및 컴퓨터 공부를 하는 친구와의 이야기를 하면서 , sql 및 자바스크립트에 대한 지식을 마구 쏟아냈다. 진짜 하나도 못 알아먹었는데... 티스토리 편집, 애프터 이펙트 편집, R 패키지 다운, 쿠팡 주문 등등 밀접한 곳에 다 포함된 지식이 아니던가? 어차피 데이터 분석 업무를 위해서 지금까지 내가 알고 있는 컴퓨터 프로그램과 웹브라우저 상식들을 체계적으로 정리해줄 수 있는 프로그래밍 교양 책 정도가 없을까? 하다가 보석처럼 발견한 책.

 

1장. OT


가장 먼저 알아야 할 지식은 '프로그래밍 언어'가 아니다

 

IT 산업은 자동차 만들기

IT 산업 비전공자 종사자들(기획자나 디자이너)의 이야기일지도 모르겠다. 이 책의 목적이라고 할 수 있는 개발자 및 관련 직무 종사자들과의 '소통' 때문이다.

IT 산업의 특징과 기획 경영을 위해 그려야 할 로드맵을 자동차에 빗대고 있다. 

1. 완벽한 기획
- 지금 떠올린 자동차를 생각하며 바퀴, 뼈대, 문짝, 보닛 등을 서서히 조립해 나간다. 
- NO, 6개월 뒤에 바퀴 없는 자동차가 나올지도 모르는 혁신의 속도가 어마어마한 이곳에서는 틀린 선택

2. 점진적 발전
- 이동수단이라는 점에 포커스를 맞추어 킥보드, 자전거, 오토바이, 자동차 순으로 기능을 추가, 발전시킨다.
- YES, 처음부터 완성 형태를 고집하고 IT 산업에 뛰어드는 것보다는 고객의 니즈와 회사의 사정으로 융통성 있게

 

2장. 프로그래밍 언어 & 운영체제


프로그래밍 언어 = 언어
프로그래밍 언어는 카페 아르바이트 업무 설명서

[당신(영어)] - [프로그래밍 언어] - [개발자] - [컴파일러(</>)] - [컴퓨터(기계어)]

 

0과 1로 말하는 컴퓨터와 영어로 말하는 인간 사이의 번역기라고 생각하면 된다.

개발자는 프로그래밍 언어로 문서를 작성해 컴파일러에게 명령을 전달하면, 컴파일러가 기계어 0,1로 변환

 

 프로그래머는 코딩할 때 모든 단어, 숫자를 직접 쳐야 하나?

개발자의 작업을 도와주는 기능이 들어있는 IDE(통합개발환경)을 활용

몇 글자만 쳐도 자주 쓰는 문장 추천, 코드 아닌 그림으로 작업하게 가능

Android Studio : 안드로이드 앱 개발 용도
Xcode : 애플 운영체제 위 앱 개발 용도
Eclipse : C/C++, 자바, 웹 개발 용도
Pycharm : 파이썬 개발 용도
...

IDE(통합개발환경)

C언어 말고 B언어랑 A언어는 왜 없나요

프로그래밍 언어는 사람들의 생각이 모두 달라서 다양해졌다. 그중에서 적자생존(?)하며 주류 및 비주류 언어가 나뉘게 되었고, 각각의 장단점이 명확해서 다른 용도 혹은 전문 분야가 다르게 발전하며 여러 언어가 공존하는 중이다.

그러한 프로그래밍 언어들을 구분하는 기준이 하나 있다. 바로 '저수준'과 '고수준'

저수준 언어(컴퓨터 친화적)
- 인간이 구체적으로, 꼼꼼하게 적어줘야 함
- 덕분에 컴퓨터가 쉽고 빠르게 이해하는 장점 , 낮은 사양에서도 원활히 작동
- IPTV, 복합기, 스캐너, 라디오, 프린터 등 컴퓨터 사양을 낮추고 저렴한 가격이 필요한 경우

고수준 언어(인간 친화적)
- 인간이 쓰기 편리하고, 유지 보수도 쉬움
- 컴퓨터가 인간이 대충 써도 열일해야함, 즉 저수준 언어보다 작동이 느림
-  스마트폰, 데스크톱 앱 등 고사양의 작업이 필요한 경우

 

컴퓨터의 구성요소를 이해해야 소프트웨어가 보인다

컴퓨터 부품, 하드웨어들을 생각해보자. 이를 이해하면 소프트웨어 및 컴퓨터의 작동방식과 유사함을 알 수 있다.

CPU (중앙기억장치) 컴퓨터의 '머리'
메모리  CPU의 '개인작업공간'
HDD(or SSD) (보조기억장치) 컴퓨터의 '창고'
- 전원이 꺼져도 데이터가 남아있음

CPU가 SSD에서 필요한 데이터를 찾는데 시간이 너무 오래 걸린다. 같이 일을 하면 CPU가 항상 기다리는 입장이 되는 꼴.

그래서, CPU는 메모리라는 개인 작업공간에서 창고에서 데이터 한 뭉텅이를 가져다 놓고 일한다!

포토샵을 예로 들자면, C:/ Program Files/ Adobe/ Photoshop이라는 창고로 찾아가서 프로그램을 실행해야 한다.

오래 걸리지 않나? 이 시간이 바로 HDD에서 메모리까지 데이터를 가져다주는 시간을 의미한다.

 

Q. 그래서, 이 모든 작업을 우리가 시켜야 해?
A. 아니, 운영체제(OS)가 다 해줄 거야.
운영체제(Operating System)

MS의 Windows, Apple의 iOS와 Mac OS, Google의 Android

이 모든 운영체제가 하드웨어를 관리해준다. 예를 들면 카카오톡 회사는 위 4개의 운영체제 말고 다른 운영체제 위에서 제작을 할 필요가 없다.  중요한건,  각 운영체제 위에 돌아가는 프로그램을 만들려면 회사에서 정해준 언어를 사용하라는 것이다.

애플 Objective-C 또는 Swift
구글 Java 또는 Kotlin
윈도우 C#, C++, Javascript, Visual Basic 등

3장. 네트워크, 클라이언트, 서버

 


4장. API와 JSON

 

 


5장. 애플리케이션

 


6장. 웹(Web)

 


7장. 데이터베이스와 이미지 처리

 


8장. 프레임워크와 라이브러리

 


9장. 협업, 소스 관리, 디자인

 


 

반응형