您的位置:首页 > 编程语言 > Delphi

Delphi真的没落了吗?_说Delphi母语Pascal的另一个应用

2011-06-03 03:10 323 查看
我最近才接触Delphi语言, 而且从目前所有就业招聘的情况来看,Delphi的前景看起来有点不如某些开发工具光鲜,尤其在Borland公司被甲骨文Oracle收购后,好像Delphi注定要被世人遗忘一样, 同时在各大论坛、BBS上人们对Delphi的看法就有太多的成见,一般人都看不起Delphi和VB这样简单的语言,或者说对程序员来说缺少学习难度的语言或者开发工具。

不过好像这些都是——真正的程序员——们的看法,而不是所有人的看法,大多数的程序员其实不知道其实对于Delphi的母语——Pascal——还有一个非常特别的应用:那就是作为国际上通用的PLC编程语言存在。

在自动化控制领域, 有几种用的比较多的语言,最常用的就是LAD、STL和FBD。除了这些常用的语言之外还有一个比较常用的语言:那就是SCL。SCL语言是什么语言呢? 就是结构化文本编程。

SCL语言对于一些复杂的运算,尤其是数学运算其编程的复杂程度较LAD、STL和FBD都要简单。下面我们来看看自动化界使用的Pascal语言应用,我们以西门子PLC为例子来做一个简单的比较,做一个简单的电机正反转的控制语言的实现。

首先看看一个定义的函数块:FC

STL语言:

第一步定义数据接口

IN数据接口:

Estop BOOL // 急停 I0.0

Power BOOL // 控制电源 I0.1

StartDir BOOL // 正向启动 I0.2

StartRev BOOL // 反向启动 I0.2

Stop BOOL //停止 I0.3

Test BOOL //试灯 I0.4

OUT接口区:

RunDIr BOOL //正向启动 Q0.0

RunRev BOOL // 反向启动 Q0.1

RunningLamp BOOL // 运行指示灯 Q0.2

第二步程序的实现:

Net1: 正转控制

A Estop

A Power

AN StartRev

A

A(

O StartDir

O RunDir

)

= RunDoir

Net2: 反转控制

A Estop

A Power

AN StartDir

A Stop

A(

O StartRev

O RunRev



= RunRev

Net3: 指示灯

O RunDir

O RunRev

O Test

= RunningLamp

上面程序段是自动化人员可能会用到的一种较常用的实现;下面我们看看Pascal是怎么实现的。

FUNCTION "MotorStart"

title

version

VAR_INPUT

Estop:BOOL;

Power:BOOL;

StartDir:BOOL;

StartRev:BOOLl;

Stop:BOOL;

Test:BOOL;

END_VAR

VAR_OUTPUT

RunDir:BOOL;

RunRev:BOOL;

RunLamp:BOOL;

END_VAR

VAR_TEMP  

DirTemp:BOOL;

RevTemp:BOOL;

END_TEMP

Begin:

// 正转

IF Estop=TRUE AND Power= TRUE AND Stop=TRUE AND StartDir=TRUE THEN

DirTemp:=TRUE;

ElSE

DirTemp:=FALSE;

END_IF

IF DirTemp=TRUE AND StartRev=FALSE THEN

RunDir:=TRUE;

END_IF;

//反转

IF Estop=TRUE AND Power=TRUE AND Stop=TRUE AND StartRev=TRUE THEN
RevTemp:=TRUE;

ElSE

RevTemp:=TRUE;

END_IF

IF RevTemp AND StartDir=FALSE THEN

RunRev:=TRUE;

END_IF;

//指示灯

IF RunDir=TRUE OR RunRev=TRUE OR Test=TRUE THEN

RunningLamp:=TRUE ;

END_IF

END_FUNCTION

上面的SCL程序段好像并没有比STL语言简洁或者容易多少,反而看起来很复杂, 当然如果做逻辑运算SCL实际上并不比其他语言简单。但是如果循环和所数学运算,用SCL就会简单多了。

这里不多说了,以后有机会再讨论其他的应用。

只想表达一个观点,其实Delphi的应用如果编写Windows的应用程序,应该不比Microsoft出品的Visual Studio中的C/C++组件差多少,如果说有一定的差距,那就是目前没有人用Pascal写过操作系统, 而目前主流的操作系统都是用C语言实现的,可能在这一点上人们会认为Pascal语言不如C语言,学C的人就是牛人,而学Pascal的人就不怎么样, 怎么说呢, 程序员写代码,我指写代码,用什么都没有两样,关键是看应用, 不同的应用选择一个合适的开发工具才是最重要的。

一孔之见,欢迎弯腰低头找板砖........................
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: