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

(2023)用AIGC写iOS项目单元总结

尝试开发的项目

项目功能

用 ChatGPT 开发了一个视频播放器。需要它编写的功能包括:

☆ 本地文件,在线 URL 播放,暂停
☆ 点击空白区域弹出操作菜单,再点击消失
☆ 手动横竖屏切换
☆ 播放速度调整,限定 0.5, 1.0, 2.0 倍速
☆ 进度条拖动
☆ 其它一些下载,缓冲区管理等功能

最后由 ChatGPT 帮我完成多个类代码的编写,其中最主要的对外接口类是 VideoPlayerView

目标平台和语言

☆ 系统 iOS 环境 Xcode

没别的,选熟悉的来。

另一方面,刚好需要写一个播放器嵌入到开发的产品中,正好拿 ChatGPT 练手。

☆ 语言 Objective C

这么做是想给 ChatGPT 降降难度,也是给我自己降降难度,Swift 的语言版本兼容性是个灾难。如果出现大量因为不兼容导致的编译错误,到时候负责打扫的还是我。

而 OC 这样一门成熟的语言,我相信 AI 能很好胜任。

但是,因为有时候会用到 iOS 的 C SDK,所以 ChatGPT 也需要写一些调用 C API 的代码。

以下就是我通过测试这个项目,实践出来的对 ChatGPT 的看法。

开发中遇到的问题

沟通问题

☆ 需求陈述是一个大问题

和 ChatGPT 描述清楚自己的需求是比较费神的,在部分场合很容易让人产生“干脆自己写了算了”的想法。

例如如下的需求,需要仔细跟 AI 说明白。

  • 播放器不依赖手机的方向感应,它应该是固定竖屏为基准。
  • 播放器可以手动旋转方向,但是这个旋转不是“真旋转”,也就是说,旋转的是视图本身,而手机屏幕的显示方向事实上不变。

假设我是产品经理,我搭档是个程序员,一般来说对于说起来费劲的事,我们会通过给图片,或者现场展示一些实体来交流。

这也是为什么人和人“当面沟通”对于解决复杂问题更高效。

然而面对 ChatGPT 这一点是做不到的。

AI 不懂装懂

☆ ChatGPT 会撒谎

ChatGPT 会撒谎,而且因为它不是人,所以脸不红心不跳,你甚至不知道它在撒谎(可能它自己也不知道)。

例如,有时候我让 ChatGPT 写一段代码出来,它会写出来,大部分时候都能正常工作,但是偶尔会编造根本不存在的 API 。

☆ AI 无法正视错误

如果 AI 的代码里有 bug,我尝试向它指出来,它一般会这么回答。

抱歉,我犯了错误。以下是我的修改方案……

然而,很多时候 AI 给出的修改方案并不能解决问题,但是它会“装得”好像已经解决了一样。

例如,我尝试让 ChatGPT 来写播放器的进度条控件,并且该控件要带一个进度条显示球来展示播放进度,并能方便用户拖拽进度。

为了测试它的能力,我不自己写,尽量反复和它沟通让它完成。然而,它写的进度条确实存在显示上的问题,以下是我和它的沟通简略过程。


我:UIProgressView 的 duration 小于 0.1 时进度条没有显示。
它:为了修复这个 bug,你可以通过设置 minTimeInterval 属性。

progressView.minTimeInterval = 0.1

……此处省略……
我:我:UIProgressView 并没有 minTimeInterval 这个属性。
它:抱歉,我犯了个错误。………此处省略………


以上这类会话我已经见怪不怪,这只是无数次例子中的小小一个,从以上会话可以看出,AI 遇到自己不太理解的问题时,会尝试编造一个解决方案来,而且听起来像模像样。

这对于很多容错率很低,或者出错就酿成大祸的工业级产品来说,很可能会产生灾难。

AI 的知识是死的

AI 知识是死的,而开发遇到的问题是活生生的,脱离了文档知识的。

例如,如果 iOS 某个 SDK 现阶段有 bug,以至于用标准代码不能解决时,那么程序员就需要另辟蹊径,重新开创解法。

而 ChatGPT 只能依赖于已经知道的知识去创造代码(当然了,除非它提前吃了stackoverflow的帖子,这也是为什么stackoverflow在控诉内容隐私的原因),它不但没有能力调试,而且也没有能力去理解更细碎的现实问题(除非你去告诉他)。

当然了,现在还有 AutoGPT 这些更厉害的 AI 出来了,可以自动查资料,调试编译代码,但是我还没尝试过,不发表看法。

AI 代码的安全隐患

ChatGPT 写出来的代码非常规整,但是如果是写 C/C++ 语言的代码,那么就要小心了。

因为它真的会写出很多漏洞来。

例如,ChatGPT 会在某些缓冲区偏移量计算时犯错,导致内存写入时的溢出。

AI 没有感知能力

没有感知能力的 AI,是无法胜任大量任务的,例如对于音视频的播放,人用“耳朵”去听,“眼睛”去看。通过这种方式来察觉播放器是否存在跳帧、卡顿、破音等现象。

而 ChapGPT 无法帮助你,而且即使你发现了问题,将问题告诉它,由于它无法感知问题的细节(因为它不会陪你“看”和“听”)所以设计不出解决方案来。

这也是为什么,这个测试项目虽然最后跑起来了,但是耗费的心力(指的是完全让AI写代码)让我觉得不太值得的缘故。

项目结束后的总结

ChatGPT 是 API 活字典

ChatGPT 对所有公开的技术文档都非常熟悉,可以说是手到拈来。对于 iOS SDK 自然是不在话下。

所以,对于“某个实现用什么系统 API 来完成”,ChatGPT 可以完成的非常漂亮。

如果不让它写代码,而是把它当成 SDK 顾问,然后让它提供示例代码,对开发者来说等于多了一个高级帮工。

模版大师

ChatGPT 太擅长写模板了。所以开发者完全可以在设计一个类的时候,让 AI 帮忙写模板,自己去填细节。这比纯粹让 AI 写全部代码要靠谱的多。

要让 AI 独立解决问题,除非它变成“人”

如果 AI 没有作为人的行动能力,那么它就注定只能是个吃数据,吐结果的终端。

它无法通过声音判断音频数据播放出来的效果,也无法通过眼睛判断画面是否符合预期,更无法主动去外界测试设备,调试每一个设备上产生的问题。

当然了,你大可以说未来 AI 外接了各种设备被赋能之后如何如何厉害。但我仅就目前最成熟的 AI 产品的体验得出结论。

☆ “喜欢撒谎”的AI永远靠不住

ChatGPT 会胡编乱造,这早就不是新闻了,它会在不了解情况的前提下试图整合出一个像模像样的解决方案来。

从职业伦理角度讲,这几乎是不可容忍的。

所以,我认为只要 AI “喜欢撒谎”,那么就要尽量避免让它独立完成任务(何况现在让它独立完成也确实够呛)

AIGC 用的效果好不好,取决于你强不强

AIGC 要求使用者自身有更高维度的水平。

技术人要求能辨别 AIGC 产生的错误。

画师要求能辨别和修复 AIGC 画作中的错误。

更关键的,AIGC 需要提问者提出问题,更优秀的人才能提出更优秀的问题,就这么简单。

请拉黑身边贩卖焦虑的号贩子

不是说 AIGC 不强,也不是说开设 AIGC 课程有问题。

就现在来说,AIGC 真的很好用。

☆ 另外,ChatGPT 独立完成成熟的代码框架,尤其是安全性要求低的小模型能力还是很强的。

主要是想说,现在 “AI 黄牛”太泛滥了。一个个到处贩卖焦虑,大肆鼓吹 AI 未来会让什么什么行业消失。

就算 AI 未来会让这么多行业消失,我相信解决方案也不是去找人买号,或者买什么midjourney课程。这种行为和房地产泡沫时期鼓吹房价的中介没有区别。

未来的变数很多,AI 会发展成什么样谁也没有数,如果它会对行业造成威胁,焦虑也没用,如果它不会造成威胁,焦虑也依然没用。所以停止焦虑,也应该立刻屏蔽贪财短视的焦虑贩卖者。

如果想体验 AIGC,用一些免费的国内镜像即可,然后亲自体验,逐渐领会,大可不必求新求大。

记住上一条结论:“AIGC 用的效果好不好,取决于你强不强”。

更多阅读

ChatGPT 能帮开发者上架做什么

生成式人工智能服务管理办法(征求意见稿)

移动开发者联盟加入指引

相关文章:

(2023)用AIGC写iOS项目单元总结

尝试开发的项目 项目功能 用 ChatGPT 开发了一个视频播放器。需要它编写的功能包括: ☆ 本地文件,在线 URL 播放,暂停 ☆ 点击空白区域弹出操作菜单,再点击消失 ☆ 手动横竖屏切换 ☆ 播放速度调整,限定 0.5, 1.0, …...

k8s扩容node节点会影响上面已存在的pod吗?

理论上不影响 扩容 Kubernetes 集群中的节点不会影响已经运行的 Pod,因为 Pod 是在节点上运行的,而不是在集群中运行的。当您添加新的节点时,Kubernetes 调度器会在新节点上启动新的 Pod,而已经运行的 Pod 会继续在它们当前的节点…...

深度学习 -- pytorch 计算图与动态图机制 autograd与逻辑回归模型

前言 pytorch中的动态图机制是pytorch这门框架的优势所在,阅读本篇博客可以使我们对动态图机制以及静态图机制有更直观的理解,同时在博客的后半部分有关于逻辑回归的知识点,并且使用pytorch中张量以及张量的自动求导进行构建逻辑回归模型。 …...

计算机网络学习03(OSI、TCP/IP网络分层模型详解))

1、OSI 七层模型 OSI 七层模型 是国际标准化组织提出一个网络分层模型,其大体结构以及每一层提供的功能如下图所示: 每一层都专注做一件事情,并且每一层都需要使用下一层提供的功能比如传输层需要使用网络层提供的路由和寻址功能&#xff0…...

ChatGPT是什么?ChatGPT里的G、P、T分别指什么

文章目录 ChatGPT是什么GTP中的 生成式 是什么意思GTP中的 预训练 是什么意思GTP中的 变换模型 是什么意思 什么是Transformer什么是注意力机制 监督学Xi、无监督学Xi、强化学Xi ChatGPT是什么 GPT: Generative Pre-trained Transformer 生成式预训练变换模型 ChatGPT是由Ope…...

Linux服务使用宝塔面板搭建网站,并发布公网访问 - 内网穿透

文章目录 前言1. 环境安装2. 安装cpolar内网穿透3. 内网穿透4. 固定http地址5. 配置二级子域名6. 创建一个测试页面 转载自远程内网穿透的文章:Linux使用宝塔面板搭建网站,并内网穿透实现公网访问 前言 宝塔面板作为简单好用的服务器运维管理面板&#…...

TDA4VH j784s4 使用

// sdk https://www.ti.com/tool/PROCESSOR-SDK-J784S4 // Jacinto Processors TDA4AP-Q1/TDA4VP-Q1/TDA4AH-Q1/TDA4VH-Q1 EVM User’s Guide https://www.ti.com/lit/ug/spruj62/spruj62.pdf?ts1682337275236&ref_urlhttps%253A%252F%252Fwww.ti.com%252Fsitesearch%252…...

CSS布局基础(字体,文本,背景)

字体 常见字体设置 body {font-family: font-family: "Microsoft YaHei", Tahoma, Arial, Hiragino Sans GB,sans-serif; }浏览器从前到后匹配,找到可用字体结束,都没匹配上,使用浏览器默认字体 常用字号 不同浏览器默认字号可…...

Redis入门指南:深入了解这款高性能缓存数据库

本文将带您了解Redis的基本概念、数据类型、特性以及如何在实际项目中应用Redis。通过阅读本文,您将更好地理解如何利用Redis优化您的应用程序性能。 1. 什么是Redis?2. Redis的数据类型3. Redis的特性4. 如何使用Redis4.1 安装与启动4.2 基本命令4.3 应…...

# 数据结构和算法面试题系列-随机算法总结

0 概述 随机算法涉及大量概率论知识,有时候难得去仔细看推导过程,当然能够完全了解推导的过程自然是有好处的,如果不了解推导过程,至少记住结论也是必要的。本文总结最常见的一些随机算法的题目,是几年前找工作的时候…...

windows中vscode配置C/C++环境

首先要把MinGW的环境安装完,我一般是下载带有MinGW的codeblocks,这样省去自己安装MinGW。因为安装MinGW还挺麻烦的。 安装完codeblocks,找到其安装目录,把bin文件配置到环境变量去: 将bin添加到环境变量 然后打开vsco…...

shell编程之条件语句

shell编程之条件语句 一、条件测试操作1.test命令2.文件测试3.利用条件判断,创建文件4.整数值比较4.1 常用的测试操作符 5.字符串比较5.1 常用的测试操作符 6.逻辑测试6.1 常用的测试操作符 二、if语句的结构1.单分支结构2.双分支结构3.多分支结构4.if嵌套 三、case…...

【Python每日十题菜鸟版--第二天】

菜鸟实例 🍉前言1.判断奇偶性2.判断闰年3. 获取最大值最小值4. 质数(素数)的判断5.阶乘方法一方法二 6.九九乘法表7.斐波那契数列方法一 :循环计算法(一般方法)方法二: 递归 8.阿姆斯特朗数9. 十…...

拓扑排序模板及例题

概念 一个有向无环图必然存在一个拓扑序列与之对应。 流程: 先将所有入度为0的节点入队将队列中的节点出队,出队序列就是对应拓扑序。对于弹出的节点x,遍历x所有出度y,对y进行入读减一操作检查入度减一之后的节点y,…...

linux查看nginx安装路径

linux查看nginx安装路径 有几种方法可以查看nginx的安装路径: 使用which命令: which nginx这个命令会返回nginx的二进制文件路径,一般也是安装路径。 查看nginx的进程,得到安装路径: ps aux | grep nginx输出结果中有nginx的进程路径,这个也是安装路径。 在nginx的配置文…...

【生态环境保护】绿水青山就是金山银山——生态环保篇

环保是一个持续性的话题,不仅仅是在国内,整个世界都是一个命运共同体从城市垃圾分类,到农村/村镇污水治理,城乡一体化和因地制宜的实施方式,是我们一直在探索的。 从余村到全国,从中国到世界,“…...

配置Docker镜像加速器-Docker命令-Docker 容器的数据卷

Docker架构 docker进程(daemon) 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件…...

ARM开发调试方法

用户选用ARM处理器开发嵌入式系统时,选择合适的开发工具可以加快开发进度,节省开发成本。因此一套含有编辑软件、编译软件、汇编软件、链接软件、调试软件、工程管理及函数库的集成开发环境(IDE)一般来说是必不可少的,…...

【Spring篇】IOC/DI注解开发

🍓系列专栏:Spring系列专栏 🍉个人主页:个人主页 目录 一、IOC/DI注解开发 1.注解开发定义bean 2.纯注解开发模式 1.思路分析 2.实现步骤 3.注解开发bean作用范围与生命周期管理 1.环境准备 2.Bean的作用范围 3.Bean的生命周期 4.注解开发依赖…...

1 Unix基础知识

1.1 登录 1.1 登录名 登录Unix系统时,要先输入登录名,然后再输入口令。系统再其口令文件(/etc/password文件)查看登录名。口令文件中的登录项由7个以冒号分隔的字段组成:登录名,加密口令,数字用…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言:多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...