왜 Array Index는 0부터 시작하는 것일까?
·
👩🏻‍💻 Computer Science
이 의문이 든 것은 배열의 인덱스와 N번째 요소를 페어링하여 코드를 작성할 때 문득 든 것입니다. 아마 프로그래밍을 처음 배우는 사람들은 한번쯤 거쳐가는 질문이었을 것입니다. 사실 간단히 어떤 이유에서이겠거니라는 추측은 하고 있었는데, 이것 저것 찾다가 가장 설득이 되었던 글을 모아보았습니다. Why numbering should start at zero (1982) 수열을 표시할 때, 왜 0부터 시작하는 것이 좋은지 서술하는 글입니다. 어떻게 수열을 표시할 수 있는지 예시를 제시합니다. 길이가 N인 시퀀스를 표시할 때 0
순수함수
·
👩🏻‍💻 Computer Science
순수함수 일반적으로 이야기하는 프로그래밍에서 순수 함수의 특징들은 수학적 함수의 성질에서 기원한다. 수학적 함수의 정의에서 정의역 1개의 값은 2개 이상의 치역을 가질 수 없다. 프로그래밍에서 순수함수는 다음과 같은 특징을 갖는다. 함수의 인자로 사용되는 값 하나에 대응하는 함수의 결과값이 유일하게 존재한다. 평가 시점이 중요하지 않다. 언제 어디서든 동일한 인자값에는 동일한 값이 반환된다. 불변성 : 함수 외부의 상태를 변경하지 않는다. 이를 부수효과side effect 가 없다 라고도 한다. 참조투명성 : 외부 상태를 변경하지도 않고 외부의 상태로부터 영향 받지 않는다. 부수효과 side effect 란? 외부에서 받는 효과로 다음과 같은 예시 상황들이 있다. 자료구조를 고치거나 필드값에 할당 자료구..
컴퓨터의 구조
·
👩🏻‍💻 Computer Science
🤔 컴퓨터의 구조는 왜 알아야 하는 걸까? 1. 문제 해결 능력을 기를 수 있다. 문제가 생겼을 때 거리낌없이 컴퓨터 내부를 들여다볼 수 있어야 한다. 컴퓨터를 미지의 대상으로서 두려워하지 말고, 내려다보며 코딩하자. 2. 성능, 비용, 용량을 비교하며 프로그래밍을 할 수 있다. 결국 좋은 프로그래밍이란 '비용'에 대한 이야기를 빼놓을 수 없다. 최소의 비용으로 최선의 결과를 추구해야 한다. 컴퓨터의 구조 컴퓨터의 구조는 컴퓨터가 이해하는 정보, 컴퓨터의 핵심 (물리적)부품으로 나뉜다. 컴퓨터가 이해하는 정보 데이터 명령어 컴퓨터의 핵심 부품 CPU 메모리 보조기억장치 / 입출력장치 컴퓨터가 이해하는 정보 데이터 정적인 정보. 컴퓨터와 주고받는 혹은 내부에 저장된 정보를 [ic]데이터[/ic]라 통칭하기..
유닉스 Unix 와 리눅스 Linux
·
👩🏻‍💻 Computer Science
유닉스와 리눅스의 시작 1991년 리누즈 토발즈라는 대학생이 Linux 커널을 만듬 1969년 유닉스의 탄생 유닉스 Unix 유닉스의 주요 기능 멀티태스킹 : 여러 프로그램을 동시에 실행할 수 있는 기능 가상메모리 : 프로그램이 물리적으로 사용 가능한 것보다 더 많은 메모리를 사용할 수 있도록 하는 시스템 파일 시스템 : 파일을 구성하고 저장하기 위한 계층적 시스템 셀 : 사용자가 운영 체제와 상호 작용할 수 있도록 하는 명령줄 인터페이스 리눅스 Linux 리누스 토르발르가 1991년 유닉스 기반으로 개발한 컴퓨터 운영체제이다. 리눅스는 공개 소프트웨어라 회사 또는 그룹 등에서 커널 소스를 받아 OS를 직접 제작하여 사용된다. 따라서 특정 기관이 배포를 책임지는 것이 아니라 많은 배포판이 나온다. 리눅스..
진법의 사칙연산, 2진수를 중심으로
·
👩🏻‍💻 Computer Science
진법 계산 방법 숫자인 진법을 익힌 뒤 가장 기본적인 활용 방식인 사칙연산(+, -, *, /) 방법을 정리해보았다. 가장 익숙한 10진수의 사칙연산 원리를 다시 되짚고 뺄셈, 곱셈, 나눗셈을 가장 간단한 진법인 2진법으로 고민해보았다. 다른 진수도 같은 원리로 작동할 것이다. ➕ 덧셈 10진수의 덧셈 44 + 86 ―――― 130 10 진수에서 덧셈을 할 때에 1의 자리부터 가장 왼쪽 자리수까지 각 자리 수를 더한다. 각 덧셈 결과로 어떤 자리수가 10 이상일 경우, 해당의 자리에서 -10을 하고 바로 윗자리수에 +1 을 해준다. 2진수의 덧셈 예시로 1101 (2) + 10111 (2) 를 계산해보자. 2를 넘는 자리수에 2를 빼고 바로 윗자리에 1을 더해주면 다음과 같이 결과가 나온다. 01101 ..
진법과 진법 변환
·
👩🏻‍💻 Computer Science
진법이란? 진법은 수를 표기하는 기수법의 하나로 임의의 숫자를 사용하여 수를 표현하는 방법이다. 우리는 일상적으로 10진법을 사용하고 있다. 우리에게 주어진 가장 기본적인 수 세기 도구 손가락이 👐 10개라 가장 직관적인 방법이 아닐까? 반면 컴퓨터는 2진법으로 수를 표현한다. // 2진법 - 10진법 010 (2) == 2 // 2^3*0 + 2^2*1 + 2^0*0 // 0, 1 한자리씩 == a bit // 8 bit = 1 byte 프로그래밍에서 많이 사용되는 진법 2진법 8진법 : 리눅스나 FTP 등에서 파일/폴더 권한 표현 등 10진법 16진법 : 1byte의 크기를 쉽게 표현할 수 있다. 유니코드, 프로그래밍시 변수 주소 값 등 🤔 진법을 왜 알아야할까? 진법은 프로그래밍 전반에 걸쳐 사용된..