1
00:00:00,210 --> 00:00:05,100
现在, 在计算机科学中, 有一件事是非常普遍的, 那就是代码, 或者更确切地说,

2
00:00:05,100 --> 00:00:08,790
软件工程是代码被读的次数比被写的次数多得多

3
00:00:08,790 --> 00:00:16,200
我们已经讨论过聊天GPT在生成和编写代码时有多有用, 但对您来说,

4
00:00:16,200 --> 00:00:21,450
能够告诉人们代码在做什么也同样重要

5
00:00:21,450 --> 00:00:24,060
这就是文档的主要目的 

6
00:00:24,090 --> 00:00:31,080
所以在一天结束的时候, 我们仍然有软件工程师在为独特的业务用例编写代码,

7
00:00:31,560 --> 00:00:36,240
有时这只是我们必须留给人类的事情, 对吗？

8
00:00:36,240 --> 00:00:43,280
所以请放心, 所有的编码工作可能不会消失, 因为作为人类, 我们肯定可以做一些聊天的事情

9
00:00:43,290 --> 00:00:50,820
GPT不能, 但我们可以把它作为一个工具来增强软件工程和编码以及所有类似的事情

10
00:00:50,940 --> 00:00:56,740
但无论如何, 让我们看看聊天机器人在文档方面能为我们做些什么 

11
00:00:56,760 --> 00:01:02,550
在之前的课程中, 我们实际上看到它能够为我们提供一些非常好的文档化代码, 对吗？

12
00:01:02,550 --> 00:01:07,460
所以它给了我们Eratosthenes算法的筛子 

13
00:01:07,470 --> 00:01:11,460
它确实告诉我们每一小段代码在做什么, 对吗？

14
00:01:11,460 --> 00:01:16,380
所以创建一个所有数字的列表, 解释这行代码是什么 

15
00:01:16,380 --> 00:01:17,690
0和1或者不是质数 

16
00:01:17,700 --> 00:01:20,400
所以我认为我们有足够的文件 

17
00:01:20,400 --> 00:01:24,570
这是一个很短的函数, 所以这里没有太多要讨论的 

18
00:01:24,630 --> 00:01:28,710
但是如果我们试着去看一些更早的代码问题呢？

19
00:01:28,720 --> 00:01:28,890
好吧 

20
00:01:29,040 --> 00:01:32,550
让我们来看看其他的问题 

21
00:01:32,940 --> 00:01:35,970
也许我们会做一些困难的, 对不对？

22
00:01:35,970 --> 00:01:38,820
所以让我们来做一个正则表达式匹配 

23
00:01:38,820 --> 00:01:47,310
这是人们常说的, 正则表达式有时候是很有挑战性的, 有时候我们甚至用计算机系统来帮助我们得出一个正则表达式,

24
00:01:47,310 --> 00:01:58,950
因为有时候它们有点棘手, 特别是对于像检测电子邮件和电话号码之类的东西

25
00:01:58,950 --> 00:02:08,039
但是, 不管怎样, 让我们继续, 让他们来解决这个问题 

26
00:02:08,039 --> 00:02:09,840
请生成解决方案 

27
00:02:11,400 --> 00:02:12,690
解决这个问题 

28
00:02:14,080 --> 00:02:16,630
请记录代码 

29
00:02:17,110 --> 00:02:26,080
希望现在我们已经添加了这个后缀来请求更改我们的代码, 我们基本上现在在我们的函数中得到这些很好的注释,

30
00:02:26,080 --> 00:02:31,000
这些注释告诉我们到底发生了什么

31
00:02:31,000 --> 00:02:31,450
好吧 

32
00:02:31,690 --> 00:02:35,320
让我们看看它是否与函数签名匹配 

33
00:02:35,320 --> 00:02:36,070
确实如此

34
00:02:36,070 --> 00:02:42,700
所以我们将能够在代码分级器上测试它, 看看它是否正确

35
00:02:43,630 --> 00:02:48,790
所以, 是的, 它准确地告诉我们每一行代码中发生了什么 

36
00:02:49,450 --> 00:02:55,460
从理论上讲, 这个算法可能相当复杂, 并且准确地说明了每行代码在做什么 

37
00:02:55,480 --> 00:02:58,420
也许不是太有用 

38
00:02:58,420 --> 00:02:58,660
好吧 

39
00:02:58,660 --> 00:03:05,650
因为单独说出一行代码的作用对你来说可能不像编码员那样有趣或重要,

40
00:03:05,800 --> 00:03:12,220
而不是知道每行代码对整个算法的贡献

41
00:03:13,060 --> 00:03:24,220
但这实际上真的很棒, 因为在那之后, 它似乎总是在这个代码块后面加上对算法背后直觉的解释

42
00:03:24,220 --> 00:03:34,000
所以在这个例子中, 它是动态编程, 这是一种通常用于帮助增加算法的运行时复杂性的策略

43
00:03:34,030 --> 00:03:37,290
所以, 是的, 这是一个超长的段落 

44
00:03:37,300 --> 00:03:42,340
我不打算详细介绍这里到底发生了什么, 但您可以看到,

45
00:03:42,340 --> 00:03:47,390
它能够为正在编写的代码生成文档和解释

46
00:03:47,410 --> 00:03:53,470
现在, 我们已经在算法中看到了这种应用, 我们刚刚在一个更复杂的算法上测试了它

47
00:03:53,680 --> 00:03:58,770
也许只是为了更好的衡量, 我们可以把这段代码带到这里, 只是验证它是否工作 

48
00:03:58,780 --> 00:04:08,500
所以继续粘贴, 并更正函数签名, 因为它现在不正确, 并修复它, 我们应该运行它

49
00:04:08,620 --> 00:04:11,170
果然 

50
00:04:12,000 --> 00:04:16,350
哦, 实际上有一个运行时错误, 但那是因为它没有正确地缩进 

51
00:04:16,350 --> 00:04:17,250
所以这都是我的错 

52
00:04:17,250 --> 00:04:20,910
但如果我们再运行一次, 它应该是正确的 

53
00:04:20,910 --> 00:04:26,130
我甚至不打算麻烦提交它, 因为老实说, 它可能是正确的, 我们可以看到,

54
00:04:26,130 --> 00:04:29,220
它也能够解释为什么会这样

55
00:04:29,340 --> 00:04:39,450
现在, 有一件事在科学界非常流行, 那就是GitHub, 这是一个让你上传代码的地方

56
00:04:39,780 --> 00:04:45,150
它构建在Git之上, Git是源代码控制或版本控制软件 

57
00:04:45,150 --> 00:04:52,180
但基本上我们可以在这里看到提交历史或基本上对该代码库所做的更改

58
00:04:52,200 --> 00:04:57,660
现在, 我们实际上正在查看的代码库是Visual Studio代码,

59
00:04:57,660 --> 00:05:04,410
这恰好是我们用来查看代码 编辑代码和查看文件系统的应用程序

60
00:05:04,620 --> 00:05:11,460
这个漂亮的应用程序实际上是开源的, 或者可以在微软组织下的GitHub上获得,

61
00:05:11,460 --> 00:05:20,580
我们实际上可以在这里做一些挖掘, 深入到整个代码中, 这类运行的权利, 以创建这个应用程序

62
00:05:20,610 --> 00:05:25,380
现在你可以向下滚动, 看到读我, 看到更多的细节 

63
00:05:25,680 --> 00:05:29,700
但我们真正感兴趣的是看看聊天如何记录这一点 

64
00:05:29,700 --> 00:05:31,960
这是一个非常流行的仓库 

65
00:05:31,980 --> 00:05:34,380
很多贡献者, 很多问题 

66
00:05:34,380 --> 00:05:39,780
人们基本上报告bug拉请求, 基本上像贡献, 基本上请求 

67
00:05:40,050 --> 00:05:44,400
正如你在这里看到的, 他们正在更新东西, 实现, 限制, 使用变量 

68
00:05:44,400 --> 00:05:45,710
所以基本上人们都在尝试加法 

69
00:05:45,720 --> 00:05:52,140
这就是开源的全部本质, 你有很多人在一个项目上工作, 所有人都贡献了他们的努力

70
00:05:52,170 --> 00:05:56,070
现在, 如果我们要进去, 让我们看看脚本或什么的, 对不对？

71
00:05:56,070 --> 00:06:05,970
所以我们有这个脚本, 我们看到这是一个批处理脚本, 让我们说, 我不知道什么是批处理脚本,

72
00:06:05,970 --> 00:06:08,080
对吧？

73
00:06:08,100 --> 00:06:11,640
让我们继续问, 这段代码是做什么的？

74
00:06:11,880 --> 00:06:13,950
你能记录下来吗？

75
00:06:15,660 --> 00:06:20,640
如果我们把它粘贴进去, 看看它是否能告诉我们这里发生了什么 

76
00:06:20,670 --> 00:06:25,290
这是一个Windows批处理文件脚本, 用于在开发模式下启动vs代码 

77
00:06:25,320 --> 00:06:26,760
下面是它的功能摘要 

78
00:06:26,970 --> 00:06:29,130
它将脚本设置为在本地范围内运行 

79
00:06:29,160 --> 00:06:31,510
它将控制台窗口的标题设置为two vs code dev 

80
00:06:31,530 --> 00:06:37,020
所以我很确定, 如果现在有了这个描述, 对, 我们可以一行一行地看, 并分析他们每个人在做什么,

81
00:06:37,020 --> 00:06:43,740
即使我们以前从未见过这种类型的文件, 但我们现在对它的作用有了更好的了解

