AI编程工具的进化史:从代码补全到智能体开发
每天打开终端,敲下一句自然语言描述,然后看着 AI 自己读代码、改文件、跑测试、修 bug——这已经成为我这一年多来最熟悉的工作方式。但偶尔还是会愣一下:八年前,我们还在为”自动补全猜中了下一行”而惊喜。从补全到副驾,从对话到智能体,AI 编程工具的进化速度快到每隔几个月,”AI 写代码”的含义就要被改写一次。作为一个亲历了整条曲线的程序员,想把这八年的故事认真梳理一遍。 一、前史:编辑器里的”规则智能”在 AI 登场之前,编辑器里的”智能”其实已经存在了几十年,只不过它们背后是一套人工编写的规则,而不是学习出来的模型。 1978 年,贝尔实验室的 Stephen C. Johnson 写出了第一个 lint 工具,用来检查 C 代码里的可疑写法;此后几十年,静态分析、类型推断、代码提示逐渐成为 IDE 的标配。IntelliJ 的类型推断能猜到你方法返回什么,Visual Assist 能补全庞大的 Windows API,但这些能力的本质都一样:人把规则写好,机器照着执行。它们不会”创造”,只会”提醒”。 这个时代留给我们的遗产其实比想象中深远——今天 AI 编程工具依...
AI时代发展史:从符号主义到通用智能的七十年
七十年前,几个年轻的学者在达特茅斯的校园里争论着一个词能否成立;七十年后,人手一台设备里住着能写诗、画图、聊天的”智能”。人工智能这段历史,从来不是一条笔直向上的技术曲线,而是由无数次豪赌、寒冬与复兴交织而成的潮起潮落。作为一个亲历了这波大模型浪潮的程序员,想借这篇文章,把这七十年的故事认真梳理一遍。 一、孕育期:机器能否思考(1943–1955)故事的种子比”人工智能”这个名字还要早。 1943 年,麦卡洛克(McCulloch)和皮茨(Pitts)提出了第一个人工神经元数学模型,证明简单的阈值单元连成网络原则上可以完成计算——神经网络的思想由此诞生。同一时期,维纳的控制论、香农的信息论相继问世,”用机器模拟智能”在哲学和工程两个层面都做好了准备。 1950 年,图灵在《计算机器与智能》一文中提出了著名的图灵测试:如果一台机器在对话中让人无法分辨它是人还是机器,我们是否有理由称它”会思考”?这篇文章没有给出答案,却立起了此后七十多年整个领域的总靶子。 二、第一次黄金时代:符号主义的豪情(1956–1974)1956 年的达特茅斯会议被公认为人工智能的诞生日。麦卡锡、明斯基...
git基本使用方法
早在2011年的暑假就曾接触过git这个版本控制工具,当时的主流版本控制还是CVS,SVN之类的,那时候跟着俄亥俄州立大学的一个软件工程老师学习开发iOS程序,他搭建了git server,用的稀里糊涂的,因为那时候对Linux是一窍不通,命令什么的都还只是停留在电影画面里,后来github火起来了,用git的人也就自然而然的多了起来,2013年刚刚开始研究僧的生活,那个时候创建了github账号,可空有程序员的架势,却怀着一颗文艺的心,直到近些日子再次捡起,才倍感酸爽,早些时候咨询同实验室的一位大神朋友ictxiangxin如何用正确的姿势使用git,大神的回答很简单,说看过git的官方文档,不可否认,官方的才是第一手资料,能有最真切的体会,不过确实是太多,就放弃了,年初时师兄推荐的一个简单的介绍git的网页颇为好用,原链接地址git使用简易指南。这里简单写写git的使用方法,算是回顾一下。 2025 年修改commit 中的描述 feat : 新增功能 fix : 修复 bug docs : 文档更新 style : 代码风格或格式修改(不影响代码运行的变动) refa...
科学上网
简介之前在电脑上用lantern科学上网,试用的比较低频,所以也就没有太多的需求,手机用shadowrocket上,偶尔使用,但是这次需要试用Discord就不太方便了,而且lantern不知怎么回事就是上不了网,急坏我了,试用了clash verge,具体的操作写在下面 kingfast.info/docs先安装一下工具 在下面网站购买了一份80GB的套餐https://tool.chinaz.com/tools/textencrypt.aspx解密U2FsdGVkX18r4B0EWCL9bVylxeQzvq5/Pf9RhGuR5Z9ZbqvH+vuZuv4JvexzauS63XAKN+RvtTCyxTD5ptznULRuFP3884AEnlEBYvrbBQw= 之后订阅,选择节点就可以了
命令行无法连接 github 的问题
连接了 lantern 翻墙软件之后,网页端可以访问外网,但是命令行无法访问 GitHub,解决办法如下 查看当前代理设置 git config –global –get http.proxygit config –global –get https.proxy 根据端口号重新设置 proxy git config –global http.proxy http://127.0.0.1.50364git config –global https.proxy http://127.0.0.1.50364 导出 proxy export http_proxy=http://127.0.0.1:50364export https_proxy=http://127.0.0.1:50364
iOS runtime 基础理论
iOS的runtime分为三个阶段:消息发送、动态方法解析和消息转发。 首先,我们来看消息发送阶段。当我们在代码中通过[]给对象发送一个消息时,实际上就会转化为对objc_MsgSend()函数的调用。这个函数首先会检查消息接收者是否为nil,如果是nil,则直接返回nil。然后,它会从方法缓存中查找对应的方法。如果找到了,就直接调用这个方法。如果没找到,它会递归地在父类的方法缓存列表和父类的方法列表中查找。如果整个过程下来都找不到需要调用的方法,就会进入动态方法解析阶段。 动态方法解析阶段是一个非常重要的过程,它允许我们在运行时动态地添加或修改方法。当Runtime在方法缓存和父类中都无法找到对应的方法时,它会调用resolveInstanceMethod或resolveClassMethod函数来尝试动态地解析这个方法。如果这些方法返回YES,表示已经成功解析了方法,Runtime会再次尝试发送消息。如果返回NO,表示解析失败,Runtime会进入消息转发阶段。 消息转发阶段是对象接收到无法处理的消息时的最后一道防线。在这个阶段,Runtime会尝试通过其他途径来找到可以...
iOS 复习思维导图
1.UI视图相关面试问题思维导图 2.Objective-C语言特性相关面试问题 3.Runtime相关面试问题 4.内存管理相关 5.Block相关 6.多线程相关 7.Runloop相关 8.Network相关 9.DesignMode相关 10.Framework相关 11.Third-party Libraries相关
PLC 基础知识
可编程逻辑控制器可程序化逻辑控制器(programmable logic controller,简称PLC),一种具有微处理器的数字电子设备,用于自动化控制的数字逻辑控制器,可以将控制指令随时加载内存内储存与执行。可程控器由内部CPU,指令及数据存储器、输入输出单元、电源模块、数字模拟等单元所模块化组合成。PLC可接收(输入)及发送(输出)多种型态的电气或电子讯号,并使用他们来控制或监督几乎所有种类的机械与电气系统。 最初的可编程序逻辑控制器只有电路逻辑控制的功能,所以被命名为可程序逻辑控制器,后来随着不断的发展,这些当初功能简单的计算机模块已经有了包括逻辑控制,时序控制、模拟控制、多机通信等许多的功能,名称也改为可程控器(Programmable Controller),但是由于它的简写也是PC与个人电脑(Personal Computer)的简写相冲突,也由于多年来的使用习惯,人们还是经常使用可程序逻辑控制器这一称呼,并在术语中仍沿用PLC这一缩写。 在可程序逻辑控制器出现之前,一般要使用成百上千的继电器以及计数器才能组成具有相同功能的自动化系统,而现在,经过编程的简单的...
无标题
Cursor 编辑器学习指南(AI生成)目录 简介 为什么选择 Cursor 主要特性 安装和设置 基本使用 高级功能 使用技巧 总结 简介Cursor 是一款革命性的代码编辑器,它集成了 AI 辅助编程功能,能够帮助开发者更高效地编写代码。这款编辑器基于 VS Code 构建,继承了 VS Code 的优秀特性,同时添加了强大的 AI 功能。 为什么选择 Cursor AI 驱动的编程体验 智能代码补全 自然语言转代码 代码解释和优化建议 熟悉的界面 与 VS Code 相似的界面 支持 VS Code 插件 平滑的学习曲线 主要特性1. AI 代码生成 通过自然语言描述生成代码 智能代码补全和建议 自动代码重构 2. 代码解释 详细的代码注释生成 复杂代码逻辑解释 代码优化建议 3. 多语言支持 支持主流编程语言 智能语法高亮 语言特定的代码提示 安装和设置 下载安装 访问官方网站 cursor.so 下载对应操作系统的版本 按照安装向导完成安装 初始配置 登录账号 配置 AI 功能 设置编辑器主题和快捷键 基本使用常用快捷键 Ctrl...
http协议返回码
http的返回码看来最经常用到的,记录一下,方便日后查阅 1开头的http状态码表示临时响应并需要请求者继续执行操作的状态代码。 100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。 2开头的http状态码表示请求成功 200 成功处理了请求,一般情况下都是返回此状态码; 201 请求成功并且服务器创建了新的资源; 202 接受请求但没创建资源; 203 返回另一资源的请求; 204 服务器成功处理了请求,但没有返回任何内容; 205 服务器成功处理了请求,但没有返回任何内容; 206 处理部分请求; 3开头的http状态码重定向代码,也是常见的代码 300 (多种选择) 针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。 301 (永久移动) 请求的网页已永久移动到新位置。 ...