Welche Sprachen werden für die Programmierung von Echtzeit-Systemen verwendet?
Ich nicht finden alle nützliche Informationen über Programmiersprachen für Echtzeit-Systeme. Alles was ich fand, war Real Time Systems and Programming Languages: Ada 95, Real-Time Java and Real-Time C/POSIX (einige hier als pdf-Datei), das scheint zu sprechen, über Erweiterungen von Java und C für Reale Systeme (I don ' T haben das Buch zu Lesen). Auch das Buch wurde 2001 veröffentlicht, und die Informationen können veraltet sein, jetzt.
So, ich bin zweifelhaft, ob diese Sprachen gebraucht werden, in der realen Welt Anwendungen, oder wenn Echtzeit-Systemen in der realen Welt in anderen Sprachen, wie DSLs.
Falls die zweite option für Sie wahr ist, was sind die herausragenden Eigenschaften der Sprache, die Sie verwenden?
InformationsquelleAutor der Frage eKek0 | 2009-03-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Real-Time Specification for Java hat nun mehrere kommerzielle Implementierungen:
Diese Produkte umfassen die Zusammenstellung ein Kontinuum von native-code (Aonix) , J2ME (aicas, apogee) zur vollen J2SE (Sun, IBM). Die meisten, wenn nicht alle, gesehen haben, Bereitstellungen in kleinen zahlen von Sicherheits - oder geschäftskritische Systeme, aber Dynamik baut. Beispiele sind Eglin AFB space surveillance radar Modernisierung und die US-Marine die Nutzung von RTSJ im DDG-1000/Zumwalt-Zerstörer. Sun behauptet auch die Bereitstellung in der financial-transaction-processing domain.
Wenn Sie interessiert sind, in RTSJ, schlage ich vor, Peter Dibble ist Echtzeit-Plattform-Programmierungoder Professor Wellings' Concurrent and Real-Time Programming in Java.
Auf ein zugehöriger Hinweis, es ist auch die Arbeit im Gange, um eine Safety-Critical-Profil für die Java-Programmiersprache, gebaut als eine Teilmenge von RTSJ. Auch eine Expertengruppe gebildet hat, zu erkunden Verteilt RTSJ DRTSJ, aber die Arbeit ist ins stocken geraten.
InformationsquelleAutor der Antwort andersoj
Ich bin ein Avionik-software-Ingenieur.
Ich war in der Lage, an mehreren Projekten.
Die Sprachen, die ich verwendet, in denen Projekte sind: C, C++ und Echtzeit-Java.
C ist großartig.
C++ ist nicht so schlecht, aber C/C++ erfordern die strikte coding standards für die sicherheitstechnischen Aspekte wie DO-178B.
Ich denke, Real-time Java ist der Weg zu gehen, aber ich sehe nicht viele Avionik-Anwendungen, noch.
Koreanisch jet trainer T-50 haben eine mission-computer RT-Java-Anwendung dienen HUD und MFD-displays und alle unternehmenswichtigen Funktionen.
InformationsquelleAutor der Antwort Keugyeol
Das Buch deckt die Verwendung von Ada 95, das Java Real-Time System und die Echtzeit-POSIX-Erweiterungen (in C programmiert). Keiner von diesen wird direkt eine domain-spezifische Sprache.
Ada 95 ist eine Programmiersprache, Häufig verwendet in den späten 90er Jahren und (AFAIK) immer noch weit verbreitet für die Echtzeit-Programmierung in den Bereichen Verteidigung und Luft-und Raumfahrtindustrie. Es ist mindestens ein DSL-auf der Ada - SparkAda - das ist ein system von Anmerkungen, die beschreiben, Charakteristika des Systems zu einem Programm-Verifikation tool.
Dieses interview vom 6. April 2006 zeigt einige der Klassen und der virtuellen Maschine änderungen, die das Java Real-Time System. Es erwähnt nicht, dass jede domain-specific-language-Erweiterungen. Ich bin nicht gekommen, über die Verwendung von Java in Echtzeit-Systeme, aber ich war nicht auf der Suche auf die Arten von Systemen, in denen ich erwarten würde, um es zu finden (ich arbeite in der Luft-und Raumfahrt-simulation, wo es C++, Fortran und gelegentlich Ada für Echtzeit-in-the-loop-Systeme).
Echtzeit-POSIX ist ein Satz von Erweiterungen für POSIX-Betriebssystems Einrichtungen. Als OS-Erweiterungen, die Sie nicht benötigen, nichts besonderes in der Sprache. Das sagte, ich denken kann, eine C basierte DSL zur Beschreibung von embedded systems - SystemC - aber ich habe keine Ahnung, ob es auch verwendet werden, zu erzeugen, die embedded-Systeme.
Nicht erwähnt in dem Buch ist Matlabdie in den letzten Jahren hat sich von ein Simulations-Werkzeug, um ein Modell driven development-system für Echtzeit-Systeme.
Matlab/Simulink ist in der Tat eine DSL für die lineare Programmierung, Status, Maschinen und algorithmen. Matlab erzeugen kann C oder HDL für Echtzeit-und embedded-Systeme. Es ist sehr selten zu sehen, ein Avionik -, EW-oder anderen Rüstungsindustrie real-time-job beworben, die nicht erfordern, dass einige Matlab-Erfahrung. (Ich arbeite nicht für Matlab, aber es ist schwer, über die Betonung, wie allgegenwärtig es ist wirklich in der Industrie)
InformationsquelleAutor der Antwort Pete Kirkham
Echtzeit-Anwendungen gemacht werden kann in fast jeder Sprache. Die Umgebung (Betriebssystem, runtime und runtime-Bibliotheken) müssen jedoch kompatibel sein, um Echtzeit-Einschränkungen. In den meisten Fällen in Echtzeit bedeutet, dass es immer eine deterministische Zeit, in der etwas passiert. Deterministische Zeit ussually einen sehr geringen Zeit-Wert in Mikrosekunden/Millisekunden-Bereich.
Echtzeit-Systeme verlassen sich ausschließlich auf diese Kriterien, als die specificiations in der Regel etwas sagen wie " Alle x (Zeit) (etwas zu tun | etwas überprüfen)'. In der Regel geschieht dies, wenn das system Schnittstellen zu externen sensoren und Steuerelemente, die lebensrettende oder lebensgefährliche Systeme.
War ich arbeiten an einem in-car-navigation und infotainment-system entwickelt, meist in C/C++ mit einem Betriebssystem konfiguriert, die spezifisch auf die Bedürfnisse der real-time constraints zu bieten, Echtzeit-navigation und Multimedia-Wiedergabe.
Aber das ist nicht alles zu real-time-Systeme: in der Regel die Auswahl der algorithmen im gesamten system gemacht zu haben, deterministische Laufzeiten gemäß der Big-O-notation, meist durch lineare oder Konstante Zeit. Alles andere wird als nicht-deterministisch und somit nicht nutzbar für die real-time-Systeme.
InformationsquelleAutor der Antwort grover
Alle real-time-Systeme, mit denen ich arbeitete, waren vorwiegend in C geschrieben, mit einigen bits von assembler, oder geschrieben, meist in assembler mit wenig bits des C. (Je nachdem, ob wir reden von den 90er Jahren und darüber hinaus, oder die 80er, beziehungsweise.) Jedoch, einige der real-time-Systeme, die ich gearbeitet habe, mit verwendet haben-nicht gerade DSLs -- special homegrown-code-Generatoren.
InformationsquelleAutor der Antwort Eddie
Real-time-orientierte Sprache?
Was ist der Echtzeit -
Zuerst müssen wir definieren, was real-time bedeuten.
Natürlich je nachdem, wie das Werkzeug wird gegen die physische Umgebung reines Echtzeit- konnte nicht effektiv durchgeführt, vor allem, weil es eine Menge von Drittanbieter-Abhängigkeiten.
Wenn Sie Gebäude einbetten Zeug durch die Verwendung von Mikrocontrollern wie arduinodie Sprache zu verwenden, wird begrenzt durch die hardware, aber bei komplexeren Sachen wie Raspberry Pidie Sprache, die Wahl ist sehr breit.
Granularität
Dies ist abhängig davon, was Sie Messen, wenn mit dem Sie arbeiten:
Ereignis-basierte Lesung
Den richtigen (besseren) Weg für die Erhebung von Daten basiert auf Wertänderung... immer wenn das Gerät es zulässt.
Ihrem Werkzeug haben, um nicht Umfrage Werte vom Gerät, aber das Gerät zum senden von Werten an Ihr Werkzeug, wenn Sie sich ändern.
Könnte dies erfolgen, indem eine hardware-interrupt auslösen oder durch die Verwendung von port protocole wie RS-232 bleiben, hören auf einige serielle Schnittstelle, für die Probe.
Monitoring-Umgebung
Ist die Letzte Sache, gewarnt zu werden, ist wie legitime Benutzer interagieren mit.
Wenn Sie einbetten Stand-alone-Gerät, wie Roboterkönnen Sie verwenden, Grafik-Bibliotheken, um die Interaktion mit touch-screen.
Wenn Sie das erstellen von web-basierten monitor, die Sie haben können, zu beachten, dass der client könnte eine alte 800x600 Monochrom-Bildschirm, mit schlechten internet-Verbindung und kleinem Prozessor... Aber je nach Endziel, wenn Sie die Interaktion mit Kunden, die Sie sicherstellen konnten, starke hardware und starke internet-verbindungen. Trotzdem haben Sie zu beobachten, für den Anschluss zu verlieren-und event-Kommunikation Verzögerung zwischen server und client. Es ist vor allem Drittanbieter-Abhängigkeiten.
Welche Programmiersprache?
Von dort, die Sprache, die Auswahl ist groß und deutlich davon abhängen,
Konnte man bauen real-time-monitoring-engine mithilfe von bash und sql nur, Ich habe gesehen, ausgereifte Motoren, die gebaut wurde, unter postgresql nur... ich persönlich habe gebaut ein web-basiertes, solar-Energie-monitor mit perlmysql und javascript.
InformationsquelleAutor der Antwort F. Hauri
Ich kann nicht glauben, dass niemand erwähnt hat LabVIEW-Programmiersprache, die Häufig für Real-time safety-kritische Systeme. Es verfügt über umfangreiche Bibliotheken und der bekannte design patterns für architecturing und Umsetzung für RT-Systeme.
Ebenfalls von National Instruments macht verschiedene hardware (cRIO, PXI und etc), die sind ausgelegt für Echtzeit-Anwendungen.
Verwenden wir LabVIEW für Fracking (Hydraulic Fracturing), die in sicher-kritischen Umgebungen.
Durch die Art und Weise, LabVIEW ist auch für nicht-RT-Anwendungen.
InformationsquelleAutor der Antwort Kamran Bigdely
SPS ausgeführt Leiter und FUP-code, das ist wirklich ein real-time-dsl in dem Sinne, dass Sie Ihre Möglichkeiten sind so begrenzt, dass es schwierig ist, ein Programm in einer Weise, dass Ergebnis wäre unvorhersehbar runtime performance
InformationsquelleAutor der Antwort Tallak Tveide
Eine wirklich gezielte Anwendung der C-Sprache zu real-time-Programmierung - und alle damit zusammenhängenden Fragen (wie parallele Programmierung) - angeboten wird durch meine Kickstarter
http://www.kickstarter.com/projects/767046121/crawl-space-computing-with-connel
Es heißt "Weit Programmierung" und ich es getan haben die meisten von meinem Leben. Die Belohnungen beinhalten eine software-Bibliothek und ein Buch entworfen, um nützlich zu sein.
InformationsquelleAutor der Antwort Larry Dickson