首页 > 其他分享 >面对“失业焦虑”我们可以做些什么?让 AI 帮助自己变得更强大!

面对“失业焦虑”我们可以做些什么?让 AI 帮助自己变得更强大!

时间:2023-05-16 17:56:18浏览次数:30  
标签:焦虑 AI 代码 单元测试 dev 做些 ChatGPT Angular

我从 2007 年大学毕业参加工作至今,已经在软件开发这个岗位上工作 16 年了。这十六年来我也算经历过一些新的技术浪潮的洗礼吧。我工作的 SAP 是欧洲最大也是最成功的软件公司之一,主要的深耕领域是企业管理软件。我也经历了从本地部署软件(On-Premises)到云原生应用这种开发思维和理念的转变,也亲身体会到了 Docker 和 Kubernetes 等虚拟化技术给开发人员带来的切切实实的便捷和工作效率的提升。但这些,都远远没有今年年初以 ChatGPT 为代表的一系列 AI 技术让我感到震撼。

在这里插入图片描述

SAP 其实也早已发布了面向企业级用户的与某一细分领域和业务紧耦合的 AI 服务,这些 AI 服务部署在 SAP 自己的 BTP 云平台上,因为目标用户不是 2C 的个人群体,所以不像 ChatGPT 这样为普通大众所知。

尽管有业界不少大佬也发出了诸如 三年之后 AI 将终结编程 这种言论,但我这个人生性比较乐观,就算有一天 AI 真的会终结绝大多数程序员,只剩下极少数的算法工程师,那我也要尽可能在 AI 终结我之前,充分利用 AI 让自己变得更强大。

我之所以会有这种相对乐观的想法,是因为使用 ChatGPT 等一系列 AI 产品这几个月,我发现自己的工作和学习效率都比以前有进一步的提升。

对于程序员来说,大家想必都习惯了通过 ChatGPT 来生成代码,然后自己手动稍加调整,这样能在极短的时间内得到可以运行的代码。除了这种最常规的操作之外,本文想分享一些笔者在日常工作中是如何使用 ChatGPT 等 AI 工具提高自己工作效率的例子。

为代码生成对应的单元测试代码

使用的 ChatGPT prompt:为下面这个<语言>实现的代码,编写对应的单元测试代码,然后将要生成单元测试的代码喂给 ChatGPT:

在这里插入图片描述

ChatGPT 会自动生成单元测试代码,我们可以在这些基础上,进行人工审查然后修改。

在这里插入图片描述

利用 ChatGPT 帮助自己研读经典框架的源代码

比如我是一个 Angular 开发人员,几乎每天都要和其标准库里的 HttpClient 工具库打交道。

假设我对其 request 方法感兴趣,想阅读其源代码,但是对于里面个别语句不甚理解:

在这里插入图片描述

那么我首先让 ChatGPT 给我介绍整个 request 方法大致完成一件什么事情,使用 prompt:逐行介绍一下下面这个方法的用途。这个方法来自 Angular common 开发包的 HttpClient 实现 http.mjs.

在这里插入图片描述

ChatGPT 给出的答复,我一目十行,很快就了解了这个方法的大致目的。

在这里插入图片描述

然后再给 ChatGPT 发出指令,提醒它要逐行介绍:我让你逐行介绍,你的介绍太简略了。

在这里插入图片描述

于是得到了我期望中的答案。

代码重构和性能优化

我首先故意写了一段存在性能问题的 ABAP 代码。这段代码首先从数据库表 tadir 里读取 200 条 Class 定义,然后循环这 200 条记录,在循环体内再次根据定义里的 Class 名称字段,到另一张数据库表 seoclasstx 里读取 Class 的描述信息。

REPORT z.

DATA: lt_dev  TYPE TABLE OF tadir,
      ls_dev  TYPE tadir,
      lv_text TYPE seoclasstx-descript.

SELECT * INTO TABLE lt_dev FROM tadir UP TO 200 ROWS WHERE object = 'CLAS' AND author
  = sy-uname.

LOOP AT lt_dev INTO ls_dev.
  SELECT SINGLE descript FROM seoclasstx INTO lv_text WHERE clsname = ls_dev-obj_name
     AND langu = sy-langu.

  WRITE:/ 'class name: ', ls_dev-obj_name, ' text:', lv_text.
ENDLOOP.

这样应用服务器总共会对数据库服务器造成 1 + 200 = 201 次读取操作。

我询问 ChatGPT 以上代码是否存在可以优化的地方,ChatGPT 的回复一语中的,排在第一点的建议就非常切中要害:将第二个 SELECT 语句放在循环体之外:

在这里插入图片描述

我再对 ChatGPT 发出了指令:请给我一份性能优化,重构后的代码。

ChatGPT 也完美的完成了任务:

将第二个 SELECT 语句提至循环体外,现在数据库服务器总共的读取次数从 201 次降低到了 2 次。
在这里插入图片描述

阅读正则表达式觉得头疼?让 ChatGPT 来替我们阅读

下列这两段正则表达式是我负责的 SAP 电商云前台登录页面里,用户名和 password 两个字段验证值合法性的正则表达式:

export const EMAIL_PATTERN =
  /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; // eslint-disable-line

export const PASSWORD_PATTERN =
  /^(?=.*?[A-Z])(?=.*?[0-9])(?=.*?[!@#$%^*()_\-+{};:.,]).{6,}$/;

在这里插入图片描述
在这里插入图片描述

说实话这些晦涩的正则表达式语法,我从来就记不住,每一次都是要用的时候,才临时去翻语法文档。

有了 ChatGPT 之后,我可以直接让它告诉我这些正则表达式的设计思路:

在这里插入图片描述

利用 ChatGPT 帮助自己入门一个相对比较陌生的技术领域

我使用 Angular 开发已经有一段时间了,现在我想学习 React,因此向 ChatGPT 咨询,让它给我建议一些 React 的学习要点:

在这里插入图片描述

作为一个已经有 Angular 基础的前端开发人员,我最感兴趣的是 Angular 和 React 二者最大的区别是什么?从 ChatGPT 那里我得到了一些解答。

虽然我明白 ChatGPT 的回答只能作为参考,但至少它能够给我很多启发和灵感,作为我进一步到 React 官网开始精读和深入学习的指引。

在这里插入图片描述

以上就是我日常工作中一些使用 ChatGPT 提高开发效率的小心得。尽管 Google 搜索也能某种程度上满足我的需求,但是 Google 搜索需要我精心选择关键字,然后从搜索结果列表里手动筛选出需要继续阅读的网页。并且上面几个例子里正则表达式的解读,单元测试代码的自动生成,代码重构和性能优化的建议,现阶段 Google 还无法像 ChatGPT 这样能够以交互式的方式完成我发出的指令。

即便 AI 将来某一天终究会干掉程序员,但是在这一天到来之前,我仍然会始终保持积极的心态,利用 AI 不断提高自己的开发效率。

标签:焦虑,AI,代码,单元测试,dev,做些,ChatGPT,Angular
From: https://www.cnblogs.com/sap-jerry/p/17406394.html

相关文章

  • AI女友同时和1000人谈恋爱,狂赚500万
    AI女友,预计暴赚4亿要说当下什么最火,AI首当其冲无可置疑。00后网络红人红卡琳·玛乔丽(CarynMarjorie)最近与ForeverVoices公司合作,通过视频训练等方式打造出个人形象、声音和性格的AI虚拟女友,就像在和玛乔丽本人交谈一样。简单来说,就是出售AI版本的自己,和男友们谈恋爱,每分钟收费......
  • mysql 5.7 Expression #1 of ORDER BY clause is not in GROUP BY clause and contain
    https://www.shuzhiduo.com/A/gGdX3BNp54/https://blog.csdn.net/wufaqidong1/article/details/126263023 使用mysql在执行一条插入语句时insertintochannel(channel_id,channel_no,channel_name)values(1,'',"hhh");报错:Expression#1ofORDERBYclaus......
  • JS逆向 -- 分析某站aid、cid、w_rid和sid的加密过程
    接上节课内容JS逆向--分析某站buvid3和_uuid的加密过程JS逆向--分析某站b_lsid值加密过程一、清除cookie信息,刷新网页,ctrl+f搜索sid,这样找到的数据是在url里或者响应信息里面,全局搜索找到的一般都是在js里面的数据,找到一个v2的数据包,里面有setcookie二、该数据包是get请求,分析......
  • Golang URL query contains semicolon 报错解决方案
    ​ 报错信息http:URLquerycontainssemicolon,whichisnolongerasupportedseparator;partsofthequerymaybestrippedwhenparsed;seegolang.org/issue/25192 高版本http废除了分号做分隔符,会在http库中做报警输出,基础库代码如下:func(shserverHandle......
  • 【Mysql】update时报错:Lock wait timeout exceeded; try restarting transaction
    1、查找正在执行的事务SELECT*FROMinformation_schema.INNODB_TRX;2、杀掉LOCKWAIT的进程trx_mysql_thread_id:进程idkillxxxOR3、查看所有进程SHOWPROCESSLIST;4、杀掉异常的进程,比如Sleep状态、影响你正在操作的业务的进程id:进程idkillxxx......
  • Codeforces 1423C - Dušan's Railway(树分块)
    首先\(k>3\)当\(k=3\)做,也就是说题目等价于找不超过\(10n\)条路径使得任意两点间的路径都可以表示为选定的这些路径中不相交的三者的并。先考虑链怎么做,关于这个\(3\),很自然的想法是取若干关键点,关键点之间两两连边,其余点再像相邻两关键点连边,因此考虑分块,每\(B\)个点设......
  • 浅析AIGC for MMKG
    摘要:AIGC和多模态知识图谱(MMKG)中的知识获取又是怎么实现的呢?他们之间有什么关联呢?本文分享自华为云社区《GPT-4发布,AIGC时代的多模态还能走多远?系列之四AIGCforMMKG》,作者:码上开花_Lancer。与传统知识图谱不同,MMKG以多模态数据作为源头,从多方面描述实体和关系,构建出一个可以......
  • mysql explain rows理解
    在MySQL性能调试中,常常使用EXPLAIN解释MySQL执行计划,从而用来估算性能耗时。其中,rows用来表示在SQL执行过程中会被扫描的行数,该数值越大,意味着需要扫描的行数,相应的耗时更长。但是需要注意的是EXPLAIN中输出的rows只是一个估算值,不能完全对其百分之百相信,如EXPLAIN中对LIMITS的支......
  • apache shiro - 动态创建filterchaindefinitions
    [url]http://www.360doc.com/content/14/0207/13/834950_350425926.shtml[/url]有时,在某些系统想通过读取数据库来定义org.apache.shiro.spring.web.ShiroFilterFactoryBean的filterChainDefinitions。这样能够通过操作界面或者维护后台来管理系统的链接。......
  • C#异步方法async/await的三种返回类型
    有群友问C#异步方法async返回值Task和void的区别?看似简单,但不容易把它们用好。在C#中的异步编程已经成为现代编程的标配,异步方法(async/await)是实现异步编程的一种常用方式。在异步方法中,可以使用Task或void作为返回类型,还可以使用ValueTask返回类型。本文将介绍异步方法中3个......