Frage

Ich mag eine Menge von dem, was ich über D gelesen habe.

  • Unified Dokumentation (Das wäre macht meine Arbeit viel einfacher.)
  • Testing Fähigkeit der eingebauten Sprache.
  • Debug Code-Unterstützung in der Sprache.
  • Weiterleiten Erklärungen. (Ich immer dachte, es war dumm das erklären gleiche Funktion zweimal).
  • in Funktionen Built ersetzen die Preprocessor.
  • Module
  • Typedef für die richtige Typprüfung verwendet statt Aliasing.
  • Verschachtelte Funktionen. ( Husten PASCAL Husten )
  • In und Out-Parameter. (Wie offensichtlich ist, dass!)
  • Unterstützt Low-Level-Programmierung - Eingebettete Systeme, oh yeah!

Allerdings:

  • Kann D ein eingebettetes System unterstützen, gehen wird, um ein Betriebssystem nicht?
  • Ist das geradezu declearation dass es unterstützt nicht die 16-Bit-Prozessoren proclude vollständig aus eingebetteten Anwendungen, die auf solchen Maschinen laufen? Manchmal braucht man keinen Hammer Ihr Problem zu lösen.
  • Die Garbage-Collection ist groß unter Windows oder Linux, aber, und leider Embedded-Anwendungen irgendwann muss explizite Speicherverwaltung tun.
  • Array die Überprüfung der Grenzen, die Sie lieben es, Sie hassen es. Groß für Design Sicherung, aber nicht alle Tage zulässig für Performance-Probleme.
  • Was sind die Auswirkungen auf ein eingebettetes System, nicht ein Betriebssystem ausgeführt wird, für die Unterstützung Multithreading? Wir haben einen Kunden, der nicht einmal, wie Unterbrechungen der Fall ist. Viel weniger OS / Multithreading.
  • Sie hat ein D-Lite für eingebettete Systeme?

Also im Grunde sind D geeignet für eingebettete Systeme mit nur wenigen Megabyte (manchmal weniger als ein magabyte), nicht ein Betriebssystem ausgeführt wird, wobei max Speichernutzung bei der Kompilierung bekannt sein muß (Pro-Anforderungen.) Und möglicherweise auf etwas kleiner als ein 32-Bit-Prozessor?

Ich bin in einige der Funktionen sehr interessiert, aber ich habe den Eindruck, es bei Desktop-Anwendung Entwickler gedacht ist.

Was ist speziell macht, dass sie ungeeignet für eine 16-Bit-Implementierung? (Vorausgesetzt, die 16-Bit-Architektur ausreichende Mengen an Speicher adressieren könnte die Laufzeiten entweder im Flash-Speicher oder RAM. Zu halten), 32-Bit-Werte immer noch berechnet werden konnte, wenn auch langsamer als 16 Bit und mehr Operationen erfordern, Bibliothek-Code.

War es hilfreich?

Lösung

Ich muss sagen, dass die kurze Antwort auf diese Frage lautet „Nein“.

  • Wenn Ihre Maschinen 16 Bit sind, werden Sie große Probleme haben D Einbau in - es ausdrücklich nicht dafür ausgelegt ist,
  • .
  • D ist kein Licht Sprachen in sich selbst, ist es viel Laufzeittyp info erzeugt, die normalerweise in Ihrer Anwendung verknüpft ist, und dass auch für typsichere variadics benötigt wird (und damit die Standard-Formatierungsfunktionen werden es Tango oder Phobos). Das bedeutet, dass selbst die kleinsten Anwendungen in der Größe überraschend groß sind und somit D von den Systemen mit geringen RAM disqualifizieren können. Auch D mit einer Laufzeit als Shared lib (was einige dieser Probleme lindern könnte), wurde wenig getestet.
  • Alle aktuellen D-Bibliotheken erfordert eine C-Standardbibliothek darunter, und somit in der Regel auch ein Betriebssystem, so dass auch das jedoch D. gegen die Verwendung von arbeitet, gibt existieren experimentelle Kernel in D, so dass es nicht unmöglich ist per se. Es wäre einfach keine Bibliotheken für sie, wie heute.

Ich persönlich mag Sie zum Erfolg sehen, aber daran zweifeln, dass es einfach Arbeit sein wird.

Andere Tipps

In erster Linie lesen larsivi Antwort . Er ist auf der D-Laufzeit gearbeitet und weiß, wovon er spricht.

Ich wollte nur hinzufügen: Einige von dem, was Sie gefragt ist bereits möglich. Es wird Sie nicht den ganzen Weg zu bekommen, und ein Fehlschlag ist so gut wie eine Meile hier aber nach wie vor, FYI:

  

Die Garbage-Collection ist groß auf Windoof oder Linux, aber, und leider manchmal eingebettete Anwendungen explizite Speicherverwaltung zu tun haben.

Sie können Garbage Collection ausschalten. Die verschiedenen experimentellen D OSes da draußen tun es. Siehe std.gc Modul, insbesondere std.gc.disable. Beachten Sie auch, dass Sie Speicher zuweisen müssen nicht mit new: Sie malloc und free verwenden können. Auch Arrays kann mit ihm zugeordnet werden, müssen Sie nur einen D-Array um den zugewiesenen Speicher ist mit einer Scheibe befestigen.

  

Array die Überprüfung der Grenzen, die Sie lieben es, Sie hassen es. Groß für Design Sicherung, aber nicht alle Tage zulässig für Performance-Probleme.

Die Spezifikation für Arrays erfordert insbesondere, dass Compiler erlauben die Überprüfung der Grenzen zu sein gedreht (siehe "Implementierungshinweis") ab. gdc bietet -fno-bounds-check und in dmd mit -release sollte deaktiviert werden.

  

Was sind die Auswirkungen auf ein eingebettetes System, nicht ein Betriebssystem ausgeführt wird, für die Unterstützung Multithreading? Wir haben einen Kunden, der nicht einmal, wie Unterbrechungen der Fall ist. Viel weniger OS / Multithreading.

Das bin ich weniger klar, aber wenn man bedenkt, dass die meisten C Runtimes Multithreading Abschalten ermöglichen, ist es wahrscheinlich scheint die D Laufzeit es auch zu deaktivieren. Ob das einfach oder möglich jetzt, obwohl ich nicht sagen kann.

Die Antworten auf diese Frage sind veraltet:

  

Können D ein eingebettetes System unterstützen, die nicht ein Betriebssystem gehen zu laufen?

D kann cross-compiled für ARM Linux und ARM Cortex-M . Einige Projekte zielen auf die Bibliotheken für die Cortex-M-Architekturen zu schaffen wie MiniLibD für die STM32 oder diese Projekt, das eine generische Bibliothek für den STM32 verwendet. (Sie könnten Ihre eigenen minimalistischen OS in D auf ARM Cortex-M implementieren.)

  

Ist die geradezu declearation, dass es nicht 16-Bit-Prozessoren unterstützt es proclude vollständig von Embedded-Anwendungen auf solchen Maschinen laufen? Manchmal braucht man keinen Hammer Ihr Problem zu lösen.

Nein

, siehe oben beantworten ... (Aber ich würde nicht erwarten, dass „kleiner“ Architekturen als Cortex-M wird in naher Zukunft unterstützt werden.)

  

Die Garbage-Collection ist groß unter Windows oder Linux, aber, und leider manchmal Embedded-Anwendungen müssen explizite Speicherverwaltung tun.

Sie können schreiben Garbage Collection freien Code . (Die D Stiftung scheint bei einer „GC frei compliant“ Standardbibliothek Phobos zu zielen, aber das ist in Arbeit.)

  

Array die Überprüfung der Grenzen, die Sie lieben es, Sie hassen es. Groß für Design Sicherung, aber nicht alle Tage zulässig für Performance-Probleme.

(Wie Sie gesagt haben diese auf Ihrem „persönlichen Geschmack“ hängen und Design-Entscheidungen. Aber ich würde eine akzeptable Performance-Overhead für gebundene Überprüfung durch den Hintergrund des D-Compiler-Entwicklers und D Design Ziele übernehmen.)

  

Was sind die Auswirkungen auf ein eingebettetes System, nicht ein Betriebssystem ausgeführt wird, für die Unterstützung Multithreading? Wir haben einen Kunden, der nicht einmal, wie Unterbrechungen der Fall ist. Viel weniger OS / Multithreading.

?

(Was die Frage ist, könnte eine Umsetzung mutlithreading D's Sprachfunktionen zB wie erklärt in dieser Frage mit BTW.: wenn Sie Interrupts verwenden möchten betrachten diese „Hallo Welt“ Projekt für einen Cortex-M3 .)

  

Gibt es ein D-Lite für eingebettete Systeme?

Die SafeD Teilmenge von D Ziele auf dem embedded Bereich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top