别把 OpenAI 太当回事,它远未达到替换前端的地步
最近几个月,我和很多初入行的开发人员交谈,他们对AI越来越感到焦虑。他们看到像GPT-4这样的工具展示的越来越令人印象深刻的演示,担心等他们掌握了HTML/CSS/JS,就没有任何工作机会了。这种情绪现在在Twitter上广泛存在:
我认为网页开发工作并不会消失。我非常厌倦在网上看到的那些“FUD”(宣传恐惧、不确定性和怀疑的信息)。因此,在本篇博客中,我将分享我对未来的猜测。虽然情况将发生改变,但不会像人们所说的那样可怕。
很早之前就有自动生成代码的工具
CSS语言于1996年首次发布于Internet Explorer 3中。两年内,第一款“无代码”网站构建器Homestead应运而生。Homestead让人们可以在不写一行代码的情况下构建自定义网页:
从一开始,人们就一直担心新技术会使网络开发人员变得多余。在2000年代,是WordPress;在2010年代,是Webflow;在2020年代初,是“无代码”工具。某种程度上,网络开发人员已经过时了!现在,如果当地的面包店、牙医或艺术家需要一个网站,他们可能不会雇佣开发人员并支付数万美元来从头构建一个网站。他们会跳到SquareSpace,找到他们喜欢的模板,花费20美元/月。然而,网络开发人员仍然存在。
上周,OpenAI展示了GPT-4的功能。其中一个相当令人印象深刻的演示是:GPT-4可以将手绘的网站草图转换成完全功能的网站,包括一些JS代码来连接“揭示妙语”按钮。
非常出色,我认为它在原型设计方面有很大的潜力...但是让我们明确一点:几十年来,我们并不需要Web开发人员来构建这些类型的页面。这个HTML文档和现代前端开发人员编写的代码之间存在巨大的差异。为了更好地理解这段话,我们需要知道,随着互联网的发展,前端开发已经从简单的HTML页面转变为更复杂的Web应用程序和移动应用程序的构建。现代前端开发人员需要熟练掌握各种编程语言和框架,并了解如何优化性能和用户体验。因此,虽然这个HTML文档令人印象深刻,但它并不代表现代前端开发的水平。
展望未来
到目前为止,我看到的大部分演示都相当有限:一个简单的HTML页面,或者一个单独的JavaScript函数。这些都是一个开发人员在下午可以完成的事情。但这只是开始!如果事情继续以同样的速度加速发展,几年后就能够构建整个应用程序了,对吧?
虽然我不是像GPT-4这样的LLM专家,但我在高层次上理解它们的工作方式。从根本上讲,LLMs是超级强大的文本预测器。在给定提示的情况下,它们使用机器学习来尝试提供最有可能的字符集来跟随提示。像OpenAI这样的公司花费大量的时间和精力来调整模型,以改善输出。大量人工标注者对模型的输出进行“评分”,模型学习和演化。
如果你使用过像Chat GPT或Bing的AI搜索等工具,你可能会注意到,响应的正确率可能只有80%,但它们会带有绝对和不可动摇的自信。LLMs不能验证它们的假设或测试它们的假设。它们无法确认它们所说的是否正确。它们在玩一个概率游戏,并估计这个字符集似乎与提示中的字符集兼容。有时,响应中的某些部分是荒谬的。OpenAI团队将其称为“幻觉”。
延伸阅读:LLMs 是什么?
LLMs 指的是 Language Model with Legal Text,它是一种基于语言模型的人工智能技术,专门用于处理法律文件和文本。这种技术可以模拟人类律师的思维和行为,通过自然语言处理和机器学习算法,实现自动化的法律文件处理和分析。
随着技术的改进,我们可以期望一些粗糙的边缘被磨平,但从根本上讲,总会存在某种程度的不准确性。这些工具没有任何机制来客观地验证它们的响应。
在 GPT-4 的演示中,我们看到了 AI 可以修复自身错误的能力!只需要复制/粘贴错误信息,它就能找到并修复问题。不过,并不是所有生成的代码都是没有问题的。比如,最近我用 GPT-4 生成了一个使用 React 的 <Modal> 组件,尽管输出结果非常出色,但它还是存在一些无障碍方面的错误。这些问题可能不会被创建应用程序的人注意到,但最终用户肯定会发现!那么,代码中的安全漏洞又该如何处理呢?当出现严重问题时,责任归属于谁呢?
在举个例子,比如我的这个博客项目
再说一点:生成一份包含 50 行 HTML 代码的文档和生成一个可用于生产环境的 Web 应用程序之间存在着巨大的差异。像这个博客一样的小型 JS 应用程序有着约 65,000 行代码,分布在 900 多个文件中。这还不包括文本内容,只包括 JavaScript 和 TypeScript 代码。
即使准确率高达 95%,调试这些代码也非常困难。这就像一个开发者在数月内构建一个大型项目,却从未尝试运行任何代码,直到项目完全完成。这是噩梦般的情况。
AI 并不是神奇的存在,它的效果取决于其所训练的数据。代码片段在互联网上随处可见,而且通常都是通用的。相比之下,每个代码库都是独一无二的。大型开源代码库非常少。那么,AI 怎么能够学习如何构建真实世界的大型项目呢?
我们很快就会达到一个非开发人员可以通过聊天机器人快速构建小型自包含项目的阶段,这些项目目前需要使用类似 Webflow 的工具来构建。这很棒!但我认为,我们离主要科技公司放弃开发人员并用智能工程师替代他们的日子还有很长的路要走。
加强而非替代
从这篇文章中你可能不知道,但我实际上对 AI 很乐观。
我认为最有可能的情况是像 GPT-4 这样的工具会被整合到开发工具中,用于增强有技能的开发者所能做的事情。木匠没有被电动工具所取代,会计师没有被电子表格所取代,摄影师没有被数码相机/智能手机所取代,我不认为开发者会被 LLMs 所取代。
我想知道如果开发者的总体生产力突然提高了 2 倍会发生什么。会有更多的错误得到修复,更多的功能得到发布,更多的利润得到创造。有很多需要开发的东西,所以我们不会缺少开发者做的工作。我实际上认为这可能会增加开发者的总数。
今天,有很多公司根本不雇用软件开发人员。我曾经为 Konrad Group 工作过,这是一家为其他公司构建 Web 应用程序的机构,其中许多是家喻户晓的品牌。由于开发成本如此之高,他们更倾向于将他们的开发需求承包给外部机构,而不是在公司内部雇用开发者。
那些财富500强公司是根据当前的软件开发成本进行计算的。让我们假设他们需要4个每个15万美元的开发者,总共60万美元/年。对他们来说,支付50万美元给代理公司来管理这个需求更有意义。但是,如果 LLMs 真的能够增强开发者的生产力,他们可能能够雇用2名每人15万美元的开发者来完成同样的工作。突然之间,这个方案变得更有吸引力了!
让我明确一点:我不是经济学家,这都是猜测。我并不是说我知道事情会以这样或那样的方式发展。我的意思是,这不是不可避免的最坏情况。没有人知道这将会如何发展,我有些疲倦的是人们一直在表现得最坏的情况是不可避免的。
各行各业针对这样的问题都有讨论
Aaron Blaise是一位资深的动画师和插画家,曾在迪士尼工作了近20年,为《美女与野兽》(1991)、《阿拉丁》(1992)、《宝嘉康娜》(1995)等经典迪士尼电影作出了贡献。
几周前,他在YouTube上发布了一段视频:《迪士尼动画师对AI动画的反应》。在观看了这视频之后,你会发现他的观点很熟悉:他并不认为这些工具是威胁,相反,他认为它们将增加动画师的生产力,带来更多的动画师工作机会。
现在,各行各业的艺术家和知识工作者都在进行同样的讨论。人们担心他们的工作将被像GPT-4、DALL-E 2和Midjourney这样的人工智能所取代。GPT-4可以通过模拟的法律考试,并获得前10%的考试成绩。许多律师正在进行这些同样的讨论。
我的个人信念是,对于大多数工作专业人员来说,他们会找到将这项技术整合到他们的工作流程中的方法,从而增加他们的生产力和价值。某些任务可能会被委托给人工智能,但不会有太多工作被取代。
但如果我错了,LLMs完全可以取代软件开发人员呢?如果是这样,我认为LLMs将取代绝大多数知识工作者。这不是通过转型可以避免的海啸。没有什么更高的立场。因此,与其试图赌未来会带来什么,为什么不专注于你热爱、感兴趣和擅长的领域呢?
前端与其他工程学科
与其他工程学科相比,前端开发是否更容易被人工智能替代的争论在网上持续发酵,一些人建议开发人员应该转向后端或数据工程。但我认为这种看法完全是错误的。我不认为任何开发人员需要担心被取代,但如果有任何脆弱性,那么就在后端。
上周OpenAI的GPT-4直播展示了两个与代码相关的演示:
笑话网站的前端
基于Python的Discord机器人
这两个项目中,基于Python的代码对我来说似乎更适合生产。最近我用Node.js编写了一个Discord机器人,代码看起来非常类似。
相比之下,我每天编写的前端代码和生成基本HTML文档之间有很大的差距。
这是一个过度概括,但在过去的10年左右的时间里,很多复杂性已经从服务器转移到了客户端。单体Express应用程序已经变成了无服务器函数集合,而我们的前端已经从超链接数字文档演变成了完整的桌面应用程序。此外,前端是用户与产品交互的部分。公司通常希望其产品是定制的、独特的,根据其品牌精心制作的。相比之下,后端是看不见的。一个通用的后端比一个通用的前端更可接受。我们行业中有很多人认为后端开发比前端开发更难或更复杂,即“真正的”工程发生在服务器上。当然,这是无稽之谈。
我认为自己是一个全栈开发人员。我实际上是从后端开始我的职业生涯的,使用PHP和Ruby on Rails。我仍然花费很多时间编写后端代码,为我的课程平台服务。两端都有不同的难点,它们都很复杂、很难。
(顺便说一下,即使不涉及JS框架,前端开发仍然是复杂和困难的。我非常尊重专门使用HTML、CSS和vanilla JS制作高质量网站、专注于可用性和可访问性的人。我认为他们不会很快被人工智能取代。)
使用LLMs来帮助你学习
使用LLMs来帮助你学习 我听说有些人说ChatGPT在学习技术技能方面非常有帮助。如果你在教程中感到困惑,你可以向人工智能提出问题并得到解释!
对我来说,这是一个非常有趣的用例。实际上,ChatGPT就像一名编程伙伴,可以帮助你理解你不理解的事情。你可以提出具体问题并得到具体答案。但是我认为你需要小心使用这样的工具来帮助你学习。使用的方法有正确的和错误的之分。
错误的方式是把它当作GPS导航。当我要开车去某个地方时,我会把地址输入我的GPS,然后不加选择地按照它的指示行驶。通常情况下我会到达目的地,但这需要我零思考。结果,我的方向感完全退化了。现在我不能去任何地方,除非有个合成的声音告诉我该怎么做。
相反,我建议把它看作你是陪审团的一员,而LLM则是被告,站在证人席上。你会听取他们的陈述,但不会接受它作为事实。你会持怀疑态度,并对每个词都进行批判性思考。
不要盲目复制/粘贴ChatGPT生成的代码,逐行阅读,并确保你理解它。请向ChatGPT要求澄清。并使用权威来源(例如官方文档)仔细检查似乎可疑的事情。请记住,LLMs是100%自信,但不是100%准确。如果你遵循这个策略,我认为LLMs可以提供很多价值。
给那些有志于成为开发者的人的建议
我写这篇博客文章的原因,是专门为那些正在学习Web开发并感到焦虑和沮丧的人发声,他们觉得在这个领域花费这么多时间/精力来建立这些技能是没有意义的,因为整个领域即将被淘汰。
我不能保证事情会保持完全一样。我确实认为AI将对我们的工作方式产生影响。我从2007年开始涉足HTML/CSS/JS,自那以后,事情发生了很大变化。开发人员一直需要适应,随着技术的发展不断进化。
但到目前为止,我所看到的没有任何迹象表明我们的工作岗位受到威胁。我试图想象一下,如果非开发人员能够在不理解Web技术的情况下构建整个Web应用程序,会是什么样子,但我想出了很多理由说明它不会奏效,即使未来的GPT版本不会出现太多幻觉。
我可能是错的。我没有水晶球。但我真的不相信我们即将见证Web开发人员被淘汰的时代。我担心许多有志于成为开发人员的人没有理由却放慢了自己的步伐。
我不希望你在未来五年里看到软件开发变得更加受欢迎,而因为你停止追求自己的梦想而后悔。我鼓励你坚持努力学习,因为我相信软件开发人员的需求将会持续增加。
结束
今天的分享就到这里,感谢你的阅读,希望能够帮助到你,文章创作不易,如果你喜欢我的分享,别忘了点赞转发,让更多有需要的人看到,最后别忘记关注「前端达人」,你的支持将是我分享最大的动力,后续我会持续输出更多内容,敬请期待。
原文:
https://www.joshwcomeau.com/blog/the-end-of-frontend-development/作者:joshwcomeau
非直译,有自行改编和添加部分,翻译水平有限,难免有疏漏,欢迎指正
相关文章:

别把 OpenAI 太当回事,它远未达到替换前端的地步
最近几个月,我和很多初入行的开发人员交谈,他们对AI越来越感到焦虑。他们看到像GPT-4这样的工具展示的越来越令人印象深刻的演示,担心等他们掌握了HTML/CSS/JS,就没有任何工作机会了。这种情绪现在在Twitter上广泛存在:…...

前端基础HTML、CSS--8(CSS-5)
目标: 能够说出为什么要用定位 能够说出定位的4种分类 能够说出4种定位各自的特点 能够说出为什么常用子绝父相布局 能够写出淘宝轮播图布局 能够说出显示隐藏的2种方式以及区别 目录: 定位 综合案例 网页布局总结 元素的显示与隐藏 1.定位 …...

基于ASP网络办公OA系统的设计与实现
本系统是一个企业办公自动化系统,它简单易操作,第一次使用的用户只需申请一个本人的帐户,就可以方便的使用本系统了。 系统的用户分为3类,第一类为普通用户,第二类为管理员,第三类为超级用户。 1通过Web添加文件。操…...

C语言计算机二级/C语言期末考试 刷题(五)
收集了一些经典C语言计算机二级和C语言期末考试题库 整理不易,大家点赞收藏支持一下 祝大家计算机二级和期末考试都高分过 系列文章: C语言计算机二级/C语言期末考试 刷题(一) C语言计算机二级/C语言期末考试 刷题(二…...

2023-04-03 grafana-源码编译启动及添加prometheus数据源
摘要: 记录grafana-源码编译启动及添加prometheus数据源 代码仓库: https://github.com/adofsauron/tiflow-dev/tree/main/trunk/grafana-9.4.7 依赖: 必须为go1.19版本,低于此版本则编译报错 go version go1.19.2 linux/amd64 yum install -y yarnpkg 编译: ht…...

微软New Bing(GPT-4)写的Delphi诗歌
你好,这是Bing。我很高兴你对Delphi感兴趣。Delphi是一种编程语言,可以用来开发各种应用程序。我尝试写了一首赞美Delphi的诗歌,希望你喜欢: Delphi,Delphi,你是我的灵感 你让我创造出美妙的程序 你的语法…...

【进程地址空间】
目录:前言一、进程地址空间(一)进程地址空间是什么(二)为什么要有进程地址空间(三)重新理解进程地址空间前言 打怪升级:第52天一、进程地址空间 打怪升级之路开始!&…...

递归dfs入门
做题方法:确定枚举顺序,画出递归树 递归实现指数型枚举 题目编号: acwing.92.递归实现指数型枚举 题目描述: 从 1∼n 这 n 个整数中随机选取任意多个,输出所有可能的选择方案。 输入格式: 输入一个整数 n…...

华为OD机试用java实现 -【吃火锅】
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:吃火锅 题目 入职后,导师会…...

AI创作优美文章的秘密大揭秘!
随着人工智能技术的快速发展和普及,越来越多的企业和研究机构开始使用AI编程来优化其业务流程和提高效率。AI编程可以被定义为利用人工智能技术来完成特定任务的一种方法。它涵盖了机器学习、深度学习、自然语言处理、计算机视觉等多个领域,可以帮助企业…...

SpringMVC的拦截器
SpringMVC的拦截器 SpringMVC的拦截器SpringMVC的拦截器01-SpringMVC拦截器-拦截器的作用(理解)02-SpringMVC拦截器-interceptor和filter区别(理解,记忆)03-SpringMVC拦截器-快速入门(应用)(1)项目前准备(2)快速入门01…...

dolphinscheduler-3.1.4
1、相关环境 1.1、创建用户,配置免密 useradd hadoop; echo "Hadoop#149" | passwd --stdin hadoop#配置sudo免密 sed -i $ahadoop ALL(ALL) NOPASSWD: NOPASSWD: ALL /etc/sudoers sed -i s/Defaults requirett/#Defaults requirett/g /etc/su…...

大前端05-用vue轻量级第三方组件库快速创建个画板,可以支持画板、直线、圆形等输入,可以撤回,改变颜色
第三方组件介绍: 1. vue-whiteboard vue-whiteboard 是一个基于Vue.js的轻量级画板组件库。 GitHub仓库: https://github.com/craynic/vue-whiteboard 优势: 轻量级支持基本绘图功能,如画线、圆等支持橡皮擦功能支持清空画布 劣势&…...

ChatGPT使用案例之生成PPT
ChatGPT使用案例之生成PPT ChatGPT使用案例系列我们一直在寻找ChatGPT在哪些方面可以可以帮我们节省时间提高效率,越来越多的用户发掘出了ChatGPT更多实用性的功能,其中一项便是协助用户快速生成PPT。 作为一个基于大型语言处理模型的文字聊天工具,ChatGPT能够帮助用户围绕…...

ChatGPT基础知识系列之模型介绍
ChatGPT基础知识系列之模型介绍 前面我们已经介绍很多ChatGPT的使用案例了,更多案例可以参考我们下面的文章 ChatGPT使用案例之写代码 ChatGPT使用案例之画思维导图 ChatGPT使用案例之自然语言处理 ChatGPT使用案例之操作Excel ChatGPT使用案例之图像生成 ChatGPT使用案…...

ChatGPT助力软件开发
抛开Stack Overflow不谈,开发人员有了一个新的好朋友,它就是ChatGPT。ChatGPT是由人工智能驱动的语言模型,可以理解代码,还可以用自然语言回答问题。有了它,程序员再也不用在无尽的Stack Overflow页面和评论中搜索答案…...

这些关于高压放大器的常识,你知道多少?(二)
高压放大器是一种用于放大高压信号的电子测量仪器,具有高压输出,低噪声,高精度,高稳定性,高可靠性,低功耗,低成本等的优点。关于高压放大器的相关常识,相信还有不少新手工程师不太了…...

使用神经网络中的卷积核生成语谱图
主题思想: 正交基函数, sin,cos 是通过网络训练得到的参数。 使用一维卷积核直接对于原始音频,进行卷积生成语谱图; 使用一维卷积核生成语谱图特征, 不同于以往的方式,正是因为这些正交基函数是通过卷积…...

文章五:Python 网络爬虫实战:使用 Beautiful Soup 和 Requests 抓取网页数据
一、简介 本篇文章将介绍如何使用 Python 编写一个简单的网络爬虫,从网页中提取有用的数据。我们将通过以下几个部分展开本文的内容: 网络爬虫的基本概念Beautiful Soup 和 Requests 库简介选择一个目标网站使用 Requests 获取网页内容使用 Beautiful Soup 解析网页内容提取…...

【大数据之Hadoop】八、MapReduce之序列化
1 概述 序列化: 把内存中的对象,转换成字节序列(或其他数据传输协议),以便于存储到磁盘(持久化)和网络传输。 反序列化: 将收到字节序列(或其他数据传输协议)…...

Python网络爬虫之Selenium详解
1、什么是selenium? Selenium是一个用于Web应用程序测试的工具。Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。支持通过各种driver(FirfoxDriver,IternetExplorerDriver,OperaDriver,ChromeDriver)驱动真实浏览器…...

中睿天下受邀出席电促会第五次会员代表大会
3月21日,中国电力发展促进会(以下简称“电促会”)第五次会员代表大会暨第五届理事会第一次会议在京召开,中睿天下作为网络安全专业委员会会员单位受邀出席。 会议表决通过了第五次会员代表大会工作报告、第四届理事会财务报告、《…...

Chat GPT:软件测试人员的危机?
Chat GPT,作为一个引起科技巨头“红色警报”的人工智能语言模型,短期内便席卷全球,上线仅两个月活跃用户破亿。比尔盖茨更是如此评价“这种AI技术出现的重大历史意义,不亚于互联网和个人电脑的诞生。” 在各个行业备受关注的Chat …...

【Redis】高可用:Redis的主从复制是怎么实现的?
【Redis】高可用:主从复制详解 我们知道要避免单点故障,即保证高可用,便需要冗余(副本)方式提供集群服务。而Redis 提供了主从库模式,以保证数据副本的一致,主从库之间采用的是读写分离的方式。…...

WLAN速度突然变慢
目录 一、问题 二、在设置中重置网络 1. 按下组合键“WinI”打开设置,在设置窗口中点击“网络和Internet”。 2、点击左侧的“状态”,在右侧选择“网络重置”。 3、然后会进入“网络重置”页面,点击“立即重置”后点击“是”等待完成即可…...

GDAL python教程基础篇(12)GDAL和 Pillow 的互操作
GDAL和 Pillow GDAL和PIL处理和操作的对象都是栅格图像。 但它们又不一样。 GDAL主要重点放在地理或遥感数据的读写和数据建模以及地理定位和转换, 但是PIL的重点是放在图像本身处理上的。 至于在底层数据处理上,两者都可以用 numpy 转化的二进制作为数…...

快速学习java路线建议
还有2 ,3个月就要毕业了,啥都不会的你是不是很慌呢,是不是想知道怎么样快速学习java呢。嘿嘿!它来了。 首先是java的学习 ,推荐 【尚硅谷】7天搞定Java基础,Java零…...

【MySQL】深入浅出主从复制数据同步原理
【MySQL】深入浅出主从复制数据同步原理 参考资料: 全解MySQL之主从篇:死磕主从复制中数据同步原理与优化 MySQL 日志:undo log、redo log、binlog 有什么用? 文章目录【MySQL】深入浅出主从复制数据同步原理一、主从复制架构概述…...

Redis持久化和高可用
Redis持久化和高可用一、Redis持久化1、Redis持久化的功能2、Redis提供两种方式进行持久化二、RDB持久化1、触发条件2、bgsave执行流程3、启动时加载三、Redis高可用1、什么是高可用2、Redis高可用技术四、AOF持久化(支持秒级写入)1、开启AOF2、执行流程…...

【数据结构】第六站:栈和队列
目录 一、栈 1.栈的概念和结构 2.栈的实现方案 3.栈的具体实现 4.栈的完整代码 5.有效的括号 二、队列 1.队列的概念及结构 2.队列的实现方案 3.队列的实现 4.队列实现的完整代码 一、栈 1.栈的概念和结构 栈:一种特殊的线性表,其只允许在固定…...