3. 초기 오픈소스 되짚어보기
▪ 초기 오픈소스 (1950~1960년대)
▪ 모든 소프트웨어가 오픈소스였음
▪ 연구소 및 학계 주도의 컴퓨터 개발
▪ 소스 교환에 대한 제약이 없었음
▪ 예) UNIVAC -> A-2 -> UNIVAC
▪ 오픈소스 그룹
▪ IBM (1967) / SHARE group
▪ DEC / DECUS group
▪ 개발자 = 사용자 = 연구자 = 설계자
4. 1970년대 부터의 연구용 오픈소스
▪ 아직까지도 유지되는 연구 분야의 오픈소스
▪ TeX (Donald Knuth)
▪ SPICE (UC Berkeley)
▪ BSD (Unix / UC Berkeley)
5. 유료 연구 소프트웨어의 시대
▪ Mathematica (1988)
▪ Wolfram
▪ 첫 symbolic calculation software
▪ 예: 1차함수
▪ NeXT용 소프트웨어로 시작
▪ C, Java
▪ MATLAB (1984)
▪ Mathworks
▪ 계산 컴퓨팅용 언어
▪ 포트란 wrapper로 시작
▪ C -> Java
▪ IMSL (International Mathematics
and Statistics Library)
6. 돌아온 오픈소스 연구 소프트웨어
▪ Linux의 발전
▪ 저렴한 UNIX:
▪ 다운사이징 / 클러스터링의 발전
▪ 고전 소프트웨어들의 재개발
▪ GSL (GNU Scientific Library)
▪ ROOT: Data analysis framework (CERN / 2003)
▪ Fortran 라이브러리들의 대체
8. 연구용 오픈소스 언어 / 컴파일러
▪ FORTRAN
▪ 오래된 역사
▪ 수치 해석 라이브러리
▪ 오픈소스 구현체: gForrtran
▪ C
▪ 활발하게 사용되는 언어중 가장
오래됨
▪ 많은 언어들의 기반 언어
▪ 오픈소스 구현체: gcc
▪ R
▪ 통계 처리에 특화된 언어
▪ 다양한 패키지를 쉽게 설치 가능
▪ 오픈소스 언어
9. 연구용 언어 / 오픈소스 구현체
▪ Mathematica
▪ Wolfram Research
▪ 수학에 특화된 언어
▪ Symbolic calculation
▪ MATLAB
▪ 행렬 연산에 특화된 언어로 시작
▪ 과학 연구용 언어로 각광
▪ 다양한 연구 분야에 사용
▪ Sage
▪ Mathematica의 오픈소스 구현체
▪ 문법 호환
▪ 추가 문법들이 있음
▪ Octave
▪ MATLAB의 오픈소스 구현체
▪ C++로 구현
▪ 모듈 지원
10. 연구용 오픈소스 패키지 (python)
▪ Python
▪ Numpy
▪ FORTRAN의 수치해석
라이브러리의 파이썬 인터페이스
▪ 행렬 연산에 특화됨
▪ scipy
▪ numpy 및 기타 패키지를 이용해
만든 과학 계산용 모듈
▪ matplotlib
▪ 행렬 플로팅 라이브러리
▪ MATLAB 문법과의 호환성을
고려하여 개발함
▪ scikit-learn
▪ 기계학습용 라이브러리
▪ Scikit-image
▪ 이미지 처리용 라이브러리
11. 연구용 오픈소스 패키지 (python interface)
▪ PyGSL
▪ GSL 라이브러리 래퍼
▪ Pandas
▪ 데이터 분석및 핸들링 라이브러리
▪ PIL
▪ 파이썬 이미지 라이브러리
▪ Spark
▪ 대규모 데이터 분석용 프레임웍
▪ TensorFlow
▪ 딥러닝 연산 프레임웍
▪ Keras
▪ TensorFlow 또는 Theano
인터페이스를 통합하는 프레임웍
13. Learn by run: 연구용 코드 실습
▪ 준비
▪ codeonweb의 practice 에서 python3 언어를 고릅시다.
▪ 또는 컴퓨터에 jupyter를 설치하고 jupyter notebook을 실행합시다.
▪ Python+numpy로 행렬 연산해보기
▪ 랜덤한 숫자가 든 4x4 행렬 두 개 만들기 (A, B)
▪ 기본적인 행렬 연산: 합, 차, 곱
▪ transpose / inverse 계산하기
▪ Python+numpy 내장 함수 사용하기
▪ 1~100사이의 랜덤 숫자 1000개 만들기
▪ 0~10 사이를 1000개로 나누어 1x1000 크기의 벡터 만들기
14. ▪ python+matplotlib로 그래프 그려보기
▪ plot
▪ 앞에서 만든 0~10사이의 수 1000개로 sin / cos 그래프를 한 그림 위에 그리기
▪ histogram
▪ 앞에서 만든 1~100사이의 랜덤 숫자 1000개로 분포 그려보기 (10단계)
▪ scatter plot
▪ 0~100사이의 정규 분포 숫자 1000개를 담은 두 벡터 x, y를 만들기
▪ x,y 를 좌표로 하는 2차원 scatter plot 그리기
15. Next is...
13/16: Special Lecture (Deep learning)
@inureyes
Questions? inureyes@gmail.com
OR
https://www.codeonweb.com/circle/@oss-basics-hu