아미아미아미 :: '프로그래밍' 태그의 글 목록
반응형

국내 최초의 인공지능 소프트웨어 테스트 기술서

 

출판사 제이펍
저작권사 リックテレコム
원서명 AIソフトウェアのテスト――答のない答え合わせ [4つの手法] (9784865942910)
도서명 인공지능 소프트웨어 품질 보증을 위한 테스트 기법
부제 예제와 튜토리얼로 익히는 4가지 AI 소프트웨어 테스트 방법
지은이 사토 나오토, 오가와 히데토, 구루마 히로노부, 묘진 도모유키
옮긴이 황석형
감수자 (없음)
시리즈 I♥A.I. 42
출판일 2023. 03. 02
페이지 268쪽
판 형 46배판변형(188*245*15.7)
제 본 무선(soft cover)
정 가 26,000원
ISBN 979-11-92469-81-2 (93000)
키워드 AI, 인공지능, 머신러닝, 테스트, 메타모픽, 뉴런 커버리지, 최대 안전 반경, 커버리지 검증, 심층 신경망, 앙상블 트리
분 야 인공지능 / 머신러닝


관련 사이트
 아마존 도서 페이지
 저작권사 도서 페이지

 

관련 포스트

2023.02.21 - [출간 전 책 소식] - 챗GPT 같은 AI 소프트웨어를 테스트하고 싶다면

 

관련 시리즈

 아이러브 A.I.(IA.I.)

 

관련 도서

 개발자를 위한 시프트-레프트 테스트

 이펙티브 소프트웨어 테스팅

 

관련 파일 다운로드

 https://bit.ly/aisoftwaretest

 

교재 검토용 증정 안내
■ 학교 및 학원에서 교재 선정을 위해 책을 파일로 검토해보고자 하는 분들은 다음 페이지에서 신청 양식을 작성해주시기 바랍니다. 확인 후 연락을 드리겠습니다. https://goo.gl/vBtPo3

강의 보조 자료(교재로 채택하신 분들은 메일(textbook@jpub.kr)을 보내주시면 다음 자료를 보내드립니다.)
■ 본문의 그림과 표

 

미리보기(지은이 소개, 옮긴이 소개, 옮긴이 머리말, 추천의 글, 베타리더 후기, 이 책에 대하여, 0장, 1장 일부)

 

도서 소개

AI 소프트웨어 테스트의 기본 개념, 예제, 튜토리얼로 실전까지 정복

 

챗GPT 같은 AI 소프트웨어가 핫한 시대다. 자율주행, 로봇, 가전제품 등의 분야에서 AI 개발과 활용에 대한 수요가 급증하면서 AI 소프트웨어가 우후죽순 생겨나고 있다. 하지만 내부 결정 과정을 이해하기 어려운 AI는 검증 과정이 무척이나 까다롭기에 새로운 기술적 방법론에만 관심을 갖는 경우가 많다.

 

그러나 현실적으로 소프트웨어의 품질 보증을 위해서는 테스트가 필수적이다. 그렇다면 AI 소프트웨어는 어떻게 테스트해야 할까? 기존 소프트웨어 테스트 기법은 정답과 비교를 하지만, 정답을 정의할 수 없는 문제를 다루는 AI를 테스트하려면 다른 방법이 필요하다. 이 책의 저자들은 최신 학술 논문을 알기 쉽게 해설하며 실전 예제와 함께 그 해답을 제시한다.

 

이 책에서는 기존의 소프트웨어 테스트 기법의 한계를 뛰어넘는 메타모픽 테스트, 뉴런 커버리지 테스트, 최대 안전 반경 테스트, 커버리지 검증 기법을 소개한다. 저자들은 어려운 수학을 재치 있는 글과 그림으로 설명한다. 기법을 이해하는 데에서 그치지 않고 실무에 적용할 수 있도록 구성해 대학생부터 실무 담당자까지 두루 읽을 만한 책이다.

 

지은이 소개

사토 나오토(佐藤 直人)

2005년 히타치 제작소에 입사한 주임연구원이자 공학박사다. 전문 분야는 소프트웨어 테스트, 정형 기법 등이다. 취미는 독서이지만 최근 구독형 동영상 서비스에 밀리고 있다. 루어 낚시에도 관심이 있으나 이 책의 집필 시기에는 아직 한 마리도 낚지 못했다.

 

오가와 히데토(小川 秀人)

1996년 히타치 제작소에 입사한 관리연구원이자 공학박사다. AI 제품 품질 보증 컨소시엄(QA4AI) 운영 부위원장 겸 로고 디자인 담당이며, 머신러닝 품질 관리 검사위원회(AIQM) 위원이다. 전문 분야는 소프트웨어 공학이고, 《AIビジネス戦略(AI 비즈니스 전략)》(情報機構, 2020)을 공동 저술했다. 취미는 사용하지도 않는 그림 도구 수집과 저렴한 제품으로 밤하늘 촬영하기다.

 

구루마 히로노부(來間 啓伸)

1984년 히타치 제작소에 입사한 시니어 사원이자 공학박사다. 2007~2014년에는 국립정보학연구소 특임교수를 지냈다. 전문 분야는 소프트웨어 공학과 정형 기법이다. 저서로는 《Bメソッドによる形式仕様記述(B 메서드에 의한 정형 기법)》(2007), 《Event-B Refinement》(이상 近代科学社, 2015) 등이 있다. 취미는 추리소설 읽기와 산속 온천 탐방이며, 최근에는 플라이 낚시를 익히고 있다.

 

묘진 도모유키(明神 智之)

2006년 히타치 제작소에 입사한 주임연구원이다. 전문 분야는 임베디드 시스템과 소프트웨어 공학이다. 취미는 여행지에서 만난 고양이 사진 촬영이다.

 

옮긴이 소개

황석형

선문대학교 AI소프트웨어학과 교수. 일본 오사카 대학 대학원에서 공학석사와 공학박사 학위(소프트웨어 공학 전공)를 취득했다. 국방대학교 국방정보화사업 관리자 과정 외래 강사, 재단법인 충남테크노파크 상근 겸직교수, 선문대학교 IT교육원장과 전산센터장, 아일랜드 골웨이 대학교 Digital Enterprise Research Institute의 Visiting Researcher 등을 역임했다. 1997년부터 선문대학교 컴퓨터공학부 교수로 재직을 시작하여, 2017년부터는 AI소프트웨어학과에서 인공지능, 데이터사이언스, 소프트웨어 분야의 학생 교육과 연구에 더욱 힘쓰고 있다. 주요 관심 연구 분야는 형식개념분석, 데이터마이닝, 데이터 분석, 소프트웨어 공학 등이며, 번역서로 《인공지능 시대의 AI 리터러시 교과서》, 《데이터사이언스 입문》, 《프로그래머처럼 생각하라》, 《똑똑한 엄마는 국영수보다 코딩을 가르친다》, 《소프트웨어 공학》, 《시맨틱 웹을 위한 RDF/OWL 입문》 등이 있다.

 

차례

지은이 소개 x

옮긴이 소개 xi

옮긴이 머리말 xii

추천의 글 xiii

베타리더 후기 xiv

이 책에 대하여 xvi

 

CHAPTER 0 AI 소프트웨어와 테스트 1

0.1 AI 소프트웨어 테스트의 필요성 1

__0.1.1 AI의 보급에 따른 과제 1

__0.1.2 AI 기술의 핵심 ‘머신러닝’ 3

0.2 귀찮은 문제 = 과제와 해결 방법에 관련된 모순 4

__0.2.1 머신러닝의 장점에 내포된 문제점 4

__0.2.2 이 책의 주제와 대상 독자 5

 

CHAPTER 1 AI의 이해 7

1.1 AI의 종류 7

__1.1.1 강한 AI와 약한 AI 7

__1.1.2 규칙 기반 AI와 머신러닝 8

더보기
닫기

__1.1.3 지도 학습 9

__1.1.4 지도 학습으로 해결할 수 있는 문제들 9

__1.1.5 비지도 학습 10

__1.1.6 강화 학습 10

__1.1.7 휴리스틱스와 메타휴리스틱스 11

1.2 AI 소프트웨어 12

__1.2.1 머신러닝과 AI 소프트웨어 12

__1.2.2 AI 모델 12

__1.2.3 학습과 훈련 및 평가 13

__1.2.4 훈련 결과에 대한 평가와 AI 소프트웨어 테스트 15

__1.2.5 AI 소프트웨어와 AI 시스템의 관계 16

__[칼럼] AI의 진화 발전 사례: 일본식 장기인 쇼기 프로그램 16

1.3 지도 학습의 체계 18

__1.3.1 학습 완료 모델에 기반한 추론 18

__1.3.2 훈련용 입력 데이터와 훈련용 정답 데이터 18

__1.3.3 훈련 완료 모델의 평가 19

__1.3.4 학습 완료 모델의 테스트 20

__[칼럼] 머신러닝의 수학적 해석 21

1.4 AI의 개발 공정 24

__1.4.1 AI 개발 공정의 특징: 시행착오의 반복 24

__1.4.2 AI 컴포넌트 개발 공정 26

__1.5 AI 모델의 구체적인 사례 27

__1.5.1 심층 신경망 27

__1.5.2 앙상블 트리 30

__1.5.3 분류 문제 33

__1.5.4 회귀 문제 37

1.6 요약 39

 

CHAPTER 2 AI 소프트웨어 테스트 41

2.1 기존의 소프트웨어와 AI 소프트웨어의 차이점 41

__[칼럼] 수학적 귀납법과 과학적 접근법 43

2.2 기존의 소프트웨어 테스트 43

__2.2.1 입장료 계산 문제의 예 44

__2.2.2 동치 클래스와 경곗값을 이용한 테스트 45

__[칼럼] 생일 계산 46

__[칼럼] 동치 클래스와 경곗값의 수학적 표현 47

2.3 기존 테스트 기법의 적용 가능성 48

__2.3.1 동치 클래스 기법의 적용 가능성 48

__2.3.2 머신러닝의 특성 50

2.4 AI 소프트웨어 테스트 기법 52

__2.4.1 메타모픽 테스트 기법의 개요 53

__2.4.2 뉴런 커버리지 테스트 기법의 개요 54

__2.4.3 최대 안전 반경 테스트 기법의 개요 55

__2.4.4 커버리지 검증 기법의 개요 55

__[칼럼] AI의 품질 57

 

CHAPTER 3 튜토리얼 준비 59

3.1 실행 환경 설정 59

__3.1.1 파이썬 설치 59

__3.1.2 외부 라이브러리 설치 62

__[칼럼] pip를 이용한 외부 라이브러리 설치 63

3.2 테스트 도구 다운로드 65

__3.2.1 참조 파일 다운로드 65

__3.2.2 기타 파일 다운로드 66

3.3 학습에 사용할 데이터셋 68

__3.3.1 MNIST 데이터셋 68

__3.3.2 HouseSales 데이터셋 69

3.4 AI 모델의 학습 69

__3.4.1 MNIST 데이터셋 기반의 DNN 모델의 학습 70

__[칼럼] DNN 모델의 저장 방법 72

__3.4.2 HouseSales 데이터셋 기반의 DNN 모델의 학습 74

__3.4.3 HouseSales 데이터셋 기반의 XGBoost 모델 학습 76

3.5 학습 완료 모델의 실행 확인 77

__3.5.1 숫자 이미지 식별을 위한 DNN 모델의 실행 확인 77

__3.5.2 주택 가격 예측을 위한 DNN 모델 실행 확인 79

__3.5.3 주택 가격 예측을 위한 XGBoost 모델 실행 확인 80

 

CHAPTER 4 메타모픽 테스트 기법 81

4.1 메타모픽 테스트 기법이란? 81

__4.1.1 테스트 오라클의 문제점 81

__4.1.2 메타모픽 관계 84

__[칼럼] 수식을 이용한 메타모픽 테스트 기법의 정의 85

__4.1.3 AI 소프트웨어에 적용 87

__4.1.4 메타모픽 테스트 기법으로 알 수 있는 사항 89

__[칼럼] 테스트 성공인 경우에 알 수 있는 사실들 91

__4.1.5 기존의 테스트 기법과의 차이점 94

__4.1.6 메타모픽 테스트 기법의 활용 96

__[칼럼] 테스트 성공인 경우에 알 수 있는 사실들(Part 2) 99

4.2 튜토리얼 100

__4.2.1 메타모픽 테스트 기법의 실행 101

__4.2.2 데이터 가공 방법 변경 109

__4.2.3 데이터 가공 횟수의 변경 111

4.3 요약 112

 

CHAPTER 5 뉴런 커버리지 테스트 기법 113

5.1 기존의 커버리지와 뉴런 커버리지 113

__5.1.1 기존 소프트웨어에 대한 커버리지 113

__[칼럼] 명령 커버리지·분기 커버리지·조건 커버리지 114

__5.1.2 DNN 모델에 커버리지 적용 116

__5.1.3 뉴런의 활성 상태 117

5.2 뉴런 커버리지를 이용한 테스트 122

__5.2.1 뉴런 커버리지를 향상시키는 데이터 122

__5.2.2 테스트용 입력 데이터 작성 방법 122

__[칼럼] 편미분과 기울기 124

__5.2.3 가이드라인을 기반으로 가공 방법 선택 129

__[칼럼] 벡터와 내적 131

__5.2.4 가공 데이터를 사용한 테스트 실행 134

5.3 튜토리얼 135

__5.3.1 뉴런 커버리지 테스트의 실행 135

__5.3.2 활성화를 판정하는 경곗값 변경 139

__5.3.3 뉴런 커버리지 테스트의 반복 실행 143

 

CHAPTER 6 최대 안전 반경 테스트 기법 145

6.1 최대 안전 반경의 이해 145

__6.1.1 강건성 145

__6.1.2 적대적 데이터 147

__6.1.3 최대 안전 반경 150

__[칼럼] 다양한 ‘거리’ 152

6.2 최대 안전 반경 계산 방법 153

__6.2.1 최대 안전 반경의 근삿값 153

__6.2.2 계산 방법의 개요 154

__6.2.3 안전 반경의 판정 156

__6.2.4 하계와 상계의 계산 방법 158

__6.2.5 하계와 상계의 단계적 계산 방법 161

__[칼럼] 시그모이드 함수에 대한 하계 함수와 상계 함수의 정의 166

6.3 튜토리얼 172

__6.3.1 DNN 모델의 변환 172

__6.3.2 CNN-Cert의 실행 174

__6.3.3 타깃 분류 그룹핑의 변경 185

 

CHAPTER 7 커버리지 검증 기법 187

7.1 커버리지 검증 187

__7.1.1 커버리지 검증의 목적 187

__7.1.2 커버리지 검증의 체계 190

__[칼럼] 인간의 추론과 AI의 추론 190

__[칼럼] 검증을 수월하게 수행하기 위한 식 변형 193

__[칼럼] SAT Solver와 SMT Solver의 동작 194

7.2 XGBoost 모델의 커버리지 검증 195

__7.2.1 예제 모델의 커버리지 검증 195

__[칼럼] 전제조건과 검증 특성 202

__[칼럼] 커버리지 검증을 단시간 내에 수행하는 방법 206

__7.2.2 학습 완료 모델에서 논리식으로의 변환 207

__7.2.3 커버리지 검증 도구의 구조 211

7.3 검증 특성을 만족하지 않는 입력 데이터 범위의 탐색 217

__7.3.1 예제 모델의 조건 비적합 범위의 검색 217

__7.3.2 조건 비적합 범위 탐색 도구의 구조 222

7.4 DNN 모델의 커버리지 검증 225

__7.4.1 예제 모델의 커버리지 검증 225

__7.4.2 학습 완료 모델로부터 논리식으로의 변환 234

__7.4.3 커버리지 검증 도구의 구조 238

7.5 요약 241

 

CHAPTER 8 코드 리뷰 107

8.1 코드 리뷰란 109

8.2 페어 프로그래밍 113

 

APPENDIX A 각종 파일의 표기법 243

A.1 XGBoost 입출력 데이터 정의 파일의 표기법 243

A.2 DNN 입출력 데이터 정의 파일의 표기법 244

A.3 검증 조건 파일의 표기법 245

https://jpub.tistory.com/1393 jpub 재아썹

반응형
반응형

이 블로그 구독하고 있는 분은 알겠지만 제가 컴퓨터를 못 쓰는 환경에 있는데 태블릿은 사용 가능해가지고 태블릿에서 코딩하는 방법을 찾아봤습니다. 그중에서 루팅 없이 안드로이드 기기에 우분투를 실행할 수 있는 방법을 발견해서 공유하려고 합니다.

사진에서 보시듯이 터미널만 덩그러니 있는 버전이 아니라 GUI까지 다 되는 버전이고 비주얼 스튜디오 코드에서 C, C++, 러스트, 파이썬까지 실행이 됩니다.

그리고 제가 발견한 몇 가지 팁도 공유해드리겠습니다.

목차:

설치할 앱

리눅스(우분투) 설치

C / C++ 실행하기

Python 실행하기

설치할 앱

먼저 설치해야 할 앱은 다음 3개다. 다 구글 플레이스토어에 있다.

▶Andronix : 리눅스 설치하는 주소를 만들어준다.

https://play.google.com/store/apps/details?id=studio.com.techriz.andronix

▶Termux : 터미널을 실행할 수 있게 해준다.

https://play.google.com/store/apps/details?id=com.termux

▶VNC Viewer : GUI를 가능하게 해준다.

https://play.google.com/store/apps/details?id=com.realvnc.viewer.android

리눅스 (우분투) 설치

안드로닉스에 들어가면 다음과 같은 화면이 뜬다. 원하는 리눅스 배포판을 클릭한다.

나는 우분투를 선택했다.

여기서 '우분투 Moded OS를 사용해보세요' 라는 버튼이 보이는데 이건 유료 버전이다. 우분투를 더 가볍고 태블릿에서 쓰기 좋게 만들어놓은 버전이다. 총 4천원 정도를 내면 앞으로도 계속 사용할 수 있는데 내가 사용해본 경험으로는 아주 강력 추천한다. 필자는 우분투 XFCE 버전으로 진행하겠다.

여기서 설치를 누르면 다음과 같은 화면이 뜨고,

여기서 설치 글자 바로 밑의 버튼을 누르면 설치 주소가 복사된다.

이제 터뮥스 (Termux) 앱을 연다.

이 사진에 모자이크를 해놨는데 저건 사용자만을 위한 주소니까 다른 사람한테 넘겨주진 말자.

위처럼 복사된 주소를 붙여 넣고 엔터를 치면 설치가 진행된다.

설치가 완료되면 다음과 같이 글자들이 멈춰있는 화면이 뜬다.

여기서 맨 밑줄 오른쪽에 ./start-andronix.sh 가 뜨는데 이건 설치한 리눅스 배포판을 실행하기 위해서 입력해야 되는 명령어다. 버전에 따라서 명령어가 다르게 안내될 수도 있다. 이건 꼭 외워두도록 하자.

이제 이 명령어를 입력하고 엔터를 누르면 다음 화면이 뜬다.

이 화면도 리눅스 버전마다 다를 수 있다. 필자 기준에서 설명하겠다.

일단 우리가 아시아에 살고 있으니 위아래를 사용해서 'Asia' 선택해 주고 엔터를 누르면 도시 이름을 선택해야 되는데 'Seoul'을 선택했다.

그다음에는 키보드 배열을 선택하는 화면이 나왔는데 아마 자동으로 인식한 결과가 현재 선택되어 있을 것이다. (여기서는 Generic 105-key PC (intl.) ) 대체로 101키를 사용하면 호환이 된다. 다른 외부 키보드를 사용할 일이 있을 수도 있어서 나는 'Generic 101-key PC'를 선택했다.

그리고 키보드 언어 설정이 나오는데 나는 영어를 선택했다. 경험상 한국어를 깔아서 한영 키를 통해 영어와 한국어를 써본 결과 뭔가 설정이 잘 안되었는지 한국어 타이핑할 때 이상할 때가 많았다. 나는 코딩에만 사용하려고 해서 그냥 영어를 선택했다. (한국어도 사용하실 분께는 죄송합니다만, 구글에서 검색해 주시기 바랍니다.)

AltGr 키를 설정하라고 하는데 사실 사용할 일이 거의 없다. 기본 설정을 사용했다.

Compose key 라는 설정이 있던데, 이것도 영어를 자판에서 사용할 일이 없다. 그래서 No compose key 를 선택했다.

그러고 나면 또 아까의 검은 화면이 뜨면서 설정이 진행된다.

그러고 나서 다음 화면이 뜬다.

사용자 이름 설정이다. 시스템에 별로 상관없고, 마음에 드는 이름을 적으면 된다. 그다음에 풀네임 설정, 비밀번호 설정이 있다.

설정을 마치고 나면 또 다음과 같은 검은 창이 뜬다.

그러면 이제 설치가 완료된 것이다!!

Termux를 껐다 켜보자. exit 누르고 엔터를 하는 것을 두 번 하면 꺼진다.

그리고 아까 외워뒀던 시작 명령어 (나의 경우는 ./start-andronix.sh) 를 입력한다. 그리고 vncserver-start 를 입력하면 다음 창이 뜬다.

이건 화질 설정인데 원하는 설정으로 고르자. 나는 FHD를 했다. 만약 맨 밑의 커스텀 화질을 설정한다면 반드시 포트 번호는 1번으로 하자.

그러고 나서 VNC Viewer 앱을 켠다.

오른쪽 아래의 플러스 버튼을 누른다.

주소는 반드시 localhost:1 로 설정한다. 이름은 마음대로 설정해도 된다. 그리고 CREATE를 누른다.

새로 생긴 이 버튼을 누른다.

비밀번호를 입력해야 되는데 아까 설정 창에서 설정했던 비밀번호를 입력한다.. 그리고 앞으로 비밀번호를 입력하지 않아도 자동으로 되게 하기 위해 Remeber password를 입력한다.

짠! 우분투의 화면이다. 맨 아래의 왼쪽에서 두 번째 아이콘이 터미널 아이콘이다. 다음과 같이 터미널에서 apt-get update 명령어도 잘 먹고 파이썬도 실행된다.

종료하는 방법은 VNC Viewer를 닫은 다음 Termux에서 vncserver-stop을 입력한다. 그리고 1을 입력하고 엔터를 누른다. 그리고 exit를 두 번 입력해서 나간다.

추가: 한국어 안 깨지게 하기.

https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EB%82%98%EB%88%94%ED%8F%B0%ED%8A%B8_%EC%84%A4%EC%B9%98

이 방법을 따라한 다음에

sudo fc-cache -f -v

이 명령어를 수행하면, 폰트 캐시가 갱신되고 바로 화면에 변화가 나타날 것이다.

+팁: VNC Viewer 에서 화면 보기에서 위의 아이콘 중 i 를 누른 다음 Picture quiality 를 설정할 수 있는데 여기서 High 로 선택하면 선명하게 보인다.

여기까지가 우분투 설치 방법이지만 C/C++, 파이썬을 실행하는 방법도 공유하겠다. 리눅스를 처음 다뤄보고 설정을 직접 해보지 않은 사람도 있을거라 생각한다. 이 언어들을 실행/디버그 하기 위한 기본적인 방법까지 설명하겠다.

그리고 파이썬에도 해당되는데, gcc와 g++는 반드시 설치되어 있어야 나중에 기능 설치할 수 있으니까 아래의 build-essential 설치까지는 반드시 진행해야 된다.

C / C++

우선 터미널을 열어서 다음 명령어를 치면

gcc --version g++ --version

설치가 안 되어있기 때문에 위와 같은 문구가 뜰 것이다. gcc, g++는 C와 C++를 컴파일하기 위해서 반드시 필요한 것이기 때문에 설치해 줘야 된다. 다음 명령어를 입력해서 설치해 준다.

sudo apt-get install build-essential

그러고 나면 비밀번호를 입력하라고 뜬다. sudo 가 붙는 명령어 뜰 때마다 항상 비밀번호를 입력해 줘야 된다.

그러고 나서 글자가 여러 개 뜬 다음에 [Y/n]? 이라는 문구가 뜰 텐데 y를 입력해서 설치를 진행한다.

그리고 gdb도 설치해 줘야 된다.

sudo apt-get install gdb

설치가 완료되고 나서 gcc --version을 입력하면 버전 정보가 위와 비슷하게 뜰 것이다.

그다음은 프로그램 코드를 작성할 곳에 폴더를 만들 것이다. 그런데 얘네들이 뭔가 이상하게 해놓은 것인지 파일 관리자에서 폴더를 만들려면 이렇게 경고 문구가 뜨고 못 만들어진다. 여러 삽질을 해봤지만 그냥 다음처럼 터미널에서 폴더를 만들어줄 것이다.

mkdir 만들폴더이름 cd 이동할위치이름

이렇게 입력하면 폴더가 만들어지고 그 폴더로 이동할 수 있다.

바탕화면에서 오른쪽 아래 보이는 아이콘이 비주얼 스튜디오 코드다. 우리가 사용할 IDE다. 그걸 실행한다.

저 파란 글씨 중 Open folder를 클릭하고 방금 만든 폴더 (나의 경우 MyWorkspace)를 선택한다.

여기에 우 클릭을 한 다음에 나머지 폴더들도 추가해 준다

내가 만든 폴더 구조가

MyWorkspace

- CWorkspace

- CPPWorkspace

- PythonWorkspace

- LustWorkspace

인데 MyWorkspace 추가하면 하위 폴더가 보일 텐데 왜 굳이 하위 폴더까지 다 추가했냐면, 각각 폴더마다 간단하게 설정을 다르게 해줄 수 있게 하기 위해서다. 각 폴더마다 실행을 다르게 설정할 수 있다.

파일 관리자에서는 폴더를 못 만들었는데 여기서는 가능하다. 폴더에 우클릭을 하고 그곳에 새로운 파일이나 폴더를 만들 수 있다. 나는 CWorkspace 폴더에 test1 폴더를 만들고 그곳에 main.c를 만들었다.

왼쪽 아이콘 중 아래 아이콘이 추가 도구를 설치할 수 있는 곳이다. 여기서 C/C++랑 파이썬을 설치했다.

그리고 나서 보면 이렇게 자동완성 기능까지 잘 작동하는 모습을 볼 수 있다.

f5를 눌러서 실행해보면 다음과 같은 상태가 된다.

여기서 C++ (GDB/LLDB) 를 선택하고

gcc - Buile and debug active file 을 선택한다.

원하는 대로 결과가 잘 나온 모습이다.

위에서 설정을 해줬기 때문에 앞으로 F5 눌러서 실행할 때는 바로 실행된다.

그리고 지금 작업하고 있는 작업공간 폴더에 .vscode 라는 이름의 폴더가 생겼을 것이다. 그곳에 현재 작업공간의 하위 파일들에 대한 동작을 설정할 수 있다. 다른 공간에는 적용 안된다.

아래에서는 브레이크 포인트를 걸어봤다.

브레이크포인트가 잘 걸리고 변수들의 값까지 잘 보인다.

이제 C++ 실행하는 방법을 알아보자. 일단 다음과 같이 cpp 파일을 하나 만들었다.

그리고 왼쪽 아이콘 중 삼각형을 클릭한다.

Add Config (현재폴더명) 을 선택한다.

C++ (GDB/LLDB) 를 선택한 다음

g++ - Build and debug active file 을 선택한다.

그러면 실행이 된다.

만약 설정을 바꾸고 싶다면 .vscode 폴더의 launch.json 이나 task.json 의 내용을 수정하면 된다. 이것은 vscode 사용 방법을 구글링하면 나온다.

파이썬

파이썬을 실행하려면 간단하게 python3 를 터미널에 입력하면 된다. 추가 패키지를 설치하려면 일단 pip 이 있어야 한다.

sudo apt-get install python3-pip

그러고 나서 원하는 모듈을 설치하면 된다.

python3 -m pip install numpy

이런 식으로 말이다.

그리고 비주얼 스튜디오 코드에서도 동작을 확인해보겠다.

아까와 같이 삼각형 버튼 누르고 Add Config (파이썬 작업할 폴더명) 을 선택해 준다.

그리고 Python File 옵션을 선택한다.

실행이 잘 된 모습이다.

간혹 pip 으로 파이썬 라이브러리가 설치 안될 수도 있는데 실패한 설치를 한 번 더 시도해보면 될 때가 많다... 이유는 나도 모르겠다.

대부분 안드로이드 기기의 cpu 아키텍쳐가 arm 인데, 우리가 컴퓨터로 자주 쓰는 x86-64 와 다르다. 내 태블릿은 aarch64로 arm64에 속해있다. 지원 안하는 모듈도 간혹 가다 있는데 대부분의 유명한 라이브러리는 설치가 된다.

그리고 왜 아나콘다 그런걸 안썼냐고 물어보실 수 있는데 검색하다 찾은 arrch64용 버전은 뻑나고 그래서 안썼다... 몇가지 더 찾아봤는데 이상하게 꼬이는 일이 잦았다. 이걸로 삽질할 바에야 차라리 나중에 파이썬 이상해지면 밀고 다시 까는게 맘 편할 것 같았다.


본문 내용은 다 끝났지만 검색 유입이 잘 되도록 좀 더 써봅니다.

군대에서 코딩하는 방법은 저한테 이거밖에 없었습니다... 군대에서 코딩하는 방법이 일단 크게 1. 태블릿 사용, 2. 사이버지식정보방 컴퓨터 사용, 3. 브라우저에서 코딩. 인데 병사의 태블릿 사용이 가능한 공군에서는 1번이 제게 맞더군요. 2번은 보안 프로그램이 대부분 허락하지 않고 3번은 익숙하지 않았습니다. 1번 방법이 제가 저한테 맞는 환경을 만들어서 그 기반에서 코딩할 수 있다는 만족감을 줬습니다. PC를 사용하실 수 없는 환경에서 코딩하시려는 분께 도움이 되었으면 좋겠습니다.

끝.

반응형
반응형

우분투 리눅스 c++ 파이썬 코딩 언어 사용법 (영상)
https://youtu.be/-7jm1sL41WA

프로그래밍이 대두되는 지금 코딩교육은 필수 입니다.

반응형
반응형

프로그래밍 심리학(영어: PoP : The Psychology of Programming)은 HCI(Human Computer Interaction)의 한 분야로 컴퓨터 프로그래밍의 과정에서 인간이 경험하는 심리적 문제들을 다루는 학문이다. 심리학적으로 컴퓨터 프로그래밍은 컴퓨터 언어를 읽고 쓰는(reading and writing) 것, 학습(learning)하는 것, 문제해결(problem solving)과 추론(reasoning)하는 것들과 같은 인지(cognitive) 행위일 뿐만아니라 IT 프로젝트 진행과정에서 개인과 집단의 성격에 따라 다양한 문제에 직면하고 해결하는 과정에서 벌어지는 역동적 상호작용문제를 다룬다. 또 팀의 리더들도 다양한 심리적 어려움을 겪게 되는데 이에 대처하는 방법을 다루는 분야이다.

프로그래밍 심리학에 대한 연구는 프로그래머들에게 심리학적 접근의 필요성을 알리는 계기가 되었으며, 미국을 중심으로 경험적 연구(Empirical Studies of Programming :ESP)를 통해 진행되었다. 유럽에서는 PPIG PPIG(Psychology of Programming Interest Group)를 중심으로 발전하였다. 미국을 중심으로한 ESP 연구는 1986~1999년까지 이루어졌으며 그후에는 VL/HCC (Visual Language/Human Centered Computing)로 통합되었다. 유럽을 중심으로한 PPIG 워크샵은 현재도 1년에 한번씩 영국, 독일, 포르투칼, 스페인을 순회하여 열리고 있다.

프로그래밍 심리학 연구는 컴퓨터 프로그래머의 인지, 프로그래밍과 관련된 행위의 도구와 방법, 프로그래밍 교육을 연구한다.

프로그래밍 심리학이라는 용어는 1971년 제럴드 마빈 와인버그(Gerald Marvin Weinberg)의 책 《프로그래밍 심리학》으로 처음 알려졌다.

제럴드 와인버그는 이 도서에서 컴퓨터 프로그래밍 과정을 인간의 행위에 초점을 맞추어 사회적 활동, 개인적 특성으로 파악하고 프로그래머를 프로그래밍을 하는 과정의 도구의 관점에서도 기술하였다.

국내에서는 한서대학교 이재용 교수가 "프로그래머는 왜 심리문제에 골몰하는가 - 메타인지를 위한 프로그래밍 심리학"을 출판하여 프로그래밍 심리학을 적극 소개하고 있다.

 

경험주의 접근[편집]

제럴드 와인버그가 접근한 접근 방법으로 컴퓨터 프로그래밍을 과정을 경험주의로 해석하는 접근 방법이다. 즉, 관념의 형성과정에서 생득적이거나 관습보다는 경험과 증거, 특히 감각에 의한 지각을 강조하는 방법론이다. 실험을 토대를 두고 있는 관점을 강조하였으며 애자일 소프트웨어 개발(간반, 익스트림 프로그래밍, 페어 프로그래밍) 등으로 발전하였다. 경험주의는 프로그래밍 심리학에 대한 최초의 방법론으로써 기여를 했음에도 불구하고 개인의 내부에서 내밀하게 벌어지는 내용에 초점을 두어 널리 알려지고 적용하는데 어려움이 있다.

행동주의 접근[편집]

행동주의 심리학이 프로그래밍에 영향을 준 내용을 중심으로 프로그래밍을 학습하는 방법론과 집단내의 상호작용에서 활용되는 방법론이다. 크게 3가지로 나누어 볼수 있다. 첫번째 프로그래밍 표현 시스템으로 구조적 프로그래밍, 제어구조의 효과성, 자료구조 연구등을 포함 한다. 두번째는 코딩 기술로 순서도(flowchart), 들여쓰기(Indent), 쉽게 기억할 수 있는 변수명 작성법, 주석문등이다. 세번째는 문제의 과제(Problem Task)로 생성(Creating), 주의(Comprehending), 수정(Modifying), 디버깅(debugging), 테스트(Testing), 객체지향형 프로그래밍에서의 유지보수(Maintenance)와 프로그래밍의 학습에서의 개요의 파악, Glass Box/Blank Box, 지식구조의 동화(Easily assimilate into existing knowledge structures), 내적처리의 가시성(Visibility into internal processing)의 문제들이다.

인본주의 접근[편집]

에이브러햄 매슬로가 제안한 욕구단계설을 활용한 접근방법으로 두가지로 나누어 볼 수 있는다. 첫째 프로젝트에 참여하는 프로그래머의 욕구가 욕구단계설과 연관되어 진행되는 과정에서의 욕구와 같다는 것으로 프로그래머가 겪는 심리적 발달단계와 어려움을 해결하도록 돕는 역할을 한다. 둘째 인터넷 서비스의 발전을 욕구단계설로 설명하는 것으로 이를 통하여 소셜미디어와 네트워킹 기반의 도구들의 개발의 기초 자료가 되었다.

분석심리학 접근[편집]

마이어스와 브릭스 모녀가 카를 구스타프 융 분석심리학을 기초로하여 개발한 MBTI 심리검사 도구를 활용하는 접근 방법이다. 이 방법은 개인의 작업 수준에 대한 행위를 분석하는 도구로 활용하거나 사회적 활동으로 보는 팀 협업에 적용되고 있다. 연구방향은 다음과 같다. 첫번째, 컴퓨터 프로그래밍직에 근무하는 사람들이 어떤 분포를 이루는지에 대한연구, 두번째, 성격유형별로 프로그래밍 작업들중 적절한 공정이나 역할의 선호도에 대한연구, 세번째, 어떤 방식으로 협업을 하면 효율적인지에 대한연구로 나뉜다. 이연구 방법론은 표준화된 MBTI 검사를 활용할 수 있으므로 효과적으로 알리거나 활용하는 것이 가능하다.

인지주의 접근[편집]

인지주의 심리학이 컴퓨터 프로그래밍에 영향을 준 내용을 중심으로 프로그래밍 학습과 프로그래밍 절차를 연구하는 방법으로 통사적지식, 의미적 지식, 도식적 지식, 전략적 지식으로 나누어서 학습하고 소통하는 방법론이다. 통사적 지식(Syntactic Knowledge)는 INPUT, PRINT, CLS와 같은 명령 개개 요소의 규칙과 관련성에 관한 지식을 말한다. 의미적 지식(Semantic Knowledge)란 스택(stack), 메모리 공간, 프로그램 리스트와 같은 위치(location), 객체(object) 및 메모리에 대해 수행 할 수 있는 작업에 대한 지식을 말한다. 도식적 지식(Schematic Knowledge)이란 정렬, 반복및 for 문장과 같은 루틴(routine)의 지식을 말한다. 전략적 지식(Strategic Knowledge)란 사고구술(Thinking Aloud) 기술과 같이 계획(plan)하고 모니터(monitor)하는 기술을 말한다.

구성주의 접근[편집]

후기 피아제의 인지발달이론에 근거하여 컴퓨터 프로그래밍 능력의 발전단계를 설명하는 이론이다. 피아제가 주장한 발달이론의 감각운동기, 전조작기, 구체적조작기, 형식적 조작기의 발전과정이 컴퓨터 프로그래밍에 적용한 모델이다. 초보 프로그래머는 신뢰할 수 있는 코드를 수동으로 실행 할 수 없으며 변수의 최종값을 결정할 수 없다. 이러한 단계를 감각운동기(Sensorimotor)에 있다고 정의한다. 초보 프로그래머는 코드의 추적(Trace)를 안정적으로 할 수 있지만 전체적인 구성을 보지 못하는 단계가 전조작기(Preoperational) 라고 한다. 이 단계에서 프로그래머는 귀납적 접근을 하므로 프로젝트를 설계할 수 없는 단계이다. 연역 추론이 가능한 초보 프로그래머는 구체적 조작기(concrete operational)에 이르렀다고 말 할 수 있습니다. 이 단계에서는 코드이 읽기와 변수들의 값을 추론 할 수 있으나 비교적 짧은 프로그램에서 가능한 상태입니다. 형식적 조작기(Formal operational)에 이른 프로그래머는 설명문으로 문제를 추상화하고 하위 문제를 생성하고 그 하위 문제를 결과로 만들어 내고, 재구성하고 평가하는 것을 반복적으로 수행할 수 있습니다.

정신역동적 접근[편집]

인공지능의 백프로파게이션(backpropagation)을 프로이트가 히스테리 환자의 심리치료과정에서 사용한 방법론을 활용한 사례로 설명할 수 있다. 현재도 신경망 프로그래밍이 어떻게 결과를 만들어 내는지를 학술적으로 증명하지 못하고 있다. 아마도 영원히 증명하지 못할지도 모른다.

그밖의 (단편적인) 접근들[편집]

원형(Archetype)을 이용한 함수설계, 심성모델의 활용, 은유의 활용, 심층구조와 표층구조, 성찰 지능(메타 프로그래밍)

연구 방법[편집]

컴퓨터 프로그래밍의 심리적 측면을 연구하는 데 사용할 수 있는 일부 방법으로는 내성, 관찰, 실험  질적 연구가 있다.

같이 보기[편집]

외부 링크[편집]

https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%8B%AC%EB%A6%AC%ED%95%99  위키백과

반응형

'교육' 카테고리의 다른 글

그리스도교 1 개요1.1 '기독'의 어원 1.3 기독교 교회의 명칭1.4 기독교 인구2 역사2.1 고대 기독교2.2 보편교회2.2.1 일곱 공의회2.2.2 보편교회 시기 기독교의 분화2.2.3 서유럽 지역 기독교의 전파2.2..  (18) 2022.02.11
법무법인 대한중앙 로펌 업무분야 사무소  (20) 2022.02.10
세계 범죄 지수 순위 정리  (34) 2022.02.06
큰 것을 좋아하는 이유  (22) 2022.02.05
korea 1 Etymology2 Geography3 Climate3.1 Spring3.2 Summer3.3 Autumn3.4 Winter4 Wildlife5 History5.1 Prehistory and Gojoseon5.2 Proto–Three Kingdoms5.3 Three Kingdoms5.4 North–South States Period5.5 Goryeo dynasty5.6 Joseon dynasty5.7 Korean Empire5...  (0) 2022.01.15
germany 1 Etymology2 History2.1 Germanic tribes and Frankish Empire2.2 East Francia and Holy Roman Empire2.3 German Confederation and Empire2.4 Weimar Republic and Nazi Germany2.5 East and West Germany2.6 Reunified Germany and the European Union3 Geogra..  (0) 2022.01.14
수도권대학 취업에강한대학 바른사람을키우는대학 도봉산역에서 겁나 가까운 경민대학교 취업률 및 표어 설립 종류 종교 총장 설립자 법인 학생 수교 직원 수 위치 연혁 교육편재 부속기관 ..  (1) 2022.01.01
세계최고를 꺾은 알파고의 딥러닝 기술은 무엇일까 역사 왜 다시딥러닝인가3 알고리즘3.1 심층 신경망(Deep Neural Network, DNN)3.2 심층 신경망의 문제점3.3 합성곱신경망(Convolutional Neural Network, CNN)3..  (0) 2022.01.01