设计和实现AI算法算法时有没有必要在代码中加注释,没有用必要在实现之前弄个UML图???
问题如题:
设计和实现AI算法算法时有没有必要在代码中加注释,没有用必要在实现之前弄个UML图???
今天看到一个博文:
https://www.cnblogs.com/siyuanwai/p/15432932.html
里面又怎一端话:

看了这段话后我有了一些想法。
现在的AI算法发展的十分迅速以至于很多AI算法不再只停留于算法层面,在某种意义上来说现在的很多AI算法都可以用AI系统工程或是AI工程来描述,总的来说现在的AI算法不同于传统的AI算法,不再是那种结构单一、逻辑简单、代码量较少的那种小体积的代码结构。现在的很多AI算法都是有多个组成部分,而每个组成部分又可能接着细分,最终的子组成部分可能才是传统意义上的算法,在这种情况下还用传统的算法编写方法来编写代码很难适应现在的情况,即使算法的最初面对者是学术界的,即使这些算法并没有工程方面的要求,但是这么复杂的,这么大体积的算法可能用工程项目来说更为贴切。
复杂的AI算法与其说是算法不如说是AI算法工程项目更为贴切。
就像本文题目中所说的,AI算法需要不需要在代码中加注释,需要不需要在算法代码编写之前使用UML这类的软件需求或结构设计软件进行下规划呢。(特殊说明下,这里并不是说要用UML设计一个完整的流程,因为这个用不到,再复杂的AI算法项目最终面对的往往也不是最终用户,最终面对的也还是算法本身,所以我们往往需要设计一些各个算法子组成部分间的关系结构可能就可以了)
说下个人观点:对于越来越庞杂的AI算法项目,在编写代码之前做好一定的设计分析工作,如使用UML中的类图之类的分析设计图即可,在编写具体的AI算法项目的代码时也加入适当的注释,毕竟代码量大了,逻辑复杂了,往往没有注释的情况下是难以解读的。要是以前的较短代码量的算法代码没有注释也是能够接受的,现在的AI算法项目代码量大的惊人,逻辑结构也搞的错综复杂,如果没有一点软件工程的知识来支撑是难以编写出具有可读性的AI代码的,同时现在的AI研究在学术界还是工程界都是需要不对的调参,不断的优化,不断的改进的,如果代码设计之初就没有构建清楚整个项目的代码结构,那么后期的优化改进就会变得像打补丁一样折磨人。可以说不好的项目代码架构设计,不好的编码风格,没有适当的代码注释,这些问题不仅仅是开发工程师的噩梦同时也是AI算法开发工程师的噩梦。现在的AI算法在代码量和代码变更程度上更像是开发项目而不是传统的那种小代码量的算法,因此使用适当的项目开发技术作为支撑是很有必要的。
最后给出我很认同的一句话:
编写高质量可维护的代码是程序员的基本修养。
同时我也认为编写高质量的代码不仅仅是程序员的基本要求同时也是AI工作者的基本要求,AI工作者在编写AI算法程序时保证良好的代码质量也是十分必要的。
====================================================
python 官方给出的编程规范:
https://www.python.org/dev/peps/pep-0008/
设计和实现AI算法算法时有没有必要在代码中加注释,没有用必要在实现之前弄个UML图???的更多相关文章
- Linux内核设计第四周学习总结 使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
陈巧然原创作品 转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验目的: 使用库函数A ...
- 贝叶斯公式由浅入深大讲解—AI基础算法入门
1 贝叶斯方法 长久以来,人们对一件事情发生或不发生的概率,只有固定的0和1,即要么发生,要么不发生,从来不会去考虑某件事情发生的概率有多大,不发生的概率又是多大.而且概率虽然未知,但最起码是一个确定 ...
- 贝叶斯公式由浅入深大讲解—AI基础算法入门【转】
本文转载自:https://www.cnblogs.com/zhoulujun/p/8893393.html 1 贝叶斯方法 长久以来,人们对一件事情发生或不发生的概率,只有固定的0和1,即要么发生, ...
- 2018科大讯飞AI营销算法大赛全面来袭,等你来战!
AI技术已成为推动营销迭代的重要驱动力.AI营销高速发展的同时,积累了海量的广告数据和用户数据.如何有效应用这些数据,是大数据技术落地营销领域的关键,也是检测智能营销平台竞争力的标准. 讯飞AI营销云 ...
- 实践案例丨基于ModelArts AI市场算法MobileNet_v2实现花卉分类
概述 MobileNetsV2是基于一个流线型的架构,它使用深度可分离的卷积来构建轻量级的深层神经网,此模型基于 MobileNetV2: Inverted Residuals and Linear ...
- 3.5星|《算法霸权》:AI、算法、大数据在美国的阴暗面
算法霸权 作者在华尔街对冲基金德绍集团担任过金融工程师,后来去银行做过风险分析,再后来去做旅游网站的用户分析.后来辞职专门揭露美国社会生活背后的各种算法的阴暗面. 书中提到的算法的技术缺陷,我归纳为两 ...
- 十大经典排序算法详细总结(含JAVA代码实现)
原文出处:http://www.cnblogs.com/guoyaohua/p/8600214.html 0.排序算法说明 0.1 排序的定义 对一序列对象根据某个关键字进行排序. 0.2 术语说明 ...
- 【优化算法】Greedy Randomized Adaptive Search算法 超详细解析,附代码实现TSP问题求解
01 概述 Greedy Randomized Adaptive Search,贪婪随机自适应搜索(GRAS),是组合优化问题中的多起点元启发式算法,在算法的每次迭代中,主要由两个阶段组成:构造(co ...
- JAVA十大经典排序算法最强总结(含JAVA代码实现)
0.排序算法说明 0.1 排序的定义 对一序列对象根据某个关键字进行排序. 0.2 术语说明 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面: 不稳定:如果a原本在b的前面,而a=b,排 ...
- 从算法入手讲解如何在SQL Server中实现最优最简
算法是计算机科学中一个重要的研究方向,是解决复杂问题的关键.在计算机世界中,算法无处不在.数据库是存储数据和执行大批量计算的场所,在数据库中使用一些简单的SQL命令,进行存储.查询.统计.以解决现实世 ...
随机推荐
- SRE Google 运维解密读书笔记一:SRE 方法论概述
SRE Google 运维解密,是 SRE 领域的启蒙之作,讲述了 Google 的 SRE 实践,SRE 就是从 Google 流传出来的.本文是读书笔记,第一篇,概述 SRE 方法论.帮大家把书读 ...
- SpringMVC 工作原理?
a.客户端发送请求到 DispatcherServlet b.DispatcherServlet 查询 handlerMapping 找到处理请求的 Controller c.Controller 调 ...
- 物理机安装Centos系统
引言 在工作中,经常会在本地搭建开发环境,而使用的基本都是Linux系统,本文就教大家如何安装一套Centos Linux系统 准备 1.系统选择 系统:Centos 版本:7.9 2.镜像下载 下载 ...
- 硬件开发笔记(二十):AD21导入外部下载的元器件原理图库、封装库和3D模型
前言 在硬件设计的过程中,会遇到一些元器件,这些元器件在本地已有的库里面没有,但是可以从外部下载或者获取到对应的. 本篇就是引入TPS54331D电源芯片作为示例,详细描述整个过程. 创建T ...
- Vite-Wechat网页聊天室|vite5.x+vue3+pinia+element-plus仿微信客户端
基于Vue3+Pinia+ElementPlus仿微信网页聊天模板Vite5-Vue3-Wechat. vite-wechat使用最新前端技术vite5+vue3+vue-router@4+pinia ...
- 07-Python异常处理
什么是异常? Python无法正常处理程序时就会发生一个异常,这时Python就会抛出一个对象,表示这是一个错误. 必须处理异常,否则程序可能会停止运行,或者出现异常现象. 如:4/0就会抛出异常,因 ...
- CLR via C# 笔记 -- 特性(18)
1. 特性继承自System.Attribute,能作用于TypeDef(类.结构.枚举.接口和委托),MethodDef(含构造器),ParamDef,FieldDef,PropertyDef,Ev ...
- python重拾第七天-面向对象进阶
本节内容: 面向对象高级语法部分 经典类vs新式类 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 作业:开发一个支持多用户在线的FTP程序 面向对象高级语法部分 经典 ...
- Linux 内核:设备树(4)设备树中各个节点是谁转换的
Linux 内核:设备树(4)设备树中各个节点是谁转换的 背景 之前,我们在<把device_node转换成platfrom_device>中提到在设备树的device_node到plat ...
- python路径相关操作:os.path
Windows路径格式 import os # 当前python文件位置:T:\ProgrammingPractice\python_path\test.py # 给定的路径 path = r'D:\ ...