1 00:00:00,000 --> 00:00:12,040 >> [음악 연주] 2 00:00:12,040 --> 00:00:16,460 >> SPEAKER 1 : 좋아,이 CS50입니다, 이것은 주 넷의 시작이고, 3 00:00:16,460 --> 00:00:20,420 당신이 들어있을 수 있습니다 또는 읽기, 세계는 종료되었습니다. 4 00:00:20,420 --> 00:00:23,520 인터넷의 주위에 모든 것 된 지식과 인식을 가지고 5 00:00:23,520 --> 00:00:27,100 프로그램의 버그 배쉬라는 프로그래밍 언어입니다. 6 00:00:27,100 --> 00:00:32,729 이 멋지고 브랜드되었습니다 Shellshock, 또는 배쉬 문으로, 7 00:00:32,729 --> 00:00:35,485 그러나이 같은 기사 드문되지 않았습니다. 8 00:00:35,485 --> 00:00:38,807 그리고 사실, 그들 중 많은 사람들이 가지고 Heartbleed의 다시 추억, 9 00:00:38,807 --> 00:00:41,640 당신은에서 눈치 챘을 수있는 , 지난 봄에 다시 누르는 10 00:00:41,640 --> 00:00:43,980 마찬가지로 상당히 극적이었다. 11 00:00:43,980 --> 00:00:47,110 지금 당신의 사람들의 여기 오늘날 얼마나 많은 당신,이 12 00:00:47,110 --> 00:00:50,330 당신이 이해하지 않는 경우에도 어떤 그것은 Shellshock 들어, 전부 야? 13 00:00:50,330 --> 00:00:51,370 14 00:00:51,370 --> 00:00:54,245 좋아, 당신의 얼마나 많은 취약한 컴퓨터가? 15 00:00:54,245 --> 00:00:55,680 16 00:00:55,680 --> 00:01:00,250 OK, 훨씬, 훨씬 더 손이 있어야한다 지금까지 이유로 우리는 보게 될 것이다. 17 00:01:00,250 --> 00:01:02,580 >> 의는 무엇이 있는지 살펴 보자 언론에서 계속되고 18 00:01:02,580 --> 00:01:05,304 후 조금 설명 여기 우리를 위해 기술적. 19 00:01:05,304 --> 00:01:07,670 20 00:01:07,670 --> 00:01:11,250 >> 스피커 2 : 보안 전문가가 경고 심각한 결함이 있었던 그 21 00:01:11,250 --> 00:01:15,650 수백 영향을 약 될 세계 웹 사용자의 수백만. 22 00:01:15,650 --> 00:01:20,600 그래서 정확히되었습니다 버그는 무엇인가 Shellshock 더빙, 그것은 무엇을합니까? 23 00:01:20,600 --> 00:01:23,720 24 00:01:23,720 --> 00:01:28,910 음, Shellshock 또한으로 알려져 있습니다 배쉬 버그, 그것을 악용하는 소프트웨어입니다. 25 00:01:28,910 --> 00:01:33,230 해커는 취약한 스캔하고 바이러스를 사용 리눅스와 유닉스를 실행하는 시스템 26 00:01:33,230 --> 00:01:36,300 시스템을 운영 한 다음 감염. 27 00:01:36,300 --> 00:01:38,730 배쉬는 명령 줄 셸입니다. 28 00:01:38,730 --> 00:01:43,460 이것은 사용자의 문제가 시작 명령을 할 수 있습니다 소프트웨어 내에서 프로그램 및 기능 29 00:01:43,460 --> 00:01:45,250 텍스트를 입력하여. 30 00:01:45,250 --> 00:01:49,980 그것은 일반적으로 프로그래머가 사용하고 있어요 더 넓은 세계에 개방하지 말아야 31 00:01:49,980 --> 00:01:51,590 Shellshock가 변경하지만. 32 00:01:51,590 --> 00:01:54,160 33 00:01:54,160 --> 00:01:57,910 >> 음, worringly, 일부 분석가 그것은 더 큰 위협이 될 수 있습니다 경고, 34 00:01:57,910 --> 00:02:01,580 Shellshock 완료 할 수 있기 때문에 감염된 시스템의 제어, 35 00:02:01,580 --> 00:02:06,030 Heartbleed 반면에만 허용 해커는 컴퓨터에 스파이합니다. 36 00:02:06,030 --> 00:02:09,130 그것은, 그래서 심각한 10에서 10를 평가 한 37 00:02:09,130 --> 00:02:11,900 국가 별 심각도 취약점 데이터베이스. 38 00:02:11,900 --> 00:02:15,530 39 00:02:15,530 --> 00:02:20,015 모든 웹 서버의 2/3에있다 일부 Mac 컴퓨터를 포함하여 위험. 40 00:02:20,015 --> 00:02:22,760 41 00:02:22,760 --> 00:02:25,600 글쎄, 당신 확인 지금 시스템을 패치. 42 00:02:25,600 --> 00:02:29,330 웹 사이트 실행을 호스팅하는 사람 영향을받는 운영 체제 43 00:02:29,330 --> 00:02:31,800 가능한 한 빨리 조치를 취해야합니다. 44 00:02:31,800 --> 00:02:35,390 이 보일 것 감당할 수있는 사람 자신의 모니터링 및 웹 응용 프로그램에 45 00:02:35,390 --> 00:02:37,355 방화벽은 공격 피려. 46 00:02:37,355 --> 00:02:39,979 47 00:02:39,979 --> 00:02:41,770 스피커 3 : 최악의 일이 일어날 수 즉 48 00:02:41,770 --> 00:02:45,080 누군가가 코드를 작성하는 것이 그 자동으로 이동 및 스캔 것 49 00:02:45,080 --> 00:02:48,280 인터넷과 영향을주는 이러한 모든 컴퓨터. 50 00:02:48,280 --> 00:02:50,710 그리고 그들은 물론, 그렇게되면, 그들이 할 수있는 최악의 일 51 00:02:50,710 --> 00:02:53,300 그냥 모든 것을 삭제하고, 아래 사이트를 종료합니다. 52 00:02:53,300 --> 00:02:55,360 그래서 우리는 피해를 볼 수 이러한 관점에서, 53 00:02:55,360 --> 00:02:58,300 우리는 악의적 인 사람들이있을 것입니다 곳 누가 막 파괴를 야기하는 결정 54 00:02:58,300 --> 00:03:02,534 시스템을 작동 중단 또는 삭제하여 같은 파일 등의 여러가지 작업을하고 있습니다. 55 00:03:02,534 --> 00:03:05,200 스피커 2 : 일부는이 하나라고 가장 어려운의 측정 56 00:03:05,200 --> 00:03:08,080 년의 버그, 그리고 주 지거나 할 수 있습니다 57 00:03:08,080 --> 00:03:10,820 개월은 궁극적 인 영향을 확인합니다. 58 00:03:10,820 --> 00:03:12,180 59 00:03:12,180 --> 00:03:15,560 >> SPEAKER 1 : 그래서 그 모든 사실이다 하지만 재미있는 것은 거의 모든입니다 60 00:03:15,560 --> 00:03:18,330 이미지 당신은 방금 본, 아마 키보드를 제외 61 00:03:18,330 --> 00:03:20,930 함께 할 수 없다 어떠한 버그. 62 00:03:20,930 --> 00:03:23,960 서버 및 전선 등, 그것은 종류의 접선 방향과 관련이 있어요, 63 00:03:23,960 --> 00:03:27,410 하지만 핵심 꽤 사실이다 잘 여기에 무슨 일이 일어나고 있는지. 64 00:03:27,410 --> 00:03:30,050 사실, 나에게로 가자 우리 CS50 장비. 65 00:03:30,050 --> 00:03:32,910 내가 가서 극대화하자 여기에 터미널 창. 66 00:03:32,910 --> 00:03:36,020 그리고 너희들이 사용하고있다 나는 그 버전을 포함 67 00:03:36,020 --> 00:03:39,460 프로그램을 작성하기 위해 gedit에서의, 등 명령을 입력하고, 68 00:03:39,460 --> 00:03:43,690 이 사실이며, 보유 주, 강타, B-A-S-H에 있었다. 69 00:03:43,690 --> 00:03:46,890 이것은이다 본쉘 다시 쉘 하는 말을 그냥 멋진 방법입니다, 70 00:03:46,890 --> 00:03:50,220 이있는 프로그램입니다 효과적으로, 신속 깜박 71 00:03:50,220 --> 00:03:51,970 즉, 대기가 앉아 당신을 위해 입력. 72 00:03:51,970 --> 00:03:53,920 그리고 그것은 명령이다 줄 인터페이스를 통해 어떤 73 00:03:53,920 --> 00:03:57,650 너희들이 명령을 실행하고 있으며 궁극적으로 컴파일하고 실행 74 00:03:57,650 --> 00:03:58,400 프로그램. 75 00:03:58,400 --> 00:04:01,320 >> 그러나 강타는 또한 프로그램입니다 다음과 같은 의미의 언어입니다. 76 00:04:01,320 --> 00:04:05,460 당신은 같은 명령이 있다는 것을 알고 CD 및 LS 또한 연타 등, 77 00:04:05,460 --> 00:04:09,580 하지만 당신은 자신의 명령을 정의 할 수 있습니다 배쉬 쉘을 구현하여. 78 00:04:09,580 --> 00:04:11,420 이제 우리는 안 갈거야 훌륭한 세부 사항으로 이동 79 00:04:11,420 --> 00:04:16,089 으로는 프로그래밍 언어를 배쉬 만합니다 알고, 예를 들면, 그 순간에, 80 00:04:16,089 --> 00:04:17,607 라는 어떤 명령도 없다 "안녕하세요." 81 00:04:17,607 --> 00:04:19,440 그래서 그것은에서 찾을 수있다 이러한 패키지 중 하나. 82 00:04:19,440 --> 00:04:20,856 내 컴퓨터에 설치되어 있지 않은 것. 83 00:04:20,856 --> 00:04:21,870 관리자에게 문의하십시오. 84 00:04:21,870 --> 00:04:26,030 하지만이 원한다면 프로그램이 될 수 있습니다 배쉬 또는 내 프롬프트에서 "안녕하세요"라고, 85 00:04:26,030 --> 00:04:30,810 사실 그건 구문을 사용할 수 있습니다 아주 C. 것처럼, 아주 동일 하 86 00:04:30,810 --> 00:04:35,020 하지만 꽤 비슷합니다 기능, 몇 가지 세부 사항을 누락이기는하지만. 87 00:04:35,020 --> 00:04:38,090 어떠한 일이 일어날 것 같다, 하지만 지금은 "안녕하세요"를 입력하면 88 00:04:38,090 --> 00:04:40,960 당신은 실제로 쓸 수 있습니다 프로그램이 아닌 C에서가 아니라 자바, 89 00:04:40,960 --> 00:04:44,280 하지 다른 프로그래밍 언어,하지만 배쉬 자체. 90 00:04:44,280 --> 00:04:47,630 >> 이제 열쇠는 여기에 내가 쓴 것입니다 나는이 새로운 명령을주고 싶어 이름, 91 00:04:47,630 --> 00:04:50,820 괄호는 아르 이 상징은 함수 인. 92 00:04:50,820 --> 00:04:54,010 여담으로, 당신은 또한 재미를 수행 할 수 있습니다 그리고 사실, 심지어 맥 OS에 대한 것, 93 00:04:54,010 --> 00:04:55,620 이 터미널이라는 프로그램입니다. 94 00:04:55,620 --> 00:04:58,800 그것은 누구의에 내장되어 제공 이 방에 맥이 컴퓨터, 95 00:04:58,800 --> 00:05:03,640 당신은 맥에서 비슷한 일을 할 수있다 OS는,하지만 당신은 그 이상 더 갈 수 있습니다. 96 00:05:03,640 --> 00:05:07,110 그리고 이것은 약간의 접선 하지만 재미 가지입니다. 97 00:05:07,110 --> 00:05:09,715 오늘 아침에 생각 나게했다, 이 작업을 통해 생각할 때, 98 00:05:09,715 --> 00:05:13,279 작은 게임의 나는 재생하는 데 사용 CS50의 이전 TF들 중 하나 99 00:05:13,279 --> 00:05:16,570 언제 그가 거리에서 도보 것있다 자신의 화면을 자신의 키보드 잠금 해제, 100 00:05:16,570 --> 00:05:23,611 나는 명령을 실행할 것 이 항아리처럼 "인사." 101 00:05:23,611 --> 00:05:26,610 이제 언제 그가 다시 와서 자신의 키보드 나 화면을 삭제 한 후 102 00:05:26,610 --> 00:05:27,985 그는, 앉아 것 몇 가지 작업을 수행하려고, 103 00:05:27,985 --> 00:05:29,250 그의 directory--의 내용을 나열 104 00:05:29,250 --> 00:05:29,510 >> [AUDIO 재생] 105 00:05:29,510 --> 00:05:30,010 >> - 안녕하세요. 106 00:05:30,010 --> 00:05:31,621 107 00:05:31,621 --> 00:05:32,120 안녕하세요. 108 00:05:32,120 --> 00:05:35,030 >> 공정성에 따라서,, : SPEAKER 1 그것은 "안녕하세요."사실이 아니었다 109 00:05:35,030 --> 00:05:36,894 그것은 일반적으로 무엇인가이었다 거저 더 가깝다 110 00:05:36,894 --> 00:05:37,560 [AUDIO 재생] 111 00:05:37,560 --> 00:05:37,750 -Beep. 112 00:05:37,750 --> 00:05:39,320 SPEAKER 1 : 나는 would-- 떡 치는 그래서 자신의 컴퓨터는 것 113 00:05:39,320 --> 00:05:42,170 그는 실제로 그에게 모든 시간을 맹세 자신의 키보드에 앉았다. 114 00:05:42,170 --> 00:05:46,265 그리고 매우 빨리 그는 알아 냈 그의 화면 잠금이 해제 떠날 수 없습니다. 115 00:05:46,265 --> 00:05:48,730 하지만이 정렬을 제안합니다 바보 같은 재미의 당신을 116 00:05:48,730 --> 00:05:50,210 배쉬 같은 것을 함께 할 수 있습니다. 117 00:05:50,210 --> 00:05:52,770 그러나 조금 더 심각한,보다 확실합니다. 118 00:05:52,770 --> 00:05:57,235 그리고 사실,이 중 하나이다 가장 위험하고 오래 지속 버그 119 00:05:57,235 --> 00:05:58,860 그건 정말 세계적으로 세계를 강타했다. 120 00:05:58,860 --> 00:06:02,060 이 버그는 주변에있다 약 20 년 동안, 121 00:06:02,060 --> 00:06:05,780 당신은 단지 강타 할 것이다 상대적 단순성에 의해 순간. 122 00:06:05,780 --> 00:06:07,990 >> 그래서이 대표는 명령 당신 경우 123 00:06:07,990 --> 00:06:10,448 말 그대로 지금, Mac을 소유 당신이 당신의 뚜껑이 열려있을 때, 124 00:06:10,448 --> 00:06:12,940 당신은에 입력 시도 할 수 있습니다 터미널이라는 프로그램입니다. 125 00:06:12,940 --> 00:06:15,410 터미널을 받고있다 응용 프로그램 Utilities-- 126 00:06:15,410 --> 00:06:18,790 한번, Windows 사용자는 필요가 없습니다 이 특정 threat-- 걱정 127 00:06:18,790 --> 00:06:22,310 하지만 맥 당신의 사람들은 입력 할 수 있습니다 창에이 내가 여기서 할 것 같은, 128 00:06:22,310 --> 00:06:24,210 당신은 입력 할 경우 이 프로그램에 해당 129 00:06:24,210 --> 00:06:28,830 내가 지금 할 거처럼, 터미널이라고, 당신이 단어를 보면 "취약" 130 00:06:28,830 --> 00:06:32,200 컴퓨터는 악용에 취약. 131 00:06:32,200 --> 00:06:33,850 >> 지금은 실제로 무엇을 의미 하는가? 132 00:06:33,850 --> 00:06:35,870 그리고이 인정 하듯이 있습니다 꽤 미친 구문, 133 00:06:35,870 --> 00:06:39,050 하지만 이제 적어도 밖으로 그려 보자 흥미로운 몇 가지. 134 00:06:39,050 --> 00:06:42,567 그래서 보이는 몇 가지 문법이있다 적어도 C에서, 조금 익숙해 135 00:06:42,567 --> 00:06:43,950 더 일반적으로 프로그래밍. 136 00:06:43,950 --> 00:06:47,550 좀 괄호를 참조 세미콜론, 중괄호, 등, 137 00:06:47,550 --> 00:06:50,820 하지만이 밝혀 노란색 여기에 멍청한 138 00:06:50,820 --> 00:06:53,580 기능은 본질적으로 그는 아무 작업도 수행하지 않습니다. 139 00:06:53,580 --> 00:06:57,840 콜론 수단은 아무것도 할 수없고, 세미콜론은 아무것도하지 않고 중단을 의미합니다. 140 00:06:57,840 --> 00:07:00,250 이러한 내부 그래서 중괄호, 사실 141 00:07:00,250 --> 00:07:02,440 나는 평등을 가지고 왼쪽이에 서명 142 00:07:02,440 --> 00:07:05,500 기본적으로 만드는 것입니다 명령 또는 변수 143 00:07:05,500 --> 00:07:09,520 X라고하고, 할당 이 코드의 노란색 비트. 144 00:07:09,520 --> 00:07:14,040 즉, "에코 같은 것을 할 수 있습니다 안녕하세요 "또는"말을 삐 "또는 뭔가 145 00:07:14,040 --> 00:07:15,120 그 가깝다. 146 00:07:15,120 --> 00:07:17,780 그러나 당신의 눈 경우주의 우측으로 더 방황 147 00:07:17,780 --> 00:07:22,150 이상이 라인에 더있어 그 세미콜론 그냥 끝입니다. 148 00:07:22,150 --> 00:07:25,160 다음 "취약 에코"와 그 이상 더있다. 149 00:07:25,160 --> 00:07:26,530 또 다른 세미콜론, bash는 -c :. 150 00:07:26,530 --> 00:07:28,120 151 00:07:28,120 --> 00:07:34,050 >> 그래서 긴 이야기를 짧은 이 코드 줄은 152 00:07:34,050 --> 00:07:36,660 경쟁력 충분 이야 컴퓨터 153 00:07:36,660 --> 00:07:39,830 무언가를하기에 취약 여러분이 원하는 것을, 154 00:07:39,830 --> 00:07:44,290 배시있다에 버그가 있기 때문에 강타는 정지되어 있었다하더라도 155 00:07:44,290 --> 00:07:48,980 명령 권한의 읽기 라인 거기에 노란색 텍스트 후, 156 00:07:48,980 --> 00:07:52,520 20 플러스 세 버그, 강타는 실제로 읽고있다 157 00:07:52,520 --> 00:07:56,780 그 세미콜론을 넘어 꽤 많은이에게 무슨 일. 158 00:07:56,780 --> 00:07:59,070 >> 그래서 의미는 무엇입니까 의 궁극적? 159 00:07:59,070 --> 00:08:01,340 난 그냥 "안녕하세요 에코"고 말했다 또는 "취약 에코" 160 00:08:01,340 --> 00:08:05,449 그러나 당신이 뭔가를 한 경우 실제로 악성, RM은 -rf의 *와 같은, 161 00:08:05,449 --> 00:08:07,240 하는 당신은 그렇지 않습니다 그 어느 때 입력 한 162 00:08:07,240 --> 00:08:08,920 솔직히 당신이 아마 너무 빨리해야한다, 163 00:08:08,920 --> 00:08:10,700 당신은 할 수 있기 때문에 그것으로 손상을 많이합니다. 164 00:08:10,700 --> 00:08:11,210 왜? 165 00:08:11,210 --> 00:08:12,990 RM은 물론 무엇을합니까? 166 00:08:12,990 --> 00:08:14,270 제거합니다. 167 00:08:14,270 --> 00:08:15,930 * 무엇을 의미? 168 00:08:15,930 --> 00:08:16,430 모든. 169 00:08:16,430 --> 00:08:18,180 그래서 소위이야 와일드 카드, 그 의미하므로 170 00:08:18,180 --> 00:08:20,410 모든 것을 삭제 현재 디렉토리. 171 00:08:20,410 --> 00:08:23,379 -r 재귀 의미하는 일이, 당신이 삭제하는지 경우에 어떤 의미 172 00:08:23,379 --> 00:08:26,420 디렉토리이며,이 내부 다른 파일 및 다른 디렉토리이며 173 00:08:26,420 --> 00:08:28,950 재귀가에 뛰어 그 모두 삭제. 174 00:08:28,950 --> 00:08:31,040 그리고 -f은 그들 모두의 최악이다. 175 00:08:31,040 --> 00:08:32,580 누구나 -f 여기에 무슨 뜻인지 알아? 176 00:08:32,580 --> 00:08:33,690 177 00:08:33,690 --> 00:08:34,360 포스. 178 00:08:34,360 --> 00:08:37,830 그래서 심지어 수단 강제 이 나쁜 생각하면, 179 00:08:37,830 --> 00:08:40,939 나에게 메시지를 표시하지 않고 그것을 할 추가 확인을 위해. 180 00:08:40,939 --> 00:08:43,230 그래서, 당신도 알다시피, 우리는 웃음 이 있지만, 솔직히 아마 181 00:08:43,230 --> 00:08:44,972 이 여러 번 입력 일, 현실 때문에 182 00:08:44,972 --> 00:08:47,210 그것이 가장 빠른 방법입니다 물건의 모두를 삭제합니다. 183 00:08:47,210 --> 00:08:48,590 그러나 심지어 나는 약간의 손상을 했어요. 184 00:08:48,590 --> 00:08:53,100 >> 하지만 당신은 컴퓨터를 속이는 것 인 경우 바보 같은 변수를 정의로 185 00:08:53,100 --> 00:08:56,810 또는 기능은 X라고하지만 실행에 컴퓨터를 속여 186 00:08:56,810 --> 00:09:00,030 그 경계를 넘어 기능, 즉 세미콜론을 넘어, 187 00:09:00,030 --> 00:09:04,430 당신은 참으로 컴퓨터를 속일 수 RM은 같은 것을 실행에 -rf 188 00:09:04,430 --> 00:09:07,810 또는 이메일 명령 또는 복사 명령. 189 00:09:07,810 --> 00:09:11,400 무엇이든은 말 그대로 당신이 함께 할 수있는 컴퓨터가 파일을 삭제하든, 190 00:09:11,400 --> 00:09:15,350 파일을 만드는 사람을 스팸, 원격으로 일부 서버를 공격, 191 00:09:15,350 --> 00:09:17,190 당신은 그것을 표현할 수있는 경우 명령을하면 192 00:09:17,190 --> 00:09:19,120 그 일에 컴퓨터를 속일 수 있습니다. 193 00:09:19,120 --> 00:09:21,510 >> 지금의 예 무엇 당신이 어떻게 할 수 있는가? 194 00:09:21,510 --> 00:09:24,300 음, 많은 컴퓨터가있다 인터넷 실행 배쉬합니다. 195 00:09:24,300 --> 00:09:26,390 우리 Mac 사용자 모두가 그들 사이에 있습니다. 196 00:09:26,390 --> 00:09:30,390 리눅스 서버의 많은 중입니다 뿐만 아니라 그들, 그리고 유닉스 서버. 197 00:09:30,390 --> 00:09:32,630 윈도우를 다시 가져옵니다 상대적으로 오프 후크 198 00:09:32,630 --> 00:09:34,590 당신은 설치하지 않았다면 특별한 소프트웨어. 199 00:09:34,590 --> 00:09:37,130 서버의 지금 많은에 대한 예를 실행하여 웹 서버, 200 00:09:37,130 --> 00:09:39,840 사실 리눅스는 아마입니다 가장 인기있는 운영 체제 201 00:09:39,840 --> 00:09:43,060 인터넷에있는 컴퓨터에서 실행합니다 즉, 웹 페이지를 제공하고 있습니다. 202 00:09:43,060 --> 00:09:44,910 이제 우리는 나중에 살펴 보 겠지만 학기에 203 00:09:44,910 --> 00:09:48,470 당신의 요청을 보내 당신의 browser-- 크롬, 204 00:09:48,470 --> 00:09:50,790 인터넷 익스플로러, 던지 ... 원격 서버, 205 00:09:50,790 --> 00:09:53,730 그것은 밝혀 그 경우에도 방금 입력 한 www.example.com, 206 00:09:53,730 --> 00:09:59,590 브라우저가 메시지를 보내는 그건 좀 더 비밀이 같은입니다. 207 00:09:59,590 --> 00:10:01,239 >> 그러나 이상한 뭔가를 조금 알 수 있습니다. 208 00:10:01,239 --> 00:10:03,030 처음 두 행 나는 한 번도 본 적이 209 00:10:03,030 --> 00:10:04,904 하지만 그들은 보이지 않는 특히 위협. 210 00:10:04,904 --> 00:10:08,030 하지만 도난당한 한 것을 알 수 여기에 세 번째 라인. 211 00:10:08,030 --> 00:10:13,390 나쁜 사람이 메시지를 송신한다면 자신의 컴퓨터에서이 같은 212 00:10:13,390 --> 00:10:17,270 취약한 Mac 또는에 취약한 리눅스 서버, 213 00:10:17,270 --> 00:10:21,580 재미있는 것은, 그 배쉬입니다 그 간단한 작은 명령 프롬프트 214 00:10:21,580 --> 00:10:27,450 편재하고 자주 기본적으로 실행하는 데 사용 215 00:10:27,450 --> 00:10:30,020 의 내용 는 수신 메시지입니다. 216 00:10:30,020 --> 00:10:33,490 그리고 그 논리에 의해, 당신은 할 수 따라서, 웹 서버를 속여 217 00:10:33,490 --> 00:10:36,370 같은 것을 보내 사용자 에이전트, 일반적으로하는 218 00:10:36,370 --> 00:10:38,300 말을하도록되어 브라우저의 이름을 지정합니다. 219 00:10:38,300 --> 00:10:42,420 사용자 에이전트 크롬, 사용자 에이전트 인터넷 탐색기 사용자 에이전트 파이어 폭스,이 220 00:10:42,420 --> 00:10:44,590 당신의 브라우저입니다 그 자체를 식별하는 방법. 221 00:10:44,590 --> 00:10:46,605 그러나 만약 나쁜 사람이 매우 똑똑 mm-mm, 난 말한다 222 00:10:46,605 --> 00:10:47,930 당신을 말하지 않을 어떤 브라​​우저는, 223 00:10:47,930 --> 00:10:50,888 내가 대신 당신이를 보낼거야 RM은 -rf와 함께 일을 암호 같은 예측 224 00:10:50,888 --> 00:10:55,840 * 그것에서, 당신은 말 그대로 속임수 수 있습니다 인터넷에 취약한 웹 서버 225 00:10:55,840 --> 00:10:59,055 정확히 그 실행에 이 모든 파일을 삭제하기위한. 226 00:10:59,055 --> 00:11:00,930 그리고 솔직히, 그건 아니에요 그것은 심지어 최악. 227 00:11:00,930 --> 00:11:01,763 당신은 모든 작업을 수행 할 수 있습니다. 228 00:11:01,763 --> 00:11:04,480 당신은 시작할 수 분산 서비스 거부 공격 229 00:11:04,480 --> 00:11:07,030 당신은이 메시지를 전송하는 경우 웹 서버의 전체 송이 230 00:11:07,030 --> 00:11:10,256 한 다음 모두에 대해 내려했다 예, Harvard.edu 서버에서, 231 00:11:10,256 --> 00:11:12,130 당신은 빅뱅의 정렬 할 수 있습니다 그들을 밖으로 지옥 232 00:11:12,130 --> 00:11:15,490 이었다 네트워크 트래픽 그렇지 않으면이 나쁜 사람에 의해 트리거. 233 00:11:15,490 --> 00:11:18,760 >> 그래서, 짧은 긴 이야기를 거의 Mac을 소유하고이 방에있는 모든 사람 234 00:11:18,760 --> 00:11:20,240 이에 취약합니다. 235 00:11:20,240 --> 00:11:24,100 실버 라이닝 당신이 아니라면 것입니다 노트북에 웹 서버를 실행, 236 00:11:24,100 --> 00:11:27,780 당신은 실제로 구성하지 않았다면 그것은 그것으로 SSH 같은 것을 허용하는 237 00:11:27,780 --> 00:11:28,670 당신은 실제로 안전 해요. 238 00:11:28,670 --> 00:11:31,710 그것은 취약하지,하지만 거기에 하나의 노트북에려고, 239 00:11:31,710 --> 00:11:33,290 그래서 당신은 종류의 안심하실 수 있습니다. 240 00:11:33,290 --> 00:11:36,210 그러나 애플은 곧 것 이것에 대한 수정 사항을 업데이트합니다. 241 00:11:36,210 --> 00:11:39,660 리눅스의 세계는 이미 출시했습니다 페도라와 우분투에 대한 수정 사항 242 00:11:39,660 --> 00:11:43,790 다른 리눅스 버전, 그리고 실제로 어플라이언스에 업데이트 50을 실행하는 경우, 243 00:11:43,790 --> 00:11:45,930 너무 것조차 업데이트 및 수정. 244 00:11:45,930 --> 00:11:47,764 하지만 너무하지 정말, 취약 245 00:11:47,764 --> 00:11:49,804 당신이하지 않았다면 때문에 어플라이언스와 함께 만지작 거렸다 246 00:11:49,804 --> 00:11:52,770 공개적으로 노트북을 만든 아니다 인터넷에 접근 247 00:11:52,770 --> 00:11:54,910 기본적으로, 당신은했습니다 실제로 때문에 미세하고 248 00:11:54,910 --> 00:11:56,890 방화벽 및 기타 기술. 249 00:11:56,890 --> 00:12:01,000 >> 하지만 버그의 극단적 인 예입니다 우리는 문자 그대로 20 살았던 것을 250 00:12:01,000 --> 00:12:04,050 년, 누가 사람을 알고있는 경우 모든 시간은 그것에 대해 알고있다? 251 00:12:04,050 --> 00:12:06,300 그리고 사실,이 중 하나이다 기본 과제 252 00:12:06,300 --> 00:12:08,690 우리는 나중에 볼 수 있음 보안에 대한 학기, 253 00:12:08,690 --> 00:12:13,020 즉, 단지 현실 세계에서와 같다 좋은 사람은 불리하다. 254 00:12:13,020 --> 00:12:16,500 나쁜 놈들을 유지하기 위해, 우리는에있다 모든 문이 잠겨 있는지 확인 255 00:12:16,500 --> 00:12:20,340 모든 창에 해당, 안전한지 집에 항목의 모든 지점 256 00:12:20,340 --> 00:12:21,980 나쁜 놈들을 유지하는 것이 안전합니다. 257 00:12:21,980 --> 00:12:26,870 그러나 무엇을 나쁜 사람으로이 실제로 당신의 가정을 손상 할 258 00:12:26,870 --> 00:12:28,200 당신 훔치? 259 00:12:28,200 --> 00:12:32,574 그 또는 그녀는 그냥 잠금 해제 일을 찾을 수있다 문, 하나의 깨진 창, 또는 뭔가 260 00:12:32,574 --> 00:12:35,240 이러한 라인을 따라, 그리고 야 컴퓨터 보안에서 같은 일. 261 00:12:35,240 --> 00:12:37,660 우리는 수백만을 작성할 수 있습니다 프로그래밍 코드의 라인 262 00:12:37,660 --> 00:12:40,570 수백 또는 수천을 보내고 그것이 올바른려고 시간, 263 00:12:40,570 --> 00:12:43,370 하지만 경우에 당신은 하나를 만들 정확성의 실수, 264 00:12:43,370 --> 00:12:47,030 만약 전체 시스템을 넣을 수 있고, 실제로,이 경우, 전체 인터넷 265 00:12:47,030 --> 00:12:48,660 위험의 세계. 266 00:12:48,660 --> 00:12:51,950 >> 당신이 더 많은 것을 배우고 싶은 경우에 따라서 이것에 대해, 여기에이 URL로 이동합니다. 267 00:12:51,950 --> 00:12:54,450 행동에 대한 필요가 없습니다 오늘 밤 당신이 아니라면 268 00:12:54,450 --> 00:12:57,116 것과 더 편안 중에서 자신의 웹을 실행 한 269 00:12:57,116 --> 00:12:59,810 서버, 어떤 당신이해야하는 경우, 사실, 소프트웨어를 업데이트합니다. 270 00:12:59,810 --> 00:13:03,244 >> 그리고 이것은 너무의 제목입니다 음성, 지금은 종이, 271 00:13:03,244 --> 00:13:05,410 우리는에 연결했는지 오늘 코스의 웹 사이트. 272 00:13:05,410 --> 00:13:07,600 그것은 동료에 의해이었다 이름 켄 톰슨 (Ken Thompson), 사람 273 00:13:07,600 --> 00:13:10,120 아주 유명한 수락했다 컴퓨터 과학에서 수상, 274 00:13:10,120 --> 00:13:13,495 그는 몇 년이 연설을했다 전 기본적으로이 동일한 주제에. 275 00:13:13,495 --> 00:13:18,250 276 00:13:18,250 --> 00:13:20,520 질문은 사람을 요구, 당신이해야 정말 277 00:13:20,520 --> 00:13:23,480 신뢰 궁극적 소프트웨어 당신이 주어 졌어? 278 00:13:23,480 --> 00:13:26,100 예를 들어, 우리는 모두가 프로그램을 작성하고, 279 00:13:26,100 --> 00:13:27,820 우리는 컴파일했습니다 연타로. 280 00:13:27,820 --> 00:13:31,830 그리고 당신의 지식, 당신은 쓴 CS50에 대한 프로그램있다 281 00:13:31,830 --> 00:13:35,310 종류의 뒷문은 방법이 나쁜 사람이 당신의 프로그램을 실행하는 경우, 282 00:13:35,310 --> 00:13:37,410 컴퓨터 이상 걸릴 수 있습니다? 283 00:13:37,410 --> 00:13:38,310 아마하지, 그렇지? 284 00:13:38,310 --> 00:13:40,180 마리오와 욕심, 그리고 신용. 285 00:13:40,180 --> 00:13:41,680 이들은 모두 아주 작은 프로그램입니다. 286 00:13:41,680 --> 00:13:43,910 당신은 꽤 될 거라고 나쁜 실제로 경우 287 00:13:43,910 --> 00:13:47,310 당신의 전체적인 컴퓨터가 공격에 취약했다 코드 (10) 또는 라인 (20)을 작성 후, 288 00:13:47,310 --> 00:13:49,690 또는 몇몇의 적어도 모르고 보안 관련의. 289 00:13:49,690 --> 00:13:52,023 지금은 그 우습게 말 그러나 우리는 오늘 보게 될 290 00:13:52,023 --> 00:13:54,600 이번 주에는 실제로입니다 정말, 정말 쉬운 291 00:13:54,600 --> 00:13:57,980 나쁜 심지어 만들려면 짧은 프로그램 취약. 292 00:13:57,980 --> 00:14:02,880 >> 하지만 지금은 적어도 실현 질문은 여기에 요청을 받고 있음 293 00:14:02,880 --> 00:14:04,850 컴파일러에 연타에 관한 것입니다. 294 00:14:04,850 --> 00:14:08,360 왜 우리는 연타를 신뢰 한 지난 3 주 하시나요? 295 00:14:08,360 --> 00:14:12,650 누가 누구든지 연타를 쓴 말을하다 거기에 "만약"조건이 없었다 296 00:14:12,650 --> 00:14:17,680 그 본질적 일부 0을 주입 모든 프로그램에 것들은 그것을 컴파일 297 00:14:17,680 --> 00:14:21,180 그 할 것이다 그 혹은 그녀의 액세스 컴퓨터 할 때 자고있어 298 00:14:21,180 --> 00:14:23,580 와 노트북 덮개가 열려 있습니다 컴퓨터가 실행되고? 299 00:14:23,580 --> 00:14:24,080 오른쪽? 300 00:14:24,080 --> 00:14:28,350 우리는 명예 시스템 바로 이런 종류의가 지금 우리는 연타가 합법적임을 신뢰 곳. 301 00:14:28,350 --> 00:14:30,000 어플라이언스가 합법적임을 믿습니다. 302 00:14:30,000 --> 00:14:34,430 당신은 신뢰가 문자 그대로 모든 프로그램 Mac 또는 PC에 신뢰할 수 있습니다. 303 00:14:34,430 --> 00:14:37,510 그리고이 간단한 버그에서 알 수 있듯이, 악의적 아니더라도, 304 00:14:37,510 --> 00:14:40,580 그 절대적으로 아니다 케이스가 될 가능성. 305 00:14:40,580 --> 00:14:42,350 >> 그래서 당신은 지옥으로 무서워해야한다. 306 00:14:42,350 --> 00:14:45,560 솔직히, 간단한이 없습니다 이 다른 솔루션 307 00:14:45,560 --> 00:14:48,185 사회적 인식의 일종 이상 복잡성 증가의 308 00:14:48,185 --> 00:14:50,310 우리는 상단에 구축하고 있다는 우리의 컴퓨터 시스템, 309 00:14:50,310 --> 00:14:53,740 어떻게 점점 더 취약 우리는 아주 잘 될 수 있습니다. 310 00:14:53,740 --> 00:14:55,570 >> 지금 생각하면 브레이크 아웃 말했다와 함께. 311 00:14:55,570 --> 00:14:59,889 그래서 브레이크 아웃입니다 문제는 세 가지를 설정하고, 브레이크 아웃은 작년부터 게임 312 00:14:59,889 --> 00:15:02,180 당신이 기억 수도 있지만, 우리를 위해 문제에서, 셋을 설정 313 00:15:02,180 --> 00:15:04,450 그것은 우리가 걸릴 수 있습니다 상황이 홈을 백업 314 00:15:04,450 --> 00:15:08,880 우리가 프로그램을 작성할 때되도록 심지어이 같은 터미널 창에서, 315 00:15:08,880 --> 00:15:14,670 우리는 사실, 궁극적으로 실행할 수 있습니다 그래픽 프로그램을하지 316 00:15:14,670 --> 00:15:17,800 그와 달리 우리는 있었다 스크래치에 액세스. 317 00:15:17,800 --> 00:15:20,910 그래서이 직원의입니다 브레이크 아웃의 구현, 318 00:15:20,910 --> 00:15:23,930 이는 단지이 벽돌 깨는입니다 게임, 당신은 다시 노를 저어 이동하는 것이 319 00:15:23,930 --> 00:15:27,590 앞뒤로, 당신은 공을 상단까지 그 색깔의 벽돌에 대한. 320 00:15:27,590 --> 00:15:30,020 따라서이 우리를 가져오고있다 종류의 다시 곳 321 00:15:30,020 --> 00:15:33,180 우리는 매우 신속하게 할 수 있었다 스크래치와, 지금은 C와, 322 00:15:33,180 --> 00:15:35,800 우리 자신을 구현 그래픽 사용자 인터페이스. 323 00:15:35,800 --> 00:15:38,960 >> 그러나 그 이상이 문제 세트는 제 나타내고 324 00:15:38,960 --> 00:15:41,000 있는 우리가주는거야 당신이 코드의 무리입니다. 325 00:15:41,000 --> 00:15:43,940 그리고 사실, 내가 명시 적으로 가져 이에 대한 관심, 특히 때문에 326 00:15:43,940 --> 00:15:47,090 그 적은 편안한에 대한이 문제는, 적어도 첫번째 눈에 설정 327 00:15:47,090 --> 00:15:49,170 같은 느낌 것입니다 우리는 한 단계 그것을 촬영했습니다. 328 00:15:49,170 --> 00:15:51,540 , 우리는 당신을 준 때문에 검색은 일부 329 00:15:51,540 --> 00:15:54,930 및 PSET에서 문제를 정렬 우리가 작성한 코드의 무리 330 00:15:54,930 --> 00:15:56,680 및 주석의 몇 즉 "어떻게"라고 331 00:15:56,680 --> 00:15:58,221 어디 빈칸을 채울 수 있습니다. 332 00:15:58,221 --> 00:16:00,020 그래서 너무 무서운, 그러나 이것은 처음 인 333 00:16:00,020 --> 00:16:03,370 우리는 당신이 코드를 전달하고 당신이 할 필요가 첫번째 읽고 이해 한 다음에 추가 334 00:16:03,370 --> 00:16:04,290 과를 완료합니다. 335 00:16:04,290 --> 00:16:05,940 >> 그리고 브레이크 아웃과 함께, 우리는 동일한 기능을 수행 할거야 336 00:16:05,940 --> 00:16:08,740 당신에게 몇 통 이상의 라인을 제공 코드로, 솔직히, 당신을 줄이 337 00:16:08,740 --> 00:16:11,490 프레임 워크의 로트 게임하지만 짧은 중지 338 00:16:11,490 --> 00:16:14,304 의 벽돌을 구현 그리고 볼과 패들, 339 00:16:14,304 --> 00:16:15,970 하지만 우리는 몇 가지 다른 기능을 구현 않습니다. 340 00:16:15,970 --> 00:16:18,280 심지어 첫눈에 그, 다시 특히, 덜 편안하게하는 경우 341 00:16:18,280 --> 00:16:21,480 특히 어려운 보일 수 및 당신은 너무 많은 새로운 기능이 있다고 생각 342 00:16:21,480 --> 00:16:24,070 당신은 당신의 마음을 포장 할 필요가 주위에, 그것은 사실입니다. 343 00:16:24,070 --> 00:16:26,281 그러나 그것의 마음에 계속 아주 스크래치 등을들 수있다. 344 00:16:26,281 --> 00:16:28,780 확율은 모두 사용하지 않은 아르 스크래치에서 퍼즐 조각. 345 00:16:28,780 --> 00:16:31,120 승률은 포장을 상관하지 않았다 아르 그들 모두 주위에 당신의 마음 346 00:16:31,120 --> 00:16:33,617 그것은했다 모든 이었기 때문에 빠른 눈, 오, 이해하기 347 00:16:33,617 --> 00:16:35,450 그게 내가 무엇을 할 수 그 퍼즐 조각. 348 00:16:35,450 --> 00:16:38,260 그리고 실제로, 문제 설정 3 사양, 우리는 당신을하겠다 349 00:16:38,260 --> 00:16:41,370 문서도 그 것이다 몇 가지 새로운 기능을 소개, 350 00:16:41,370 --> 00:16:43,570 궁극적 프로그래밍 사용 구성한다. 351 00:16:43,570 --> 00:16:47,610 , 루프 조건, 변수 및 함수를 352 00:16:47,610 --> 00:16:50,720 동일 할 것 우리는 지금까지 본 적이있다. 353 00:16:50,720 --> 00:16:53,560 >> 그래서 참으로, 우리는 무엇을 줄 것이다 당신은 몇 가지 샘플 코드입니다 354 00:16:53,560 --> 00:16:56,110 당신은 창을 만들 수 있습니다 즉,이 달리하지 보인다 355 00:16:56,110 --> 00:16:59,540 궁극적으로 바꿀 확실히 이런 식으로 뭔가. 356 00:16:59,540 --> 00:17:02,250 그래서 CS50을 활용 , 근무 시간 등을 논의 357 00:17:02,250 --> 00:17:05,290 그리고 그 사실에 만족할 수 당신이 작성해야하는 코드의 양 358 00:17:05,290 --> 00:17:06,760 실제로 모든 그 정도입니다. 359 00:17:06,760 --> 00:17:10,359 첫 번째 과제는 적응하는 것입니다 자신은 몇 가지 코드에 우리는 서면으로 작성했습니다. 360 00:17:10,359 --> 00:17:11,450 361 00:17:11,450 --> 00:17:15,810 >> pset3에 대한 질문, Shellshock 또는 달리? 362 00:17:15,810 --> 00:17:19,226 >> 청중 : 그것은처럼 보였다 브레이크 아웃을 겪고 363 00:17:19,226 --> 00:17:22,154 코드가 거의입니다 객체 지향 스타일 364 00:17:22,154 --> 00:17:24,675 하지만 난 C가를 생각 객체 지향 프로그램입니다. 365 00:17:24,675 --> 00:17:26,050 SPEAKER 1 : 훌륭한 질문입니다. 366 00:17:26,050 --> 00:17:28,258 그래서 통해 찾고 분포 코드, 코드 367 00:17:28,258 --> 00:17:30,180 우리는 pset3 쓴 익숙한위한이를 368 00:17:30,180 --> 00:17:32,230 그것은을 것 같아 작은 객체 지향. 369 00:17:32,230 --> 00:17:33,800 짧은 대답이된다. 370 00:17:33,800 --> 00:17:38,130 그것은 당신이 방법의 근사치 사용하여 객체 지향 코드를 할 수 있습니다 371 00:17:38,130 --> 00:17:41,850 C 언어와 같은, 그러나이다 여전히 궁극적 절차. 372 00:17:41,850 --> 00:17:44,900 내부 메서드는 없습니다 변수는, 당신은 볼 수있다. 373 00:17:44,900 --> 00:17:46,180 그러나 그 연상시킨다. 374 00:17:46,180 --> 00:17:48,780 그리고 우리는 다시 그 기능을 볼 수 있습니다 우리는 PHP와 자바 스크립트에 도착하면 375 00:17:48,780 --> 00:17:49,946 마지막 학기를 향해. 376 00:17:49,946 --> 00:17:53,667 하지만 지금은 그것을 생각 무엇의 힌트가 올 수 있습니다. 377 00:17:53,667 --> 00:17:54,250 좋은 질문입니다. 378 00:17:54,250 --> 00:17:56,051 379 00:17:56,051 --> 00:17:56,550 좋아. 380 00:17:56,550 --> 00:17:59,730 그래서 일종의이었다 병합 어떻게 왼쪽 것을 마지막으로. 381 00:17:59,730 --> 00:18:03,250 그리고 정렬 시원했다 병합 감각이 너무 빨리이었다, 382 00:18:03,250 --> 00:18:07,100 적어도 피상적 인 검사에 기초 우리는 거품, 말,보다, 지난 주 한 383 00:18:07,100 --> 00:18:08,710 정렬, 선택 정렬, 삽입 정렬. 384 00:18:08,710 --> 00:18:11,780 그리고 무엇도 단정했다 그냥입니다 방법을 간결하고 명확하게 385 00:18:11,780 --> 00:18:12,810 당신은 그것을 표현할 수 있습니다. 386 00:18:12,810 --> 00:18:15,840 그리고 우리는 상부 무엇인지 말 했는가 병합의 실행 시간에 바인딩 387 00:18:15,840 --> 00:18:16,340 정렬? 388 00:18:16,340 --> 00:18:17,633 389 00:18:17,633 --> 00:18:18,495 그래? 390 00:18:18,495 --> 00:18:19,360 >> 청중 : N 로그 n? 391 00:18:19,360 --> 00:18:20,819 >> SPEAKER 1 : N, 오른쪽 N 로그인합니다. n 여기서 n 로그인합니다. 392 00:18:20,819 --> 00:18:23,776 그리고 우리는 그 무엇에 돌아올거야 정말 의미 또는 어디에서 오는지, 393 00:18:23,776 --> 00:18:25,570 그러나 이것은 더 좋았다 어떤 실행 시간보다 394 00:18:25,570 --> 00:18:28,440 우리는 버블 보았다 선택과 삽입 정렬? 395 00:18:28,440 --> 00:18:30,610 그래서 N 제곱. N 제곱 이보다 더 큰 396 00:18:30,610 --> 00:18:34,650 그것은 아주 명백하지 않더라도, 해당 로그 n은 n보다 작은 알고, 397 00:18:34,650 --> 00:18:36,910 그래서 당신은 n 배를 할 경우 n보다 작은 것을, 398 00:18:36,910 --> 00:18:38,680 그것은 N 제곱 이상이어야 것입니다. 399 00:18:38,680 --> 00:18:40,130 그것은이 직관의 비트입니다. 400 00:18:40,130 --> 00:18:42,190 그러나 우리는 이것에 대한 가격을 지불했다. 401 00:18:42,190 --> 00:18:47,000 더 빨리,하지만 테마 시작하는 지난 주 등장이 상충했다. 402 00:18:47,000 --> 00:18:49,804 나는 더 나은 성능을 가지고 시간을 현명하지만, 무엇을 403 00:18:49,804 --> 00:18:52,470 나는 다른에 지출해야 않았다 손을 위해 그것을 달성하기 위해? 404 00:18:52,470 --> 00:18:53,591 >> 청중 : 메모리. 405 00:18:53,591 --> 00:18:54,465 SPEAKER 1 : 다시 말해? 406 00:18:54,465 --> 00:18:55,173 청중 : 메모리. 407 00:18:55,173 --> 00:18:57,040 SPEAKER 1 : 메모리, 또는 공간이 더 일반적. 408 00:18:57,040 --> 00:18:59,040 그리고 슈퍼 아니었다 우리 인간과 분명, 409 00:18:59,040 --> 00:19:02,240 그러나 우리의 자원 봉사자 리콜 앞으로 스테핑 및 스테핑했다 410 00:19:02,240 --> 00:19:04,780 마치 다시 배열이있다 하지만 여기에, 그리고 거기에 411 00:19:04,780 --> 00:19:07,130 여기에 두 번째 배열 그들은 사용할 수 있습니다 때문에 우리 412 00:19:07,130 --> 00:19:09,080 필요한 곳​​은 그 사람을 병합합니다. 413 00:19:09,080 --> 00:19:11,480 우리는 장소에 교환 할 수 없습니다. 414 00:19:11,480 --> 00:19:13,800 그래서 정렬 활용을 병합 더 많은 공간이 어느 415 00:19:13,800 --> 00:19:15,620 우리는 함께 필요하지 않았다 다른 알고리즘, 416 00:19:15,620 --> 00:19:17,410 하지만 거꾸로는 훨씬 더 빠른 것입니다. 417 00:19:17,410 --> 00:19:20,780 그리고 솔직히, 현실 세계의 공간에서 이러한였던 ​​시절에는 ... RAM, 하드 디스크 space-- 418 00:19:20,780 --> 00:19:25,030 상대적으로 저렴하고, 그래서이다 반드시 나쁜 일이. 419 00:19:25,030 --> 00:19:28,320 >> 자, 잠깐 살펴 좀하자 더 질서, 우리가 무슨 짓을했는지에 420 00:19:28,320 --> 00:19:30,220 왜 우리는 N 로그 n 있다고 말했다. 421 00:19:30,220 --> 00:19:33,260 그래서 여기에 8 자리 숫자이며 팔 자원 봉사자 우리는 지난 시간에했다. 422 00:19:33,260 --> 00:19:35,718 그리고 병합 먼저 정렬 할 우리에게 무엇 이었는가 말 했어요? 423 00:19:35,718 --> 00:19:37,010 424 00:19:37,010 --> 00:19:38,010 대상 : 둘의 분할. 425 00:19:38,010 --> 00:19:38,663 SPEAKER 1 : 다시 말해? 426 00:19:38,663 --> 00:19:39,650 대상 : 둘의 분할. 427 00:19:39,650 --> 00:19:40,610 SPEAKER 1 : 두에 나누기, 맞아. 428 00:19:40,610 --> 00:19:42,818 이것은 매우 연상 분열의 전화 번호부, 429 00:19:42,818 --> 00:19:44,220 더 일반적으로 정복. 430 00:19:44,220 --> 00:19:45,640 그래서 우리는 왼쪽 반 보았다. 431 00:19:45,640 --> 00:19:48,700 그리고 우리는 일종의 말했다 한 번 요소의 왼쪽 절반 432 00:19:48,700 --> 00:19:49,690 우리가 다음에 무슨 말을 했습니까? 433 00:19:49,690 --> 00:19:51,210 434 00:19:51,210 --> 00:19:54,860 왼쪽의 왼쪽 절반을 정렬 반, 이는 우리를 허용 435 00:19:54,860 --> 00:19:57,570 두 분할 한 후, 사 및이에 초점을 맞 춥니 다. 436 00:19:57,570 --> 00:20:01,280 >> 당신은 어떻게에, 지금 목록을 정렬 할 노란색, 정렬 병합하여 크기 둘의? 437 00:20:01,280 --> 00:20:02,330 438 00:20:02,330 --> 00:20:04,580 음 반으로 나누어, 왼쪽 절반을 정렬 할 수 있습니다. 439 00:20:04,580 --> 00:20:07,100 그리고이 곳 일이었다 조금 바보 잠깐을 얻었다. 440 00:20:07,100 --> 00:20:10,720 당신의입니다 목록을 정렬하는 방법 크기 하나, 여기에이 번호를 사처럼? 441 00:20:10,720 --> 00:20:12,330 442 00:20:12,330 --> 00:20:13,210 이 분류입니다. 443 00:20:13,210 --> 00:20:14,200 당신이 완료됩니다. 444 00:20:14,200 --> 00:20:17,300 >> 하지만 어떻게 당신의 목록을 정렬 할 크기는 두 번째이다 하나? 445 00:20:17,300 --> 00:20:21,640 음,하지만 지금은 무엇을 같은 일이었다 세번째와 병합 정렬의 핵심 단계? 446 00:20:21,640 --> 00:20:24,020 당신은 왼쪽을 병합했다 절반과 오른쪽 절반. 447 00:20:24,020 --> 00:20:26,580 우리가 그런 짓을하면, 우리는 보았다 네, 우리는이를 바라 보았다. 448 00:20:26,580 --> 00:20:28,750 우리는 모든 권리를 결정 분명 두 사람은 먼저 449 00:20:28,750 --> 00:20:31,840 그래서 우리는 두 가지를 넣어 그 네 다음 장소. 450 00:20:31,840 --> 00:20:35,010 그리고 지금 당신이 가지 되감기해야 이것은 특성의 일종이다 451 00:20:35,010 --> 00:20:37,570 병합 같은 알고리즘의 정렬 메모리에 되감기. 452 00:20:37,570 --> 00:20:40,240 이야기의 다음 줄은 무엇입니까? 453 00:20:40,240 --> 00:20:41,780 나는 다음에 무엇에 집중해야 하는가? 454 00:20:41,780 --> 00:20:43,110 455 00:20:43,110 --> 00:20:47,350 왼쪽의 오른쪽 절반 6 및 8이다 반. 456 00:20:47,350 --> 00:20:50,320 >> 그래서 나는 그냥이 단계별로하자 너무 많은 점을 삼기 않고. 457 00:20:50,320 --> 00:20:53,330 6 및 8, 다음 여섯입니다 정렬 팔이 정렬됩니다. 458 00:20:53,330 --> 00:20:57,190 그런 그들을 함께 병합 이제 다음 큰 단계 459 00:20:57,190 --> 00:21:00,990 물론부터 오른쪽 절반을 정렬한다 이 알고리즘의 첫 단계. 460 00:21:00,990 --> 00:21:02,870 그래서 우리는 1, 3, 일곱, 오에 초점을 맞 춥니 다. 461 00:21:02,870 --> 00:21:04,540 우리는 그 다음 왼쪽 부분에 초점을 맞 춥니 다. 462 00:21:04,540 --> 00:21:09,400 그 좌측 절반의 우측 절반 즉, 다음 1 ~ 3에 병합합니다. 463 00:21:09,400 --> 00:21:13,100 그런 다음 오른쪽 절반은 다음 절반 왼쪽 그 다음, 그것의 오른쪽 절반. 464 00:21:13,100 --> 00:21:15,985 단계가 남아있는 지금에 병합하고,? 465 00:21:15,985 --> 00:21:18,040 466 00:21:18,040 --> 00:21:22,460 큰 왼쪽 절반 큰 병합 오른쪽 절반, 그래서 하나가 내려갑니다 467 00:21:22,460 --> 00:21:27,330 다음 다음 다음 다음 둘, 셋, 넷, 오, 다음 여섯, 다음 일곱, 여덟. 468 00:21:27,330 --> 00:21:31,990 >> 그래서 지금 왜 궁극적으로 계시하고, 특히 n 및 대수 더 469 00:21:31,990 --> 00:21:35,487 일반적으로 오히려 당신을 탈출 적어도 최근의 기억에서? 470 00:21:35,487 --> 00:21:37,070 음,이 일의 높이를 알 수 있습니다. 471 00:21:37,070 --> 00:21:41,230 우리는 팔 요소가 있고, 우리 2로, 2로, 2로 나눈 다. 472 00:21:41,230 --> 00:21:44,590 그래서 기본 로그 팔의이 우리에게 세 가지를 제공합니다. 473 00:21:44,590 --> 00:21:45,640 474 00:21:45,640 --> 00:21:48,540 그리고 그 날 믿어 경우 그에 약간 헷갈리는. 475 00:21:48,540 --> 00:21:54,710 하지만, 팔의이 세 가지입니다 기본 로그인 그래서 우리는 병합의 세 층을 완료했습니다. 476 00:21:54,710 --> 00:21:57,170 그리고 우리는 합병 요소, 요소 수 477 00:21:57,170 --> 00:21:58,950 우리는 이러한 각 행에보고 했습니까? 478 00:21:58,950 --> 00:22:00,212 479 00:22:00,212 --> 00:22:01,437 N의 총, 오른쪽? 480 00:22:01,437 --> 00:22:04,020 맨 위 행을 병합 할 수 있기 때문에, 우리가 단편을했다하더라도, 481 00:22:04,020 --> 00:22:05,990 우리는 궁극적으로 한 번씩 숫자를 만졌다. 482 00:22:05,990 --> 00:22:09,054 그리고 두 번째 행, 행 크기 둘의 그 목록을 병합, 483 00:22:09,054 --> 00:22:10,470 우리는 한 번 각 요소를 터치했다. 484 00:22:10,470 --> 00:22:12,690 그리고 여기에 정말 분명 마지막 행에서, 485 00:22:12,690 --> 00:22:15,430 우리는 그 각각을 터치했다 한 번, 한 번만 요소, 486 00:22:15,430 --> 00:22:18,400 그래서 여기에 우리의 N 로그 N, 다음있다. 487 00:22:18,400 --> 00:22:21,780 >> 그리고 지금은 그냥 일을 조금 만들려면 단지 잠시 동안 공식 더 당신이 경우 488 00:22:21,780 --> 00:22:24,260 지금을 분석했다 높은 레벨에서의 정렬 489 00:22:24,260 --> 00:22:28,340 얼마나 잘, 결정하려고 당신이 표현에 대해 갈 수도 490 00:22:28,340 --> 00:22:31,780 이 알고리즘의 실행 시간 단지 그것을하지 봄으로써 491 00:22:31,780 --> 00:22:33,590 인위적인 예를 사용하여? 492 00:22:33,590 --> 00:22:36,590 글쎄, 얼마나 많은 시간을 당신은 말할 것 노란색이 걸릴 것 같은 단계, 493 00:22:36,590 --> 00:22:37,173 N <이 돌아 오면? 494 00:22:37,173 --> 00:22:38,840 495 00:22:38,840 --> 00:22:39,830 즉, 어떤 큰 O입니까? 496 00:22:39,830 --> 00:22:41,450 497 00:22:41,450 --> 00:22:44,540 그래서, 한, 그래서 한 단계를보고 있어요 아마이 단계는 경우이기 때문에 498 00:22:44,540 --> 00:22:47,110 다음 돌아가 겠지만, 이곳은 일정 시간, 오른쪽? 499 00:22:47,110 --> 00:22:49,960 그래서 우리는 O (1), 그리고 그 말 나는이 표현됩니다 방법에 대해 설명합니다. 500 00:22:49,960 --> 00:22:51,480 T, 그냥 시간을 실행합니다. 501 00:22:51,480 --> 00:22:54,150 N은, 입력의 크기 그래서 T (N), 그냥 멋진 방법 502 00:22:54,150 --> 00:22:56,330 실행을 말하는 크기 n의 시간이 주어진 입력 503 00:22:56,330 --> 00:23:00,220 순서가 될 것입니다 일정 시간의, O (1). 504 00:23:00,220 --> 00:23:01,970 >> 그러나, 그렇지 않으면,이에 대해 무엇을? 505 00:23:01,970 --> 00:23:05,660 당신을 표현하는 방법 이 노란색 라인의 실행 시간? 506 00:23:05,660 --> 00:23:06,250 어떤 T? 507 00:23:06,250 --> 00:23:09,440 508 00:23:09,440 --> 00:23:12,665 당신은 가지 여기에 속임수 수 주기적으로 내 질문에 대답. 509 00:23:12,665 --> 00:23:14,770 510 00:23:14,770 --> 00:23:17,900 그래서 실행 시간에 있다면 우리가 말하는 일반 T (N)입니다. 511 00:23:17,900 --> 00:23:18,950 512 00:23:18,950 --> 00:23:22,490 그리고 지금 당신이 가지 여기 펀트하고 있고 , 음, 그냥 왼쪽 절반을 정렬, 말 513 00:23:22,490 --> 00:23:23,920 다음 오른쪽 절반을 정렬 할 수 있습니다. 514 00:23:23,920 --> 00:23:27,520 우리는 상징적으로 표현하는 방법 이 노란색 라인의 실행 시간은? 515 00:23:27,520 --> 00:23:28,020 어떤 T? 516 00:23:28,020 --> 00:23:29,360 입력의 크기는 무엇입니까? 517 00:23:29,360 --> 00:23:30,510 518 00:23:30,510 --> 00:23:31,057 이 이상 없음. 519 00:23:31,057 --> 00:23:32,140 왜 난 그런 말을하지? 520 00:23:32,140 --> 00:23:36,449 그리고 다음이 또 다른 T입니다 (N / 2) 다음 다시, 나는 두 개의 정렬 반쪽을 병합하는 경우, 521 00:23:36,449 --> 00:23:38,615 얼마나 많은 요소 내가가는 총 터치해야 하는가? 522 00:23:38,615 --> 00:23:39,780 523 00:23:39,780 --> 00:23:40,320 명. 524 00:23:40,320 --> 00:23:42,790 그래서 나는이 표현할 수 그냥 가지 멋진 될 525 00:23:42,790 --> 00:23:44,430 일반적인 실행 시간 등. 526 00:23:44,430 --> 00:23:51,140 T (n)은, T (N / 2)의 단지 실행 시간 플러스 T (N / 2)의 절반과 오른쪽 절반 좌측 527 00:23:51,140 --> 00:23:55,360 플러스 아마 N 단계입니다 O (N), 하지만 어쩌면, 나는 두 손가락을 사용하고있는 경우, 528 00:23:55,360 --> 00:23:57,960 그것은 많은 두 배입니다 단계하지만 선형이다. 529 00:23:57,960 --> 00:24:00,440 그것은 단계 몇개 야 즉, N의 팩터이다 530 00:24:00,440 --> 00:24:02,270 그래서 우리는이 같은이 표현 할 수 있습니다. 531 00:24:02,270 --> 00:24:05,550 그리고 이것은 우리가에 펀트 볼 수있는 곳 지금 다시 우리의 고등학교 수학 교과서 532 00:24:05,550 --> 00:24:10,290 우리는 궁극적으로 재발하는 것이 야 끝은이 동등 해, n 번 여기서 n 로그인 533 00:24:10,290 --> 00:24:12,530 실제로 아웃 할 경우 수학 형식적. 534 00:24:12,530 --> 00:24:13,950 >> 그래서 두 관점을합니다. 535 00:24:13,950 --> 00:24:17,500 함께 한 수치 대표적인 예를 하드 코딩 536 00:24:17,500 --> 00:24:21,140 8 자리 숫자, 그리고 이상을 사용 우리가 거​​기에 도착하는 방법의 일반적인 모습입니다. 537 00:24:21,140 --> 00:24:25,670 그러나 여기서 정말 흥미로운 다시, 자전거의이 개념이다. 538 00:24:25,670 --> 00:24:26,900 나는 루프를 사용하지 않는거야. 539 00:24:26,900 --> 00:24:29,860 나는 가지 정의하고있어 자체의 측면에서 뭔가 540 00:24:29,860 --> 00:24:31,950 뿐만 아니라이와 수학 함수, 541 00:24:31,950 --> 00:24:34,860 뿐만 아니라, 이러한 의사 코드의 관점에서. 542 00:24:34,860 --> 00:24:38,260 이 의사 코드는 재귀 그 라인의 두에 543 00:24:38,260 --> 00:24:42,310 본질적으로 말하고있다하면 이동합니다 작은 해결하기 위해 자체를 사용 544 00:24:42,310 --> 00:24:45,400 작은 크기의 문제, 다시 다시 545 00:24:45,400 --> 00:24:48,820 다시 때까지 우리의 큰칼을 소위 기본 케이스에 이르기까지. 546 00:24:48,820 --> 00:24:52,810 >> 그래서 실제로 더 설득력을 그려 보자 테이크 아웃이에서 다음과 같이. 547 00:24:52,810 --> 00:24:58,420 날의 gedit로 가서 보자 오늘의 소스 코드의 일부를 보면, 548 00:24:58,420 --> 00:24:59,930 이 예 여기에 특히. 549 00:24:59,930 --> 00:25:03,709 분명히 추가 시그마 공, 숫자 N을 통해 한. 550 00:25:03,709 --> 00:25:05,750 그래서 무슨 일이 익숙한 보자 여기에 익숙하지. 551 00:25:05,750 --> 00:25:08,690 처음에 우리는 몇 가지있다 포함, 그래서 아무것도 새로운있다. 552 00:25:08,690 --> 00:25:09,190 프로토 타입입니다. 553 00:25:09,190 --> 00:25:11,370 나는에 약간 헷갈리는 해요 이 몇 일 후, 554 00:25:11,370 --> 00:25:13,790 그러나 우리는 무엇을 말 했는가 함수의 프로토 타입은? 555 00:25:13,790 --> 00:25:15,099 556 00:25:15,099 --> 00:25:16,015 청중 : [들리지]. 557 00:25:16,015 --> 00:25:16,905 SPEAKER 1 : 무엇입니까? 558 00:25:16,905 --> 00:25:17,800 청중 : 우리는 그것을 발표합니다. 559 00:25:17,800 --> 00:25:18,883 SPEAKER 1 : 우리는 그것을 발표합니다. 560 00:25:18,883 --> 00:25:22,290 그래서 당신은, 헤이, 연타를 가르치는 실제로 아직이를 구현하지, 561 00:25:22,290 --> 00:25:25,740 하지만 어딘가에이 파일에, 아마도, 함수가 무엇을 호출 할 것입니다? 562 00:25:25,740 --> 00:25:26,930 563 00:25:26,930 --> 00:25:27,540 시그마. 564 00:25:27,540 --> 00:25:30,540 그리고 이것은 단지 약속입니다 그것은 다음과 같을 것. 565 00:25:30,540 --> 00:25:33,720 이 같은 정수를 취할 것 input--와 좀 더 명시 적으로 할 수 있습니다 566 00:25:33,720 --> 00:25:36,570 그리고 정수 n을 - 그리고 그것의 말 int를 반환하는 것, 567 00:25:36,570 --> 00:25:39,900 하지만 세미콜론 수단, mm, 나는 주위에 얻을 것이다 잠시 후에이 작업을 구현합니다. 568 00:25:39,900 --> 00:25:40,989 다시 말하지만, 연타은 바보입니다. 569 00:25:40,989 --> 00:25:43,280 그것은 단지 무엇을 아는 것 당신은, 위에서 아래를 알려주는 570 00:25:43,280 --> 00:25:45,765 그래서 우리는 적어도 줄 필요 그것은 무엇의 힌트가 올 수 있습니다. 571 00:25:45,765 --> 00:25:47,330 >> 이제 여기에 주요 살펴 보자. 572 00:25:47,330 --> 00:25:50,040 여기서 아래로 스크롤하자 하고있는 주요 기능을 참조하십시오. 573 00:25:50,040 --> 00:25:53,780 이 이름은 함수의 길이 아니며, 사실 여기 구조는 잘 알고있다. 574 00:25:53,780 --> 00:25:57,590 나는 그 변수 n을 선언하고, 나는 또 다시 사용자를 훼방 575 00:25:57,590 --> 00:26:01,880 의 getInt를 사용하여 양의 정수를 들면 이 루프 밖으로 만 종료 576 00:26:01,880 --> 00:26:03,280 일단 사용자가 준수했다. 577 00:26:03,280 --> 00:26:05,670 동안 작업을 수행, 우리는에 사용했습니다 그 방법에서 사용자를 괴롭힌다. 578 00:26:05,670 --> 00:26:06,670 지금 이것은 재미있다. 579 00:26:06,670 --> 00:26:08,510 나는라는 INT 선언 "대답을." 580 00:26:08,510 --> 00:26:11,420 나는 그것을 반환 값 지정 라는 함수의 "시그마." 581 00:26:11,420 --> 00:26:15,200 그 아직 무엇 모르겠지만, 나는 조금 전에 그것을 선언 기억한다. 582 00:26:15,200 --> 00:26:18,310 그리고 제가 전달 해요 값은 사용자가 타이프, N 것을 583 00:26:18,310 --> 00:26:20,420 그리고, 나는 그 답을보고합니다. 584 00:26:20,420 --> 00:26:22,260 음의 다시 스크롤 할 수 단지 잠시. 585 00:26:22,260 --> 00:26:28,620 이제이 디렉토리로 앞서 가자, 확인 시그마 공, 실제로이 프로그램을 실행 586 00:26:28,620 --> 00:26:30,490 무슨 일이 일어 나는지 참조하십시오. 587 00:26:30,490 --> 00:26:35,930 내가 가서 실행한다면 이 프로그램 ./sigma-0, 588 00:26:35,930 --> 00:26:40,139 나는 긍정적를 입력 이 같은 정수, 시그마, 589 00:26:40,139 --> 00:26:43,180 그리스 기호에서 알 수 있듯이, 단지입니다 모든 번호를 추가하는 것 590 00:26:43,180 --> 00:26:44,320 이 최대에 제로. 591 00:26:44,320 --> 00:26:46,560 그래서 영 플러스 1 플러스 2. 592 00:26:46,560 --> 00:26:48,830 그래서이 희망을 나에게 세를 제공해야합니다. 593 00:26:48,830 --> 00:26:49,750 즉, 일의 전부입니다. 594 00:26:49,750 --> 00:26:52,690 그리고 마찬가지로, 경우에 나는 다시 실행 나는, 그것을 3 번을 부여 595 00:26:52,690 --> 00:26:56,721 즉, 그래서 즉, 3 플러스 2입니다 5 더하기 1은 나에게 6을 주어야한다. 596 00:26:56,721 --> 00:26:59,470 그리고 난 정말 미친 얻을 다음 경우 더 큰 숫자를 입력하면됩니다 597 00:26:59,470 --> 00:27:01,290 그것은 나에게 제공해야 더 크고 더 큰 금액. 598 00:27:01,290 --> 00:27:02,250 그래서 그게 다야. 599 00:27:02,250 --> 00:27:04,010 >> 그래서 시그마처럼 보여? 600 00:27:04,010 --> 00:27:05,430 음, 꽤 간단합니다. 601 00:27:05,430 --> 00:27:08,940 우리가 구현하는 방법이다 지난 몇 주에이. 602 00:27:08,940 --> 00:27:11,120 "INT"는 반환 형식이 될 것입니다. 603 00:27:11,120 --> 00:27:14,330 시그마 이름이며, 소요 대신 N의 변수 m. 604 00:27:14,330 --> 00:27:15,940 나는 위에 해당을 변경할 수 있습니다. 605 00:27:15,940 --> 00:27:17,340 그런 다음이 그냥 전성 검사이다. 606 00:27:17,340 --> 00:27:18,430 607 00:27:18,430 --> 00:27:19,950 우리는 순간에 이유를 볼 수 있습니다. 608 00:27:19,950 --> 00:27:24,220 지금은 또 다른 변수를 선언, 합은 0으로 초기화한다. 609 00:27:24,220 --> 00:27:28,140 그럼 루프를 들어이가 명백하게 명확성을 위해, 반복, 610 00:27:28,140 --> 00:27:33,810 난 = 1에서 최대 =의 m에있는이다 어떤 사용자의 입력 한 다음 I 611 00:27:33,810 --> 00:27:35,690 이 같은 금액을 증가. 612 00:27:35,690 --> 00:27:37,360 그리고 합계를 반환합니다. 613 00:27:37,360 --> 00:27:38,440 >> 그래서 몇 가지 질문. 614 00:27:38,440 --> 00:27:42,370 하나는,이 나의 의견에 주장 무한 루프의 위험을 방지 할 수 있습니다. 615 00:27:42,370 --> 00:27:45,620 왜 음수를 전달 것 잠재적으로 무한 루프를 유도? 616 00:27:45,620 --> 00:27:49,396 617 00:27:49,396 --> 00:27:51,290 >> 청중 : 당신은 m에 도달하지 못할 것이다. 618 00:27:51,290 --> 00:27:52,880 >> SPEAKER 1 : m에 도달하지 마십시오. 619 00:27:52,880 --> 00:27:55,880 그러나 m는 전달, 그래서하자된다 간단한 예를 고려하십시오. 620 00:27:55,880 --> 00:27:58,510 m는에 의해 전달되는 경우 음의 하나로서 사용자입니다. 621 00:27:58,510 --> 00:28:00,059 에 관계없이 주의. 622 00:28:00,059 --> 00:28:01,850 주요으로부터 우리를 보호 이도, 그래서 난 그냥 해요 623 00:28:01,850 --> 00:28:04,680 정말 항문되고 시그마는 또한 확인하십시오 624 00:28:04,680 --> 00:28:06,540 그 입력은 음수가 될 수 없습니다. 625 00:28:06,540 --> 00:28:10,130 m이 음수 인 경우에 따라서, 음 하나 같은. 626 00:28:10,130 --> 00:28:11,930 무슨 일이 일어날까요? 627 00:28:11,930 --> 00:28:14,390 글쎄, 난에가는 일에 초기화 얻을, 628 00:28:14,390 --> 00:28:19,060 그리고 제가 될 것입니다 m보다 작거나 같다? 629 00:28:19,060 --> 00:28:24,130 630 00:28:24,130 --> 00:28:24,765 >> 대기. 631 00:28:24,765 --> 00:28:26,930 632 00:28:26,930 --> 00:28:29,370 즉,의를하지 말자 대요 의이 이야기를 아무것도 없어요 수 있습니다. 633 00:28:29,370 --> 00:28:32,780 나는 때문에, 그 질문을하지 않았다 내가 암시하고있는 위험 634 00:28:32,780 --> 00:28:38,360 내가이기 때문에 발생하지 않을 항상 큰 than-- 확인 될 것이다, 635 00:28:38,360 --> 00:28:39,871 나는 그 질문을 철회. 636 00:28:39,871 --> 00:28:40,370 확인을 클릭합니다. 637 00:28:40,370 --> 00:28:42,030 여기서 만이 부분에 초점을 보자. 638 00:28:42,030 --> 00:28:44,210 639 00:28:44,210 --> 00:28:48,830 이유는 몇 가지를 선언 않았다 루프의 외부? 640 00:28:48,830 --> 00:28:52,010 선 나는했습니다 49에 공지 루프 내부에 난 선언, 641 00:28:52,010 --> 00:28:54,950 하지만 온라인 48 나는했습니다 일부 외부를 선언했다. 642 00:28:54,950 --> 00:28:55,695 그래. 643 00:28:55,695 --> 00:28:56,611 청중 : [들리지]. 644 00:28:56,611 --> 00:28:58,734 645 00:28:58,734 --> 00:28:59,400 SPEAKER 1 : 물론. 646 00:28:59,400 --> 00:29:03,360 그래서 가장 먼저 난 분명하지 않습니다 선언하고 합을 초기화 할 647 00:29:03,360 --> 00:29:06,130 제로 내부에 모든 반복에 반복, 648 00:29:06,130 --> 00:29:09,370 이 명확하게 패배 때문에 숫자를 합산의 목적. 649 00:29:09,370 --> 00:29:11,770 나는 계속 변경되는 것 다시 제로로 값입니다. 650 00:29:11,770 --> 00:29:17,992 또한, 어떤 다른 더 비밀이야 같은 디자인 결정에 대한 이유? 651 00:29:17,992 --> 00:29:18,954 그래. 652 00:29:18,954 --> 00:29:20,279 >> 청중 : [들리지]. 653 00:29:20,279 --> 00:29:21,070 SPEAKER 1 : 그렇지. 654 00:29:21,070 --> 00:29:24,060 밖에서 액세스 할 너무 무엇을 줄 루프? 655 00:29:24,060 --> 00:29:25,390 656 00:29:25,390 --> 00:29:26,400 53. 657 00:29:26,400 --> 00:29:29,910 그리고 엄지 손가락의 우리의 규정에 근거 강의 몇 년전, 658 00:29:29,910 --> 00:29:33,680 변수에, 정말, 범위 아르 를 포함 중괄호. 659 00:29:33,680 --> 00:29:38,190 나는 내부의 합을 선언하지 않는 경우에 따라서 이러한 외부 중괄호, 660 00:29:38,190 --> 00:29:40,250 I 라인 53에서 사용할 수 없습니다. 661 00:29:40,250 --> 00:29:43,160 내가 선언 된 경우, 다른 방법을 넣어 여기에서, 또는 심지어 내의 합 662 00:29:43,160 --> 00:29:45,410 루프, 나는 53에 액세스 할 수 없습니다. 663 00:29:45,410 --> 00:29:47,150 변수는 효율적으로 사라질 것이다. 664 00:29:47,150 --> 00:29:48,579 그래서 거기에 몇 가지 이유. 665 00:29:48,579 --> 00:29:50,370 하지만 지금은 그냥 돌아가요 무슨 일이 일어 나는지 참조하십시오. 666 00:29:50,370 --> 00:29:51,730 그래서 시그마 불려갑니다. 667 00:29:51,730 --> 00:29:55,640 그것은 1 더하기 2, 1 더하기 2 가산 및 3은 다음, 값을 반환 668 00:29:55,640 --> 00:29:59,660 대답에 저장을하고, 여기에 printf의 나는 화면에보고 있어요 이유이다. 669 00:29:59,660 --> 00:30:03,079 그래서 이것은 우리가 반복적 인 전화 할게 무엇인가 접근 방법, 위치 반복 단지 670 00:30:03,079 --> 00:30:03,870 루프를 사용하는 것을 의미한다. 671 00:30:03,870 --> 00:30:06,900 루프, while 루프, 마 잠시 동안 루프, 그냥 다시 일을하고 672 00:30:06,900 --> 00:30:08,380 다시 다시. 673 00:30:08,380 --> 00:30:13,505 >> 그러나 시그마는 깔끔한 기능에 가지입니다 나는 다르게 구현할 수 있었다. 674 00:30:13,505 --> 00:30:14,620 675 00:30:14,620 --> 00:30:19,120 이것에 대해 무엇을, 어떤 그냥 가지 멋진합니다 676 00:30:19,120 --> 00:30:21,880 내가 정말 제거하자 주의 산만의 많은 677 00:30:21,880 --> 00:30:24,380 이 기능 때문에 정말 매우 간단합니다. 678 00:30:24,380 --> 00:30:27,780 하자 큰칼 아래로 단지 네 개의 핵심 라인 679 00:30:27,780 --> 00:30:30,410 및 제거 모든 의견과 중괄호. 680 00:30:30,410 --> 00:30:34,334 이 압도적 가지입니다 대안 구현입니다. 681 00:30:34,334 --> 00:30:37,250 좋아, 어쩌면 짜릿한하지, 하지만 섹시, 모든 권리의 종류,이다 682 00:30:37,250 --> 00:30:39,920 훨씬 더 간결이 보는. 683 00:30:39,920 --> 00:30:43,120 코드의 단지 4 라인, 내가 처음이 전성 검사를해야합니다. 684 00:30:43,120 --> 00:30:45,732 m이보다 작거나 같으면 제로는 시그마는 이해되지 않는다. 685 00:30:45,732 --> 00:30:48,190 그것은에서만해야하는데 양수에 대한이 경우, 686 00:30:48,190 --> 00:30:50,340 그래서 난 그냥 갈거야 임의로 0을 반환 687 00:30:50,340 --> 00:30:53,210 우리는 적어도 갖도록 몇 가지 기본 케이스 소위. 688 00:30:53,210 --> 00:30:54,430 >> 그러나 여기 아름다움입니다. 689 00:30:54,430 --> 00:30:59,930 이 아이디어를 추가의 전부, 1부터 n까지 번호, 또는 m이 경우, 690 00:30:59,930 --> 00:31:02,630 벅을 전달 가지로 수행 할 수 있습니다. 691 00:31:02,630 --> 00:31:04,947 음, m 1의 합은 무엇입니까? 692 00:31:04,947 --> 00:31:05,780 글쎄, 당신이 뭘 알아? 693 00:31:05,780 --> 00:31:11,949 이는 m의 합과 동일하다 플러스 m에서 1을 뺀 1의 합. 694 00:31:11,949 --> 00:31:12,740 그럼 당신이 뭘 알아? 695 00:31:12,740 --> 00:31:13,940 m 마이너스 1의 시그마는 무엇입니까? 696 00:31:13,940 --> 00:31:17,860 음, 경우에 당신은 가지이를 따라 논리적으로, 이는 m에 1을 뺀 것과 동일하다 697 00:31:17,860 --> 00:31:21,415 플러스 마이너스 m 2의 시그마. 698 00:31:21,415 --> 00:31:22,480 699 00:31:22,480 --> 00:31:26,012 그래서 당신은 가지 그냥 ... 수 당신이 있다면이 같은입니다 700 00:31:26,012 --> 00:31:28,220 친구를 성가 시게하려고 그들은 당신에게 질문을, 701 00:31:28,220 --> 00:31:31,344 당신은 가지 질문과 응답 당신은 가지 벅을 통과 유지할 수 있습니다. 702 00:31:31,344 --> 00:31:34,560 그러나 중요한 것은 당신이 계속하는 경우 것입니다 질문은 작아 만드는 703 00:31:34,560 --> 00:31:36,910 작은, 당신은있어 시그마가 무엇을 요구하지 704 00:31:36,910 --> 00:31:39,116 N의의 시그마 무엇 N, N의 시그마는 무엇인가? 705 00:31:39,116 --> 00:31:40,990 당신은 무슨 일이있어 요구하고 N의 시그마, 무슨 시그마 706 00:31:40,990 --> 00:31:42,839 n 개의 마이너스 1, n은 마이너스 2의 시그마는 무엇인가? 707 00:31:42,839 --> 00:31:44,880 결국 질문 어떻게 될 것입니까? 708 00:31:44,880 --> 00:31:50,250 하나의 시그마는 무엇인가 제로, 매우 작은 값으로, 709 00:31:50,250 --> 00:31:52,220 그리고 즉시로 즉, 당신의 친구를 얻을 710 00:31:52,220 --> 00:31:54,350 당신은 질문하지 않을 수 있습니다 다시 같은 질문 711 00:31:54,350 --> 00:31:55,975 당신은 오 제로이야 말할 것입니다. 712 00:31:55,975 --> 00:31:58,490 우리는 이런 종류의 재생을 마쳤 바보 순환 게임. 713 00:31:58,490 --> 00:32:02,950 >> 그래서 재귀 프로그래밍하는 작업입니다 함수 자체를 호출. 714 00:32:02,950 --> 00:32:06,630 컴파일하고 실행하면이 프로그램은이다 정확히 같은 방식으로 동작하는 것, 715 00:32:06,630 --> 00:32:09,620 그러나 키 것은 그 안에 시그마이라는 함수, 716 00:32:09,620 --> 00:32:13,150 코드에있어서의 선이있다 우리는 우리 자신을 부르고 있어요 717 00:32:13,150 --> 00:32:14,980 이는 일반적으로 나쁜 것입니다. 718 00:32:14,980 --> 00:32:21,160 예를 들어, 어떤 첫째 나는 경우 이 컴파일, 그래서 sigma--을 719 00:32:21,160 --> 00:32:22,710 시그마 1 ./sigma-1을합니다. 720 00:32:22,710 --> 00:32:25,050 721 00:32:25,050 --> 00:32:27,690 양의 정수, 제발, 50 1275. 722 00:32:27,690 --> 00:32:30,810 그래서 기능에 보인다 정확한 테스트에 기초하여, 될. 723 00:32:30,810 --> 00:32:34,917 그러나 나는 조금 위험한 것을 얻을 경우 소위 기본 케이스를 삭제 724 00:32:34,917 --> 00:32:37,750 그냥 잘 난 그냥 만들고있어, 말 그것보다이 더 복잡합니다. 725 00:32:37,750 --> 00:32:42,450 그냥 시그마를 계산하자 m을 복용 한 후 추가하여 726 00:32:42,450 --> 00:32:44,564 m 하나를 뺀의 시그마? 727 00:32:44,564 --> 00:32:45,980 그럼, 여기에 일어날? 728 00:32:45,980 --> 00:32:47,140 의이 축소 보자. 729 00:32:47,140 --> 00:32:52,920 의 프로그램을 다시 컴파일하자 , 저장 프로그램을 다시 컴파일 730 00:32:52,920 --> 00:33:00,450 다음 준비 ./sigma-1은 확대 , (50) 양의 정수를 해주세요. 731 00:33:00,450 --> 00:33:02,180 732 00:33:02,180 --> 00:33:04,430 얼마나 많은 당신은 기꺼이 그보고에 자백하는? 733 00:33:04,430 --> 00:33:04,950 >> 확인을 클릭합니다. 734 00:33:04,950 --> 00:33:06,690 그래서이에 일어날 수 여러 가지 이유로, 735 00:33:06,690 --> 00:33:09,148 솔직히 이번 주에 우리는있어 당신이 그 (것)들의 더 ​​많은 것을 줄에 대한 정보가 포함되어 있습니다. 736 00:33:09,148 --> 00:33:11,780 그러나이 경우, 시도 거꾸로 추론하기 737 00:33:11,780 --> 00:33:14,430 여기에 무슨 일이 있었 겠는가? 738 00:33:14,430 --> 00:33:17,400 분할의 오류, 우리는 마지막으로 말했다 시간은 메모리의 세그먼트를 의미한다. 739 00:33:17,400 --> 00:33:18,690 뭔가 안 좋은 일이 일어났다. 740 00:33:18,690 --> 00:33:21,550 그러나 무슨 일이에요 기계적으로 비스듬히 갔다 그 741 00:33:21,550 --> 00:33:25,000 이 곳에서 내 제거 그 소위 기본 사건의 742 00:33:25,000 --> 00:33:26,870 어디 하드 코딩 된 값을 반환? 743 00:33:26,870 --> 00:33:28,970 744 00:33:28,970 --> 00:33:30,460 당신은 무엇을 잘못 생각하십니까? 745 00:33:30,460 --> 00:33:31,219 그래. 746 00:33:31,219 --> 00:33:32,135 >> 청중 : [들리지]. 747 00:33:32,135 --> 00:33:36,387 748 00:33:36,387 --> 00:33:36,970 SPEAKER 1 : 아. 749 00:33:36,970 --> 00:33:37,550 좋은 질문입니다. 750 00:33:37,550 --> 00:33:39,508 숫자의 크기 그래서 나는 합산 것을 751 00:33:39,508 --> 00:33:41,920 그것을 초과 정도로 큰있어 메모리 공간의 크기. 752 00:33:41,920 --> 00:33:44,640 좋은 생각,하지만 근본적으로 충돌이 발생할 것. 753 00:33:44,640 --> 00:33:48,230 즉, 정수 오버 플로우가 발생할 수 있습니다, 비트는 뒤집 곳 754 00:33:48,230 --> 00:33:51,760 그리고, 우리는 정말 큰 실수 음수 등에 번호, 755 00:33:51,760 --> 00:33:53,260 하지만 그 자체가 충돌을 일으킬하지 않습니다. 756 00:33:53,260 --> 00:33:55,509 때문에 끝에 일 INT는 여전히 32 비트입니다. 757 00:33:55,509 --> 00:33:57,640 당신은 안 갈거야 실수로 33 비트를 훔치는. 758 00:33:57,640 --> 00:33:58,431 하지만 좋은 생각. 759 00:33:58,431 --> 00:33:58,984 그래. 760 00:33:58,984 --> 00:33:59,900 >> 청중 : [들리지]. 761 00:33:59,900 --> 00:34:00,551 762 00:34:00,551 --> 00:34:02,300 SPEAKER 1 : 방법 결코 실행되지 중지, 763 00:34:02,300 --> 00:34:06,658 실제로 그것은 다시 자신을 호출 다시하고 다시하고 다시 764 00:34:06,658 --> 00:34:08,449 다시, 그리고 없음 지금까지 이러한 기능 765 00:34:08,449 --> 00:34:13,310 자신의 유일한 선 때문에 완료 코드는 또 다시 스스로가 호출 766 00:34:13,310 --> 00:34:14,219 다시. 767 00:34:14,219 --> 00:34:16,080 그리고 무슨 일이 정말로 우리를 이곳에서, 그리고 지금 768 00:34:16,080 --> 00:34:18,100 가지 그림으로이를 그릴 수 있습니다. 769 00:34:18,100 --> 00:34:20,899 나에 가서 보자 단지 잠시 동안 그림. 770 00:34:20,899 --> 00:34:22,940 이 것이 사진입니다 결국 살 것 771 00:34:22,940 --> 00:34:26,336 자세한 세부 사항에서, 무슨 일이 일어나고 있는지의 컴퓨터의 메모리 내부. 772 00:34:26,336 --> 00:34:28,460 그리고 그에 밝혀 이 사진의 아래쪽 773 00:34:28,460 --> 00:34:29,709 스택 뭔가라는입니다. 774 00:34:29,709 --> 00:34:31,920 이 덩어리입니다 메모리, RAM의 덩어리 775 00:34:31,920 --> 00:34:33,920 그건 그냥 언제든지 사용되는 함수가 호출됩니다. 776 00:34:33,920 --> 00:34:36,239 언제든지 당신, 프로그래머, 함수를 호출 777 00:34:36,239 --> 00:34:38,860 운영 체제, 추천 맥 OS, Windows 또는 리눅스, 778 00:34:38,860 --> 00:34:41,920 잡고 바이트의 무리, 어쩌면 몇 킬로바이트, 아마도 몇 메가 바이트 779 00:34:41,920 --> 00:34:44,590 메모리,이를 손 당신하고는 있습니다 780 00:34:44,590 --> 00:34:47,650 당신은 사용하여 기능을 실행 어떤 변수가 필요합니다. 781 00:34:47,650 --> 00:34:50,699 그리고 그 다음에 또 다른 호출하는 경우 기능과 다른 기능을 782 00:34:50,699 --> 00:34:53,590 당신은 메모리의 다른 슬라이스를 얻을 메모리의 또 다른 조각. 783 00:34:53,590 --> 00:34:57,090 >> 그리고 실제로 이러한 녹색 트레이 경우 아넨 버그에서 해당 메모리를 나타냅니다 784 00:34:57,090 --> 00:34:59,870 여기에 첫째 무슨 일이 일어날 시간은 당신이 함수 시그마를 호출합니다. 785 00:34:59,870 --> 00:35:04,510 그것은이 같은 트레이를 넣어처럼 처음에 빈 스택 무엇에. 786 00:35:04,510 --> 00:35:07,142 그러나 경우 용지함 말하자면, 자신을 호출, 787 00:35:07,142 --> 00:35:08,850 다른 인스턴스를 호출 시그마, 그건 788 00:35:08,850 --> 00:35:11,640 운영 체제를 묻는 등 우, 조금 더 많은 메모리를 필요로 789 00:35:11,640 --> 00:35:12,520 이리 줘. 790 00:35:12,520 --> 00:35:14,840 그리고, 그것은 정상에에 쌓여됩니다. 791 00:35:14,840 --> 00:35:18,030 그러나 여기에서 중요한 것은 때문이다 첫번째 트레이, 아직 거기 792 00:35:18,030 --> 00:35:20,620 그는이 두 번째 트레이를 호출하기 때문이다. 793 00:35:20,620 --> 00:35:23,500 이제 한편, 시그마는 시그마 전화, 즉, 더 많은 메모리를 요구 같아요. 794 00:35:23,500 --> 00:35:25,830 여기에 쌓여 가져옵니다. 795 00:35:25,830 --> 00:35:29,350 시그마는 다른 사람의, 시그마를 호출 여기에 쌓여됩니다 트레이. 796 00:35:29,350 --> 00:35:32,942 그리고 당신은이 일을 계속하는 경우, 결국, 가지 비주얼 매핑 797 00:35:32,942 --> 00:35:35,525 그 차트, 무슨 일이야 트레이의 스택 일이? 798 00:35:35,525 --> 00:35:37,480 799 00:35:37,480 --> 00:35:41,160 이 양을 초과하려고 메모리를 컴퓨터가 있습니다. 800 00:35:41,160 --> 00:35:45,790 그리고 바로이 녹색 트레이로 수평선을 초과 801 00:35:45,790 --> 00:35:49,410 스택 위 그 단어 힙 위 그것은 우리가 미래에 다시 올 것이다, 802 00:35:49,410 --> 00:35:50,410 그건 나쁜 일이다. 803 00:35:50,410 --> 00:35:52,810 힙은 다른 메모리의 세그먼트, 804 00:35:52,810 --> 00:35:55,190 당신이 허락한다면 트레이 더미 더미에 805 00:35:55,190 --> 00:35:57,800 당신은 초과거야 메모리의 자신의 세그먼트, 806 00:35:57,800 --> 00:36:00,420 및 프로그램은 실제로 충돌 할 것이다. 807 00:36:00,420 --> 00:36:02,930 >> 이제 옆으로,이 아이디어로 재귀 따라서 808 00:36:02,930 --> 00:36:06,500 분명히 문제가 발생할 수 있지만, 그것이 반드시 나쁜 것은 아니다. 809 00:36:06,500 --> 00:36:08,840 고려 때문에, 후 모든 어떻게 .. 아마 810 00:36:08,840 --> 00:36:11,700 이것은 몇 가지가 익숙해 소요 --how하는 우아한 방법이나 간단한 811 00:36:11,700 --> 00:36:14,890 시그마의 구현이었다. 812 00:36:14,890 --> 00:36:17,440 그리고 우리는 사용하지 않을거야 CS50의 모든 훨씬 재귀, 813 00:36:17,440 --> 00:36:20,780 하지만, CS51, 그리고 정말 모든 클래스 는 데이터 구조를 조작 할 곳 814 00:36:20,780 --> 00:36:23,640 나무, 또는 가족 나무처럼, 즉 어떤 계층이 815 00:36:23,640 --> 00:36:26,000 그것은 매우 유용합니다, 슈퍼입니다. 816 00:36:26,000 --> 00:36:29,750 자, 옆으로, 그래서 당신이 컴퓨터 과학자 지망생 등 817 00:36:29,750 --> 00:36:33,180 구글의 일부에 익숙한 당신이 구글에 가면 내부의 농담, 818 00:36:33,180 --> 00:36:36,345 당신은 무엇인지 찾아 의 정의는 말, 재귀, 입력합니다. 819 00:36:36,345 --> 00:36:40,208 820 00:36:40,208 --> 00:36:41,110 어 - 허. 821 00:36:41,110 --> 00:36:42,670 옆으로, 나는 몇 가지를 뽑아. 822 00:36:42,670 --> 00:36:45,470 이 10 분 같았다 꾸물 거리는 아침. 823 00:36:45,470 --> 00:36:52,890 당신이 만약 구글 "찌그러진"통보 당신의 머리를 기울여서 slightly-- 824 00:36:52,890 --> 00:36:55,120 다음이 하나는 아마도 대부분의 모든 극악한 825 00:36:55,120 --> 00:36:57,286 누군가가 같이 보낸 이후 이를 구현하는 자신의 일 826 00:36:57,286 --> 00:36:59,880 몇 년이 어서, 갑자기. 827 00:36:59,880 --> 00:37:01,140 828 00:37:01,140 --> 00:37:04,540 아, 잠깐 ... 그 버그입니다. 829 00:37:04,540 --> 00:37:08,410 830 00:37:08,410 --> 00:37:11,410 >> 그래서 중 하나에서 실행 세계에서 가장 큰 웹 사이트 831 00:37:11,410 --> 00:37:13,510 이 멍청한 부활절 달걀입니다. 832 00:37:13,510 --> 00:37:16,690 아마도 그들은 소비 줄의 코드 사소 수 833 00:37:16,690 --> 00:37:19,280 단지 우리가 가질 수 있도록 그런 작은 재미 것들입니다. 834 00:37:19,280 --> 00:37:22,140 하지만 적어도 지금은 얻을 그 안에 농담의 일부. 835 00:37:22,140 --> 00:37:28,330 >> 이제 몇 가지를 살펴 보자 흰색, 우리는 늦게 말했어있다 836 00:37:28,330 --> 00:37:30,707 다시 벗겨 시작 일부 층 기술적으로 837 00:37:30,707 --> 00:37:32,790 당신이 정말 이해가 너무 무슨 일 됐어요 838 00:37:32,790 --> 00:37:34,860 당신은 이해할 수 위협의 일부, 839 00:37:34,860 --> 00:37:38,060 Shellshock처럼, 그 이제되기 시작했다 840 00:37:38,060 --> 00:37:41,110 모든 사람의의 선두에 주의, 적어도 미디어. 841 00:37:41,110 --> 00:37:45,810 그래서 여기에 아주 간단한 기능입니다 즉, 무효, 아무 것도 반환하지 않습니다. 842 00:37:45,810 --> 00:37:46,790 그것의 이름은 스왑입니다. 843 00:37:46,790 --> 00:37:50,880 그것은 두 개의 변수에 걸리는 그것은 아무것도 반환하지 않습니다. 844 00:37:50,880 --> 00:37:52,260 a와 b로 이동합니다. 845 00:37:52,260 --> 00:37:53,337 그래서 빠른 데모. 846 00:37:53,337 --> 00:37:54,170 우리는이를 가져왔다. 847 00:37:54,170 --> 00:37:56,100 우리는뿐만 아니라 조금 걸릴 수 있습니다 잠시 여기를 휴식 848 00:37:56,100 --> 00:37:57,250 마실 수있는 작은 선물이 있습니다. 849 00:37:57,250 --> 00:38:00,120 누군가가 가입 으시면 여기에 그냥 잠시 저입니다. 850 00:38:00,120 --> 00:38:01,830 어떻게 밤색 셔츠에 당신은? 851 00:38:01,830 --> 00:38:02,335 올라 와요. 852 00:38:02,335 --> 00:38:04,060 853 00:38:04,060 --> 00:38:05,260 그냥 한 오늘. 854 00:38:05,260 --> 00:38:06,251 하지만, 감사합니다. 855 00:38:06,251 --> 00:38:08,000 좋아, 우리는이 누가 여기에 오는? 856 00:38:08,000 --> 00:38:08,660 당신의 이름은 무엇입니까? 857 00:38:08,660 --> 00:38:09,360 >> SPEAKER 4 : 로라. 858 00:38:09,360 --> 00:38:09,740 >> SPEAKER 1 : 로라. 859 00:38:09,740 --> 00:38:10,370 올라 와요. 860 00:38:10,370 --> 00:38:11,460 861 00:38:11,460 --> 00:38:13,850 로라, 매우 간단 도전 오늘. 862 00:38:13,850 --> 00:38:14,704 863 00:38:14,704 --> 00:38:15,370 요 만나서 반가워요. 864 00:38:15,370 --> 00:38:16,410 865 00:38:16,410 --> 00:38:16,910 좋아. 866 00:38:16,910 --> 00:38:21,179 그래서 우리는 여기에 우유를 가지고 우리는 여기에 일부 오렌지 주스를 867 00:38:21,179 --> 00:38:23,345 어떤 컵이 우리 오늘 아넨 버그에서 빌린. 868 00:38:23,345 --> 00:38:24,178 >> SPEAKER 4 : 대여. 869 00:38:24,178 --> 00:38:27,240 SPEAKER 1 : 그리고 앞서 갈 당신이 반 잔을 제공합니다. 870 00:38:27,240 --> 00:38:28,250 871 00:38:28,250 --> 00:38:28,800 좋아. 872 00:38:28,800 --> 00:38:30,750 그리고 우리는 당신에게 반주지 우유 한 잔. 873 00:38:30,750 --> 00:38:31,905 874 00:38:31,905 --> 00:38:35,890 아, 그리고 당신이 할 수 있도록 이 어땠는지 기억 875 00:38:35,890 --> 00:38:38,860 내가 가지고 기억 이 최대 오늘에. 876 00:38:38,860 --> 00:38:42,030 877 00:38:42,030 --> 00:38:42,530 좋아. 878 00:38:42,530 --> 00:38:45,470 괜찮 으시면, 어디 보자, 우리 자신의 안경을 넣을 수 있습니다 879 00:38:45,470 --> 00:38:46,560 당신이 원하는 경우. 880 00:38:46,560 --> 00:38:48,710 이 로라의 눈에서 세계 수있을 것입니다. 881 00:38:48,710 --> 00:38:49,210 좋아. 882 00:38:49,210 --> 00:38:53,820 그래서 당신의 목표는 두 잔 제공 여기에 액체, 우유, 오렌지 주스, 883 00:38:53,820 --> 00:38:58,370 이 내용을 바꿔 지도록 오렌지 주스는 우유 컵에 간다 884 00:38:58,370 --> 00:39:00,710 그리고 우유로 전환 오렌지 주스 한잔. 885 00:39:00,710 --> 00:39:02,359 >> SPEAKER 4 : 내가 다른 컵을받을 수 있나요? 886 00:39:02,359 --> 00:39:05,650 SPEAKER 1 : 그래도, 당신이 물어 너무 기뻐요 그것은 훨씬 더 나은 장면이었을 것입니다 887 00:39:05,650 --> 00:39:06,710 당신은 질문하지 않았다면. 888 00:39:06,710 --> 00:39:10,620 하지만 그래, 우리는 당신에게 세 번째를 제공 할 수 있습니다 물론, 비어 컵입니다. 889 00:39:10,620 --> 00:39:11,120 좋아. 890 00:39:11,120 --> 00:39:12,300 그래서이 내용을 교환합니다. 891 00:39:12,300 --> 00:39:16,100 892 00:39:16,100 --> 00:39:17,050 아주 좋은. 893 00:39:17,050 --> 00:39:20,390 894 00:39:20,390 --> 00:39:21,305 아주 좋아. 895 00:39:21,305 --> 00:39:23,121 896 00:39:23,121 --> 00:39:24,745 당신은 매우 신중하게이 일을하고 있습니다. 897 00:39:24,745 --> 00:39:26,970 898 00:39:26,970 --> 00:39:28,655 그리고 세 단계. 899 00:39:28,655 --> 00:39:30,390 900 00:39:30,390 --> 00:39:31,350 좋아. 901 00:39:31,350 --> 00:39:31,930 우수. 902 00:39:31,930 --> 00:39:33,930 큰 박수 로라에 대 한 좋은 것입니다. 903 00:39:33,930 --> 00:39:36,500 904 00:39:36,500 --> 00:39:37,000 좋아. 905 00:39:37,000 --> 00:39:40,790 우리는 약간의 이별 선물을 당신을 위해,하지만 날이 걸릴 수 있습니다. 906 00:39:40,790 --> 00:39:42,620 정말 감사합니다. 907 00:39:42,620 --> 00:39:46,170 그래서 간단한 예,하지만, 당신이 경우에 입증하는 908 00:39:46,170 --> 00:39:48,300 내용물을 교환 할 이 컨테이너, 909 00:39:48,300 --> 00:39:52,360 또는의 변수를 부르 자, 일부 임시 저장소가 필요 910 00:39:52,360 --> 00:39:56,710 그래서에서 내용 중 하나를 준비합니다 실제로 스왑을 할 수있다. 911 00:39:56,710 --> 00:40:01,790 그래서 참, 여기 소스 코드까지의 C는 정확히의 대표입니다. 912 00:40:01,790 --> 00:40:06,340 오렌지 주스 및 우유 인 경우 , 나, 그리고 우리는이를 교환 원 913 00:40:06,340 --> 00:40:08,990 당신은 창조적 인 무언가를 시도 할 수 있습니다 다른에 하나를 부어, 914 00:40:08,990 --> 00:40:11,031 하지만 그건 아닐 것 특히 끝. 915 00:40:11,031 --> 00:40:15,260 그래서 우리는 세 번째 컵, 호출을 사용하여 이 규칙에 따라 T-M-P를 tmp를 916 00:40:15,260 --> 00:40:19,370 상기의 내용을 넣어 OJ는 점에서, 다음 한 컵을 교환, 917 00:40:19,370 --> 00:40:22,610 다음에 OJ을 넣어 원래 컵, 이에 918 00:40:22,610 --> 00:40:25,320 정확하게 달성 로라, 스왑을했다. 919 00:40:25,320 --> 00:40:26,850 >> 그럼 정확히 할 수 있습니다. 920 00:40:26,850 --> 00:40:30,110 내가 가서 풀어 보자 이다 예를 들어 최대 921 00:40:30,110 --> 00:40:32,720 실제로 아니오 "라고 이 아니기 때문에 "스왑 922 00:40:32,720 --> 00:40:36,180 당신이 생각하는 것만 큼 간단하게 수행. 923 00:40:36,180 --> 00:40:41,190 그래서이 프로그램에, 알 나는 stdio.h에, 우리의 오랜 친구를 사용하고 있습니다. 924 00:40:41,190 --> 00:40:43,130 나는 프로토 타입을 , 거기 스왑하는 925 00:40:43,130 --> 00:40:45,450 그 구현의 의미 아마 아래로 아래 926 00:40:45,450 --> 00:40:48,050 그리고 보자 메인 무엇을이 이 프로그램은 나를 위해 할 것입니다. 927 00:40:48,050 --> 00:40:52,020 내가 먼저 정수 x가 도착 선언 한, 그리고 y는이를 가져옵니다 int 형. 928 00:40:52,020 --> 00:40:54,930 그래서 OJ로 그 생각 각각 우유. 929 00:40:54,930 --> 00:40:57,100 그리고 난 그냥이 printf의 x는 이것이다라고 930 00:40:57,100 --> 00:41:00,120 y는 그저 내가 할 수있는이입니다 시각적으로 무슨 일이 일어나고 있는지를 참조하십시오. 931 00:41:00,120 --> 00:41:03,810 그럼 내가 주장의 printf있다 나는이 두 가지를 교환하고있어 그 932 00:41:03,810 --> 00:41:07,100 그리고, 나는를 인쇄 그들이 교환하고 있다고 주장, 933 00:41:07,100 --> 00:41:09,300 나는 다시 X와 Y를 인쇄 할 수 있습니다. 934 00:41:09,300 --> 00:41:13,010 그래서 여기로 스왑이에 정확히 로라가 무슨 짓을했는지, 935 00:41:13,010 --> 00:41:16,240 우리는에보고 정확히 조금 전에 화면. 936 00:41:16,240 --> 00:41:19,380 >> 그럼 가서하자 몹시 실망. 937 00:41:19,380 --> 00:41:24,690 더 스왑을 확인하지 않고 스왑 사이트를 운영 할 수 없습니다, 여기에 출력을 확대. 938 00:41:24,690 --> 00:41:28,320 입력 X는 y는 교환 스와핑, 2, 1이다. 939 00:41:28,320 --> 00:41:32,700 X는 여전히 1이고, y는 여전히 2이다. 940 00:41:32,700 --> 00:41:37,630 그래서 비록 솔직히이 보인다 정확히 기술적으로,이기는하지만 좋아 941 00:41:37,630 --> 00:41:40,730 로라가 무슨 짓을했는지, 작동하지 않았다. 942 00:41:40,730 --> 00:41:42,130 왜 그럴까요? 943 00:41:42,130 --> 00:41:46,630 음,이 때 밝혀 우리는이 같은 프로그램을 작성 944 00:41:46,630 --> 00:41:51,590 즉, 두 주, 여기 강조했다 다음 다른 기능, 스왑 등 945 00:41:51,590 --> 00:41:54,230 여기에서 강조되는 그것은 세계 호출 946 00:41:54,230 --> 00:41:57,030 같은 작은 선물을 본다 조금 전에이 트레이. 947 00:41:57,030 --> 00:42:00,440 경우 메인 호출되는 첫번째, 즉, 운영 체제 묻는 거와 같아 948 00:42:00,440 --> 00:42:04,030 로컬 메모리의 비트 x와 메인가 가지고있는 Y와 같은 변수 949 00:42:04,030 --> 00:42:05,660 그들은 바로 거기에 끝. 950 00:42:05,660 --> 00:42:10,920 주요 통화 스왑 및 주요 그러나 경우 두 개의 인수, a와 b를 교환 통과 951 00:42:10,920 --> 00:42:16,410 오렌지 주스, 우유,은처럼하지 오렌지 주스와 우유를 나눠 952 00:42:16,410 --> 00:42:17,500 로라한다. 953 00:42:17,500 --> 00:42:21,300 컴퓨터가 무엇입니까, 그것은이다 오렌지 주스의 사본을 전달합니다 954 00:42:21,300 --> 00:42:27,110 그래서 로라에게 우유의 복사, 어떤이 용지함의 내부 지향하는 955 00:42:27,110 --> 00:42:32,510 값의 하나, 둘, 또는 OJ이며 우유,하지만 그 사본, 956 00:42:32,510 --> 00:42:34,790 그래서이 점에서 이야기에서,이 957 00:42:34,790 --> 00:42:36,930 이 트레이의 각 OJ와 우유입니다. 958 00:42:36,930 --> 00:42:39,260 하나 둘이있다 이 트레이의 각, 959 00:42:39,260 --> 00:42:41,720 및 스왑 기능은 참으로 노력하고 있습니다. 960 00:42:41,720 --> 00:42:46,090 그것은 내부를 교환하는 것 둘째 최상위 트레이, 961 00:42:46,090 --> 00:42:48,147 하지만 스와핑은 영향을주지 않습니다. 962 00:42:48,147 --> 00:42:49,980 그리고 그냥 몇 가지를 기반으로 우리가했습니다 기본 원리 963 00:42:49,980 --> 00:42:52,970 이전에 대해 이야기하고, 실제로 불과 몇 분 전, 무엇을 964 00:42:52,970 --> 00:42:58,770 변경 이유를 설명 할 수 스왑의 내부와 b 965 00:42:58,770 --> 00:43:05,560 비록, (X, Y)에 아무런 영향을주지 않는다 나는 스왑 기능으로 X와 Y를 통과했다. 966 00:43:05,560 --> 00:43:08,750 여기에 핵심 단어는 무엇인가 단순하게 설명 할 수 있는가? 967 00:43:08,750 --> 00:43:11,250 968 00:43:11,250 --> 00:43:12,627 내가 여기를들은 것 같은데? 969 00:43:12,627 --> 00:43:13,335 청중 : 돌아갑니다. 970 00:43:13,335 --> 00:43:14,085 SPEAKER 1 : 반환? 971 00:43:14,085 --> 00:43:14,590 반환하지 않습니다. 972 00:43:14,590 --> 00:43:15,895 의 다른 하나 가자. 973 00:43:15,895 --> 00:43:16,395 그게 뭔데? 974 00:43:16,395 --> 00:43:17,080 >> 청중 : [들리지]. 975 00:43:17,080 --> 00:43:20,000 >> SPEAKER 1 : OK, 우리가 할 수 return-- 때문에 이야기에 반환을하려면 976 00:43:20,000 --> 00:43:21,914 하지만 더 간단한 설명이있다. 977 00:43:21,914 --> 00:43:22,580 대상 : 범위. 978 00:43:22,580 --> 00:43:23,288 SPEAKER 1 : 범위. 979 00:43:23,288 --> 00:43:24,300 나는 범위를 할게요. 980 00:43:24,300 --> 00:43:27,290 그래서 범위, 위치를 기억 우리의 x와 y를 선언했다. 981 00:43:27,290 --> 00:43:30,840 그들은 내부에 선언되고있는 메인의 여기까지. 982 00:43:30,840 --> 00:43:33,200 A와 B 사이에, 아르 효과적으로 선언 983 00:43:33,200 --> 00:43:35,930 스왑의 내부 꽤에서 중괄호하지만 여전히 984 00:43:35,930 --> 00:43:37,690 스왑의 일반 영역에. 985 00:43:37,690 --> 00:43:40,560 그리고 참으로, a와 b 단이 트레이 내에 존재 986 00:43:40,560 --> 00:43:44,850 아넨 버그에서이 코드의 두 번째 덩어리. 987 00:43:44,850 --> 00:43:49,500 그래서 우리는 실제로 사본을 변경하지만,있어 그게 정말 그렇게 도움이되지입니다. 988 00:43:49,500 --> 00:43:52,190 >> 그럼 살펴 보자 이 약간 낮은 수준. 989 00:43:52,190 --> 00:43:55,430 나는 다시 갈거야 소스 디렉토리, 990 00:43:55,430 --> 00:43:58,330 나는 첫번째에 갈거야 여기에 확대, 단지 991 00:43:58,330 --> 00:44:02,290 나는이에 걸 확인 큰 단자 창 992 00:44:02,290 --> 00:44:04,430 프로그램은 여전히​​처럼 행동합니다. 993 00:44:04,430 --> 00:44:06,840 지금이 가정 의도적 없습니다. 994 00:44:06,840 --> 00:44:10,090 분명히 난에 스왑을 원 작품은, 그래서 벌레처럼 느낀다. 995 00:44:10,090 --> 00:44:12,780 지금은 추가 시작할 수 내 코드의 printf의 많은, 996 00:44:12,780 --> 00:44:16,010 , 여기에 Y를 X를 통해 출력하기 여기, 여기 요, 여기 요 나. 997 00:44:16,010 --> 00:44:18,220 하지만 솔직히, 그게 아마 무슨이다 당신은 주 동안 해왔 998 00:44:18,220 --> 00:44:20,190 지금은 근무 시간에 집에서 작업 할 때 999 00:44:20,190 --> 00:44:22,150 몇 가지 버그를 찾기 위해 노력하여 pset에. 1000 00:44:22,150 --> 00:44:25,560 당신이 이미하지 않은 경우하지만 당신은 볼 것이다 그 문제는 세 가지를 소개 설정 1001 00:44:25,560 --> 00:44:31,630 GDB라는 명령에, 여기서 GDB, GNU 디버거, 1002 00:44:31,630 --> 00:44:34,040 자체의 모두가 기능이 실제로 수 1003 00:44:34,040 --> 00:44:38,160 우리가 상황을 이해하자 이런 식으로,하지만 더 강력하게, 1004 00:44:38,160 --> 00:44:39,940 문제를 해결하고 버그를 찾을 수 있습니다. 1005 00:44:39,940 --> 00:44:40,940 그래서 나는이 작업을 수행 할거야. 1006 00:44:40,940 --> 00:44:44,770 대신 ./noswap, 나는 대신 해요 GDB의 ./noswap를 실행하는 것. 1007 00:44:44,770 --> 00:44:47,410 1008 00:44:47,410 --> 00:44:51,200 즉, 내가 도망 갈거야 내 프로그램이 아닙니다 배쉬, 우리의 새로운 친구 1009 00:44:51,200 --> 00:44:51,850 오늘. 1010 00:44:51,850 --> 00:44:53,970 내가 도망 갈거야 내 내부 프로그램 noswap 1011 00:44:53,970 --> 00:44:56,900 라는이 다른 프로그램의 디버거 인 GDB, 어떤 1012 00:44:56,900 --> 00:45:01,035 수 있도록 설계 프로그램입니다 당신이 버그를 발견하고 제거 인간이. 1013 00:45:01,035 --> 00:45:03,410 여기 실행에 충돌한다면, 거기에 텍스트의 잔인한 양 1014 00:45:03,410 --> 00:45:04,868 당신은 정말 읽을 필요가 없다는 것. 1015 00:45:04,868 --> 00:45:07,290 그것은 본질적으로 산만이다 프롬프트에서 어떤 1016 00:45:07,290 --> 00:45:10,030 나는 컨트롤-L을 칠거야 이 상단까지 얻을 수 있습니다. 1017 00:45:10,030 --> 00:45:11,800 이것은 GDB 프롬프트이다. 1018 00:45:11,800 --> 00:45:15,550 지금이 프로그램을 실행하려면, 오늘날에이 작은 컨닝 페이퍼 등 1019 00:45:15,550 --> 00:45:21,860 슬라이드 실행이 첫 번째 제안합니다 우리가 소개하는 의미 것을 명령한다. 1020 00:45:21,860 --> 00:45:25,150 그리고 난 그냥 입력 할거야 GDB의 내부 여기 실행 1021 00:45:25,150 --> 00:45:26,811 실제로 내 프로그램을 실행. 1022 00:45:26,811 --> 00:45:29,310 이제 몇 가지 추가를 거기 이 같은 화면의 출력, 1023 00:45:29,310 --> 00:45:31,910 하지만 GDB 그냥되는 항문이다 그리고 무슨 일이 일어나고 있는지 우리에게 말하고. 1024 00:45:31,910 --> 00:45:34,451 당신은 정말 걱정할 필요가 없습니다 지금이 세부 사항에 대한 정보가 포함되어 있습니다. 1025 00:45:34,451 --> 00:45:36,890 하지만 정말 멋진 무엇 내가 할 경우 GDB는이 again-- 1026 00:45:36,890 --> 00:45:42,100 제어-L은 나를 놓아 screen-- 웁니다 앞서를 입력하여 "주요 휴식" 1027 00:45:42,100 --> 00:45:45,743 내가 입력 쳤을 때, 무슨 일이있어 설정 브레이크 포인트 noswap.c에서라고, 1028 00:45:45,743 --> 00:45:51,270 GDB입니다 라인 (16), 실제로 내 프로그램을 알아 냈어 1029 00:45:51,270 --> 00:45:53,070 입니다, 내 기능은 실제로. 1030 00:45:53,070 --> 00:45:55,070 우리가 지금은 무시 보겠습니다 하지만 주소입니다 1031 00:45:55,070 --> 00:45:57,310 특히이 기능의 메모리에. 1032 00:45:57,310 --> 00:46:00,240 그래서 지금은 실행 입력 할 때, 여기에 멋진 것을 알 수 있습니다. 1033 00:46:00,240 --> 00:46:05,650 내 프로그램은 라인 I에서 휴식 에서 실행을 일시 중지 GDB 말했다. 1034 00:46:05,650 --> 00:46:09,850 그래서 지금 내 코드를 변경할 필요가 없습니다, 일부의 printf의 추가 재 컴파일을 다시 실행 1035 00:46:09,850 --> 00:46:13,300 그것은, 변경, 일부의 printf의 추가 저장, 재 컴파일, 실행합니다. 1036 00:46:13,300 --> 00:46:18,100 난 그냥 내 프로그램을 통해 걸을 수있다 인간의 속도 단계로 단계별로, 1037 00:46:18,100 --> 00:46:20,880 없는 속도의 인텔 내부의 종류에서. 1038 00:46:20,880 --> 00:46:24,580 >> 그래서 지금이 줄을 알 내가 돌아 가면 여기에 표시하고, 1039 00:46:24,580 --> 00:46:27,800 gedit에서 내 프로그램, 즉 실제로 있음을 알 1040 00:46:27,800 --> 00:46:29,280 코드의 첫 줄. 1041 00:46:29,280 --> 00:46:31,240 선 (16)의 gedit에있다. 1042 00:46:31,240 --> 00:46:34,610 이 라인 (16)는 GDB 내에서, 그리고 심지어 이 흑백 인터페이스하지만 1043 00:46:34,610 --> 00:46:37,760 하지 거의 사용자로입니다 친절이 의미 1044 00:46:37,760 --> 00:46:41,680 그 라인 (16)이 실행되지 않은 아직,하지만이 될 거예요. 1045 00:46:41,680 --> 00:46:46,220 그래서 실제로 내가 인쇄를 입력하면 X,하지의 printf, 그냥 인쇄 X, 1046 00:46:46,220 --> 00:46:50,730 나는 제로의 몇 가지 가짜 가치를 x는 아직 초기화되지 않은 때문이다. 1047 00:46:50,730 --> 00:46:54,760 당신이 경우 그래서, 다음에 입력하는 것, 또는있어 바로 옆에 N, 멋진 싶어요. 1048 00:46:54,760 --> 00:46:59,090 하지만 다음 지금 입력 입력 할 때 이 라인 (17)으로 이동 알 수 있습니다. 1049 00:46:59,090 --> 00:47:02,840 그래서 논리적으로, 내가 실행 한 경우 라인 (16)과 지금은 인쇄 x를 입력 1050 00:47:02,840 --> 00:47:03,640 내가 무엇을 볼 것인가? 1051 00:47:03,640 --> 00:47:04,970 1052 00:47:04,970 --> 00:47:05,520 한. 1053 00:47:05,520 --> 00:47:07,820 >> 그리고 지금이 인정 하듯이 혼란 스럽다. 1054 00:47:07,820 --> 00:47:11,260 $ 2는 단지 멋진 방법입니다 당신이 경우 나중에 그 값을 참조하려면, 1055 00:47:11,260 --> 00:47:12,510 당신은 "달러가이 서명."말할 수 1056 00:47:12,510 --> 00:47:13,480 그것은 역 참조 같아요. 1057 00:47:13,480 --> 00:47:14,570 하지만 지금은 그냥 무시합니다. 1058 00:47:14,570 --> 00:47:17,070 흥미로운 것은 무엇입니다 등호의 오른쪽에. 1059 00:47:17,070 --> 00:47:21,000 그리고 지금은 다음에 다시 입력하면 인쇄 Y, 나는이 표시되어야합니다. 1060 00:47:21,000 --> 00:47:23,870 또한 이제 인쇄 할 수 있습니다 X 다시, 그리고 솔직히, 1061 00:47:23,870 --> 00:47:27,130 나는에 관해서는 조금 혼란 받고 있어요 경우 내가 어디, 나는 목록에 대한 목록을 입력 할 수 있습니다 1062 00:47:27,130 --> 00:47:30,590 단지 주변에 일부 내용을 참조 점은 사실에있어. 1063 00:47:30,590 --> 00:47:35,180 그리고 지금은 입력 할 수 있습니다 다음, 거기에 X는 1입니다. 1064 00:47:35,180 --> 00:47:36,300 지금은 옆에 입력합니다. 1065 00:47:36,300 --> 00:47:37,710 오 y는 2입니다. 1066 00:47:37,710 --> 00:47:40,750 그리고 다시, 그것은 혼란 GDB의 출력 때문에 1067 00:47:40,750 --> 00:47:43,044 내 자신의 출력과 뒤섞여되고있다. 1068 00:47:43,044 --> 00:47:45,710 하지만 당신은에 의해, 염두에 두어야하는 경우 앞뒤로 코드에서이기는 1069 00:47:45,710 --> 00:47:47,740 또는 측면을 세우고 아마 옆에, 당신은거야 1070 00:47:47,740 --> 00:47:51,020 정말 난 그냥 볼 내 프로그램을 통해 스테핑. 1071 00:47:51,020 --> 00:47:54,620 >> 그러나 문자 그대로, 다음에 어떻게되는지 알 수 있습니다. 1072 00:47:54,620 --> 00:47:56,380 여기에 라인 (22)입니다. 1073 00:47:56,380 --> 00:48:01,315 따라서 이동하는, 내가 그 위에 가자 23에, 그리고 지금은, 여전히 한 x를 인쇄합니다. 1074 00:48:01,315 --> 00:48:03,890 그리고 하나는 여전히 지금 Y를 인쇄합니다. 1075 00:48:03,890 --> 00:48:05,820 그래서이 유용한 운동이 아니다. 1076 00:48:05,820 --> 00:48:07,450 그래서이 작업을 다시 할 수 있습니다. 1077 00:48:07,450 --> 00:48:10,069 나에 백업 가자 다시 상단과 형식 실행됩니다. 1078 00:48:10,069 --> 00:48:12,110 그리고 프로그램을 말하는 것 그는 디버깅하는 것 1079 00:48:12,110 --> 00:48:14,109 이미 시작된, 처음부터 시작했다. 1080 00:48:14,109 --> 00:48:15,420 그래, 다시이 작업을 수행 할 수 있습니다. 1081 00:48:15,420 --> 00:48:22,000 그리고 이번에는의 다음 해 보자 다음, 다음, 다음, 다음, 1082 00:48:22,000 --> 00:48:24,180 하지만 지금은 상황이 흥미있어. 1083 00:48:24,180 --> 00:48:27,760 지금은 한 단계 씩 할 스왑, 그래서 다음 입력하지 마십시오. 1084 00:48:27,760 --> 00:48:34,380 나는 그것을 발견 지금 단계를 입력하고 noswap.c 라인 (33) 나 올랐다. 1085 00:48:34,380 --> 00:48:37,240 내가 gedit를 다시 들으면, 선 (33) 무엇인가? 1086 00:48:37,240 --> 00:48:40,500 즉, 실제 처음이야 스왑의 내부 코드의 라인입니다. 1087 00:48:40,500 --> 00:48:44,150 어느 때문에 지금 내가 할 수있는, 좋은 가지 살펴볼 호기심 얻을 1088 00:48:44,150 --> 00:48:46,052 에 관해서는 무슨 일이 진정으로 일어나고. 1089 00:48:46,052 --> 00:48:46,760 나를 TMP를 인쇄 할 수 있습니다. 1090 00:48:46,760 --> 00:48:47,770 1091 00:48:47,770 --> 00:48:48,800 우와. 1092 00:48:48,800 --> 00:48:51,438 왜 TMP 몇 가지를 않습니다 미친, 가짜 쓰레기 값? 1093 00:48:51,438 --> 00:48:54,579 1094 00:48:54,579 --> 00:48:56,120 청중 : 그것은 초기화되지 않았습니다. 1095 00:48:56,120 --> 00:48:57,150 SPEAKER 1 :이 초기화되지 않았습니다. 1096 00:48:57,150 --> 00:49:00,270 그리고 실제로, 당신은 프로그램을 실행하면, 당신은 메모리의 전체 무리를 부여하고 1097 00:49:00,270 --> 00:49:03,392 운영 체제에서,하지만 모든 값을 초기화하지 않은, 1098 00:49:03,392 --> 00:49:05,600 그래서 어떤 비트가있어 그것은, 비록 여기보고 1099 00:49:05,600 --> 00:49:07,770 이 미친 큰 음 숫자는 단지 수단 1100 00:49:07,770 --> 00:49:10,750 그 것을 잔재에서입니다 그 RAM의 일부 이전 사용, 1101 00:49:10,750 --> 00:49:13,050 내가하지 않은 경우에도 자신은 아직 그것을 필요로했다. 1102 00:49:13,050 --> 00:49:17,086 그래서 지금은 전방 및 유형에 갈거야 다음, 나는 지금 인쇄 TMP를 입력하면, 1103 00:49:17,086 --> 00:49:17,835 내가 무엇을 볼 것인가? 1104 00:49:17,835 --> 00:49:19,570 1105 00:49:19,570 --> 00:49:23,360 어쨌든의 값이었다 그냥 첫 번째 인수입니다 1106 00:49:23,360 --> 00:49:25,550 X처럼 처음 일이 전달되는 1107 00:49:25,550 --> 00:49:30,450 그래서, X는 동일해야, 그래서 인쇄 TMP 나에게 하나를 인쇄해야합니다. 1108 00:49:30,450 --> 00:49:36,360 >> 그래서 당신은 문제 세트에 볼 수 있습니다 셋은 GDB에 종류의 튜토리얼 1109 00:49:36,360 --> 00:49:40,020 그러나 이것은 시작임을 실현 도구에서 봐 실제로 것 1110 00:49:40,020 --> 00:49:42,774 당신이 문제를 해결하는 데 도움이 훨씬 더 효과적. 1111 00:49:42,774 --> 00:49:44,690 우리는 궁극적으로있어 무엇 수요일에 할 것 1112 00:49:44,690 --> 00:49:48,180 몇 층을 벗겨 시작된다 일부 훈련 바퀴를 제거합니다. 1113 00:49:48,180 --> 00:49:50,496 그 일이라는 캐릭터 라인 우리는 몇 시간 동안 사용했습니다 1114 00:49:50,496 --> 00:49:53,370 우리는 천천히 그것을 빼앗아거야 과에서하는 얘기 시작 1115 00:49:53,370 --> 00:49:55,725 뭔가 더 esoterically char *로 알려진, 1116 00:49:55,725 --> 00:49:59,550 하지만 우리는이 좋은을 할 거 야하고 부드럽게 첫째로, 심지어 포인터하지만, 1117 00:49:59,550 --> 00:50:02,730 은 호출하는 등 어떤 작업을 수행 할 수 있습니다 경우 학대 매우 나쁜 일, 1118 00:50:02,730 --> 00:50:06,040 에서 약간의 클레이 메이션을보고하여 우리의 친구 스탠포드에서 닉 Parlante 1119 00:50:06,040 --> 00:50:09,670 대학, 컴퓨터 교수 이 미리보기를 함께 넣어 과학 1120 00:50:09,670 --> 00:50:11,075 이 수요일 와서 무엇의. 1121 00:50:11,075 --> 00:50:12,196 1122 00:50:12,196 --> 00:50:13,400 >> [동영상 재생] 1123 00:50:13,400 --> 00:50:13,900 안녕, 빙키. 1124 00:50:13,900 --> 00:50:14,930 1125 00:50:14,930 --> 00:50:15,780 일어나. 1126 00:50:15,780 --> 00:50:17,240 그것은 포인터 재미를위한 시간이다. 1127 00:50:17,240 --> 00:50:18,260 1128 00:50:18,260 --> 00:50:19,350 >> 그게 뭐지? 1129 00:50:19,350 --> 00:50:21,150 포인터에 대해 알아? 1130 00:50:21,150 --> 00:50:22,050 아, 케이크! 1131 00:50:22,050 --> 00:50:22,897 1132 00:50:22,897 --> 00:50:23,730 [END VIDEO 재생] 1133 00:50:23,730 --> 00:50:25,396 SPEAKER 1 : 그건 수요일에 당신을 기다립니다. 1134 00:50:25,396 --> 00:50:26,440 우리는 당신에게 다음 볼 수 있습니다. 1135 00:50:26,440 --> 00:50:27,106 [동영상 재생] 1136 00:50:27,106 --> 00:50:30,420 - 그리고 지금, 깊은 생각, Daven 판햄에 의해. 1137 00:50:30,420 --> 00:50:33,980 1138 00:50:33,980 --> 00:50:35,900 >> 왜 우리는 C를 배우고있다? 1139 00:50:35,900 --> 00:50:36,785 왜 A +? 1140 00:50:36,785 --> 00:50:38,550 1141 00:50:38,550 --> 00:50:40,910 >> [웃음] 1142 00:50:40,910 --> 00:50:42,160 >> [END VIDEO 재생]