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

OSS SW Basics Lecture 12: Open source in research fields

  • 1.
  • 2.
  • 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 라이브러리들의 대체
  • 7.
  • 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 인터페이스를 통합하는 프레임웍
  • 12.
    오늘의 Learn byrun: 실습!
  • 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: SpecialLecture (Deep learning) @inureyes Questions? inureyes@gmail.com OR https://www.codeonweb.com/circle/@oss-basics-hu