본문 바로가기

1:1 개발 공부

(12)
인터페이스 이해하기 인터페이스란? - 쉽게 말해 연결을 뜻합니다. 통틀어서 HCI (Human Computer Interaction) 라고 합니다. 인터페이스를 설명하기 앞서 말씀드릴 개념이 있는데 바로 "구성하다"와 "집합하다"입니다. 만약 학교라는 class가 있습니다. 철수 class와 영희 class를 가지고 있고 싶을 때 이러한 상황을 1)구성하다(composition) 2)집합하다(Aggregate) 라고 표현할 수 있으며 이 두 가지를 합쳐서 연간되다(Assosicate)라고 합니다. 1) 구성하다 : 이루고 있는 개념이라 하나라도 빠지면 안됩니다. 자동차에서 타이어 하나라도 빠지면 자동차가 아닌 것과 같은 이치입니다. 구성 같은 경우, 학교라는 클래스가 직접 철수를 new 하는 개념입니다. 2) 집합하다 : ..
C 언어에 대한 기초 - C를 배우기 전에 알아야할 것들(2) 1) 컴퓨터는 CPU(Central Processing Unit), 메모리, 입력장치, 출력장치, 보조기억장치로 구성되어 있습니다. 2) CPU에는 제어 장치, 연산 장치, 제지스터, 캐시메모리가 있습니다. 3) 메모리는 프로그램과 데이터를 기억하는 장치로, 컴퓨터의 전원을 끄면 사라지기 때문에 나중에 계속해서 사용할 정 보는 보조기억장치에 저장해야합니다. 4) 보조기억장치는 프로그램 및 데이터를 저장하는 장치로, 전원을 꺼도 데이터가 사라지지 않습니다. 장치와 장치 사이에는 정보를 전송하는 신호선이 연결되어 있고, 복수의 제어 장치를 연결하는 공통 신호선을 버스라 고 합니다. 특히, CPU와 메모리를 연결하는 버스를 메모리 버스라고 합니다. 1) 데이터 버스 : 읽기 및 쓰기를 할 값을 주고받는 신호선..
C 언어의 특징 - C를 배우기 전 알아야할 것들 (1) 1) C 언어는 한국어처럼 애매한 표현이 없습니다. Yes or No 로 나누어져 있습니다. OMR, 바코드와 같이 중간은 존재하지 않는다. 2) 컴퓨터는 정직하기 때문에, 잘못된 프로그램이란 것을 알아채지 못합니다. "정밀한 프로그램을 작성할 수 있는 프로그래머가 되겠다."라는 생각 필수! 3) 계산기로 계산할 수 없는 것은 프로그램으로도 만들 수 없다 4) C언어는 모든 사물과 현상을 숫자로 표현하는 프로그램 언어이다. 5) C프로그램은 1개의 main + 굉장히 많은 서브 루틴으로 이루어져있다. => 메인 루틴도 서브 루틴도 모두 함수로 정의된다! 6) 매번 같은 내용을 입력해야 할 때 사용하는 것이 바로 preprocessor이다. 전처리 기능이라 부른다. ex ) stdio.h, math.h =..
병렬처리 정의, 코드와 주석의 관계, 클래스-생성자, 소멸자, 객체 초기화 병렬처리의 정의에 대해서 말해볼까 합니다. 메모리는 무한정이지 못합니다. 그래서 발생하는 일들이 있습니다. 예를 들어, 인스턴스 1000(천)개를 만들 건데 객체가 10000(만)개가 필요할 수 있습니다. 그렇게 되면, 메모리가 부족해서 인스턴스를 메모리에 다 올리지 못하게 되겠죠? 그렇다면 어떻게 할까요? 사람 세계에서는 만개라고 치고, 컴퓨터가 10개의 역할을 해주게 됩니다. 동시에 행할 수 없기 때문에 메모리에서 뺐다가 다른 인스턴스에 주었다가 즉, 스와핑을 아주 빠르게 실행 합니다. 비유하자면 이렇습니다. 책은 10권인데, 100명에게 책을 주어야하는 상황이 옵니다. 그러면 책 10권을 A에게 주었다가, A에게 준 책을 B에게 주었다가 하는 식인 거죠. 우리가 볼땐 줬다 뺐는 상황이지만 컴퓨터는 ..
프로그래밍 세계 - 사용자 코드와 구현 코드, 인터페이스, UIUX, 프로그래밍에는 크게 사용자 코드와 구현 코드로 구분되어 있습니다. 사용자(코드) 구현 코드 의미 사업/도메인 기술 중요도 경험(연차) 학습(실력) 직업 PM 아키텍트 1. 사용자 코드란 쉽게 말해, 비즈니스(사업), 도메인입니다. 내 프로젝트, 내 사업과 관련된 것을 말합니다. 예를 들어 내가 보험에서 일을 한다면, 보험 금액을 청구하고 보험금을 관리하고 사업과 관련된 일련의 행위가 모두 사용자 코드에 해당됩니다. 이렇게 사용자 코드를 위주로 실력을 쌓았다면, PM을 할 경우가 많습니다. 따라서 해당 분야에 경험이 많으면 많을수록, 즉 연차가 쌓이면 쌓을수록 능력치도 더 올라갑니다. 2. 구현 코드란 기술입니다. 사용자 코드가 직접 사업을 운영한다면, 구현 코드는 운영이 잘 될 수 있도록 설계해주는 것이..
객체와 인스턴스의 차이 / 라이브러리와 패키지의 차이 객체와 인스턴스 객체와 인스턴스의 차이에 대해 말해볼까합니다. 차이라기보단 조금 더 명확한 설명을 적어보려합니다. 예를 들어보겠습니다. 제가 '책 사와'라고 말했습니다. 그러면 이것은 클래스입니다. 그래서 누군가 저에게 '책'을 가져온다면, 그것은 '객체'입니다. 컴퓨팅 환경에서 내가 그 객체를 어딘가에 놓고 써야겠죠. 컴퓨터는 메모리라는 공간에 무엇인가를 놓고 작업을 하게 됩니다. 즉, 메모리 안에 객체를 넣기 위해서 해당 객체가 들어갈만큼 메모리를 할당합니다. 이때, 메모리엔 주소가 있습니다. 주소가 할당된 메모리에 올라가 있는 상태를 '인스턴스'라고 하며, 객체를 메모리에 올리는 과정을 '인스턴스화'라고 합니다. 인스턴스가'객체를 소프트웨어에 실체화'한다는 의미가 무엇인지 이해가 되셨을까요? 객체를..
스크립트 언어 / 자바와 C++의 차이 / 메모리 구성요소 / 조각모음과 포맷 해야하는 이유 / 안드로이드와 ios의 차이 스크립트 언어&기계어&마크업 언어의 차이점 스크립터 언어에는 자바스크립트, 파이썬과 같은 언어를 말합니다. 쉽게 말해 C언어, C++언어와 같은 기계어보다 모던합니다. 최근에 나온 방식들, 기법들을 활용했기 때문에 include iostream 와 같은 부가적인 코드(세레모니 코드, 보일러 플레이트)들이 들어가지 않습니다. 코드가 짧고 간단해보이지만 실은 숨겨져있을 뿐, 컴파일러(인터프리터)가 우리를 도와주는 것입니다. 이처럼 스크립터 언어는 컴파일러 도움을 받고 의지하는 만큼, 개발자가 비교적 다양하게 코딩을 하지 못해 복잡한 코드를 실현시키기 어렵습니다. 컴파일러가 하라는데로 해야하니까요. C언어, C++언어와 같은 경우 모든 코딩이 가능합니다. 대신 그만큼 버그도 생기고 우역곡절(?)이 많겠지만 그..
메모리 공간 : 힙, 스택, 포인터, 메모리 누수 / 클랙스, 함수, 객체, 메소드 메모리 공간 (스택, 힙, 정적 영역) 프로세스에는 스레드가 있고, 스레드에는 스택, 힙, 정적 영역으로 있습니다. 즉, 메모리 공간은 스택(Stack), 힙(heap), 정적(static) 영역으로 구성되어있습니다. 정적영역에는 코드영역과 데이터 영역으로 이루어져 있습니다. 프로세스가 실행되면, 스택, 힙, 코드영역, 데이터 영역 이렇게 4개의 메모리 구간을 할당받습니다. 그 중 스레드가 생성되면 힙, 코드, 데이터 영역은 프로세스에 할당된 것을 모든 스레드에 공유합니다. 따라서, 스택에 있는 영역 혼자 공유가 되지 않습니다. 그렇다면, 스택에 있는 메모리를 공유받으려면 어떡해야 할까요? 바로바로 => 스택 영역에서 포인터를 통해 접근합니다. 포인터(pointer)로 스택에 있는 영역을 힙에서 할당받는..