万泉河
WX:ZHO6371995,欢迎+
级别: 略有小成
精华主题: 0
发帖数量: 130 个
工控威望: 246 点
下载积分: 831 分
在线时间: 11(小时)
注册时间: 2021-06-11
最后登录: 2024-11-07
查看万泉河的 主题 / 回贴
楼主  发表于: 2022-09-07 17:22
0906 【万泉河】一个问题:汇编语言支持面向对象编程吗?

这是一个很有意思的问题。

起因是我是首个把面向对象方法完全应用到工控行业的PLC工程师。 全世界范围内。

先别不服。

许多人看过我的视频讲座,讲座中通篇讲解了面向对象的方法在PLC程序设计中的应用。以及所著的新书《PLC标准化编程原理与方法》,其实通篇都在讲面向对象这件事。

有一些人,简单看了一眼视频后就先来杠了, 面向对象嘛,不是什么新玩意。在IT领域早就流行几十年了。 国内也早有自动化公司在做了。

看到没, 凡是跳出来不屑一顾的, 举例子的时候都会是举一个道听途说的别人家的公司。 就没见过谁勇敢地站出来说我我我!我做到了。

而我们从各大社区所能获得的各行各业的PLC项目例子程序中, 也从来没有见到过真正如烟台方法般实现了彻底的面向对象设计的案例。

人类科学技术发展到今天, 完全原创的创新已经很难有了。 现在能把不同行业之间的应用加以融合,卖出第一步,就算很不容易的创新了。

我工作20多年,前面很多年都只能碌碌无为做写重复性的工作, 挣点辛苦钱,养家糊口。 也就近4-5年,才有机会做出一点真正属于自己的创新型工作,一方面自认为运气好, 一方面也有厚积薄发的因素在里面。

所以, 我是当仁不让要把这个首创权霸占在自己名下了。有要跟我争这个名誉的,欢迎来争。 但要求是本人实名,拿自己作品来争。 而不要什么所谓路见不平者毫无证据空口为别人争。

当然还会有另外一些人不认可面向对象方法有多奇妙, 或者认为技术上在PLC领域操作系统编程语言环境根本不可能支持, 所以质疑我是否真的做到了,可以通过本文的逻辑分析见分晓。

首先一个基本的原理。

所有编程语言,最终都要经过其编译器或者解析器,编译成为汇编语言,然后再成为二进制的机器代码,交给CPU运行。通常认为汇编语言,对应的就是机器语言。  

百度百科的解释:
汇编语言, 即第二代计算机语言,用一些容易理解和记忆的缩写单词来代替一些特定的指令,例如:用"ADD"代表加法操作指令,"SUB"代表减法操作指令,以及"INC"代表增加1,"DEC"代表减去1,"MOV"代表变量传递等等,通过这种方法,人们很容易去阅读已经完成的程序或者理解程序正在执行的功能,对现有程序的bug修复以及运营维护都变得更加简单方便。

所以, 假设一门完全支持面向对象的高级编程语言写成的程序,最终编译后得到的仍然是汇编语言。

所以,假设你手里没有原始的高级语言的编译器和源代码, 而只有其生成的汇编语言代码,那么你把这个代码全部抄写一遍,也自然写的是面向对象的程序。

即,结果是完全一样的。 无非过程中,对你的能力要求不一样, 你需要记忆更多的指令,以及更多的程序架构安排部署。

我们来看IEC 61131标准中规定的PLC程序语言IL指令表,在西门子中称为STL, 其语句语法基本就是如上述汇编语言用到的ADD /SUB/ INC/DEC/MOV等等。那么我们大致可以认为STL就是约等于汇编语言。

那么,如果我们认为用汇编语言可以做出面向对象的PLC程序, 自然STL也可以,那么LAD可以转化为STL,所有STL指令在LAD中也都有对应的指令,那么LAD梯形图自然也完全可以做出完整的面向对象的程序。

我们通常描述面向对象的三大特性,封装继承和多态,讨论PLC平台是否已经提供并支持这些功能的时候, 其实应当认识到的是,平台如果提供了这些功能,那么只不过是便于我们便捷使用。 而如果平台没有提供, 那么需要程序员自己的能力来实现。

所以,当我们评价某个PLC系统因为不支持所以不能做出面向对象的高内聚低耦合的系统设计的时候, 其实是我们推卸责任了。 把不能做到的责任推给了平台。 而其实那是我们自己能力不足导致。

这一点,我在研究信捷PLC的标准化架构的时候,领悟到的。 并在文章《0725 【万泉河】所有小型PLC也都能做标准化程序了》中有所表达。

本文则是重新从头做了逻辑的梳理。

这也是我近期开始对所有小型PLC平台感兴趣的原因。 在我眼里,所有PLC本质都是一样的,即便我从来没有摸过,甚至名字都没有听说过, 要有人问我敢不敢接开发任务, 在其平台上实现程序标准化架构,我现在可以毫不迟疑地回答:可以!

这是我近来认知上的最大的进步。 我前几年一些文章中,以及书中所表达的观点,抱怨一些PLC平台性能差而导致不能做标准化,是错误的。

而以往更多的同行,发表的更多的文章中,对所有PLC平台全部判死刑,认为缺少了这个或者那个功能而不可能实现的,那些作者们现在可以回头思考一下这个逻辑了。




qqaw8
混吃混喝
级别: 家园常客
精华主题: 0
发帖数量: 540 个
工控威望: 714 点
下载积分: 1023 分
在线时间: 687(小时)
注册时间: 2012-09-30
最后登录: 2024-12-23
查看qqaw8的 主题 / 回贴
1楼  发表于: 2022-09-13 00:22
发表看法可以,人身攻击就不好了,内卷什么呢?希望大家平常心