当前位置: 首页 > news >正文

编程的未来 - 还有未来么?

缘起

唐门教主上个月某天深夜写了一篇博客 --《编程的未来》,要我谈谈感想。 这也是最近软件工程师们聊得比较多的问题,上周,在上海的 “关东小磨” 和十多位 CSDN 博主聚会的时候,大家也稍微谈了一下这个话题,但是谈得不透。AI 就像 房间里的大象 那样,大家都从各自的角度感到了它的某种威胁,但是不能得到全面的观感 — 我想在本文整理一下我的思路。

在这里插入图片描述

软件行业有多少部分会被取代

AI 编程的能力边界

首先,从去年开始的 AI 辅助编程浪潮中,很多人提到,从具体的函数实现来看,目前的 AI 代码生成有很多做得不好的地方,或者有很多的 bug。 我认为不必纠结这些 bug,它们一定会不断地被解决,就是一个时间问题,也许是半年,也许是一周。 😄 但是,在编程方面,它有一个能力的边界,这个边界未必能很快跨越。
慕测平台的一篇高质量文章总结了 AI辅助编程目前的能力边界,我总结如下:

  • 生成的代码长度有限制。 很多情况下,不能输出完整的代码,还需要程序员来拼接代码,当然这些程序员要非常懂这些程序,才能拼接成功。 //问程序员:你参加过的最复杂的项目,总代码量有多少?能超过一千行代码么?
  • 不能有效处理超长的程序,开发环境的配置,多线程编程,已有程序的 bug 修复等问题。 //问程序员:你修复过的最复杂的 bug 是什么?
  • 泛化能力有限,如果是一个活人程序员,他在一个算法测试平台通过了很多编程练习,那么,他在另一个不同的编程平台也应该能应对自如。但是,目前的 ChatGPT 还是不能融会贯通,举一反三。 //问程序员:你能举一反三么?
  • ChatGPT 处理复杂编程中的抽象的 “类” 和 “依赖关系” 的能力还比较弱。 //问程序员:你在这方面能力如何?你写的最复杂的 OO 设计有多少的父类子类?
  • Fred Brooks Jr. 在著名的 “没有银弹” 论断中提出,软件开发中的关键任务就是理解并处理反映软件构成的复杂的概念, 目前的 AI辅助编程也并没有在这个方面取得突破。 //问程序员:你构建过多么复杂的软件,这个软件运行了几年,这几年中你是如何维护这个软件的?
  • ChatGPT 等编程辅助工具缺乏创造性编程的能力。 //问程序员:你曾经创造性地解决过什么问题?
  • ChatGPT 等工具的能力,取决于提问者的能力。 //问程序员:你的提问能力如何?

如果 AI 做不到上面这些, 那么,我们的程序员有多少能做到的呢? (💡 上面红字部分,通常会出现在面试中,你会回答么?)

程序 - 软件 - 软件企业

在我们深入谈 AI 会取代程序员... 之前,我们先看看 软件 包含哪些成分。
我们要讨论的,AI辅助编程在工业尺度上,会起到什么作用? 在《构建之法》这本书里, 我提到下面的三个公式,我们可以看到 “编程” 到底在 IT 这个工业中,到底处于什么位置:

程序 = 算法 + 数据结构
软件 = 程序 + 软件工程
软件企业 = 软件 + 商业模式

现在的 AI 辅助编程,只是在第一个层次极大地帮助了程序员,但是在后面的两个层次,还是要靠人。 各种大语言模型和它们衍生的工具会在文档生产,归纳,流程处理方面有很多帮助,但是关键的地方,还是要靠人。

程序运行在 CPU 上,都在干什么? 都是对数据进行各种操作,增删改查 (Create Retrieve Update Delete — CRUD),一个好的程序,要保证这些操作的正确和高效,同时,要确保程序正确使用计算机的各种资源(内存,网络,外设,等)。 这些问题,都是可解的,AI 一旦学会,就能任劳任怨地做好。 但是人类通常有各种智力、懈怠、粗心等毛病,会犯很多错误。在软件行业发展的几十年中,代码正在不断地帮助人类,避免人类犯错误。就像文字编辑器能自动提示人类的拼写错误那样, 代码编辑器二十年前就能通过自动变量提示,语法高亮等方法,避免程序员犯错误,加快编程的效率。

所以,我们有 AI 在帮助大家写完整的函数,处理常见的问题,这是一件好事。

那么,这样的好事,为何让很多程序员非常担心呢? 在这个博客中, 我引用了软件工程专家 Kent Beck 的论断:

AI 会取代一个程序员 90% 的技能,但是会把剩下的 10% 的技能放大一千倍。

每个程序员都照照镜子问自己,我有哪些技能,是属于可以通过 AI 放大一千倍的

如果你只会增删改查,那么, AI 的确可以完全取代你。 这个博客也提到了一些 AI 短期内不太可能达到的技能:

  • 对技术的娴熟掌握,高效 debug 的能力
  • 对软件体系架构的全面理解,集成的能力,把你写的 1000 行代码集成到现有的十万行代码的系统中去,能把各个模块集成、优化为一个高效的系统。
  • 对软件运行数据的理解,能从数据中洞察到问题,而不只是一个会念数据的人类。
  • 提问的能力,向用户提问,了解用户的真正需求,向领导、同事提问,了解大家的思路,当然,还有从对方的角度思考问题的能力,交流的能力。
  • 和软件团队其他角色和流程合作的能力。 一个产品的质量,可能取决于整个流程中最差的那个角色和环节。 一个软件工程团队 有售前、产品经理,产品架构、技术架构、QA、安全体系、UED、售后支持等角色,程序员在编程阶段获得了 AI 工具的赋能,能否让其他角色和流程也能获得类似的赋能呢?
  • 对其他业务的了解,例如,你想让 AI 帮助医疗行业,你对医疗行业了解多少呢?

我们的程序员,也要多了解 #软件工程#, #商业模式#, #行业#, 才能让你的这些才能被先进的 AI 工具放大。

衣食住行的 “衣” 的变化

随着 AI辅助编程的发展, 程序员是不是就失去越来越多的工作机会,最后行业萎缩,没有价值了呢?

我们看看人类需求的第一位,在 “衣食住行”中名列前茅的 “衣”, 看看它的发展是不是会给程序员一些启示。 资料来自于网络和 ChatGPT,New Bing(例如百度百科,和一些文章https://www.sohu.com/a/400708937_99933236)

  • 百万年前 - 树叶、兽皮

  • 几千年前 - 用野生的麻。 用石轮或陶轮搓捻成麻线,然后再织成麻布。

  • 几千年前 - 人们已将蚕蛾驯化家养,并能织出较为精细的丝织物。到了殷商时期,养蚕已很普遍,人们已熟练地掌握了丝织技术。

  • 几千年前 - 手工织布机的出现和缓慢改进。 “男耕女织”,“子不学,断机杼” 的说法就出现在这个时代。
    -在这里插入图片描述
    还有这样的:

    整天坐着,一根线一根线地织布,似乎和现在码农一行一行地编码也很类似啊

  • 一千年前: 提花织机的出现

  • 在中国古代织造技术中,最为复杂的就是提花技术。为了使织机能反复有规律地织造复杂花纹,人们先后发明了以综片和花本作为提花装置来贮存纹样信息,形成了多综式提花机和各类花本式提花机。提花技术是纺织史上的里程碑,提花机的基本概念是将提花规律贮存在织机的综片或是与综眼相连接的综线上,利用提花规律的贮存来控制提花程序,使得这种记忆信息得到循环使用。用今天的眼光看,古人发明的提花技术就是一种图形信息存储技术,如同计算机的程序,编好程序之后,所有的运作都可以重复进行,不必每次重新开始。

  • 黄道婆(十三世纪)学习、改进、推广了棉纺织技术和先进工具(现代程序员的祖师爷应该是她们?)

  • 在这里插入图片描述
    现在网上流传的 “爱心 Python 代码” 等等, 能编出这样的花样么?

  • 百多年前: 飞梭的织布工具,和珍妮机(Spinning Jenny)的出现,大大提高了生产率,也引起了手工业纺纱者的愤怒。他们捣毁了珍妮机,烧毁了发明者的房屋。 但是革新的浪潮接着打过来,紧接着就出现了水力和蒸汽驱动的纺织机。 到 1830 年,英国整个棉纺工业以及基本上完成了从工场手工业到以蒸汽机为动力的机器大工业的转变。

  • 1844 年,德国诗人海涅写下描述纺织工人苦难情况的诗歌《西里西亚的纺织工人》

我们织进去三重的诅咒—— 我们织,我们织!

  • 在这里插入图片描述
    这首诗也选入了 1980 年代的中学课本。在工作场所诅咒自己的工作… 现在还有么?

上段文字提到的提花机,也传到了欧洲,在十九世纪获得极大的改进,其中一个模型就是雅卡尔提花机。 雅卡尔发明了一种用打孔卡片控制的纺织机,纺织机可以根据预先设置好的“程序”(虽然当时还没有“程序”这个概念)移动丝线,织出漂亮的布匹。这是第一次把信息通过一个机器能够识别的载体记录下来,再由这个信息来控制机器的运转。
现代计算机的先驱巴贝奇从雅卡尔的提花机得到了启发,很快想到可以把穿孔卡片应用到他正在设计的分析机上。分析机读卡装置的原理与雅卡尔提花机类似,也是靠探针尝试穿过卡片,要么顺利穿过,要么被卡片顶住,两种不同情况下的探针位移能产生不同的机械传动——这其实是计算机史上最早的二进制应用。

  • 百年前:化学纤维的出现,让衣服不再是 “一根一根的丝线纺织而成”
  • 几年前:衣服裤子👖 有破洞,都不是 bug 了,而是 feature! 牛仔裤做好后,还专门去做旧,搞出破洞。 (另外,把牛仔裤做旧、做烂的过程,对工人和环境并不友好,这点很多人并不了解!)
  • 在这里插入图片描述

请问

  • 在这千万年的演化中,服装行业是变大了,还是萎缩了,在这个行业工作的人,是有更多的机会了,还是更少的机会?
  • 现在软件编程这个行业,是处于纺织业的哪个阶段呢? (我想肯定不是破洞当作 feature 的阶段)
  • 巴贝奇这样的计算机先驱从纺织机械的设计中得到了启发,你能从纺织业或者其他行业得到什么启发呢?
  • 你认识了这个软件编程行业处于对应的 “衣” 阶段,你觉得应该从 “衣” 那个阶段获得什么启示呢?

一波一波的浪潮

另外,让工具来帮助编程,和软件工程的各个环节,一直以来都是软件工程师和软件科学家的愿望和探索。 从自动语法提示,自动测试用例生成,到 CI/CD,这几十年都有巨大的进步。 CASE (Computer Aided Software Engineering) 一度是一个非常热门的研究领域,最近为何很少听到了呢? ChatGPT 给我如下的解释:

CASE(Computer-Aided Software Engineering)是一种计算机辅助软件工程的方法,旨在提高软件开发效率和质量。它包括了多种工具和技术,如需求分析、数据建模、程序设计、测试等等。
然而,CASE在20世纪90年代之后逐渐没落了。其中的原因有以下几点:
复杂度高:CASE工具本身就很复杂,而且很难与其他工具集成。这导致了学习和使用CASE的门槛非常高,普通开发人员很难掌握。
成本昂贵:CASE工具的价格很高,因此只有大型企业才能承担得起。对于中小型企业和个人开发者来说,购买CASE工具是一笔巨大的财务负担。
缺乏标准:CASE工具之间缺乏标准化,因此不同的工具之间很难进行兼容和集成。这导致了开发效率的降低,使得CASE的应用受到了限制。
功能单一:CASE工具通常只能完成一部分的软件开发任务,无法满足复杂软件开发的需求。因此,开发人员往往需要同时使用多个CASE工具,这增加了开发的复杂度和成本。
综上所述,以上原因导致了CASE的没落。虽然现在已经有了更多的开发工具和技术,但CASE的思想仍然在软件开发中发挥着重要的作用。

我个人也搞过一些 “程序理解”, “自动编程” 的实验,下图是我和微软研究院的小伙伴在 2019 的内部 “黑客松” 上展现了 “自动找到你想要的 Python 代码” 的功能。核心想法是借鉴了 2018 年 GitHub 团队的工作,用 word-embedding 来训练和寻找代码、函数说明、代码注释的相关性,帮助用户找到他想要的代码。 这个小项目最后还得奖了。😄
在这里插入图片描述
在这里插入图片描述
一轮一轮的小波浪之后,一个大潮正扑面而来:
在这里插入图片描述

数据来自 CSDN 趋势图。

长忆观潮,满郭人争江上望。来疑沧海尽成空,万面鼓声中。
弄潮儿向涛头立,手把红旗旗不湿。别来几向梦中看,梦觉尚心寒。

IT 界每隔几年就有一波浪潮或者泡沫,新的一波大潮已经打过来了,躲?能跑多远?不如反方向跑,迎接浪潮,就像古诗中说的勇向涛头立 的弄潮儿。

相关文章:

编程的未来 - 还有未来么?

缘起 唐门教主上个月某天深夜写了一篇博客 --《编程的未来》,要我谈谈感想。 这也是最近软件工程师们聊得比较多的问题,上周,在上海的 “关东小磨” 和十多位 CSDN 博主聚会的时候,大家也稍微谈了一下这个话题,但是谈…...

从零开始搭建群众权益平台(二)

这篇文章我们要建立的群众权益维护平台需要提供用户注册、登录、提交和查看问题或建议的功能,并且支持电话短信登录。在这个过程中,我们需要存储用户的登录信息。 我们将使用Node.js和Express.js作为后端框架,MongoDB作为数据库,并且使用Twilio服务发送短信验证码来实现手…...

Mysql之数据备份

一.日志 1.MySQL 的日志默认保存位置为 /usr/local/mysql/data2.修改日志配置文件 vim /etc/my.cnf [mysqld] ##错误日志,用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启 log-error/usr/local/mysql/data/mysql_error.log #指定日志的…...

【数据库数据恢复】SQL Server数据表结构损坏的数据恢复案例

数据库故障&分析: SQL server数据库数据无法读取。 经过初检,发现SQL server数据库文件无法被读取的原因是因为底层File Record被截断为0,无法找到文件开头,数据表结构损坏。镜像文件的前面几十M空间和中间一部分空间被覆盖掉…...

C语言/C++ 之 打飞机游戏

【项目简介】 1、设计思想:本项目主要是为了实现打飞机游戏,主要包括5个函数模块,和1个主函数框架。分别是chu_shi_hua();、you_cao_zuo;、wu_cao_zuo();、show();、main();等。项目完成过程中主要运用了C/C中的输入输…...

在 Docker 中部署 Mino 并挂载配置文件

创建本地目录 首先,在主机上创建一个目录,用于存放 Mino 的配置文件。例如,创建一个名为 mino 的目录,用于存放 Mino 的配置文件。 mkdir mino拉取 Mino 镜像 使用以下命令从 Docker Hub 上拉取 Mino 的最新镜像: …...

无限脉动:释放音乐和区块链在音乐领域的力量

音乐是一种永恒的通用语言,它将人们聚集在一起,超越了边界,在我们灵魂深处产生共鸣,创造联系。在当今数字时代,随着区块链技术和去中心化网络的出现,音乐世界正在经历一场深刻的变革。 我们在与艺术家合作&…...

读发布!设计与部署稳定的分布式系统(第2版)笔记09_一窝蜂和容量

1. 停电事故后电力恢复的方式 1.1. 停电后常见的情形是,送电几秒钟后又再次断电 1.2. 数百万台空调和冰箱的用电需求,使刚刚恢复的电力供应发生过载 1.3. 当电力供应不足时,增加的电流很快就到达满负荷,导致过载,触…...

详解java定时任务

在我们编程过程中如果需要执行一些简单的定时任务,无须做复杂的控制,我们可以考虑使用JDK中的Timer定时任务来实现。下面LZ就其原理、实例以及Timer缺陷三个方面来解析java Timer定时器。 一、简介 在java中一个完整定时任务需要由Timer、TimerTask两个…...

PCIe卡设计方案:单路12Gsps 3G 带宽模拟信号源PCIe卡

一、板卡概述 单路3G带宽模拟信号源卡由DA子卡和PCIe底板组成,二者通过标准FMC连接器互联,可以实现将PCIe总线数据转换为一路高速的模拟量输出。北京太速科技板可广泛用于雷达、通信、光电领域的噪声信号、毛刺、脉冲信号模拟产生等领域。 二、 …...

第1章 计算机网络和因特网

1、主机或端系统通过( )接入因特网。 A. ISPB. 调制解调器C. 交换机D. 路由器 P21:端系统(PC、智能手机、Web 服务器、电子邮件服务器等)经过一个接入 ISP 与因特网相连。 2、‌主机一般被划分为两类:客…...

QT入门基础知识

什么是QT QT是一个跨平台的C图像用户界面应用程序框架QT在1991年由奇趣科技开发QT的优点 跨平台,几乎支持所有平台接口简单,容易上手一定程度上简化了内存回收机制有很好的社区氛围可以进行嵌入式开发 QWidget QT注意事项 命名规范 类名 首字母大写,单…...

Leetcode---350周赛

题目列表 6901. 总行驶距离 6890. 找出分区值 6893. 特别的排列 6447. 给墙壁刷油漆 一、总行驶距离 很显然,这题单纯就是一道数学应用题,我们要明白最关键的一点 :只有当mainTank>5并且additionalTank>0时,才能发生副油…...

Django通过Nginx和uWSGI实现负载均衡

Django是一款非常流行的Web应用程序框架,它允许开发人员以快速、简单和灵活的方式构建可扩展和可维护的Web应用程序。当你的应用程序开始变得越来越受欢迎时,你可能会发现需要使用负载均衡来确保应用程序的可用性和性能。在本文中,我们将介绍…...

单元测试框架——Junit5

文章目录 Junit1. 注解2.断言3.测试用例执行顺序4.测试套件Suite1) 指定多个类2) 指定包 5. 参数化1) 单参数2) 多参数3) 文件注入 6.动态参数 Junit Junit是一个开源的用于Java语言的单元测试框架,也是Java方向使用最广泛的单元测试框架。 在pom.xml中引入Junit5…...

centos 系列添加 yum 源

nginx 首先,安装 EPEL (Extra Packages for Enterprise Linux) 仓库。这是一个由 Fedora 项目提供的免费扩展软件包仓库,其中包含许多有用的软件包。 sudo yum install epel-release 接下来,导入 Nginx 的官方 GPG 密钥,以便验证安…...

[Hive高级特性与 DDL和DML语法]

目录 🎇前言: 🎇 HiveQL语言的基本语法,包括DDL和DML两个方面。 🎇DDL(数据定义语言): 🎇DML(数据操作语言): 🎇 Hive高级特性 多种…...

Web服务器群集:Web基础与HTTP协议

目录 一、理论 1.Web基础 2.HTTP协议 二、实验 1.浏览本地HTML页面 三、总结 一、理论 1.Web基础 (1)域名和DNS ① 域名 网络是基于TCP/IP 协议进行通信和连接的,每一台主机都有一个唯一的标识(固定的IP地 址&#xff0…...

cmd命令常用速记

cmd命令大全 常见的appwiz.cpl control calc 等,各类功能、设置、甚至是文件属性和系统版本,都可以通过命令的方式快速查看和操作,有助于我们的提高工作效率,具体见下文。 cmd命令:开始->运行->键入…...

Python网络爬虫基础进阶到实战教程

文章目录 认识网络爬虫HTML页面组成Requests模块get请求与实战效果图代码解析 Post请求与实战代码解析 发送JSON格式的POST请求使用代理服务器发送POST请求发送带文件的POST请求 Xpath解析XPath语法的规则集:XPath解析的代码案例及其详细讲解:使用XPath解…...

树莓派使用VNC、SSH、Xrdp等方式进行远程控制的方法和注意事项

下面来总结一下远程操控树莓派用到的三种方式及其注意事项,其实这三种方式对于所有的Linux系统来说都是适用的。 目录 一、ssh控制树莓派 1.开启 ssh服务方法一 2.开启 ssh服务方法二 二、VNC远程连接 三、xrdp远程连接 四、其他注意事项 一、ssh控制树莓派 S…...

C++ 第二弹封装-类和对象

目录 1.类的引入 2.类的定义方式 3.访问权限 4.封装 5.类也是作用域 6.类的实例化 7.如何求一个类的大小 8.this指针 9.默认成员函数 10.构造函数 11.析构函数 12.拷贝构造函数 13.赋值运算符重载 14.const的类成员 15初始化列表 16.static的类成员 17.友元 …...

浅析 GeoServer CVE-2023-25157 SQL注入

原创稿件征集 邮箱:eduantvsion.com QQ:3200599554 黑客与极客相关,互联网安全领域里 的热点话题 漏洞、技术相关的调查或分析 稿件通过并发布还能收获 200-800元不等的稿酬 更多详情,点我查看! 简介 GeoServer是一个开…...

1001router6-react

文章目录 1 一级路由2 Navigate3 NavLink 自定义高亮样式4 useRoutes()5 嵌套路由6 路由传参6.1 传递params参数6.2 传递search参数6.3 传递state参数 7 编程式导航7.1 路由跳转7.2 前进、后退 8 钩子函数8.1 useInRouterContext()8.2 useNavigationType()8.3 useOutlet()8.4 u…...

前端Vue自定义支付密码输入键盘Keyboard和支付设置输入框Input

前端Vue自定义支付密码输入键盘Keyboard和支付设置输入框Input&#xff0c; 下载完整代码请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13166 效果图如下&#xff1a; # cc-defineKeyboard #### 使用方法 使用方法 <!-- ref:唯一ref pas…...

VB+ACCESS超市管理系统设计(源代码+系统)

超市管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。经过分析,我们使用 MICROSOFT公司的 VISUAL BASI…...

【机器学习】十大算法之一 “神经网络”

作者主页&#xff1a;爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…...

【MarkDown】CSDN Markdown之流程图graphflowchart详解

基本语法 flowchart/graph 流程图&#xff08;Flowcharts/Graphs&#xff09;是由节点 (几何形状) 和连接线 (箭头或线条)组成的. Mermaid代码定义了节点和连线的编码方式&#xff0c;并支持不同的箭头类型、多向箭头以及子图之间的任意链接。 警告 如果在流程图的节点使用e…...

Git下:Git命令使用-详细解读

目录 一、Git 安装 二、Git 配置 三、Git 工作流程 四、Git 工作区、暂存区和版本库 五、常用 Git 命令清单 1. 创建仓库 2. 增加/删除文件 3. 代码提交 4. 分支管理 5. 标签 6. 查看历史提交 7. 远程仓库同步 8. 撤销操作 六、Git 常用命令速查表 七、Git 电子…...

一条SQL语句的前世今生

文章目录 MySQL 基础架构分析语句分析查询语句更新语句 总结 本篇文章会分析下一个 SQL 语句在 MySQL 中的执行流程&#xff0c;包括 SQL 的查询在 MySQL 内部会怎么流转&#xff0c;SQL 语句的更新是怎么完成的。 MySQL 基础架构分析 下图是 MySQL 的一个简要架构图&#xff…...

mvc 5 做网站的教程/安徽网络关键词优化

DST交联剂cas62069-75-4|酒石酸二琥珀酰亚胺酯 蛋白交联剂列表 DST交联剂cas62069-75-4|酒石酸二琥珀酰亚胺酯 蛋白交联剂列表 英文名称&#xff1a; DST 中文名称&#xff1a; 酒石酸二琥珀酰亚胺酯 MF&#xff1a; C12H12N2O10 MW&#xff1a; 344.23 CAS&#xff1a; …...

房屋设计装修公司/自动优化app

select into from和insert into select from两种表复制语句区别 select * into target_table from source_table; insert into target_table(column1,column2) select column1,5 from source_table; 以上两句都是将源表source_table的记录插入到目标表target_table&#xff0c…...

怎么查网站是不是正规/app关键词推广

内容介绍工程项目中总会遇到计算工作&#xff0c;相比传统的手动计算&#xff0c;使用软件和函数表格计算不仅省时省力&#xff0c;更提高了准确率。包括了&#xff1a;单位换算软件、电缆计算程序、电学计算等&#xff0c;提前设置好了计算函数及计算程序&#xff0c;只需输入…...

做c 题的网站/aso优化技巧大aso技巧

先来看一个问题 解决线程安全问题有两种方式&#xff1a; 方式1: synchronized 方式2:可重入锁 多读多写&#xff1a;读写锁 多读一写&#xff1a;volate 【一】隐式锁 和 显式锁 一、隐式锁 只有synchronized 详见&#xff1a;synchronized 篇 二、显式锁 1、定义&#xff…...

攸县网站定制/护肤品软文推广

Chargpt是通过模仿人类的思考方式来理解复杂逻辑的。它会先读取输入文本&#xff0c;然后使用自然语言处理技术来理解文本中的词语和句子的含义。然后它会使用逻辑推理能力来思考文本中的逻辑关系&#xff0c;并利用这些信息来回答问题或完成其他任务。 Chargpt在理解复杂逻辑时…...

怎么做网站banner/seo培训赚钱

ExtensionSystem::IPlugin类 IPlugin类是所有插件的基类。IPlugin类是一个抽象类&#xff0c;必须为每个插件实现一次。 插件由两部分组成&#xff1a;一个描述文件和一个至少包含IPlugin实现的库。 插件规格Specification&#xff1a;插件除了实际的插件库外&#xff0c;还需…...