AI只会淘汰不进步的程序员

最近AI界的大新闻有点多,属于多到每天很努力都追不上,每天都忙着体验各种新产品或申请试用新产品。各种自媒体肯定也不会放过这个机会,AI取代程序员的文章是年年有,今天特别多。那么AI到底会不会取代程序员的工作呢?先说结论:不会!而且随着AI技术的发展,对程序员的需求会越来越旺盛。但是那些不学习不进步的程序员注定会被淘汰。

 很多人对程序员的工作有个误解,以为就是整天敲代码,打字速度决定产出。别笑,这是事实。比如这张图就很符合广大群众的日常想象。双手不离键盘,满屏的魔法字符...

事实上,大多数程序员的一天都是在摸鱼中度过。如果你看到他眉飞色舞全神贯注的用双手在键盘上敲击,那一定不是在工作。有人一定会问,程序员不写程序,那每天工作都在忙什么?为什么公司要养那么多程序员?

事实上绝大多数公司认为程序员写代码是不需要时间的,就是打字,属于8小时之外随手就可以做掉的工作,公司不为这部分工作量付费。对于一个正常公司的程序员,每天的主要工作主要是:

  1. 线上问题排查,这个第一优先级。再稳定的系统隔三岔五也会出问题。解决完问题之后还要相互甩锅。
  2. 跟产品经理撕逼,这个东西要不要做,做成什么样,到底有多紧急。
  3. 横向撕B,这个功能需要XX部门配合修改,给YY部门的接口需要调整,运维需要升级集群部署...反过来,你又不是我领导,凭什么要我们配合你改?改出问题来怎么办?你们自己在ZZ模块里处理一下就好了。
  4. 攀登屎山。代码重构?看了看deadline,算了还是打个补丁吧。但是在拉新屎之前,你得在屎山里找到一个能下脚的地方。不然就变成我只改了一行代码系统就崩溃了。

  5. 公司内耗。日报周报月报,述职考核,价值观学习...

扣掉以上所有工作,剩下的时间才是程序员写代码的时间。以我在国内外一线大厂和小作坊创业团队的经历,团队越小有效工作时间越高,这部分的工作时间实际占比大约为10%到20%。而且相比敲击键盘输入代码,系统设计,代码调试,思考理解占用了至少80%的时间,真正用于编码的时间每天最多最多不超过30分钟。

那么今天AI的编程水平到底到了一个什么程度,能不能让一个外行轻松的上手工作并完成任务?网上有很多例子,但是这些例子的作者大多是编程老鸟,剩下的也多少对编程有所了解。因为真正的让AI生成的程序跑起来还是需要有一定的编程知识。

我们以一个计算24点的程序为例。提问为:写一个python函数计算24点,函数声明为def f24(nums),nums为4个数字。

def f24(nums):
    # 生成所有4个数字的排列组合
    permutations = list(itertools.permutations(nums))

    # 尝试所有排列组合中的所有运算符顺序
    for p in permutations:
        for op1 in ["+", "-", "*", "/"]:
            for op2 in ["+", "-", "*", "/"]:
                for op3 in ["+", "-", "*", "/"]:
                    # 带括号的运算式
                    formula = "({0}{1}{2}){3}({4}{5}{6}){7}{8}".format(
                        p[0], op1, p[1], op2, p[2], op3, p[3], op4, p[4]
                    )

                    # 计算运算式结果
                    try:
                        result = eval(formula)
                    except ZeroDivisionError:
                        continue

                    if result == 24:
                        return formula

    return None

这段代码看上去没问题,用暴力穷举的方法解决24点问题。而且知道使用调用itertools.permutations来生成排列组合,此外还很贴心的考虑了除0错误。但是这段代码是跑不起来的!第一眼就能看到一个问题,"formula = ({0}...."那行的op4是什么鬼?再给他一点提示,告诉AI:op4没有定义,请修复。

第二次输出如下。还很贴心的指出:修正之后,op4这一变量已经不再需要,因为我们只需要生成三个运算符变量op1op2op3,分别对应于三个数字之间的运算符。希望这样的修改可以解决之前的问题。

import itertools

def f24(nums):
    # 生成所有4个数字的排列组合
    permutations = list(itertools.permutations(nums))

    # 尝试所有排列组合中的所有运算符顺序
    for p in permutations:
        for op1 in ["+", "-", "*", "/"]:
            for op2 in ["+", "-", "*", "/"]:
                for op3 in ["+", "-", "*", "/"]:
                    # 带括号的运算式
                    formula = "({0}{1}{2}){3}({4}{5}{6})".format(
                        p[0], op1, p[1], op2, p[2], op3, p[3]
                    )

                    # 计算运算式结果
                    try:
                        result = eval(formula)
                    except ZeroDivisionError:
                        continue

                    if result == 24:
                        return formula

    return None

不仅修复了op4未定义的错误,还顺手加了之前忘记的import itertools。试了几组测试数据结果都OK。但是在这里调用eval计算表达式有点作弊了,我们希望自己解析实现。

提问:eval函数能自己实现吗

回答:

是的,eval 函数可以使用 Python 代码的字符串来自行实现。通常建议尽可能避免使用 eval 函数,因为它会执行任何传递给它的代码,包括恶意代码。如果在代码中使用 eval 函数时不小心传递了不受信任的代码,则可能会导致安全漏洞。

为了在自己的代码中实现 eval 函数的基本行为,可以使用 exec 函数来执行字符串。以下是使用 exec 实现 eval 的示例代码:

...

这里的回答和代码实际不是我想要的,我要的是用逆波兰表达式解析表达式字符串计算来替换eval。所以重新提问:我想用逆波兰表达式来替换eval函数。具体输出略去,不仅像模像样的生成的一个生成逆波兰表达式的函数,还给了我详细的解释,懒得看了,就当他是对的。那么我们就重新写一遍24点函数吧。提问:好的。请用上面生成的函数帮我重新生成一遍计算24点的代码。

...

代码生成好了,本地执行,!遂弃坑,因为问题太多了,有时间定位问题并不断调教AI得出正确结果的时间,估计已经能自己写好几个实现版本了。

结论是AI并不具有逻辑推理能力和真正的编程领域相关知识,而是从他庞大的知识储备里根据你的提问拼凑出最有可能的响应,并且根据对话不断进行调整。

对于一个小白来说,用AI确实能得到一段功能实现个七七八八的代码,如果再努力查查资料加本地调试,可以得到一个能用的代码。但是工程上的实现与学校交作业不同,除了结果正确外还要考虑效率,错误处理,历史版本的兼容性,可扩展性,框架的整合,代码规范...而现在所有的AI编程平台本质都是一个加强版的编程培训班学员,背诵了大量的案例,需要的时候根据需求咣直接扔一坨出来,给点反馈就改改,再改改,最终还是需要你下场手把手的交。

但是现有AI的最大优点就是博闻强记,它翻越了大山大海见过你几辈子都没见过的代码和文档,通过不断训练掌握了对代码的八股文式解读技巧。对于高手来说,这就是一把屠龙刀,可以利用它极大的提高工作效率,AI可以高效的帮你完成以下任务:

  1. 已有代码的解读
  2. 需求明确的情况下帮你快速生成代码
  3. 编程过程中给出提示,不用死记硬背长长的函数名和参数格式。
  4. 帮助生成注释
  5. 快速学习了解新的知识点
  6. 无从下手的时候快速生成引导
  7. 处理大量简单重复工作

使用AI的过程也是一个学习的过程,对于新手来说在这个过程中可以快速的摸清相关知识的脉络,循序渐进,建立自己的知识储备库。如果一直是一个小白水平,则无法向AI给出高质量的提示得到所需要的答案,也无法根据AI的答案做进一步的修改。

其实从编程这项工作产生以来,AI技术就不断的推动着这个行业的进步,随着门槛的降低并不是程序员的工作被取代,而是这个行业的不断扩大和从业人员需求量的上升。从广义的角度来说,用计算机替代人工的工作都应该属于AI,编程从诞生的第一天起就不断的追求抽象和泛化,目的就是减少重复工作量,推广最佳实践,规划代码,降低学习门槛。到今天各种框架和开源类库都是这个目标的产物,也正是有这些技术的支持,程序员的就业市场才得以蓬勃发展。

试想一下如今还停留在汇编语言,编程只可能是一项高门槛的工作,整个行业只会服务与少量高端需求。正是技术门槛的不断降低,大量传统企业开始数字化转型和改造,带动了整个行业的发展也带来了巨大的就业机会。

所以AI淘汰程序员就是个谬论,就像工业革命革了就手工业者的命,但是机器大生产也带来了新的岗位。所以不断学习,不断进步,拥抱AI,让AI成为自身生产力的一部分才是每个从业者需要去做的。

未来AI就如外骨骼一样,是我们大脑算力的外部延伸。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/5711.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[chapter4][5G-NR][传输方案]

前言: 多天线传输的基本过程传输方案 前面见过数据加扰,调制,层映射的一些基本原理,算法。 这里重点讲一下传输方案 目录: 1: 下行传输方案 2: 上行传输方案 3: 资源块映射 备注&…

.net开发安卓从入门到放弃 最后的挣扎(排查程序闪退问题记录-到目前为止仍在继续)

安卓apk闪退问题排查记录logcat程序包名先看日志&#xff08;以下日志是多次闪退记录的系统日志&#xff0c;挑拣几次有代表性的发上来&#xff09;最近一次闪退adb shell tophelp一个demo说明adb shell dumpsys meminfo <package_name>ps&#xff1a;写在前面&#xff0…

训练中文版chatgpt

文章目录1. 斯坦福的模型——小而低廉&#xff1a;Alpaca: A Strong Open-Source Instruction-Following Model2. Meta 模型&#xff1a;LLaMA&#xff1a;open and efficient foundation language models3.ChatGLM4.斯坦福开源机器人小羊驼Vicuna&#xff0c;130亿参数匹敌90%…

SSM+LayUi实现的学籍管理系统(分为管理员、教师、学生三个角色,实现了专业管理,班级管理,学生管理,老师管理,课程管理,开课管理以及用户管理等)

博客目录jspservletmysql实现的停车场管理系统实现功能截图系统功能使用技术完整源码jspservletmysql实现的停车场管理系统 本系统是一个servlet原生框架实现的停车场管理系统&#xff0c;总共分为两个角色&#xff0c;普通用户和管理员&#xff0c;实现了用户管理、停车信息管…

Linux基础IO

本篇博客来讲述Linux中的新一模块--文件IO&#xff0c;我们来做简单的介绍和陈述。 在笔者之前的文章之中&#xff0c;已经对C语言中的文件操作做了简要介绍&#xff0c;我们旧事重提&#xff0c;再次进行一个简要的回顾。 目录 1.文件的操作 1.1打开文件 1.2向文件写入数…

Java多态

目录 1.多态是什么&#xff1f; 2.多态的条件 3.重写 3.1重写的概念 3.2重写的作用 3.3重写的规则 4.向上转型与向下转型 4.1向上转型 4.2向下转型 5.多态的优缺点 5.1 优点 5.2 缺点 面向对象程序三大特性&#xff1a;封装、继承、多态。 1.多态是什么&#xff1…

七结(4.2)遍历集合与javaFX界面

今天由学长学界们进行了一次授课&#xff0c;算是温习了一遍面向对象的知识&#xff0c;同时配置了关于javaFX的环境&#xff0c;以及一些关于项目的知识。 java学习总结&#xff1a; Collection的遍历&#xff1a; 迭代器遍历&#xff08;Iterator&#xff09;&#xff1a;…

leetcode 87. Scramble String(扰乱字符串)

scramble(字符串s) 算法&#xff1a; s长度为1时结束。 s可以拆分成2部分x和y&#xff0c;sxy, 这两部分可以交换&#xff0c;也可以不交换&#xff0c;即 s xy 或 s yx. 上面scramble还会递归作用于x 和 y. 给出相同长度的字符串s1, s2, 问s2是否可通过scramble(s1)获得。 …

WTW-16P 应用电路

1、WTW-16P 按键控制 PWM 输出应用电路 软件设置&#xff1a; 按键控制模式。 I/O 口定义&#xff1a; 选取 I/O 口 P00、P01、P02、P03 作为触发口&#xff0c;在编辑 WT588D 语音工程时&#xff0c;把触发口的按键定义为可触发播放的触发方式&#xff0c;就可进行工作。 BUS…

如何提高网站安全防护?

网站的安全问题一直是很多运维人员的心头大患&#xff0c;一个网站的安全性如果出现问题&#xff0c;那么后续的一系列潜在危害都会起到连锁反应。就好像网站被挂马&#xff0c;容易遭受恶意请求呀&#xff0c;数据泄露等等都会成为杀死网站的凶手。 1、让服务器有一个安全稳定…

百度双塔召回引擎MOBIUS

1. 概述 对于一个搜索或者推荐系统来说&#xff0c;分阶段的设计都是当下的一个标配&#xff0c;主要是为了平衡效率和效果&#xff0c;在百度的广告系统中&#xff0c;也是分成了如下的三层结构&#xff1a; 最上层的Matching阶段负责从全库中找到与query相关的候选集&#x…

KD2511N系列微电阻测试仪

一、产品概述 KD2511N系列微电阻测试仪是一款对变压器、电机、开关、继电器、接插件等各类直流电阻进行测试的仪器。其基本测试精度最高可达 0.05%&#xff0c;并具有较高的测量速度。 KD2511N微电阻测试仪使用了高精度恒流流经被测件以及四端测量&#xff0c;有效的消除了 引线…

Kafka 如何保证消息的消费顺序

文章目录先直接给出答案吧。在集群或者多partition下无法保障完全顺序消费&#xff0c;但是可以保障分区顺序消费。具体下面讲解。我们在使用消息队列的过程中经常有业务场景需要严格保证消息的消费顺序&#xff0c;比如我们同时发了 2 个消息&#xff0c;这 2 个消息对应的操作…

蓝桥杯——根据手册写底层

一、 DS18B20温度传感器 1.官方所给源码 /* # DS1302代码片段说明1. 本文件夹中提供的驱动代码供参赛选手完成程序设计参考。2. 参赛选手可以自行编写相关代码或以该代码为基础&#xff0c;根据所选单片机类型、运行速度和试题中对单片机时钟频率的要求&#xff0c;进行代码…

ssm入门

文章目录1.介绍ssm2.Spring篇基础内容&#x1fa85;什么是IOC&#xff08;控制反转&#xff09;Spring和IOC之间的关系IOC容器的作用以及内部存放IoC入门案例&#x1f4ec;DI&#xff08;Dependency Injection&#xff09;依赖注入依赖注入的概念IOC容器中哪些bean之间要建立依…

函数微分和导数的定义

1.我们先来看可导的定义&#xff1a; 相信这个大家都看的懂。 2.接下来我们看可微的定义&#xff1a; 你们有没用想过为什么会有可微&#xff0c;他是用来干什么的&#xff0c;我们接下来看下面这张图&#xff0c;特别是结合图2-11来说&#xff0c; 我们可以看到书上说可微是在…

【day2】Android Jetpack Compose环境搭建

【day2】Android Jetpack Compose环境搭建 以下是适用于 Jetpack Compose 的环境要求&#xff1a; Android Studio 版本&#xff1a;4.2 Canary 15 或更高版本Gradle 版本&#xff1a;7.0.0-beta02 或更高版本Android 插件版本&#xff1a;4.2.0-beta15 或更高版本Kotlin 版本…

MySQL 幻读问题

承接上文MySQL多版本并发控制MVCC实现原理 幻读现象 因为在RR&#xff08;可重复读&#xff09;隔离级别里&#xff0c;事务1的第二次查询没有生成新的readview&#xff0c;而是用的第一次查询时生成的readview&#xff0c;所以第二次查询返回2条数据&#xff0c;而不是3条数据…

看过来,这里有JavaScript技术干货?

今天是一篇正经的技术分享&#xff0c;针对JavaScript技能的十来个专业小技巧&#xff0c;如果你想提升一下JS方面的能力成为一个更好的前端开发人员&#xff0c;那么就可以接着看下去哦。 1、使用逻辑运算符进行短路评估 您可以使用逻辑运算符进行短路评估&#xff0c;方法是…

云边协同与人工智能AI的深度融合(云端训练、边端推理)

在面向物联网、大流量等场景下&#xff0c;为了满足更广连接、更低时延、更好控制等需求&#xff0c;云计算在向一种更加全局化的分布式节点组合形态进阶&#xff0c;边缘计算是其向边缘侧分布式拓展的新触角。 以物联网场景举例&#xff0c;设备产生大量数据&#xff0c;上传到…