Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

0

Share

Download to read offline

프로그램 기초

Download to read offline

프로그래밍 이란?
앞쪽엔 이세돌 알파고 이야기 잠깐

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

프로그램 기초

  1. 1. Computer Programming I 알파고 이야기, Programming 이민석 국민대학교 컴퓨터공학부
  2. 2. 학습 목표 1. 이세돌 vs. 알파고 2. 프로그램을 배운다는 것 3. 프로그래밍에 의한 절차적 문제 해결
  3. 3. 이세돌 vs. AlphaGo
  4. 4. 우리 wife의 반응 경기 시작 전 “당연히 컴퓨터가 이기는 거 아냐?” ß (나) “아직 컴퓨터가 그 정도는 아니야, 바둑은 체스랑 달라서 Blah Blah … ” 알파고 1승 후 “컴퓨터 하는 사람이 그것도 몰라?” ß (나) “쟤는 집에 있는 그런 컴퓨터가 아니야 CPU가 1,920개 GPU가 280개 …” 알파고 2승 후 “거봐” (그날따라 집의 인터넷 느림) ß (나) “구글이 바둑 두느라고 인터넷, 전기 다 가져다 써서 그래”
  5. 5. 이세돌 vs. AlphaGo, 말들 해설자 송태곤 9단 (2국 중간) “이세돌 9단의 패착을 찾지를 못하겠어요. 인간의 눈으로 볼 때는 실수는 알파고만 하고 있었거든요” 허사비스 딥마인드 CEO (1국 승리 후) "우리는 달에 착륙했다. 팀이 자랑스럽다" 이세돌 (1국 패배 후) “진다고 생각 안 했는데 너무 놀랐다”, “이세돌이 패한 것일 뿐 인간이 패한 것은 아니다” 이세돌 (첫 기자회견) “3대2정도의 승리가 아니라 한판 질까 말까 정도” 이세돌 (대국하루전 알파고 원리를 듣고) “조금 긴장했다. 5대0승리는 아닐 것 같다” 이세돌 (5국 후) “물론 질 수도 있다. 그러나 바둑의 아름다움, 인간의 아름다움을 컴퓨터가 이해하고 두는 게 아니기에 바둑의 가치는 계속될 것” 이세돌 (4국 승리 후) “그전에도, 앞으로도 그 어떤 것과 값어치를 매길 수 없는 1승”
  6. 6. 이세돌 vs. AlphaGo, 그 여파 • 온갖 AI 이슈 ü AI의 의도적 실수 and/or 버그, ü 경기 상황 중간 보고 ü AI의 윤리 • AI vs. 인간 ü 명령을 받을 것인가? 내릴 것인가? ü AI는 우리의 적인가? • AI 시대에 대응하는 자세 • 최저 생활비 보장 * AI (Artificial Intelligence, 인공지능)
  7. 7. 프로그래밍에 의한 문제 해결 비교 예.. 자동차 만들기 vs. 컴퓨터로 문제 해결하기
  8. 8. 자동차 • 자동차는 시키는 대로 간다. – 자동차 자체는 그냥 껍데기일 뿐 – 자동차는 운전자가 원하는 곳으로 간다. – ‘자동’차 이지만, 모든 것이 자동으로 되지는 않는다. • 밟으면 엔진이 돌고, 핸들을 돌려야 방향이 바뀐다. – 더구나, 자동차는 누군가가 만들었다. – 정말 처음부터 자동으로 된 것은 아무 것도 없다. • 그 누군가가 설계하고, • 또 누군가가 Every Detail을 다 정했다.
  9. 9. 컴퓨터 • 컴퓨터도 시키는 것만 한다. – 컴퓨터 자체는 그냥 껍데기일 뿐 – 컴퓨터는 프로그래머가 시킨 일만 한다. – ‘컴퓨터’ 이지만, 모든 것을 알아서 하지는 않는다. • 소프트웨어를 만들어 넣고, 사용자가 정한 기능이 수행된다. – 더구나, 컴퓨터는 누군가가 만들었다. – 정말 처음부터 자동으로 된 것은 아무 것도 없다. • 그 누군가가 설계하고, • 또 누군가가 Every Detail을 다 정했다.
  10. 10. 컴퓨터가 하는 일은 문제 해결 • 문제를 모르면 답도 없다. 문제란 두 종류인데, – 이전에 있던 것들의 생산성을 높이는 것들 – 전혀 새로운 가치를 사람에게 제공하는 것들 • 문제는 사람이 정의한다. – 그리고, 대부분의 문제는 복잡하다. • 그 복잡함의 근원에는 다양한 상황과 데이터가 있다. – 그래서, 완벽하고 간단한 정답은 보통 없으며 – 상황에 따라, 데이터에 따라 여러 가지 답이 있다. – 어떤 경우에도, 그 답도 사람이 만들고 – 최종적으로는 소프트웨어라는 도구로 구현된다.
  11. 11. 문제해결 도구, 소프트웨어 • 복잡한 문제를 해결하는 절차 1. 문제를 잘 이해하려고 노력한다. • 문제가 존재하는 상황과 연관된 데이터를 잘 살펴본다. 2. 큰 문제를 조금은 덜 복잡한 작은 문제들로 나눈다. • 조각 낸 작은 문제들의 답을 예측하고, • 그 답들을 순서에 맞추어 잘 연결하여, • 처음 큰 문제의 답이 만들어지는지 검토한다. • 필요하면 작은 문제를 더 작은 문제들로 다시 나눈다. 3. 작은 문제에 대한 답을 구하는 방법을 찾는다. • 어떤 때는 간단한 논리와 산수로 • 또 어떤 때는 복잡한 논리와 고도의 수학이 필요하다. 4. 작은 문제의 답들을 엮어 큰 문제의 답을 얻는다.
  12. 12. 문제의 예: 자동차, 1 단계 • 큰 문제 – 승객을 목적지에 안전하게 도달하게 하는 것 • 큰 문제를 해결하기 위한 작은 문제들 1. 굴러가게 해야 한다. 2. 원하는 방향으로 가게 해야 한다. 3. 설 수 있어야 한다. 4. 안전하고, 편하게 위 목적을 달성해야 한다.
  13. 13. 문제의 예: 자동차, 2 단계 • 작은 문제를 더 작게 1. 굴러가게 해야 한다. • 엔진이 필요하다. • 엔진의 동력을 바퀴에 전달해야 한다. 2. 원하는 방향으로 가게 해야 한다. • 핸들이 필요하다. 바퀴를 움직여야 한다. 3. 설 수 있어야 한다. • 브레이크 페달이 필요하다. 움직이는 바퀴를 세워야 한다 4. 편하게 위 목적을 달성해야 한다. • 깜박이가, 전조등이, 미등이, 에어백이, • 에어컨이, 내비게이션이, 블랙박스가 필요하다. • …
  14. 14. 문제의 예: 자동차, 3단계 • 더 작은 문제를 한층 더 작게 1. 굴러가게 해야 한다. • 엔진이 필요하다. A. 연료는? (휘발류? 경유? 전기?) • 연료통 (배터리) 크기? • 연료통 (배터리) 위치? • 남은 량 측정? • 화재 방지 방법? B. 엔진 출력은? C. … • 엔진의 동력을 바퀴에 전달해야 한다. • … 여러 가지 답 상황을 고려하여 한 가지를 선택하거나 두 가지를 섞어 쓸 수 있다. 선택은 다른 문제를 만든다 (또는 문제를 바꾼다) 가끔은 문제가 작아질수록 더 고도의 전문성이 요구된다.
  15. 15. 소프트웨어 / 프로그램 / 프로그래밍 언어 • 컴퓨터 소프트웨어는 컴퓨터 프로그램들을 모아 놓은 것 • 컴퓨터 프로그램은 프로그래밍 언어의 명령들을 모아 놓은 것 • 프로그래밍 언어는 데이터와, 문제를 해결하는 방법(논리와 수학)을 절차적/구조적으로 표현하여 컴퓨터가 실행할 수 있게 해주는 도구 큰 문제 해결 도구 작은 문제 해결 문제 해결 방법 표현 아직은 사람만 가능 J
  16. 16. 그래서 뭘 하자는 건가? • 코딩(프로그램)으로 문제와, 문제의 해결 방안을 표현하는 것 – 문제 그 자체, 또는 문제와 연관된 데이터 (자료구조) – 논리적/절차적인 문제 해결 방안 (알고리즘) 문제의 핵심, 세상의 모든 것은 데이터 !! • 데이터를 어떻게 얻고 • 데이터의 의미를 이해하고 • 데이터를 이용하여 • 다른 의미있는 데이터 만들기
  17. 17. 코딩: 문제의 근원인 데이터의 표현 • 데이터의 형태 – 숫자 (정수, 실수, ...), 문자, 문자열 • 예, 0, -6, 3.1415, ‘A’, “국민대학교” – 조직화된 데이터 • 의미 있는 한 덩어리의 데이터 예, (이름, 생년월일, 전화번호) • 데이터 사이의 관계 – 데이터 또는 조직화된 데이터의 집합 또는 순서 • 예, 오늘의 검색어 순위 • 예, 금주의 음악 챠트
  18. 18. 코딩: 문제 해결 방법의 표현 • 순차적 접근 (Procedural) – 정말로 낱낱이 풀어서, 이것하고, 다음에 저것하고, 그 다음은 … • 산수와 논리 (Arithmetic & Logic) – 뭐하고 뭐를 더하고, 곱하고, …. ( +, -, *, /, …) – 참과 거짓, 그리고, 또는, 반대의 관계 ( True, False, AND, OR, NOT ) • 조건과 분기 (Conditional Branch) – If (조건) then 이런 일 else 저런 일 • 반복 (Iteration) – 여기서부터 저기까지 (몇 번, 언제까지, 무한히) 반복
  19. 19. 세상에 많은 언어가 있듯이
  20. 20. 프로그래밍 언어도 많다 • 문제에 따라, 컴퓨터에 따라 http://3.bp.blogspot.com/-QZ4yib_WQFk/VOej26zs_NI/AAAAAAAAAXY/DF7R-KmYzk4/s1600/prog-languages.png 1. Java 2. C 3. C++ 4. C# 5. Python 6. PHP 7. JavaScript 8. Perl 9. Ruby 2016-04 TIOBE Index
  21. 21. 언어의 첫 걸음: Hello World! • Java 버전 // Hello World! in Java class HelloWorld { static public void main(String args[]) { System.out.println("Hello World!”); } }
  22. 22. 언어의 첫 걸음: Hello World! • C 버전 /* Hello World! in C, Ansi-style */ #include <stdio.h> #include <stdlib.h> int main(void) { puts("Hello World!"); return EXIT_SUCCESS; }
  23. 23. 언어의 첫 걸음: Hello World! • 엔트리 • Python 버전 # Hello World! in Python 3 print("Hello World!") • Scratch 버전
  24. 24. Why Entry? • Entry(엔트리)는 프로그래밍 언어의 일종 – 쉽고, 재미있고, – 무료, 오픈 소스이고, – 웹으로 되고, PC, Mac, 안드로이드, 아이폰에서도 되고, – 문법보다는 문제에 더 신경쓸 수 있게 해주고 – 역시, 다른 모든 프로그래밍 언어처럼 절차적인 문제 해결, – “~~일이 발생하면 ~~를 해요” 방식의 문제 해결이 가능 • 어떤 이벤트에 대하여 반응
  25. 25. OFF ON 절차적으로 정리하면 스위치의 위치 확인 만일 스위치가 ON 위치 이면 불을 켠다. 아니면 불이 끈다. 프로그램으로 짜면 if (switch == ON) then light = ON else light = OFF 말로 하면 스위치를 누를 때 불을 켠다. 프로그램의 예 (불 켜기) * 모든 언어마다 문법은 조금씩 다름
  26. 26. 알파고도 풀 수 없는 문제.. 시작 (여자가 화가 남) 미안해 뭐가 미안해? 알아몰라 알면서 그래? 모르면서 그래? 잘못했어 뭘 잘못했는데? 남자 여자 : 멘붕에 따른 임의의 선택 (머리속에서 어설픈 동전던지기) Man Trapped
  27. 27. 예제: Man Trapped 여자_화남 = TRUE; 미안: 남자(“미안해”); 여자(“뭐가 미안해?”); 뭐를: 남자(머릿속 동전 던지기); if (동전=앞면) then 남자(“알아”); 여자( “알면서그래?”); else 남자(“몰라”); 여자(“모르면서 그래?”); 남자(머릿속 동전 던지기); if (동전=앞면) then goto 미안; 남자(“잘못했어”); 여자(“ 뭘 잘못했는데?”); goto 뭐를;
  28. 28. 예제: Man Trapped (Entry code: http://j.mp/man-trapped) • 사건을 단계로 풀어보면… 1. 시작 2. ‘미안해’ 하고, 이유 추궁 당하고, 3. 아무 대답이나 하고, 4. 제대로 일격을 당하고 나름 작전을 선택하고 5. ‘잘못했어‘ 하고 또 이유 추궁당하고 6. 다시 3번으로
  29. 29. 프로그래밍 요소 • 순차 실행 – 아래로 향하는 화살표 – 블록(문장)의 나열 • 반복 – 위로 올라가는 화살표 • 조건에 따른 선택 – 두 방향의 화살표
  30. 30. 요약 1. 이세돌 vs. AlphaGo 2. 프로그램을 배운다는 것 ü 자동차 vs. 컴퓨터 3. 프로그래밍에 의한 절차적 문제 해결 ü 데이터 !! ü 프로그래밍 언어 ü 조건과 절차 ü Man-Trapped http://j.mp/man-trapped
  31. 31. 고맙습니다 https://www.facebook.com/groups/kmu.cs/

프로그래밍 이란? 앞쪽엔 이세돌 알파고 이야기 잠깐

Views

Total views

554

On Slideshare

0

From embeds

0

Number of embeds

4

Actions

Downloads

17

Shares

0

Comments

0

Likes

0

×