재미있는 내용 (면접관련X)

욱2·2023년 4월 8일
0

CS JustForFun

목록 보기
1/2

우리가 사용하는 언어를 자바 컴파일러가 컴퓨터의 언어 0100101로 만드는 작업을 언급한적있다.
컴퓨터는 전기로만 움직이는 가장 low level (on&off) 이라고 한다. 그래서 우리 인간이 정의한 숫자와 컴퓨터가 정의한 숫자는 다르다.


인간 : 123 = 1x100 + 2x10 + 3x1 = 123이다
컴퓨터는: 001=1, 010=2, 011=3 이런식으로 숫자를 정의한다.
0과1이 베이스인 컴퓨터는 1의 자리를 2^1 , 10의 자리를 2^2 ...로 정의한다

약간 정리하기 편하게 00000000 묶어서 바이트라고 한다. 11111111=> 256바이트. 우리가 어렸을때 좀 들어봤던 숫자이다.

컴퓨터는 이 숫자들로 글을 만들고(정의), 색을 보여주고(정의) 소리를 들려(정의) 주곤 한다.

여기서 점점 발전해서 (re-use) 패턴이 나온다.
이모티콘을 만든 후 색을 바꿔 주고 싶다면. 새로운 바이트로 새로운걸 만드는게 아니라
이모티콘이 가지고 있는 바이트에 특정한 패턴을 더해주는것이다. 이러면 일 처리가 제곱이 아닌 배가 된다.

효율을 위해서 이렇게 시작한게 자바등에 영향을 준다는게 미쳤다고 생각한다.

여기서 조금 더 추가하자면 비디오 스트리밍을 하게 된다면 아주 많은 바이트로 용량이 커질 것이다. 거기서 개발자들은 알고리즘 등을 통해 용량은 최적화, 속도는 빠르게 만든다.

이런 과정을 컴퓨터는 일반 사용자에게 보여주지 않는다.
low level implementations 는 컴퓨터가 처리하고 유저들은 high level abstraction을 사용하게된다. ex ) high 자동차를 이동수단 low 자동차 엔진의 원리


그리고 이 원리를 우린 알고리즘이라고 칭한다.

ex) 연락처 auto-complete

  • h를 치면 hawook hajung hamin 등등 아주 많은 값을 준다
  • 여기서 알고리즘 없이 올드스쿨로 찾는다면, 이름란에서 한장한장 넘기면서 찾게된다.
  • 알고리즘 사용시, h를 기준으로 1000장에서 반으로 나누고 나누고 한다. 자료구조에서 본 내용이다. 빠르게 찾는 방법이다.

우리가 알고리즘은 취업 문제라고 생각하는데...개발자 마인드로 효율을 올리는 문제라고 생각했으면 좋겠다.

profile
성장하는 날 위한 기록

0개의 댓글