我们再次陷入软件危机

news2024/11/13 23:35:17

裁员、裁员、裁员,似乎永无止境。创业公司融资处于 5 年来最低水平。除了整体经济挑战之外,人工智能取代软件工作的担忧也即将出现。每天的科技新闻读起来就像世界末日的故事。

这又是软件开发的终结吗?

作为一名在互联网泡沫破灭后开始从事软件开发工作的人,我可以告诉你,这又不是世界末日。当我开始从事开发人员工作时,人们会告诉我“互联网已死”,让我去找一份真正的工作。互联网初创公司试图解决的问题仍然存在。21 世纪初的许多解决方案都被埋没了,只是几年后才重新出现。

一切还没有结束,就像 2000 年一样

2001 年,当我刚开始做初级开发人员时,互联网泡沫给科技行业造成了冲击。这促使谷歌推出广告平台以实现盈利。那些幸存下来的科技公司试图尽快实现盈利。然而,许多公司并没有活下来。科技和软件行业复苏,继续创新,并在接下来的几年里实现了显著增长。

“互联网已死”的末日故事当然不是真的。互联网、技术和软件的发展速度比以往任何时候都快。那时还没有结束,今天也没有结束。深吸一口气,环顾四周。我们又在亚音速飞行,仍然没有飞行汽车,我甚至买不到悬浮滑板。不戴眼镜的 3D 根本不存在,我们甚至没有 1980 年代星球大战电影中展示的视频通话。

自动驾驶交通堵塞——来源:Reddit 上的 seansinha

你的汽车甚至无法自己找到去停车场的路,更不用说在没有你监督的情况下在城市里行驶了。是的,有些自动驾驶汽车配备了大量可怕的传感器,比如谷歌 Waymo 的传感器。在自动驾驶汽车的引擎盖上放一个锥体,体验一下当前人工智能的威力。

人工智能不会很快取代任何开发人员

新的开发工具和更快的计算能力意味着我们需要更少的开发人员”是 21 世纪初的信条。事实恰恰相反。虽然单个软件项目需要的开发人员更少,但对技术的整体需求意味着项目数量会更多,因此需要更多的开发人员。人工智能和云大大提高了开发人员的生产力。然而,它们也带来了新的挑战和机遇,你需要更多的开发人员来应对。

如果您曾经尝试使用 Github Copilot、ChatGPT、Google Gemini 或Chevrolet Chat来编写代码,您会注意到这些模型的训练和应用存在很大的局限性。

LLM 培训与“AI 困境”

如果您要求任何LLM编写用于 iOS 应用内购买的 Swift 代码,您很可能会看到一个大约 50-60 行代码的 StoreKit1 实现。但是,两年前发布的 StoreKit2 大大简化了应用内购买流程,并将代码减少到只有几行。ChatGPT 或 Copilot 等 LLM 的训练要么没有最新的训练数据,要么训练数据以 StoreKit1 实现为主,这导致 LLM 始终使用 StoreKit1 实现,因为它“认为”这是最适用的。

这与 LLM 的工作方式有关。它们是语言模型,这些模型并不“理解”或“领悟”事物的真正含义。它们使用现有的信息和内容来产生变体。这种变体原来是新的东西,因为它以前并不以这种形式存在。然而,它是基于现有的训练数据的。这导致了人工智能困境,新创新很难进入社会,因为模型倾向于使用最适用、最受欢迎的答案。

“创建一张 2050 年软件开发人员开发计算机应用程序的照片” — 什么?计算机屏幕又在缩小,我们又要戴领带编程了?;)

在社会科学和计算机科学中,这种效应被称为马太效应或“富者愈富效应”。LLM 产生的信息越多,这些信息在被人类应用后就越能成为训练模型的一部分。当人类不再以自己的创造力为 LLM 提供新的东西时,LLM 就会停止应用新的东西,开始在已有的信息中原地打转。它最终会走到死胡同。

有一些方法可以在较小规模和更简单的实现中解决这些问题,例如推荐引擎。然而,在 LLM 广泛应用的全球范围内,几乎没有经过科学验证的算法可以解决这一难题。

目前唯一可行的解​​决方案是什么?人工干预。
欢迎回来,有真正大脑的自我思考肉体。

有些东西 LLM 可能永远学不会

LLM 需要训练。他们需要大量来自人类的数据来学习。他们需要以数字形式呈现的数据。

同样的根本问题也适用于编程。

让LLM将你 90 年代的 Macintosh 应用程序移植到现代 macOS 上?祝你好运。

这不仅仅是历史信息,也是你必须用来训练模型的非常具体的信息。信息的精确性并不是 LLM 所擅长的。算法不是为此而设计的。媒体上充斥着这样的例子,已经投入生产的 LLM 偏离了提供的输入数据,并产生了导致实际问题的变化。

你不能复制你不认识的有机物体

问问你最喜欢的神经科学家,当你坠入爱河时,人类大脑究竟发生了什么。答案是:我们并不确定。这完全没问题。科学还没有“调试”人类大脑。我们无法复制它。除了一些未来人类可能会认为是野蛮和中世纪的非常基本的手术外,我们甚至无法用医学方法治愈或治疗它。

科学并不清楚思维过程是如何运作的。

如果你连有机智能是如何运作的都不知道,你如何创造通用人工智能?你做不到。为了复制某种东西,你需要完全了解其功能的每个细节。人类距离了解大脑如何运作的每一个细节还很遥远。甚至更远没有了解大脑如何学习、存储信息,坦率地说,“我们对大脑知之甚少”。我们所能做的就是以一种非常原始的方式“模拟”大脑。

不要误会我的意思我喜欢法学硕士,我认为我们在人工智能方面取得了巨大进步。合成声音已经变得非常好,很难与自然人声区分开来。图像和视频生成非常棒。然而,我认为我们距离看到一部完全由计算机完成、完全没有人类干预、协助或干扰的真正的好莱坞大片还很遥远。

软件和技术已经超越了人类

技术、软件、云计算和人工智能的快速发展为我们目前在世界上采用的用例和解决方案提供了更多选择。有些挑战乍一看似乎与技术有关,例如自动驾驶汽车。

然而,我驾驶 BMW 自动驾驶汽车的经验是,大多数问题都源于人类在道路上制造的混乱,例如连其他人都看不懂的道路标记。自相矛盾的交通标志也是我最讨厌的问题之一。而这一切都发生在德国,这个以精确和法律准确性而闻名的国家。因为德国总是遵守非常具体和精确的规则。你会认为这是自动驾驶的理想环境。但事实远非如此。

如果人类不理解,计算机又怎么能理解呢?
正是人类的混乱阻碍了技术进步。

大多数人都不知道手机里有什么芯片,也不知道它们有什么用途。更不用说它们是如何工作的了。

人们不明白为什么他们的信用卡可以在国外使用。他们不明白他们的手机如何传输数据,如何通过 VLR和HLR进行身份验证。技术主宰着我们日常生活的每一秒,而大多数使用它的人甚至不了解它们最基本的工作原理。他们知道如何使用它,但缺乏基本的理解。人们每天使用但一无所知的技术数量令人难以置信。

一个技术进步速度快、远远领先于人类的社会可能会带来另一个黑暗时代。在这个时代,技术和科学需要隐藏在人们之外,以防止恐惧、神话和迫害。萨姆·奥特曼的警告可能表明我们的社会已经走向了那个方向。

我们的西方社会正陷入教育危机

人类要想跟上科技发展的步伐,不断接受教育和学习至关重要。然而,西方教育体系的衰落已使数百万人落后。

这不只是 Tom、Dick 和 Harry 的情况,软件开发人员也是如此。如果您查看现代云技术、无服务器应用程序和事件驱动架构等方法的采用情况,然后将其与“经典”三层 Web 应用程序的数量进行比较,您就会注意到,采用现代应用程序架构还有很长的路要走。甚至有些新应用程序是用传统架构构建的,在现代世界中毫无意义。它们之所以以这种方式构建,并不是因为它有意义,而是因为许多开发人员不知道更好的方法。

现在从伦敦飞往纽约的航班所需时间是80年代的两倍。

不管你信不信,现在仍然有大量网站没有针对移动设备进行优化(2024 年!)。我亲眼见过一些 Web 开发人员,他们甚至无法用最基本的方式解释 TCP/IP 甚至 HTTP 的工作原理。这就是他们每天依赖和使用的网络协议。

最近的科技裁员事件被归咎于“过去人员过剩”。然而,如果人员过剩能够带来更多的软件、更多的服务、更多的用户和收入,那么就没有必要裁员了。科技公司不但没有通过增加员工来提高生产力,反而在招聘更多员工时生产力下降了。

公司必须认识到,在人员配备方面,数量和质量之间要保持平衡。雇佣大量的人并不能解决问题,雇佣适量的合格人员才能解决问题。这些公司现在并没有缩减规模,而是在通过新的、更先进的人工智能工具提高生产力。他们最终会重新开始招聘,但将来会更加挑剔。

如今的学习曲线更加艰难,但学习却变得容易得多。拥有合适技能的开发人员和软件工程师即使在当前紧张的就业市场中也不会遇到问题。就像 21 世纪初一样。不断学习和跟上技术的发展曾经是、现在是、将来也将是在软件行业生存的唯一途径。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构2】链表(使用头插法和尾插法创建链表)、链表的插入和删除、双链表节点的插入、双链表节点的删除

1 链表 1.2 使用头插法和尾插法创建链表 2 链表的插入和删除 3 双链表 3.1 双链表节点的插入 3.2 双链表节点的删除 1 链表 链表是由一系列节点组成的元素集合。每个节点包含两部分,数据域item和指向下一个节点的指针next。 通过节点之间的相互连接最终串联成一个链…

【qt】自定义信号

我们在上篇中,服务器收到的消息是由线程类去处理的,消息在线程类中,传不到widget中的ui中去,如果我们要在界面显示客户端的消息,必须通过自定义信号. 1.构建信号 当线程收到信息,就会被填充在ba中&#xf…

Robot Operating System——自定义Service/Client通信消息结构

大纲 初始化环境生成自定义服务的工程创建包自定义消息package.xml完整文件 CMakeLists.txt完整文件 编译注册 使用自定义服务的工程创建包代码CMakeLists.txt编译运行 工程地址参考资料 在《Robot Operating System——自定义订阅/发布的消息结构》一文中,我们讲解…

Linux | 文件系统进阶:Inode与软硬链接艺术剖析

当时共我赏花人,点检如今无一半。 - 《木兰花》(晏殊) 2024.8.24 目录 1. 文件系统的基本概念 1.1 ls -l命令查看目录信息 1.2 stat命令查看具体文件的详细信息 1.3 inode ext2文件系统的主要组成部分: 例子:创建main.c文件 文件的创建步骤&a…

leetcode:2520. 统计能整除数字的位数(python3解法)

难度:简单 给你一个整数 num ,返回 num 中能整除 num 的数位的数目。 如果满足 nums % val 0 ,则认为整数 val 可以整除 nums 。 示例 1: 输入:num 7 输出:1 解释:7 被自己整除,因…

继续修改原神角色数据列表

<!DOCTYPE html> <html lang"zh-cn"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>原神4.8版本获得角色数据表</title> </…

【STM32】一些外设通用内容

在学习各种外设的过程中&#xff0c;发现外设有一些通用的东西可以总结一下&#xff0c;后面发现再继续更新。图来源于正点原子的学习视频和PPT。 目录 1 外设的时钟的开启 2 外设初始化的回调机制 3 外设的中断服务函数 4 HAL库中断回调机制 5 函数的常见…

SpringCache源码解析(一)

一、springCache如何实现自动装配 SpringBoot 确实是通过 spring.factories 文件实现自动配置的。Spring Cache 也是遵循这一机制来实现自动装配的。 具体来说,Spring Cache 的自动装配是通过 org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration 这个类来…

文件树控件开发

文件树控件和获取驱动信息功能 然后添加上查看文件信息的按钮 双击这个按钮添加上如下代码 void CRemoteClientDlg::OnBnClickedBtnFileinfo() {int ret SendCommandPacket(1);if (ret -1) {AfxMessageBox(_T("命令处理失败!!!"));return;}ClientSocket* pClient…

c++每日练习记录5-(链表的结尾指向nullptr)

解题方法&#xff1a;双指针法 ListNode *partition(ListNode *head, int x){ListNode *head1 new ListNode(0);ListNode *head2 head1;ListNode *head3 new ListNode(0);ListNode *head4 head3;while (head! nullptr){if (head->val < x){head1->next head;head…

成品CNC外壳的巧妙使用

有些时候10块买一个CNC外壳&#xff0c;钻个孔&#xff0c;比单独的3D打印更能提升板子的档次感&#xff1a; 这个CNC是真的好看&#xff0c;再加上3D打印辅助设计&#xff0c;堪称精美&#xff1a;

k8s安装Metabase开源报表系统

metabase是什么&#xff1f; metabase是一款开源的简易但强大同时又无缝兼容大数据和传统数据库的分析工具&#xff0c;帮助公司每一个人对企业数据的学习挖掘&#xff0c;进而达到更好的数据化运营和决策。 Metabase is a simple and powerful analytics tool which lets anyo…

热血传奇1.76版本完美仿官单机版安装教程+GM工具+无需虚拟机

今天给大家带来一款单机游戏的架设&#xff1a;热血传奇1.76版本完美仿官。 另外&#xff1a;本人承接各种游戏架设&#xff08;单机联网&#xff09; 本人为了学习和研究软件内含的设计思想和原理&#xff0c;带了架设教程仅供娱乐。 教程是本人亲自搭建成功的&#xff0c;…

软件上显示“mfc140.dll丢失”错误信息?那么mfc140.dll丢失该如何修复

mfc140.dll是 Microsoft Foundation Class (MFC) 库的一部分&#xff0c;这个库被用于基于 C 的 Windows 应用程序的开发。当 Windows 或软件上显示“mfc140.dll丢失”或“找不到 mfc140.dll”这类错误信息时&#xff0c;表示你的系统可能缺少与 Visual C 相关的组件或这些组件…

软考:软件设计师 — 14.算法基础

十四. 算法基础 1. 算法的特性 算法是对特定问题求解步骤的描述&#xff0c;它是指令的有限序列&#xff0c;其中每一条指令表示一个或多个操作。 有穷性&#xff1a;执行有穷步之后结束&#xff0c;且每一步都可在有穷时间内完成。确定性&#xff1a;算法中每一条指令必须有…

代码随想录算法训练营第三十五天 | 416. 分割等和子集

416. 分割等和子集 题目链接&#xff1a;力扣题目链接 文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;动态规划之背包问题&#xff0c;这个包能装满吗&#xff1f;| LeetCode&#xff1a;416.分割等和子集 给定一个只包含正整数的非空数组。是否可以将这个数组分割…

面向对象01:类和对象的创建

本节内容视频链接&#xff1a;面向对象04&#xff1a;类与对象的创建_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV12J41137hu?p63&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 1.类、对象定义及关系 类&#xff08;‌Class&#xff09;‌是一个模板或蓝图&#…

如何规避DDoS攻击带来的风险?服务器DDoS防御软件科普

DDoS攻击是目前最常见的网络攻击方式之一。其见效快、成本低的特点&#xff0c;使它深受不法分子的“喜爱”。对于未受保护的企业来说&#xff0c;每次DDoS攻击的平均成本为20万美元&#xff0c;当DDoS攻击汹涌而至&#xff0c;缺失详细的保护预案&#xff0c;企业很可能会陷入…

erlang学习:gen_server书上案例22.6练习题4

昨天没有输出Fun中的io的原因是因为在任务函数中没有调用Fun方法&#xff0c;相当于只传了Fun函数但是没有进行调用&#xff0c;因此没有执行Fun函数&#xff0c;所以控制台中没有进行io的输出&#xff0c;今天在add_job中调用了Fun方法并执行&#xff0c;所以输出了相应的io。…

图像数据处理22

五、边缘检测 5.4 Hough变换 该技术主要用于检测图像中的基本形状&#xff0c;如直线、圆、椭圆等。 Hough变换的基本原理 Hough变换的基本原理是将图像空间中的直线或曲线变换到参数空间中&#xff0c;通过检测参数空间中的极值点&#xff08;局部最大值&#xff09;&…