设为首页收藏本站

爱吱声

 找回密码
 注册
搜索
查看: 6086|回复: 17
打印 上一主题 下一主题

[工程技术] 从丰田车控谈工控编程

[复制链接]

该用户从未签到

楼主
发表于 2014-1-8 20:08:07 | 显示全部楼层
早就想回复晨枫同学的雄文了,奈何年底自己的新东西要上线,有心无力。明后天大概能有点空闲,稍微写一点吧。

该用户从未签到

沙发
发表于 2014-1-30 16:46:15 | 显示全部楼层
实在抱歉啊,月头的时候刚刚把自己的新东西上线,以为可以空闲两天,不料当晚就听到坏消息,马上要为保卫整个项目的存活而奋战了 …… 三周下来,结果是奋战失败,项目被砍,自己也要被分流到其他项目去,也算是新年新气象,# u  p+ L+ N$ ^2 z; U
, u, A7 w* b; P8 D3 k
不过我想指出来的具体问题,沉宝同学貌似已经说完了,重复一遍也无必要。简单说一句吧:我看过很多来自不同行业、有不同背景的技术人员,在需要为自己的领域书写代码的时候,喜欢强调各自领域的特殊性或是复杂性,试图说明某些软工原则在此并不适用。但按照我的观察,那些说法很少成立,而且大多出自对软件工程的不理解。这里晨枫同学对全局变量的说法,算是一个典型的例子。

该用户从未签到

板凳
发表于 2014-2-26 12:53:11 | 显示全部楼层
晨枫 发表于 2014-1-30 22:07 7 h, _) ^3 [5 q% U, i! x
简单说一句吧:

  k4 p/ p# a* @沉宝同学的情况不了解,我自己确实不清楚化工自控里冷、暖、热启动的实际影响,晨枫你若有空闲不妨科普一下?
2 }& b% ?) w( {$ M* w" Z' C+ \. z6 i- i4 o
关于软件工程原则稍微说两句。确实如晨枫你所说,很多时候由于各种现实情况,我们不见得总是能够教科书式地遵守一些软件工程原则。进度压力、平台限制、人员配置情况,这几个算是典型的影响因素。但这并不代表说我们就可以干脆向这些现实情况举手投降。那些原则被总结出来,是由于许多实践证明了遵循这些原则能够带来巨大的好处。所以在充分理解现实的情况下,我们应该做的是尽量创造条件逐步改进这个现实。全系统推倒重来或许不现实,但我们可以设法划清界线,让新系统、新模块能够以比较健康地方式构造起来,老系统或许也能做些有益的改进和重构,而不是直接摊手啥也不做,甚至继续在已经不太健康的系统上继续叠床架屋,把问题越滚越大。你说对吗?
# L! q- Y2 H0 s1 U! l0 _( I
# `4 H$ M6 ?: g) \9 j再来说全局变量这个事。我没干过自控,DCS 程序应该以逻辑还是数据为中心我没有发言权。但不论那种情况,直接使用全局变量都是不合适的:你可以有全局的数据,但并非一定要用任何代码都能随意读写的全局变量来表示和保存。这里沉宝说得很好:
5 m  W! a0 i7 x' q' L/ L& [2 a- h0 v0 S
全局变量可以承载全局数据,但全局数据并不一定依赖于全局变量,没有全局变量一样可以获取全局数据。以C语言为例,可以定义一个结构(struct)涵盖全局数据区的所有数据,然后把这个结构的指针作为参数传递给子程序。如果数据真的很多很复杂,还可以考虑轻量级的in-memory数据库(不是所有的数据库都像Oracle、DB2那样巨无霸),保证酸味(ACID)纯正。

手机版|小黑屋|Archiver|网站错误报告|爱吱声   

GMT+8, 2024-5-6 10:33 , Processed in 0.035044 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表