再次论述嵌入式系统现代编程的认知模型
1,我们可以把编写软件分成应用软件和系统软件。对于应用软件我们书写Word文档,PPT文档,CAD制图文档实际上都是在从事着应用软件编程,我们也成为了高级应用软件程序员。所以编程方法取决于编程工具,使用高级的编程工具就可以创作出非常复杂的软件算法,这一点是系统编程软件无法替代的。2,只有系统编程软件程序员才需要关注我们要用什么样的编程语言,我们如何解决硬件设备驱动,我们如何解决编程语法细节,我们如何解决时序问题等等。系统编程的目标是研发出更高级的编程工具,让应用系统可以解决更高级的算法问题。
3,那么什么是嵌入式系统更高级的编程工具呢。PLC产品发展的二十年经验告诉我们,通过图形编程是可以编写出无附加错误的控制算法的。但是传统的PLC特别是依赖于梯形图编程的PLC产品,包括符合IEC61131-3编程标准的PLC产品,仍然没有解决设备自动控制的基本算法描述的这一个根本问题。IEC61131-3希望能够突破梯形图编程的局限性,但是又回到了传统计算机编程的复杂的语法层面,没有实现更高级的面向自动控制的高级算法。
4,可以把嵌入式系统基础软件进一步分为人机交互和设备控制两个方面。因为随着计算机技术的发展将人机交互(画面跟互联网)作为独立的设备和控制系统分别设计,是嵌入式系统实现标准化的一个可行方向。这样就可以将嵌入式系统的一部分基础算法和工具集中于设备运行控制。将基础算法专注于设备运行控制就可以抽象出用户更能够直观理解的编程算法模型,让应用算法实现更高层次的软件算法表达。
5,设备运行控制是完全可以实现图形化编程表达的,本人认为输入输出传递模型是实现图形化编程最好的抽象方式。设备运行控制是STC单片机最具创新能力的研发领域。
(1)楼主帖子的主题非常好,所以借贵地谈一点自己的体会。我的观点不一定正确,欢迎大家讨论和批评指教。教学是铁打的老师流水的学生,每一次学生对我都是新生,所以我经常被学生(计算机语言考试成绩很高的)问到:这个程序的每一条语句我都懂,但是我不知道它怎么就实现了那个功能。我更经常被学生问到,我会计算机语言,要解决的问题我也知道,但是不知道怎么写个程序来实现,也不知道如何下手。我通常的回答是:1)认真了解你要解决的问题在计算机界属于什么范畴,这样你好确定去查找知识。2)先掌握解决你的问题的计算机原理与方法:就像中学解应用题,已知哪些数据和条件,用什么公式和算法,最后给出什么样的结论。3)选择一个合适的编程语言、编程工具和专业库(比如图形图像处理库)。4)自上而下地设计整个程序框架:要解决的问题在上,已知的条件和人机输入在下,从输出(结果)到它依赖的输入(数据、条件)写出任务框架。5)自下而上地编写程序。就像盖房子,先打地基,再做模块,最后组建成建筑。写复杂的大型的程序也一样,先编程测试库函数和基本解决方法(这也就是本论坛在回答坛友问题时反复强调用户先要测试和读懂STC范例程序)和解决自己问题的基本程序,最后再总装为最终程序。按照我的理解,上面的这5个方面就是现代编程的认知模型:对你要解决的问题的认知,对解决问题的方法的认知,对解决问题使用的工具的认知,对程序结构的认知和对编程方法的认知。(2)一段论述或者一个结论是否正确,依赖于它们应用在什么对象上,应用在什么问题上以及应用的时代是哪个时代。楼主的第1和第2段原则上是对的,只是与现在的STC单片机编程无关,比如一个只会写“Word文档,PPT文档,CAD制图文档”的“高级应用软件程序员”,我看不出来怎么就能实现一个“HEX”供STC-ISP烧录。不过随着AI的发展,也许将来会有一天某个支持WORD的编程软件内嵌了一个GPT,用WORD编写STC单片机程序也就成为可能的了。(3)楼主的第3段的第一句“那么什么是嵌入式系统更高级的编程工具呢。”应该是一个问句,但我看不出楼主的答案,下面谈点我的看法。1)按照共识,工业1.0是蒸汽机时代,工业2.0是电气化时代,工业3.0是信息化时代,工业4.0则是利用信息化技术促进产业变革的时代,也就是智能化时代。工业3.0时代将计算机技术应用到机械制造和各种工业领域,PLC就是最主要的嵌入式系统的硬件部件,PLC的编程工具也是最主要的嵌入式系统的编程工具。楼主第3段的后半部分的观点我赞同,随着工业4.0的到来,PLC的局限性就日益表现出来了。2)什么是工业4.0时代的嵌入式系统的更高级的编程工具?首先代替PLC的是“分布式控制系统”(DCS)。PLC和DCS在有些方面是相同的,但是区别还是很明显的,有兴趣的读者可以查相关资料。最重要的差别是“DCS是一种“分散式控制系统”,而PLC(可编程控制器)只是一种控制“装置”,两者是“系统”与“装置”的区别。系统可以实现任何装置的功能与协调,PLC装置只实现本单元所具备的功能”以及“DCS系统所有I/O模块都带有CPU,可以实现对采集及输出信号品质判断与标量变换,故障带电插拔,随机更换。”(引自网络资料)。DCS使用的编程工具主要由DCS的硬件厂家开发提供,比如松下和施耐德等公司的软件,这些编程工具除了图形化功能外,也还提供了基于编程语言的功能,比如“FBD”、“ST”、“SFC”等,DCS也支持用C和VB语言开发。其次工业4.0的智能制造不仅仅是一台设备的智能化,而是整个社会的智能化,因此嵌入式系统的更高级的编程工具是面向整个社会的编程工具。这个编程工具在全世界已逐步形成标准,就是“数据采集与监视控制系统”(SCADA)。
本帖最后由 redelz 于 2023-7-28 20:23 编辑
杨为民 发表于 2023-7-28 16:08
(1)楼主帖子的主题非常好,所以借贵地谈一点自己的体会。我的观点不一定正确,欢迎大家讨论和批评指教。 ...
感谢您的关注,您回答的的确是国内软件开发人员的主流思维,我们大多数人开发软件都是着眼于既定的结果。很难从计算机软件未来十年到二十年如何编程的角度去思考嵌入式基础软件如何开发,编程工具应当是一个什么样的形态。如何展开软件编程基础研发。就像大多数进行自动控制算法研究,基本采用matlab进行仿真。没有人会考虑我们能不能开发出在嵌入式系统上能够真实运行,实现出比matlab更好的编程工具。嵌入式系统的基础算法和开发工具是未来工业创新最重要的基础技术。 本帖最后由 杨为民 于 2023-7-28 21:14 编辑
redelz 发表于 2023-7-28 18:46
感谢您的关注,您回答的的确是国内软件开发人员的主流思维,我们大多数人开发软件都是着眼于既定的结果。 ...
你能具体地介绍点如何“从计算机软件未来十年到二十年如何编程的角度去思考嵌入式基础软件如何开发”,国外有什么参考资料吗?你自己有什么想法,你的公司有什么准备吗?我的观点百度上都能查到,你能在这里介绍点新的东西吗?我想这是大家看了你帖子标题都想了解的,尤其是与STC单片机有关的
页:
[1]