1.1 认为软件系统十分复杂是不是因为软件工程还没有充分发展?

GreyZeng 2022-03-18 22:12:48

为什么说软件是人类创造的最复杂的系统类型?大型建筑、飞行器甚至长篇小说的结构也可以非常复杂,并且容易变得难以理解和维护,认为软件系统十分复杂是不是因为软件工程还没有充分发展?

原文地址

...全文
937 1 打赏 收藏 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
GreyZeng 2022-03-18
  • 打赏
  • 举报
回复
  • 从工程量上
    • 代码行数统计: https://informationisbeautiful.net/visualizations/million-lines-of-code/
    • 单纯从代码行数来看,许多大型工程的代码行数都比作为生物的细菌要多。虽然我们自己写的程序可能不超过几千行,但是人们经过长时间合作写成的代码却可以规模非常庞大。如此庞大的代码,光是单纯的通读一遍都需要耗费很长时间,更何况对其进行结构分析和正确性的判断。
  • 从结构复杂性上
    • 一般的程序语言虽然层次结构没有特别复杂的元素,过程上包含顺序、条件、循环和函数调用,对象上有继承关系等,但是这些简单的元素进行组合就可以形成非常复杂的层次结构。当我调用一个函数的时候,函数可能去调用别的函数,甚至去修改一些全局变量造成副作用。对于多层调用的函数,要去阅读其语义就要读懂它调用的函数的语义,如此递归下去。编写的时候,编写者需要思考好每一层调用如何定义其功能,如何适当地分层来提高代码的复用性,这些都是非常难以规划的问题。调试的时候,错误可能基于各种各样的影响,甚至是由于并非自己所写的函数造成的影响。各种顺序、条件、循环也会由于修改了共享的内存而互相影响。从编写一般过程性结构的程序来讲,都不是告诉计算机“要去做什么”,而是要“教计算机怎么去做”,这一过程基本上需要人来通过编程语言给出一个框架,这时就会容易产生错误。在实用的软件中,往往还有很多异常情况需要处理,这些情况嵌入到这些结构,又会使结构变得更加复杂。
  • 从团队合作上
    • 大型软件的编写不能光靠单枪匹马,而是需要团队合作。越大型的软件,就需要越大型的团队进行越复杂的团队合作。人类是复杂的生物,建立团队本身就是非常困难的事情,如何说服一帮有才能的人加入到团队中,如何分配工作,如何保持团队的凝聚力,各个模块之间的开发如何并行化如何对接,等等,都是不仅仅和计算机相关的问题。
  • 从服从性上
    • 任何软件的编写都不是为了编写软件的自身,而是为了服务于客户的需求。而需求是很容易变更的东西,开发的过程中可能由于需求的变更导致整个架构失效;要建立一个灵活应对变更需求的框架,就是非常困难的事情;现实中要考虑到的问题也不仅仅是计算机上是否正确的问题,虽然计算机本身已经行为非常复杂了,但开发一个软件还要考虑它在现实中要处理的复杂问题。比如要考虑建立一个学生成绩的管理系统,我们就不能只考虑建立这样一个表去存储成绩,还要考虑数据库的安全性,还要考虑到成绩的修改(由于各种人为错误需要修正),这又引申到一堆问题,比如谁来裁定修改的公正性,谁来执行修改的动作,什么样的情况是可以修改的,等等,这些东西在软件上的映射都已经远远超出了原来的范畴。

原文地址

代码转载自:https://pan.quark.cn/s/a4b39357ea24 自动驾驶是当前科技界高度关注的研究方向,其研究范畴涵盖了人工智能、计算机视觉、机器学习以及传感器融合等多个重要学科。这份题为"自动驾驶论文"的资料,无疑为人们提供了一个深入了解这一复杂系统的机会。以下是基于其标题和描述所呈现的一些关键知识点的详细阐述: 1. **自动驾驶技术**:自动驾驶指的是车辆在无需人类驾驶员参与的情况下,借助各类传感器和智能算法来感知周围环境,制定行驶路线,并执行驾驶行为。这种技术的核心宗旨在于提升交通安全性、缓解交通压力,并改善出行体验。 2. **Python编程语言**:Python是一种在数据处理和科学计算领域得到广泛应用的高级编程语言,由于其语法简洁且拥有丰富的库支持,经常被应用于自动驾驶领域的数据处理、模型构建和系统集成。 3. **源代码分析**:论文中提供的源代码可能包含了自动驾驶算法的实现细节,可能涵盖环境感知模块(包括图像处理、激光雷达数据解读)、决策模块(涉及路径规划、行为分析)、控制模块(涵盖车辆动力学建模、控制策略设计)等,这些代码可作为学习和研究自动驾驶算法的实践范例。 4. **计算机视觉**:自动驾驶系统中的计算机视觉技术主要用于识别道路标识、行人、其他车辆等,这通常涉及图像分类、目标识别和语义分割等任务,常见的技术包括卷积神经网络(CNN)、区域提议网络(RPN)、YOLO、Faster R-CNN等。 5. **机器学习**:机器学习是自动驾驶技术的核心,用于训练模型以理解和预测复杂的驾驶情境。深度学习,特别是深度强化学习,在决策制定和控制策略方面已取得显著进展。 6. **传感器融合**:自动驾驶汽车通常装备多种传...

606

社区成员

发帖
与我相关
我的任务
社区描述
程序员。写过:移山之道,编程之美,构建之法,智能之门。
软件工程软件构建团队开发 企业社区 北京·朝阳区
社区管理员
  • SoftwareTeacher
  • GreyZeng
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧