AI 不会淘汰程序员,但市场会淘汰不会使用 AI 的程序员。 -- 鲁迅
掌握自动化工具对程序员的意义:
- 高效率产出,提升核心竞争力(卷死你们)
- 可以将更多的精力用于划水喝水和抬头看路
今天的神器是:Amazon CodeWhisperer。 ---- 一种采用机器学习(ML)的服务,可以根据开发人员用自然语言编写的注释和集成式开发环境(IDE)中的代码生成代码建议,帮助开发人员提高工作效率,可以为您的应用程序提供代码审查、安全扫描和性能优化。
AI 技术发展日新月异,正掀起新的编程范式变革。从代码生成到智能编程助手,AI 技术进一步提高开发效率和代码质量,推动软件开发的快速发展。为帮助开发者更快、更安全地构建应用程序,亚马逊云科技推出的 AI 编程助手 Amazon CodeWhisperer,有效提高开发人员生产力。
为了让更多开发者体验这前沿智能编程工具,探索高效、智能的编程范式,拥抱 AI 新变革“用 AI 助力,提升编程效率 ———— Amazon CodeWhisperer 探索之旅”活动乘风启航!
CodeWhisperer 经过数十亿行代码的训练,可以根据评论和现有代码实时生成从代码片段到全函数的代码建议。 除了代码生成,还可用于引用追踪和安全扫描等。
一、安装插件
Step 1 环境准备
Pycharm 下载地址(最好用的 Python 客户端,没有之一),支持 Windows、macOS、Linux
https://www.jetbrains.com.cn/pycharm/download/?section=mac
当然,对功能有所追求的小伙伴,可以选择 专业付费版,满足日常使用的话,免费社区版 足矣。
Step 2 插件安装
演示环境: mac * PyCharm
西红柿演示的是 PyCharm,VSCode, IntelliJ 等 IDE 中也类似操作即可。在 Windows, Mac, Linux 等主流操作系统同样支持。
Step 3 插件注册
选择左下角:"AWS Toolkit" > "Devoloper Tools" > "Start"
个人用户登录,输入你的邮箱。
Step 4 注册成功
注册后,可以看到如图效果,就可以开始编程拉。
二、AI 代码生成和学习
效果 1:写注释自动生成代码
输入注释: # example Python class for a simple calculator
弹窗 3 种状态:
- Insert Code : 插入推荐的代码
- Previous : 上一个推荐方案
- Next: 下一个推荐方案
只需要选择: 回车,自动生成了计算器的方法,包括:加、减、乘、除
# example Python class for a simple calculator class SimpleCalculator: def add(self, a, b): return a + b def subtract(self, a, b): return a - b def multiply(self, a, b): return a * b def divide(self, a, b): return a / b
效果 2:自动补齐代码 - 列表
Python 列表是一种有序、可变、可以包含任意类型数据的集合。它是 Python 中最常用的数据类型之一,可以用于存储和操作多个数据元素。
创建列表: 方括号 [] 来创建一个空列表,或者在方括号中包含一些元素来创建一个具有初始值的列表。
例如: test_list = [] 创建一个空列表 test_list = [1, 2, 3, 4, 5] test_list.append(6) 输出: [1, 2, 3, 4, 5, 6]
输入: test_list = [1,2
输出: test_list = [1,2,3,4,5,6,7,8,9,10]
效果 3:自动补齐代码 - for 循环
循环语句可以分为有限循环语句和无限循环语句两种。
Python for 循环是一种用于遍历可迭代对象(如列表、元组、字符串等)的循环结构。在 Python 中,for 循环语句的组成要素包括关键字 for、迭代变量和可迭代对象。
for i in test_list: if i == 5: print('我是five') break
效果 4:自动补齐代码 - 条件判断
Python 中的条件判断语句为“if 语句”。与 C 语言中 if 语句的书写不同之处在于:python 中 else if 可以写成 elif,而 C 语言不能。
if 语句是从上到下进行判断的。
test_list = [1, 2, 3, 4, 5] for i in test_list: if i == 3: print('我是3') elif i == 4: print('我是4')
三、基于 Amazon CodeWhisperer 的 Python 学习
3.1 变量和数据类型
变量和数据类型:Python中有多种数据类型,如整数(int)、浮点数(float)、字符串(str)、列表(list)、元组(tuple)、字典(dict)等。
Python中的常见数据类型包括:
- 数字类型:包括整型(int)、浮点型(float)、复数型(complex)等。
- 字符串类型:用单引号或双引号括起来的字符序列,如'hello'、"world"等。
- 列表类型:用方括号括起来的有序元素集合,如[1, 2, 3]、['apple', 'banana', 'cherry']等。
- 元组类型:与列表类似,但是元组的元素不能修改,如(1, 2, 3)、('apple', 'banana', 'cherry')等。
- 集合类型:无序的不重复元素集合,如{1, 2, 3}、{'apple', 'banana', 'cherry'}等。
- 字典类型:用花括号括起来的键值对集合,如{'name': 'Alice', 'age': 25}等。
3.2 控制结构
控制结构:包括条件语句(if-elif-else)、循环语句(for、while)等。
Python中的控制结构包括条件语句、循环语句等,用于控制程序的执行流程。
条件语句
条件语句用于根据条件的真假来选择不同的代码块执行。在Python中,条件语句使用if、elif和else关键字来实现。
语法: Copyif condition1: # code block 1 elif condition2: # code block 2 else: # code block 3
其中,condition1、condition2为判断条件,如果满足条件则执行相应的代码块。
示例: Copyage = 18 if age < 18: print("未成年") elif age >= 18 and age < 60: print("成年") else: print("老年")
循环语句
循环语句用于重复执行一段代码。在Python中,循环语句使用for和while关键字来实现。
语法: for item in iterable: # code block while condition: # code block
其中,iterable为可迭代对象,item为每次迭代时取出的元素;condition为循环条件,当条件满足时执行循环体中的代码块。
示例: # for循环 for i in range(5): print(i) # while循环 count = 0 while count < 5: print(count) count += 1
3.3 函数
函数:使用def关键字定义函数,可以实现代码的复用。
Python函数是一段可重用的代码块,用于执行特定的任务。函数可以接收输入参数并返回结果。在Python中,函数使用def关键字定义,后跟函数名和括号内的参数列表。函数体由缩进的代码块组成。
以下是一个简单的Python函数示例:
def greet(name): return "Hello, " + name + "!" print(greet("World"))
在这个示例中,定义了一个名为greet的函数,它接受一个名为name的参数。函数返回一个字符串,其中包含问候语和传递给函数的名称。西红柿通过调用greet函数并传递"World"作为参数来测试这个函数。输出结果应该是"Hello, World!"。
3.4 类和对象
类和对象:使用class关键字定义类,通过实例化创建对象。
类(Class)
类是一种抽象的概念,用于描述具有相同属性和方法的对象的集合。在Python中,可以使用class关键字来定义一个类。例如:
class Person: def __init__(self, name, age): self.name = name self.age = age def say_hello(self): print("Hello, my name is", self.name)
这个例子中,我们定义了一个名为Person的类,它有两个属性name和age,以及一个方法say_hello。
对象(Object)
对象是类的实例,也就是具体的实体。在Python中,可以通过调用类来创建一个对象。例如:
p = Person("Tom", 20)
这个例子中,我们创建了一个名为p的Person对象,并给它传递了两个参数"Tom"和20。
对象可以访问类中定义的属性和方法。例如:
Copyp.name = "Jerry" p.age = 25 p.say_hello()
这个例子中,我们给p对象分别设置了name、age属性,并调用了say_hello方法。输出结果为:"Hello, my name is Jerry"。
3.5 文件操作
文件操作:使用open()函数打开文件,read()、write()等方法进行文件的读写操作。
Python提供了许多内置函数和模块来处理文件操作。以下是一些常用的文件操作函数和模块:
打开文件:使用open()函数打开文件,并返回一个文件对象。例如:
file = open("example.txt", "r")
这个例子中,我们打开了一个名为example.txt的文件,并以只读模式("r")打开它。
读取文件:使用read()方法读取文件中的所有内容。例如:
content = file.read() print(content)
这个例子中,我们读取了文件的全部内容,并将其打印出来。
写入文件:使用write()方法将文本写入文件中。例如:
Copyfile = open("example.txt", "w") file.write("Hello, world!") file.close()
这个例子中,我们以写入模式("w")打开了一个名为example.txt的文件,并将字符串"Hello, world!"写入其中。
关闭文件:使用close()方法关闭已打开的文件。例如:
Copyfile.close()
3.6 异常处理
异常处理:使用try-except语句捕获和处理异常。
在Python中,异常处理是一种机制,用于处理程序运行时可能出现的错误或异常情况。当程序执行过程中遇到错误时,Python解释器会引发一个异常,如果没有适当的处理机制,程序将会终止并显示错误信息。为了避免这种情况的发生,我们可以使用异常处理来捕获和处理这些异常。
Python中的异常处理通常使用try-except语句来实现。try块包含可能引发异常的代码,而except块则包含处理异常的代码。如果try块中的代码引发了异常,那么try块后面的代码将被跳过,Python解释器将查找与该异常匹配的except块,并执行其中的代码。
以下是一个简单的Python异常处理示例:
x = 1 / 0 except ZeroDivisionError: print("除数不能为零")
在这个例子中,我们尝试执行一个除以零的操作,这会引发一个ZeroDivisionError异常。由于我们在try块后面使用了except块来捕获这个异常,因此当异常发生时,程序不会终止,而是执行except块中的代码,打印出"除数不能为零"。
除了使用特定的异常类型来捕获异常外,我们还可以使用一个通用的except块来捕获所有类型的异常。例如:
# some code that may raise an exception except Exception as e: print("发生了一个错误:", e)
在这个例子中,我们使用了一个通用的except块来捕获所有类型的异常,并将异常对象存储在变量e中。然后,我们可以打印出异常的信息。
3.7 列表推导式
Python列表推导式是一种快速创建列表的方法,它使用一种简洁的语法结构来生成一个新的列表。列表推导式通常包括一个可迭代对象(如列表、元组、集合等)和一个表达式,该表达式用于计算新列表中的每个元素。
列表推导式的语法如下:
[expression for item in iterable if condition]
其中:
- expression:用于计算新列表中每个元素的表达式。
- item:从可迭代对象中获取的每个元素。
- iterable:一个可迭代对象,如列表、元组、集合等。
- condition:可选的条件表达式,用于过滤满足条件的元素。
例如,我们可以使用列表推导式创建一个包含1到10之间所有偶数的列表:
even_numbers = [x for x in range(1, 11) if x % 2 == 0] print(even_numbers) # 输出:[2, 4, 6, 8, 10]
在这个例子中,我使用了range(1, 11)作为可迭代对象,x表示从可迭代对象中获取的每个元素,x % 2 == 0作为条件表达式,用于过滤出偶数。
四、AI 引用追踪
代码引用追踪是一种调试技术,它可以帮助开发人员确定程序中变量和函数的引用关系。在程序运行时,每个变量和函数都可能被其他代码引用或调用。
通过代码引用追踪,开发人员可以查看这些引用关系,从而更好地理解程序的执行过程和逻辑。
代码引用追踪通常用于调试复杂的程序,特别是在处理大量数据或执行复杂算法时。它可以帮助我们找到程序中的错误和瓶颈,并提供有关如何优化代码的建议。此外,代码引用追踪还可以帮助我们更好地理解代码的执行时间和内存使用情况,从而更好地优化程序的性能。
五、AI 安全扫描
代码安全扫描是一种检查代码中安全漏洞的方法。它可以帮助企业确保其代码库中的代码不包含潜在的安全漏洞,从而保护企业的数据和资产。
代码安全扫描可以通过 Amazon CodeWhisperer 自动化工具来完成,它可以检查代码中的常见漏洞,如 SQL 注入、跨站点脚本(XSS)和跨站请求伪造(CSRF)等。此外,代码安全扫描还可以帮助开发人员识别和修复其代码中的错误和不规范之处。
六、使用心得
通过初步使用,已经爱不释手了,主要体现在以下几点:
- 使用流畅:Amazon CodeWhisperer 使用体验流畅,能够通过注释生成代码,或者通过 AI 技术,推荐我将要写的代码。 这对于初学者非常友好,能够快速学习常用的接口调用方式和语法,简直是快速上手学习 Python 的神器。
- 文档和学习资源丰富:Amazon CodeWhisperer 提供了详细且丰富的文档和学习资源,甚至包括视频,对开发者友好,并且提供了高级操作的教程,如:自动化代码测试等。
- 多语音和平台的支持:除了西红柿的演示环境:mac _ pycharm _ Python。CodeWhisperer 支持多达 15 种开发语言,同样可以自动生成代码等等。
- 语法错误检测:CodeWhisperer 可以检测你的代码中的潜在语法错误,并给出相应的提示和修复建议。
- 实时代码建议:CodeWhisperer 可以根据你输入的代码片段,提供实时的代码建议和自动完成功能,让你更快地编写代码。
总之,CodeWhisperer 是一款非常实用的代码编辑器插件,可以助我提高编程效率和代码质量。如果你也是一名开发者,可以考虑使用 CodeWhisperer 来搞点事情了。