当前位置:  开发笔记 > 编程语言 > 正文

什么语言用于实时系统编程?

如何解决《什么语言用于实时系统编程?》经验,为你挑选了6个好方法。

我没有找到任何关于实时系统的编程语言的有用信息.我发现的只有实时系统和编程语言:Ada 95,实时Java和实时C/POSIX(这里有一些pdf),它似乎谈论了实时系统的Java和C扩展(我不知道)有书要读).此外,该书于2001年出版,现在信息可能已经过时.

所以,我怀疑这些语言是否用于现实世界的应用程序,或者现实世界中的实时系统是否用其他语言制作,如DSL.

如果第二个选项适合您,您使用的语言的突出特点是什么?



1> Keugyeol..:

我是航空电子软件工程师.我能够参与几个开发项目.我在这些项目中使用的语言是:C,C++和Real-time Java.

C很棒.C++并不是那么糟糕,但C/C++需要严格的编码标准来满足安全考虑,例如DO-178B.

我认为实时Java是要走的路,但我还没有看到很多航空电子应用.

韩国喷气式教练机T-50将配备一台运行RT Java应用程序的任务计算机,用于HUD和MFD显示器以及所有关键任务功能.


运行Java的T-50喷气式教练机的更新......运行RT Java的任务计算机于2010年11月进行了飞行测试.此后,它正在不时飞行以及其他飞行测试目的.RT Java应用程序执行HUD和MFD上的所有计算,数据接口和图形显示.

2> andersoj..:

Java的实时规范现在有几个商业级实现:

Sun的JavaRTS

IBM的WebSphere Real-Time

Aonix PERC

aicas JamaicaVM

Apogee Aphelion

这些产品涵盖从编译到本机代码(Aonix)到J2ME(aicas,apogee),再到完整J2SE(Sun,IBM)的连续体.大多数(如果不是全部)已经在少数安全或任务关键型系统中进行了部署,但势头正在增强.例子包括Eglin AFB的太空监视雷达现代化和美国海军在DDG-1000/Zumwalt驱逐舰中使用RTSJ .Sun还声称在金融交易处理领域进行部署.

如果您对RTSJ感兴趣,我建议使用Peter Dibble的实时平台编程,或者教授Wellings的Java并发和实时编程.

在相关的说明中,还有一些工作正在为Java编程语言提供安全关键的配置文件,该配置文件是作为RTSJ的子集构建的.此外,一个专家组已经成立,以探索分布式RTSJ DRTSJ,但工作停滞不前.



3> Pete Kirkham..:

本书介绍了Ada 95的使用,Java实时系统和实时POSIX扩展(用C编程).这些都不是直接特定于域的语言.

Ada 95是一种常用于90年代后期的编程语言,(AFAIK)仍广泛用于国防和航空航天工业的实时编程.在Ada - SparkAda之上至少有一个DSL构建- 这是一个注释系统,它描述了程序验证工具的系统特性.

2006年4月6日的访谈表明构成Java实时系统的一些类和虚拟机更改.它没有提到任何特定于域的语言扩展.我没有在实时系统中使用过Java,但我还没有看到我期望找到它的各种系统(我在航空航天模拟中工作,它是C++,Fortran和偶尔的Ada用于实时环路系统).

实时POSIX是POSIX操作系统工具的一组扩展.作为操作系统扩展,它们不需要该语言中的任何特定内容.也就是说,我可以想到一个基于C的DSL用于描述嵌入式系统--SystemC - 但我不知道它是否也用于生成嵌入式系统.

书中没有提到的是Matlab,它在过去几年中已经从模拟工具变为实时系统的模型驱动开发系统.Matlab/Simulink实际上是用于线性编程,状态机和算法的DSL.Matlab可以为实时和嵌入式系统生成C或HDL.很少见到航空电子,电子战或其他国防工业的实时工作广告,不需要一些Matlab经验.(我不适用于Matlab,但很难过分强调它在行业中的普遍存在)



4> grover..:

实时应用程序几乎可以用任何语言编写.但是,环境(操作系统,运行时和运行时库)必须符合实时约束.在大多数情况下,实时意味着总会有确定的时间发生某些事情.确定性时间在微秒/毫秒范围内是非常低的时间值.

实时系统完全依赖于这个标准,因为具体化通常会说"每x(一段时间)(做某事|检查某事)".通常,如果系统与外部传感器接口并控制挽救生命或危及生命的系统,就会发生这种情况.

我正在开发一种主要以C/C++开发的车载导航和信息娱乐系统,其操作系统专门配置以满足实时约束,以提供实时导航和媒体播放.

但这并非全部都是实时系统:通常,整个系统中的算法选择根据Big-O表示法具有确定性运行时间,主要使用线性或恒定时间.其他一切都被认为是非确定性的,因此不适用于实时系统.


"实时应用程序几乎可以用任何语言制作"并非如此.最常见的限制是,使用世界各地的垃圾收集器的语言无法提供确定性延迟,无论您对它们做了什么.
@Tom它们可能适用于软实时应用程序.Erlang就是一个典型的例子.

5> Eddie..:

我使用的所有实时系统主要是用C语言编写的,带有一些汇编程序,或者主要用汇编语言编写,只有很少的C语言.(取决于我们是在谈论90年代及以后,还是80年代,但是,我使用的一些实时系统使用了 - 不完全是DSL - 特殊的本土代码生成器.



6> F. Hauri..:

面向实时的语言?

什么是实时的

首先,我们必须定义实时意味着什么.

当然,取决于您的工具如何对抗物理环境,纯实时无法有效完成,主要是因为会有很多第三方依赖.

如果你使用像arduino这样的微控制器来构建嵌入式东西,那么使用的语言将受到硬件的限制,但是对于像Raspberry Pi这样的更复杂的东西,语言选择非常广泛.

粒度

这取决于您正在测量的内容,如果您正在使用:

天气温度,每10分钟读一次就足够了

人的身高或体重,每天读一个或四个

服务器状态,精细调试时间为1秒,安静不重要的辅助服务器约为1小时.

原子碰撞计数:更精细的东西......

基于事件的阅读

收集数据的正确(更好)方式是基于价值变化事件 ......只要设备允许它.

您的工具不得轮询设备中的值,但设备必须在工具更改时向您的工具发送值.

这可以通过使用硬件中断触发器或使用RS-232等端口协议来保持监听某些串行端口来完成.

监控环境

最后要注意的是合法用户将如何与之互动.

如果您正在构建嵌入式独立设备(如机器人),则可以使用图形库与触摸屏进行交互.

如果您正在构建基于Web的监视器,您可能必须记住,客户端可能是旧的800x600单色屏幕,使用较差的互联网连接和小型处理器......但如果您可以与客户进行交互,则取决于最终目标,可确保强大的硬件和强大的互联网连接.无论如何,你必须注意连接松动和服务器与客户端之间的通信延迟事件.主要是第三方依赖项.

哪种编程语言?

从那里开始,语言选择范围很广,显然取决于

你的知识.

请求粒度(当然也可以使用基于事件的粒度)

你必须建立工具的时间(钱;)

延迟,同事......

一种设备

有点监控

其他一些政治原因

您可以通过仅使用bash和sql构建实时监控引擎,我已经看到仅在postgresql下构建的复杂引擎...我个人使用perl,mysql和javascript构建了基于Web的太阳能监视器.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有