IST
PLAN
ADialog (5)
ADialog_Adr (4)
ADialog_Artikel (4)
ADialog_Auftr (5)
ADialog_Hr_Cal (1)
AJob (3)
App-Detail (6)
App-Link (51)
AReport (4)
AReport_Web (1)
Server-VM (1)
Software (1)
demo-online
Beschreibung
Bemerkung
Support
Hist
Plan
OK
abbrechen
Material
Stunden
Wiederholung
OK
abbrechen
z.B. try { dokument.speichern(); datenbank.commit(); status_anzeigen("Daten gespeichert"); } catch() { datenbank.rollback(); meldung("speichern fehlgeschlagen"); } Also, versuche zu speichern: - wenn's klappt, alles festschreiben - wenn nicht, alles rückgängig machen und den User informieren Buffer-Overflows sollten in Script/Runtime/VM-Sprachen auch nicht vorkommen. ( z.B. TypeScript/JavaScript, Java, C#, ... ) Diese benutzen jedoch Bibliotheken, die's ev. mit dem Speicher nicht so genau nehmen. Oder man benutzt unsafe-Blöcke oder unglückliche Compilerschalter. ( Undefiniertes Verhaltung (UB) glänzt am besten durch Abwesenheit )
...
...
C++ ohne UB geht auch -- z.B. mit C++/CLI jedoch nicht ISO C++ konform. ( Alles mit ^ ist hier auch verwalteter Speicher ) public ref class IntDotnetClass { public: int IntValue; public: IntDotnetClass() { this->IntValue = 0; } public: virtual ~IntDotnetClass() { System::Console::WriteLine("~destruct IntDotnetClass" + IntValue.ToString()); } public: int operator=( const int IntValue) { this->IntValue = IntValue; return this->IntValue; } public: virtual System::String^ ToString() override { return IntValue.ToString(); } };
Weiters stehen zur Vermeidung von Speicherproblemen - Rust - Fil-C - Valgrind - und ev. bald TrapC zur Verfügung.
Auf Client und Server eine Script-Sprache ist auf dem Weg. Und dann ev. - sicherer - Module per import ohne Konfigs und Builds - TypeScript neben JavaScript es6 out of the Box - Grundfunktionen (z.B. HTTP, SQL) ohne zusätzliche Abhängigkeit Hat Vorteile, wenn am Client und Server die gleichen Formate und Werkzeuge verwendet werden können. ( natürlich eher für Sachen, bei denen man mit Scriptsprachen auskommen kann )
Compiler vs. Script/Runtime/VM-Sprachen Anforderungen schnell umzusetzen, braucht dynamische Software. Laufzeitprüfungen bei Script/Runtime/VM-Sprachen, wie z.B. - RtAssert( fdName != null && !"".equals(fdName), "fdName mit Inhalt erwartet"); können den Nachteil gegenüber statischer Codeanalyse bei Compilern z.T. ausgleichen. Diese sind - beim entwickeln / testen und - im Produktivbetrieb aktiv. Immer Prüfen kostet jedoch immer Resourcen.
Unterschied zwischen UB und Exception - undefiniertes Verhalten --> Kontrolle verloren --> bevorzugter Kandidat für Container ( Programmtypen, die das NICHT vermeiden, sind im Container besser aufgehoben ) - Exception --> Ausnahme per Catch einfangen, Fehlermeldung, Rollback --> nichts kaputt