1 컴퓨팅 사고력

카네기멜론 대학 쟈넷 윙(Wing) 교수가 이론적 사고(Theoretical Thinking), 실험적 사고(Experimental Thinking)와 더불어 컴퓨터적 사고(Computational Thinking)가 향후 인간의 사고 체제를 지배하는 중추적인 역할을 할 것이라고 주장했다. 산업혁명 이후로 산업, 즉 공장에서 필요한 인력을 육성하고 공급하기 위해서 수학과 공학을 초중등 과정에서 집중적으로 교육하였으며 이러한 전통이 지금까지 이어져 국내 및 전세계 누구나 이론적 사고체계는 익숙하고 친숙하다. 통계가 근간을 이루는 실험적 사고는 스몰 데이터(Small Data)를 일부 초중등 과정에서 접목하고 있지만, 학교를 졸업하고 현실에서 많이 접하게 되고 필수적인 것임에도 통계에 대한 충분한 교육 및 훈련을 받지 못하고 사회에 진출하고 있는 것도 사실이다. 이러는 와중에 빅데이터(Big Data)가 10년도 되지 않는 짧은 시간에 성급 우리곁에 다가왔고, 추상화(Abstraction)와 자동화(Automation)가 근간을 이루는 컴퓨터적 사고도 새로운 사고체계로 함께 받아들일 시점이 되었다.

컴퓨팅 사고력을 떠받치고 있는 두가지 축 중 하나인 자동화(Automation)을 이해한다. 특히, 유닉스 철학을 이해하고, 데이터 사이언스 작업의 중요한 일익을 담당하는 파이프라인을 이해한다. 유닉스 철학에 따른 R스크립트 위치도 생각해본다.

2 유닉스 철학과 RScript

R 파이프라인

통계 예측모형, 기계학습, 딥러닝 시스템을 개발할 경우 유닉스/리눅스 운영체제로 환경을 통일하고 텍스트 파일을 모든 프로그램과 시스템이 의사소통하는 기본 인터페이스로 잡고, 이를 파이프로 연결한다.

  1. 텍스트 데이터로 분석에 사용될 혹은 훈련데이터로 준비한다.
  2. 파이썬 혹은 쉘스크립트, R스크립트를 활용하여 전처리한다.
  3. R caret 혹은 파이썬 Scikit-learn 예측모형을 적합, 기계학습 훈련, 시각화를 수행한다.
  4. 마크다운(웹), LaTeX(조판) 출력형식에 맞춰 서식을 결정한다.
  5. 최종 결과를 텍스트, 이미지 파일, pdf, html로 출력한다.

유닉스 철학

Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface. – Doug McIlroy

  • 한가지 작업만 매우 잘하는 프로그램을 작성한다(Write programs that do one thing and do it well)
  • 프로그램이 함께 동작하도록 작성한다(Write programs to work together)
  • 텍스트를 다루는 프로그램을 작성한다. 이유는 어디서나 사용되는 인터페이스가 되기 때문이다(Write programs to handle text streams, because that is a universal interface)