에게해 스터디원들과 함께하는 CS 간단 발표 및 독후감🍦

[1일1로그 100일 완성 IT지식] 63번 '표준과 프로토콜의 세계, 인터넷'

 

 

인터넷이란 컴퓨터들이 서로 통신 가능한 거대한 네트워크이다~ (네트워크 - 컴퓨터끼리 연결하는거)

전세계의 컴퓨터를 연결하게되면 저희가 인터넷 사용하듯이 서로 파일 주고받고 수많은 정보의 저장, 무료 정보 제공과 공유, 시간과 공간의 제약이 없고(게임에서 바로 이동하고 만나는것 처럼), 유투브 스트리밍처럼 실시간으로 정보 제공이 가능합니다. 

 

전세계 컴퓨터를 연결하려면 뭐가 필요할까?

-> 이름 + 주소 + 경로 + 그리고 프로토콜

여기서 프로토콜이 중요한데, 프로토콜은 컴퓨터끼리 데이터를 주고 받을 때 어떤식으로 주고 받을껀지 미리 규칙을 정해놓은 겁니다.

 

우리가 카페에서 아이스 아메리카노를 먹으려면 점원한테 아이스 아메리카노 주세요 해야지 프라프치노 달라고하면서 아이스 아메리카노가 나오길 기대하면 안되잖아요?

컴퓨터 간에도 똑같이, 어떻게 데이터를 요청하는지 어떻게 데이터를 건내주는지 서로 정해놓은 규칙이 있습니다. 그걸 포로토콜이라고 하고 저희가 아는 HTTP TCP/IP도 통신규약 프로토콜의 종류중 하나입니다.

 

 


[1일1로그 100일 완성 IT지식] 64번 '인터넷이 가능한 메커니즘'

 

 

 

먼 컴퓨터끼리는 인터넷으로 연결되지만, 가까운 컴퓨터는 유선으로 연결된 이더넷 케이블이나 와이파이, 블루투스로 연결합니다.

와이파이랑 블루투스 연결은 다들 잘 하시니까 아실텐데 거리가 멀어지면 연결이 잘 안되고 가까우면 전자기기 끼리 연결이 되잖아요? 

 

그것처럼 이더넷 케이블도 가까운 거리의 컴퓨터들은 이 선을통해 연결이 가능합니다.

회사에서 이 선 꼽아서 컴퓨터도하고 프린터도 연결하고 집에 TV도 뒤에 저거 꽃혀 있잖아요? 그겁니다.

 

거리가 먼 네트워크는 인터넷으로 연결

인터넷 연결시 필요한거 4가지!  1. 주소 2. 이름 3. 라우팅 4. 프로토콜

1. 주소

2. 이름

근데 저 IP주소 외우고 있다가 웹페이지 접속하는 사람은 많지 않죠?

웹 상에서는 도메인 네임으로 접속해서 인터넷끼리 데이터 통신을 주고받게 됩니다.

 

3. 라우팅 (경로 설정)

 

또 라우팅이 필요합니다. 먼 거리의 컴퓨터끼리 연결할때 출발 컴퓨터에서 도착할 컴퓨터까지의 최적의 경로를 찾을떄 중간에 게이트웨이라는 전자망을 통해서 가는데, 그 최적의 경로를 선택하는 겁니다.

또, 라우팅은 인터넷 뿐만 아니라, 전화 통신망, 그리고 교통망 등 여러 종류의 네트워크에서 사용된다고 합니다. 

 

4. 프로토콜 (컴퓨터끼리 데이터 교환할때 정해놓은 규칙)

 

에게해 스터디원들과 함께하는 CS 간단 발표 및 독후감💎

[1일1로그 100일 완성 IT지식] 36번 '파일 시스템과 블록'

 

 

우리가 당연하게 사용하는 파일들은 사실 운영체제가 사용하기 쉽게 추상적으로 나타내준 형태이다.

기본적으로 데이터는 0과 1의 형태로 컴퓨터에 저장되어있다.

근데 이렇게만 저장되어있으면 우리가 데이터를 찾기도 힘들고 쓰기도 힘드니까 운영체제가 우리가 쓰기 편하게 이걸 파일형식으로 만들어줬다.

오른쪽 파일의 용량에 따라 데이터가 들어가있는 블록들이 배정이되는데 용량이적으면 3개만 배정되기도하고 용량이 크면 그만큼의 블록들이 더 배정된다.

 

하나의 블록안에는 1바이트짜리 데이터가 1000개정도 들어가있다.

그러니까 우리가 보고있는 파일 하나하나는 안에 블록이 차곡차곡 쌓여있고 그 블록은 0과 1의 데이터들이 모여있는 형태이다.

 


[1일1로그 100일 완성 IT지식] 37번 '파일을 휴지통에 넣을 때 일어나는 일'

 

 

사실 휴지통에 버린 파일은 언제든지 복구 가능하다.

실제로 휴지통에 들어가보면 파일이 남아있다.

휴지통 비우기를 눌러야 휴지통 안에있는 파일이 지워지는데, 사실 블록은 미사용 목록으로 돌아가지만 안에있는 0과 1의 데이터들은 그대로 남아있다. 미사용 목록으로 돌아간 블록들이 다른 데이터로 덮어 씌워지기 전까지 정보를 그대로 가지고 있는거다! 

그래서 그런 데이터는 복구 가능하니 중요한 정보라면 정보를 지우는 프로그램을 사용하거나 여러 방법으로 확실하게 지워줄 필요가있다.  근데 요새는 클라우드 컴퓨터나 분산저장 등 데이터 지우기가 여간 힘든게 아니라고하니.. 확실한건 하드디스크를 꺼내서 물리적으로 ^박살^을 내는것이 최고라고 한다~ 

에게해 스터디원들과 함께하는 CS 간단 발표 및 독후감🎃

[1일1로그 100일 완성 IT지식] 33번 '컴퓨터를 작동하게 만드는 운영체제'

 

 

운영체제는 사용자의 컴퓨터 조작을 도와준다.

데스크탑의 윈도우즈 운영체제를 예로들면 (다른것도 구조는 비슷하다),

 

바탕화면에 있는 카카오톡을 클릭하면 운영체제는 카카오톡이 클릭됐으니까 카카오톡의 정보를 주메모리(RAM)로 옮겨준다. RAM으로 옮겨진 정보는 프로세서(CPU)에 의해 처리가 되고 처리 된 정보는 디스플레이 화면을 통해 카카오톡을 실행된 정보를 우리에게 보여준다. 여기서 마우스의 조작 & 디스플레이의 조작 또한 운영체제 한다!

운영체제의 역할을 조금 더 들어가보자면,

운영체제는 사용자가 프로그램을 실행할 수 있는 환경을 제공한다. 이 환경에서 사용자는 프로그램을 편리하고 효율적으로 실행할 수 있다.

 

또한, 하드웨어에 따라 필요한 운영체제의 역할도 많이 달라지는데 대형 컴퓨터의 운영체제는 주로 하드웨어의 이용을 최적화 하는데 집중을하고, 휴대용 컴퓨터 운영체제는 사용자가 프로그램을 실행하기 위해 컴퓨터와 쉽게 인터페이스할 수 있는 환경을 제공하기 위해 설계된다.

 

전체 흐름을 보자면, 

 

하드웨어는 중앙처리장치(CPU), 메모리 및 입출력(I/O) 장치로 구성되어 기본 계산용 자원을 제공한다.

응용 프로그램인 워드프로세서, 스프레드시트, 컴파일러, 그리고 웹 브라우저 등은 사용자의 계산 문제를 해결하기 위해 이들 자원이 어떻게 사용될 지를 정의한다.

운영체제는 하드웨어를 제어하고 다양한 사용자를 위해 다양한 응용 프로그램간의 하드웨어 사용을 조정한다.

또한, 컴퓨터 시스템은 하드웨어, 소프트웨어 및 데이터로 구성된다고 볼 수 있다. 운영체제는 컴퓨터 시스템이 동작할 때 이들 자원을 적절하게 사용할 수 있는 방법을 제공한다. 운영체제는 정부(government)와 유사하다. 정부처럼 그 자체로는 유용한 기능을 실행하지는 못하지만, 단순히 다른 프로그램이 유용한 작업을 할 수 있는 환경을 제공한다.

(출처 -https://velog.io/@vvsogi/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC-1)

에게해 스터디원들과 함께하는 CS 간단 발표 및 독후감🧸

[1일1로그 100일 완성 IT지식] 30번 '기술 표준의 중요성'

 

 

표준의 뜻은 '어떻게 만들어지고' '어떻게 작동하는지' 인데, 지역마다 콘센트와 콘센트 구멍의 표준이 다르다면 집에서 조금 먼 카페에 가면 핸드폰을 충전하기 쉽지 않을거다.

 

소프트웨어에도 많은 표준이 있다.

아스키코드, 유니코드 같은 문자 집합, C와 자바 같은 프로그래밍 언어, 암호화와 압축 알고리즘 등등..

종류와 규격이 동일하기 때문에 사용자가 편하게 사용할 수 있다!

 

표준은 상호운용성을 보장하고 공개경쟁이 이루어지도록 하는데 결정적인 요소이다.

 


[1일1로그 100일 완성 IT지식] 31번 '자유로운 소프트웨어, 오픈소스'

 

 

프로그래머가 작성한 코드는 보통 소스 코드라고 하고, 소스 코드를 컴파일한 결과는 오브젝트 코드라고 한다.

옛날에는 오픈 소스라는 개념이 희박해서 소스 코드에 저작권 등이 걸려있었고 해당 기업은 기업 비밀이 유출되는 소스 코드를 공개하지 않고 오브젝트 코드만을 공개하는 경우가 대부분 이었다.

그러다 사회 발전에 발맞춰 오픈소스가 대두되었고, 현재 구글 마이크로소프트 등 많은 기업들은 오픈소스 문화에 기여하는 부서를 따로 만들어 오픈소스 생태계에 기여하고있다. 우리 같은 프로그래머들은 정말 감사한일이 아닐 수 없다!

 

(위키백과 오픈소스란 -오픈 소스 소프트웨어는 소스 코드를 공개해 누구나 특별한 제한 없이 그 코드를 보고 사용할 수 있는 오픈 소스 라이선스를 만족하는 소프트웨어를 말한다. 통상 간략하게 오픈 소스라고 말하기도 한다.)

 

-오픈 소스에 대한 참고 블로그 https://brunch.co.kr/@bumgeunsong/15

에게해 스터디원들과 함께하는 CS 간단 발표 및 독후감🧸

[1일1로그 100일 완성 IT지식] 28번 '구글 같은 서비스는 어떻게 개발할까?'

 

 

우리가 집을 짓는다고 생각을 해보자!

집을 지으려고 벽돌부터 만드는사람은 없을거다. 어떻게 이쁘게 지을지 설계부터 할거고, 잘 만들어진 부품들을 사올거고  부품들을 조립할거다. (물론 이렇게 간단하진 않겠지만ㅎㅎ)

[사진=게티이미지뱅크]

 

프로그래밍도 별반 다르지 않다.

대규모 프로그래밍을 할 때는 뭘 할지 파악하고, 큰 맥락에서 점차 작은 부분으로 적당히 나눠서 개인에게 업무를 분담하고, 각자 작업하면서 전체적으로 일관되어 있는지 확인을 하며 프로그래밍이 진행될거다.

(집 지을때 비유한 잘 만들어진 부품이란 프로그래밍 세계에서 라이브러리, 인터페이스, 개발 키트 등이 있다. )

 

 

이때 프로그래밍의 규모가 커질수록 협업하는 인원도 늘어날텐데 다들 아시겠지만 남의코드를 읽고 이해하는건 쉽지않다.. 때문에 개인으로 분담한 업무가 합쳐질때 여러 오류가 발견된다.

 2015년 구글 발표에 따르면 당시 구글의 전체 코드는 20억 행이라고 하니(omg) 중간중간 얼마나 많은 오류가 있었을지 생각만해도 어지럽다.

실제로 소프트웨어 개발 기업에는 구현코드보다 오류를 검증할 테스터 코드가 더 많고, 프로그래머보다 테스터가 더 많다고 한다.

 

소프트웨어의 발전 방향!

환경이 빠르게 변하는 만큼 프로그램도 거기에 맞춰 변화해야한다. 새로운 하드웨어가 개발되면 새로운 소프트웨어가 필요하다. 이 때문에 시스템을 변경해야 할 수도 있다. 또한, 새로운 법이나 기타 요구사항이 등장하면 프로그램의 사양이 바뀐다. 예를들어, 세법 프로그램의 경우는 세법이 바뀔 때마다 해당 프로그램을 바꿔줘야한다.

빠르게 변하는 환경에 맞춰 소프트웨어를 유지보수 해야한다. 안그러면 소중한 내 코드를 금방 못쓰게됨ㅠ

에게해 스터디원들과 함께하는 CS 간단 발표 및 독후감🎃

[1일1로그 100일 완성 IT지식] 27번 '작문과 비슷한 프로그래밍'

 

 

저자는 여러 프로그래밍 언어를 소개하고, 프로그래밍을 작문과 비유한다.

글을 쓸 때 문체와 적절한 어휘 사용이 중요하듯이, 프로그램을 작성할 때도 적절한 프로그래밍 언어를(자바 파이썬 등)

사용하고 적절한 코드를 쓰는건 중요하다!

 

 

다음은 대표 언어들의 특징을 알아보자

 

C 언어 - 시스템 프로그래밍 용도로 사용되는 언어의 대표! (시스템 프로그래밍 용도의 언어 _어셈블러, 컴파일러, 텍스트 편집기 같은 프로그래머 도구와 운영체제까지 작성할 목적의 언어)

 

 

자바 - 프로그래밍을 빠르고 편하게 하기위해 개발던 언어 중 하나!원래는 속도는 그다지 중요하지 않지만 유연성이 중요한 가전 제품과 전자 기기 같은 작은 임베디드 시스템에 적용할 목적 이었다. 또한, 자바스크립트처럼 웹페이지상에서 실행할 용도로 변경되었지만 인기가 없고, 지금은 웹 서버에 널리 사용되고있다.(JAVA -spring)

 

자바스크립트 - 처음부터 웹페이지의 동적인 효과를 구현하기 위해 브라우저 내부에서 사용할 목적으로 설계되었고, 현재 거의 모든 웹페이즈는 자바스크립트 코드를 어느 정도 포함하고있다!자바스크립트는 언어 자체가 단순해 만들기 쉽고 컴파일러가 모든 브라우저(ex. Chrome)에 내장되어 있어 콘솔창에 바로 실행 할 수 있다.

 

파이썬

 - 가독성에 초점을 두고 설계되었다. 파이썬은 배우기 쉽고, 쉽고 간결한 문법으로 생산성이 높아 개발도 빠르다.

다른 언어나 라이브러리에 쉽게 접근 & 연동할 수 있어 확장성도 높고 , 이미 수많은 생태계와 커뮤니티가 형성되어 있어 라이브러리가 미친듯이 많다. 다양한 장점으로 저자도 언어를 하나만 꼽자면 파이썬을 꼽았을 정도다!

 

 

 

에게해 스터디원들과 함께하는 CS 간단 발표 및 독후감🎠

[1일1로그 100일 완성 IT지식] 26번 '고수준 언어에서 프로그램 실행까지'

 

 

어제 자 주제랑 비슷해서 어떻게 정리할까~ 고민했는데 한번 복습하는게 좋을것 같당.

또, 저자가 뒤에 얘기하는 프로그래밍 언어 포트란/ 코볼/ 베이직 은 스킵하는게 제 독후감에 더 목적적합한것 같당.

 

일전에 내용처럼 옛날 프로그래머들은 0과 1을 컴퓨터에 직접 입력을 해주어야했습니다.

그러다가 어셈블리어와 어셈블러가 나오면서 프로그래밍 효율성이 폭발적으로 증가했고!

고수준 프로그래밍 언어가 나오면서 프로그래밍은 다시한번 폭발적인 성장을 거쳤습니다!

(그 당시는 포트란 같은 언어가 나온건데 쉽게 파이썬이라고 생각하자!)

어셈블리어를 사용하다가 파이썬을 쓰니 당연히 프로그래밍 하기 쉬워졌고 효율성도 엄청나게 올라갔습니다~

배우기 쉽고 쓰기 쉬울뿐 아니라 고수준 프로그래밍 언어는 에러를 발견하고 고치기 쉽습니다.

파이썬 언어를 0과1로 변환하는 컴파일 과정에서 컴퓨터가 명백한 에러를 미리 점검해줍니다! (철자 오류, 괄호 불일치 등의 구문 오류, undefined 변수의 연산 등등)

 

또한, 자바스크립트 자바 등등 세계적으로 유명한 고수준 프로그래밍 언어들은 계속 발전되고 업데이트되어 더욱 쓰기 쉽고 용이하게 되니 개발자인 저희들 입장에서는 너무너무 개이득입니다!

에게해 스터디원들과 함께하는 CS 간단 발표 및 독후감🎁

[1일1로그 100일 완성 IT지식] 24번 '알고리즘은 이상, 프로그래밍은 현실'

 

 

알고리즘은 추상적이고, 이상적입니다. 

밑의 라면을 끓이는 알고리즘을 보시면 간단하게 표현한 만큼 추상적이고, 자세한 예외처리를 해주지 않아 이상적입니다.

(예를들어, 중간에 물이 끓는데 가스가 없어서 불이 안나오면 물은 끓지 않습니다!)

 

그에비해 프로그래밍 (프로그램을 만드는것 ) 은 아주 상세하고 실질적으로 명령어들을 입력해야합니다.

 

이때 프로그래밍을 0과 1로 해주기는 너무 힘드니까 이용하는것이 다양한 프로그래밍 언어입니다.

 


[1일1로그 100일 완성 IT지식] 25번 '다른 프로그램을 처리하기 위한 프로그램'

 

 

저자가 설명한 어셈블러로 들어가기전에 위의 프로그래밍 언어를 보자.프로그래밍 언어가 없으면 0과 1로 컴퓨터와 소통해야한다.

 

아래는 영화 '이미테이션게임' 에서 나오는 최초의 컴퓨터인데,Java나 JavaScript 같은 프로그래밍 언어가 존재하지 않던 시절.. 컴퓨터에 0과 1을 직접 입력해주었다.당연히 마우스나 키보드도 없으니 사진 안의 동그라미 하나하나가 메모리 적재 장소인데 열어서 안에 뭘 넣어주면 1이고 아무것도 안 넣어주면 0 이런식으로 구동이 되었다..

 

그래서 발전이 된 것이 어셈블리어와 어셈블러이다.

자바스크립트가 컴파일러를 통해 0과 1로 변환되듯이, (0과 1로 바로 변환은 안되고 어셈블리어로 변환이 된 뒤 0과 1로 변환되는 과정을 거치는데 이번 챕터의 범위를 벗어나는 듯 하니 0과 1로 변환된다고 하겠습니다:) )

어셈블리어가 어셈블러를 통해 0과 1로 변환된다.

당연히 우리는 자바나 자바스크립트 같은 훨씬 좋은 언어를 사용해서 느낌은 안오지만, 그 당시에는 획기적인 방법이 나온거고 이거 만든 사람은 그들만의 세계의 노벨상인 튜링상을 수상했다고 한다.

+ Recent posts