본문 바로가기

전체 글

[Python 28] 객체기술의 개요 이제부터는 객체(Object) 기술에 대해 살펴보도록 하자. 객체기술은 현대의 모든 정보기술의 근간을 이루는 기술로서 반드시 이해하고 넘어가야 하는 부분이다. 이번 글에서는 객체의 기본 개념에 대해 살펴보도록 한다. ○ 객체를 활용하여 행위의 주체를 표현할 수 있다. 컴퓨터 언어에서 객체(Object)는 어떤 것 (~thing)을 나타낸다. 함수는 행위(behaviour) 라고 계속 얘기를 했었는데, 사람들의 언어에서 행위는 동사에 해당한다. 그런데, 사람들의 언어에서 동사 앞에는 항상 그 행위의 주체가 되는 주어 (subject)가 나타난다. 즉, 사람의 언어에서 가장 일반적인 문장(statement)은 "누가(who) 무엇을(what) 어떻게(how)한다"의 형태이다. 우리가 영어공부하면서 문장의 5.. 더보기
[Python 27] 우리는 왜 코딩(coding)을 공부해야 하는가? 뜬금없지만, 코딩에 대한 이해를 조금 갖춘 지금의 상태에서, "우리는 도대체 왜 코딩 공부를 해야 하는가?" 라는 주제에 대해 잠시 생각해 보는 시간을 갖도록 합시다. 요즘은 모든 제품이 전자제품입니다. 보통 우리가 보게 되는 제품은 몸통은 기계이지만, 그 몸통을 움직이는 머리는 컴퓨터입니다. 그런데, 여기서 얘기하는 컴퓨터는 딱딱한 하드웨어를 말하는 것이 아닙니다. 머리는 소프트웨어라고 봐야 맞습니다. 머리는 부드러운 소프트웨어이고, 바디는 딱딱한 기계인데, 그 사이를 연결해 주는 것이 전자 (또는 컴퓨터) 라는 하드웨어인 셈입니다. 소프트웨어에서 만들어진 명령을 전자 하드웨어가 전기신호로 바꾸어 기계 하드웨어에게 전달해 줍니다. 모든 동작하는 기계는 내부에 모터가 있습니다. 모터는 전류를 흘리면 회전.. 더보기
[Python 27] 파이썬의 대표적 라이브러리 파이썬에서 데이터 과학 (data science) 및 애플리케이션 개발 측면에서 중요하게 활용되고 있는 몇몇 파이썬 라이브러리에 대해 알아보는 시간을 갖도록 해 보자. 참고로, 파이썬 라이브러리는 모듈 또는 패키지로도 불리는데, 모듈(module)은 하나의 특정한 기능을 위한 함수들을 모아 둔 단위로서, 물리적으로는 하나의 파이썬 스크립트 (파일)가 된다. 패키지(package)는 이러한 모듈을 여러개 모아 둔 단위로서, 형태적으로 하나의 폴더에 해당하게 된다. 유용하게 활용되고 있는 라이브러리들은 다음과 같다. 각각의 특징 및 기능에 대해서는 하나씩 차근차근 살펴보도록 하겠다. - 수학연산을 위한 math - 기본 통계값 계산을 위한 statistics - n 차원 배열 또는 행렬 (ndarray)의 .. 더보기
[python 26] 파이썬 코딩을 하면서 알아두면 좋은 파편같은 상식 (*작성중*) 우리 글에서는 알고리즘이란 하나의 큰 줄기 안에서만 파이썬을 다루었지만, 파이썬을 활용해서 프로그래밍을 하는데 또는 파이썬 관련 글들을 검색해서 읽고 이해하는데에 필요한 몇가지 잡다한(?) 지식들이 있다. 이 글에다 앞에서 미처 얘기하지 못했던 여러가지 파편같은 얘기들을 정리해 보고자 한다. 생각나는 대로 추가하는 형태로 정리하겠다. 언제까지 (*작성중*)이 될지는 예상하지 못하겠다. 이야기해 볼 주제는 다음과 같다. 어떤 큰 그림을 그리고 찾아낸 주제가 아니고, 파이썬 공부를 시작하면서 찾아보게 되는 키워드들이다. 그래서, 눈에 띄는대로 계속 업데이트해 볼 생각이다. 물론, 이 중에서 예외(Exception) 와 쓰레드(Thread) 같은 덩치 큰 주제들은 따로 빼서 블로그를 준비해 보겠다. 여기서는 .. 더보기
[python 25] 파이썬 1부, 알고리즘 편을 끝내며 처음에 블로그를 시작하게 된 계기는 코딩을 처음으로 배우는 대학교 1학년 학생들에게 알고리즘을 중심으로 파이썬을 공부할 수 있는 "제대로 된" 교재를 만들어 보자는 목적이 있었다. 물론, 시중에 정말 좋은 파이썬 교재들이 많지만, 우리 학과에서 시작하려고 하는 파이썬 수업에 "딱 맞는" 교재를 찾기는 어려워서이다. 많은 내용을 담고 있는 교재 보다는 처음으로 파이썬을 공부하는 학생들에게 알고리즘의 탄탄한 기초를 제공할 수 있는 교재가 목표였다. 기초만 탄탄하면 사실 파이썬의 많은 내용들은 이미 인터넷에 무수히 올라와 있다. 인터넷 검색을 통해 지식을 체계화 하는 능력 (아이큐 같은 천부적 능력을 말하는 것이 아니라, 공부에 시간과 노력을 투자할 수 있는 능력을 말하는 것임)과 약간의 영어 독해 능력 (대.. 더보기
[python 24] 알고리즘 연습 - 4 : 두번째로 큰 값 찾기 리스트 중에서 가장 큰 값을 찾는 알고리즘을 만들어 본 후에, 그 문제를 확장하는 의미에서 "리스트에서 두번째로 큰 값을 찾는 알고리즘을 만들고 코드를 제시하라" 라는 과제를 내었다. 대학 1학년 1학기 학생들이 대상이다. 아주 다양한 아이디어가 제시되었다. 그 중에 몇가지 우리 학생들의 아이디어를 공유해 보고자 한다. ○ 큰 값을 구한 후에 그 값을 제거하고 나머지 값 중에 제일 큰 값을 구한다. 첫번째 아이디어는 (1) 먼저 리스트에서 가장 큰 값을 먼저 구한다 (2) 가장 큰 값을 가장 작은 값으로 대체한다. 그러면, 원래는 두번째로 큰 값이었던 값이 가장 큰 값이 된다. (3) 변경된 리스트에서 가장 큰 값을 구한다. 먼저 기본적인 아이디어를 스케치해 보고, 실제 그 아이디어가 작동하는지를 확인해.. 더보기
[python 23] 알고리즘 연습 - 3 : 정렬 알고리즘 데이터 처리에서 가장 중요한 2가지 문제는 검색(search) 과 정렬(sorting) 이다. 이 중에서 데이터를 크기 순으로 정렬하는데 사용할 수 있는 알고리즘은 정말 많이 제안되었다. 그 중에서 가장 흔하게 활용되는 것이 셀렉션 소팅(Selection sorting)과 버블 소팅 (bubble sorting), 퀵 소팅 (Quick sorting), 바이너리 소팅 (Binary sorting) 등이다. 우선 가장 기본적인 선택정렬(selction sorting)을 먼저 다루어 보자. ○ 선택 정렬 (selection sorting) 보통 정렬의 이름에 그 정렬의 특징이 드러나는데, 선택정렬은, 예를 들어 오름차순이라면, 가장 큰 값을 "선택"하여 가장 마지막 값과 바꾸는 방식을 통해 데이터를 정렬하게.. 더보기
[python 22] 디버깅의 2가지 방법 (*작성중*) ○ 알고리즘 (algorithm) 이란? 우리가 만든 파이썬 코드가 우리가 만들려고 했던 알고리즘대로 움직이는지 확인하는 과정이 필요하다. 이러한 확인 과정을 보통 테스트(test), 디버깅(debugging)이라고 부른다. 물론, 그 알고리즘이 올바르게 동작한다는 것이 검증이 되었다는 가정 하에 하는 말이다. 우리에게 어떤 문제 (Problem) 가 주어져 있다 (What). 우리는 그 문제에 대한 해답(solution)을 찾아야 한다. 근데 문제가 너무 복잡하여 금새 답을 떠올릴 수가 없다. 무엇인가 논리의 흐름, 즉 어떤 절차, 을 만들어야 해답을 찾아낼 수 있다. 문제와 해답을 잇는 "논리의 흐름" 을 찾는 것이 중요한데, 이를 보통 알고리즘 (algorithm)이라고 한다. 무엇(What)인가 .. 더보기