목록전체 글 (14)
수리 공작소
객체란?속성과 행동을 가진 프로그래밍의 독립적인 실체실세계는 객체와 객체 사이의 상호작용으로 이루어질 수 있기 때문에 이러한 객체 지향 프로그래밍이 절차 지향에 비해 실세계를 더 잘 반영하고 있다. 객체의 특징캡슐화된다. 즉, 캡슐 내부의 것을 외부는 알 수 없다.외부와 소통에 필요한 일부 요소만을 공개한다.멤버 변수와 멤버 함수로 이루어져있다. 보통 변수는 객체의 상태를 저장하고 함수는 객체의 행동을 정의한다.객체(object) 와 클래스(class) 의 차이클래스를 실체화시킨 것이 객체이다.예를 들어 강아지라는 동물의 부류가 있으면 우리집 강아지 또삐, 옆집 강아지 왈왈이는 실제 강아지들인 것과 같은 맥락이다.강아지가 클래스 역할이고 또삐 왈왈이가 객체 역할인 셈이다! 클래스 선언부/구현부/접근 지정..
mainC++ main 함수 사용의 표준 형태int main(){ return 0;} void main()도 가능 하지만 이는 C++은 아니다.main 함수 한해서만 return 문 생략이 가능하다.main 함수의 return 값은 어디에 사용이 되는지? return 문은 부모 프로세스로 하여금 자식 프로세스의 종료 상태를 알 수 있게 한다.일단 별도로 부모 자식 프로세스를 나누지 않은 상태에서 프로그램의 부모 프로세스는 운영체제이다. 따라서 위와 같은 상황에서 어떤 프로그램의 종료 상태(return 값)는 운영체제에 전달이 되게 된다.만약 종료 상태 번호에 대한 관계를 따로 설정해놓은 상태라면 의미가 있지만 그렇지 않다면 아무 의미 없다. , cout, C++ 에서 출력할 때 사용하는 cout과 (보..
발전 역사운영체제와 컴파일러를 만들기 위한 목적으로 만들어진 BCLPBCLP를 개조시킨 B언어B언어를 기반으로 유닉스를 만들기 위해 만들어진 C언어C언어의 확장성을 고려하여 객체지향의 특성 및 기능을 추가하여 만들어진 언어가 C++이후 C++에 영향을 받아 탄생한 언어가 JAVAJAVA와 C++의 개념을 섞은 언어가 C# C++의 표준표준이 있어야하는 이유C++ 코드를 컴파일할 컴파일러를 만드는 회사는 다양한데, 표준이 없으면 회사마다 같은 소스코드에 다른 동작으로 컴파일을 하게 됨.표준을 만들어 기본적인 규칙을 지켜 컴파일러를 만들 수 있게 함.그렇지만 회사마다 표준 기능에 + 당사만의 독특한 기능을 추가하는 경우도 있음.1998 년 처음으로 미국 국립 표준원 ANSI에서 C++ 표준 탄생 -> C++..
클라우드 컴퓨팅이란? 인터넷을 통해 가상화된 컴퓨터 리소스를 사용할 수 있는 것 개별 사용자/기업은 자체적인 인프라 없이 가상의 리소스를 주문형 제공(on-demand availability) 받을 수 있다. 이 가상 리소스들은 대규모 데이터 센터에 호스팅이 되어있고 필요 시 확대, 축소할 수 있다. -> 확장성이 좋다. 덕분에 하드웨어를 직접 구매할 필요가 없어 초기 투자 비용을 줄일 수 있다. 따라서 인프라에 대한 유지/보수 부담이 줄어든다. 사용한 만큼 돈을 지불하는 pay as you go 모델을 사용한다. 클라우드 컴퓨팅은 다양한 제공 형태가 있다. (다만, 경계가 명확하게 구분되지는 않는다.) IaaS (Infrastructure as a Service) ex) AWS 의 EC2 : 가상 서버..
CSV(Comma-Seperated Values)는 데이터를 쉼표로 구분하여 저장하는 "텍스트" 파일 형식이다. 데이터 셋을 CSV 형식으로 저장하고 읽을 수 있고, Python에서는 csv 모듈을 아용하여 CSV 파일로 데이터를 저장하고 읽을 수 있다. # CSV 파일 형식 data = [ ['이름', '나이', '성별'], ['John', '25', '남성'], ['Alice', '30', '여성'], ['Bob', '28', '남성'] ] CSV의 장점: 간단하고 직관적인 구조 가독성 널리 지원 JSON과 같은 다른 형식에 비해 상대적으로 가벼운 용량 -> 다양한 데이터 타입이 지원되지 않으므로 당연하다. CSV의 단점: 테이블 형태의 데이터를 저장하는데에 적합하고, 계층적인 구조를 표현하는 것에 ..
● stateful과 stateless는 어느 분야에서 사용되는 용어일까? 주로 네트워크 통신에서 사용되는 용어로, 프로토콜의 특성을 나타낸다. ● stateful의 의미와 stateless의 의미 stateful : 서버가 클라이언트의 상태 정보를 가지고 있는 것. 즉, 상태에 따라 다음 요청에 영향을 줄 수 있다. -> 예) 로그인을 한번 하면 상태는 "로그인"이 되고 그것이 계속 유지되는 것 -> TCP에서 connection을 수립하고 만료될 때까지 열어놓으므로 stateful한 프로토콜이다. stateless : 서버가 클라이언트의 상태 정보를 반영하지 않는 것. 매 요청이 독립적이다. -> 예) 웹 사이트에서 검색 결과에 대한 문서를 열어보는 단순한 행동. -> connection 수립이 없는..
[인공지능(Artificial Intelligence)이란?] 인간의 지능적인 능력을 모방하거나 대체하기 위한 기술 [인공지능의 역사 요약] 1950년, 엘런 튜링 (Alan Turing) 의 Turing Test 질의자(사람), 응답자1(사람), 응답자2(컴퓨터) 질의자는 두 응답을 보고 어느 것이 사람이고 어느 것이 컴퓨터인지 판별 -> 여기서 질의자의 판별이 어긋날 수록 컴퓨터는 인간처럼 사고하고 있음을 뜻함. -> 즉, 시스템에 대한 인공지능의 개입을 사람이 눈치 채지 못 할수록 더 완벽한 인공지능이다. 1950-60년대, Perceptron의 등장 및 탐색 추론 영역의 AI 연구 부흥 1958년, Rosenbaltt의 인간의 뇌신경을 모방한 Perceptron 등장 - input과 weight의..
동적 계획법(Dynamic Programming, DP)이란? 동적 계획(Dynamic Programming, DP)이란 주어진 문제를 작은 부분으로 쪼개어 해결해나가는 방법이다. 이러한 부분에서 분할정복(Divide and Conquer, DC) 비슷하지만 두 가지 대표적인 차이점이 있다. 1. 문제 접근 방식의 차이 DC는 top-down approach이고, DP는 bottom-up approach라는 차이점이 있다. (물론 DP도 top-down으로 사용될 수 있지만 대체적으로 그렇다고 한다.) 2. DP의 추가적인 메모리 저장 DP는 DC와는 다르게 이전에 계산한 값을 배열(혹은 다른)에 저장을 하여 재활용한다. 이와 같은 방법을 Memoization이라고 한다. 덕분에 이후에 중복 계산을 피하..