我最近才接触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的人就不怎么样, 怎么说呢, 程序员写代码,我指写代码,用什么都没有两样,关键是看应用, 不同的应用选择一个合适的开发工具才是最重要的。

一孔之见,欢迎弯腰低头找板砖........................

转载于:https://www.cnblogs.com/volcanol/archive/2011/06/03/2070252.html

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

  1. delphi 获取打印机默认纸张_在DELPHI中实现打印的预览

    在DELPHI中实现打印的预览 PCPOP.COM 2005年10月18日 类型:转载 作者:<电脑报> 编辑:王琛 ----------------------------------- ...

  2. delphi 安卓图片保存数据库_在Delphi实现在数据库中存取图像的图文演示无错

    本实例演示如何在数据库中存取图像文件. 向窗体上添加一个TListBox组件.一个TImage组件和一个TTable组件,设计完成的主界面如图1所示. 图1 主界面 本系统中需要设计一个新的基于Par ...

  3. delphi真的穷途末路了! 不变程序员的苦难和热爱的精神。

    建立一个自动编号字段,系统并没有建立一个序列,先填写一条,再删掉就行了. http://hi.baidu.com/itgorgon/item/bec2a816c58954fd756a84cd http ...

  4. delphi还有人用吗?delphi过时了吗?为什么还有人使用Delphi开发软件?一文说清Delphi的领先一个时代的开发工具DNA

    我正在和一个不太熟悉Delphi的人聊天.他问Delphi到底是什么使很多人继续喜欢它?delphi还有人用吗?delphi过时了吗?为什么还有人使用Delphi开发软件?我以为我会分享我的答案,看看 ...

  5. 在delphi中嵌入腳本語言--(譯)RemObjects Pascal Script使用說明(1)(譯)

    在delphi中嵌入腳本語言--(譯)RemObjects Pascal Script使用說明(1)(譯) http://blog.csdn.net/truexf/article/details/15 ...

  6. 结合Delphi和Python的优势:使用Delphi VCL组件快速构建超现代的Python本机Windows GUI桌面酷炫用户界面应用

    Delphi开发Pyhron GUI 有时您的应用程序需要一个用户界面,但是为Python应用程序制作用户界面最好的方法是什么?输入用于Python的DelphiVCL.VCL是成熟的Windows本 ...

  7. 在MATLAB 中st_1是变量名,在Delphi中,根据变量标识符命名规则,st80不能用一个变量命名。...

    在Delphi中,根据变量标识符命名规则,"st80"不能用一个变量命名. 更多相关问题 [单选,A型题] 胸痹表现为"心中痞,留气结在胸,胸满,胁下逆抢心", ...

  8. PHP真的没落了吗??

    PHP真的没落了吗?? 适合的才是最好的,永远相信这句话! 我开发做了五年多了,现在是前端也在写,后端也在写.唉~~~我真的是苦命的孩子!!这让我想起了周星驰电影说的一句贱贱的话:"要么卷死 ...

  9. Python什么是闭包、闭包特征、定义闭包传入一个数求和并输出,定义一个装饰器:打印函数运行花费的时间,定义一个类:要求:包含一个对象属性,且用_(单下划线)命名的定义一个类方法(装饰器)

    1. 闭包.闭包特征及应用 1.1 什么是闭包? 闭包就是外部函数中定义一个内部函数,内部函数引用外部函数中的变量,外部函数的返回值是内部函数; 闭包是由函数及其相关的引用环境组合而成的实体(即:闭包 ...

最新文章

  1. Project evaluation failed including an error in afterEvaluate {}. Run with --stacktrace for details
  2. HbuilderX中的git的使用 git HbuilderXgit HbuilderX 使用git
  3. 用户自定义的标识符的一些注意事项
  4. 强化学习之原理详解、算法流程及Python代码
  5. 屏幕编程 F4的帮组用法
  6. 跨域资源共享CORS详解
  7. 《零基础看得懂的C语言入门教程 》——(五)C语言的变量、常量及运算
  8. 《计算机应用基础》期末试卷.,《计算机应用基础》期末试卷(A卷)《计算机应用基础》期末试卷(A卷).doc...
  9. 反思,今天总体感觉事情很简单,但项目比较多,没有掌握住很好的技巧,所以感觉很混乱
  10. python eureka服务发现_Spring Cloud版——电影售票系统—Eureka微服务注册与发现
  11. js实现excel块拖拉数据_Excel操作比Python更方便?常见数据操作Excel实现和Python实现的比较...
  12. ps html css 工具,认识Photoshop(PS)CSS切图必用工具
  13. threallocal详解
  14. 图片相似度识别在线_图片相似度计算的几种方法
  15. 项目部署到自己的IIS上
  16. iOS弹幕库OCBarrage-如何hold住每秒5000条巨量弹幕
  17. Sybase数据库按条件导出数据文件
  18. 初学者入门——NOI题库1.3
  19. JS中常见的兼容写法
  20. 私域流量客服社群运营员工工作绩效表格方案计划手册指南宝典

热门文章

  1. Web3.js 0.20.x API 中文版翻译
  2. 第一课:数据结构的基本概念和术语
  3. fcitx输入法在wps、wineqq中失灵问题的解决
  4. 外包 银行数字签名U盘的用法
  5. 一个生成全局唯一Sequence ID的高并发工厂类 (Java)
  6. 安装Eclipse ADT插件时遇到的问题
  7. 用PHP控制Nagios进程
  8. 悟空 CRM(9.0版本)V9.0_20190416 更新日志
  9. 性能测试总结(一)---基础理论篇
  10. 5、Java并发性和多线程-相同线程