<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Keine Warnung bei implizierter Typkonvertierung</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/393a9b1b1d/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/393a9b1b1d/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Deutsch/thread/393a9b1b1d/</id><updated>2020-02-28T05:52:38.186000Z</updated><subtitle>Recent posts to Keine Warnung bei implizierter Typkonvertierung</subtitle><entry><title>Keine Warnung bei implizierter Typkonvertierung</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/393a9b1b1d/?limit=25#706c" rel="alternate"/><published>2020-02-28T05:52:38.186000Z</published><updated>2020-02-28T05:52:38.186000Z</updated><author><name>Anonymous</name><uri>https://forge.codesys.com/u/*anonymous/</uri></author><id>https://forge.codesys.com6f3241df7f6458dab88f0fbdcbb5512cc914b4d5</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;&lt;em&gt;Originally created by:&lt;/em&gt; Bernhard Werner&lt;/p&gt;
&lt;p&gt;Ok, war eine grobe Schätzung.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Keine Warnung bei implizierter Typkonvertierung</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/393a9b1b1d/?limit=25#d15e" rel="alternate"/><published>2020-02-28T05:52:36.072000Z</published><updated>2020-02-28T05:52:36.072000Z</updated><author><name>Benjamin</name><uri>https://forge.codesys.com/u/benjamin/</uri></author><id>https://forge.codesys.com028dde1314e034c53cf2e2bb0d07e9fd9a96eb93</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Ich glaube damit haben wir beide unsere Standpunkte dargelegt und können diese Diskussion abschließen.&lt;/p&gt;
&lt;p&gt;Ich hoffe wirklich darauf, dass die kommende Version zumindest eine Warnung herausgibt ("downcast" sollten aber auf jeden Fall angemerkt werden). &lt;/p&gt;
&lt;p&gt;Einen kleinen Seitenhieb kann ich mir aber nicht verkneifen.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Zitat:&lt;/strong&gt;&lt;br/&gt;
~1 Mrd C-Programmierer&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Gehen wir von einer geschätzten Weltbevölkerung von 6,4Mrd aus (Quelle: Wikipedia, Artikel über Erde).  Ich kann mir zwar vorstellen, dass in einer Softwarefirma im Allgäu eine überproportional hohe Dichte an Programmieren herrscht, dass man dadurch aber meint 15% aller Menschen der Erde könnten programmieren....Weiß nicht, ob ich das so unterschreiben würde.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Keine Warnung bei implizierter Typkonvertierung</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/393a9b1b1d/?limit=25#8c30" rel="alternate"/><published>2020-02-28T05:52:30.111000Z</published><updated>2020-02-28T05:52:30.111000Z</updated><author><name>Anonymous</name><uri>https://forge.codesys.com/u/*anonymous/</uri></author><id>https://forge.codesys.comc06fcbd54495ec70f24350c2d996b4316884135b</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;&lt;em&gt;Originally created by:&lt;/em&gt; Bernhard Werner&lt;/p&gt;
&lt;p&gt;Hallo Benjamin,&lt;/p&gt;
&lt;p&gt;Zur Norm: die Norm sagt nicht explizit, ob implizite Upcasts erlaubt sind&lt;/p&gt;
&lt;p&gt;oder nicht. Es wird nichts über implizite casts gesagt, daher kann man der&lt;/p&gt;
&lt;p&gt;Meinung sein, es gäbe sie nicht.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Benjamin hat geschrieben:&lt;/strong&gt;&lt;br/&gt;
Wieso geht 3S also hin und baut wieder alle Vernunft eine solche "Funktion" in seine Software? Ich kann das einfach nicht verstehen.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Viele Leute begrüßen diese Funktionalität. Es kann bei Upcasts ja auch&lt;br/&gt;
nichts schlimmes passieren. Warum soll es dann nicht einfach gehen?&lt;br/&gt;
Grenzfälle sind die von dir angesprochenen signed nach unsigned&lt;br/&gt;
und umgekehrt. Und ein Grenzfall ist auch DINT nach REAL. Alle anderen&lt;br/&gt;
impliziten casts, die wir erlauben, sehe ich als unkritisch.&lt;br/&gt;
Im Grunde genommen gehören diese casts zu einer Reihe von anderen&lt;br/&gt;
Problemen über die wir auch schon viele Diskussionen hatten:&lt;br/&gt;
- Überläufe und Unterläufe ?&lt;br/&gt;
- Ungültige Pointer &lt;br/&gt;
- Arrayzugriffe ausserhalb des Bereichs&lt;br/&gt;
etc.&lt;br/&gt;
Wir entschärfen das Problem in unserem eigenen (C++/C#)-Code dadurch, dass wir jeder Variable ein Typkürzel vorsetzen:&lt;br/&gt;
iTemp := wTemp;&lt;br/&gt;
fällt dann auf.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Benjamin hat geschrieben:&lt;/strong&gt;&lt;br/&gt;
Wieso kann man an diesem Verhalten nichts mehr ändern? Wenn man eine große Dummheit begangen hat, muss man schließlich in de sauren Apfel beißen und die Konsequenzen tragen.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Naja zunächst mal müssten wir uns darüber einig sein, dass das eine grosse Dummheit ist. Und zum zweiten können wir kein Update von &lt;/p&gt;
&lt;p&gt;CoDeSys machen, dass beim Kunden neue Fehlermeldungen oder eine&lt;/p&gt;
&lt;p&gt;grosse Anzahl von Warnungen zur Folge hat. &lt;/p&gt;
&lt;p&gt;Das wird einfach nicht akzeptiert. Auch eine Warnung hilft nicht viel, weil viele die Vorschrift haben, dass keine Warnungen im Programm sein &lt;/p&gt;
&lt;p&gt;dürfen.&lt;/p&gt;
&lt;p&gt;Für die Version 3.0 und höher können wir nochmal über den Punkt reden.&lt;/p&gt;
&lt;p&gt;Ich verstehe deinen Standpunkt, da spricht auch vieles dafür. Aber du musst auch sehen, dass andere (~1 Mrd C-Programmierer) diesen Punkt &lt;/p&gt;
&lt;p&gt;anders sehen.&lt;/p&gt;
&lt;p&gt;Bernhard&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Keine Warnung bei implizierter Typkonvertierung</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/393a9b1b1d/?limit=25#4c91" rel="alternate"/><published>2020-02-28T05:52:27.990000Z</published><updated>2020-02-28T05:52:27.990000Z</updated><author><name>Benjamin</name><uri>https://forge.codesys.com/u/benjamin/</uri></author><id>https://forge.codesys.comf65b48dfe53958bf304588bc8b1e685b8570f38f</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Nur damit ich das richtig verstehe.&lt;/p&gt;
&lt;p&gt;In der Norm sind implizite Typkonvertierungen also &lt;em&gt;nicht&lt;/em&gt; vorgesehen. Zu recht, denn diese Konvertierungen sind sehr gefährlich und sollten unbedingt vermieden werden. In C kämpft man ständig damit, das der Compiler unsinnige Zuweisungen nicht anmerkt und kommentarlos akzeptiert.&lt;/p&gt;
&lt;p&gt;Man könnte sogar soweit gehen und sagen, dass die Norm eine implizite Typkonvertierung ! Wie du ja selbst sagst:&amp;gt;&lt;strong&gt;Zitat:&lt;/strong&gt;&lt;br/&gt;
INT -&amp;gt; DINT müsste eigentlich explizit konvertiert&lt;/p&gt;
&lt;h2 id="wieso-geht-3s-also-hin-und-baut-wieder-alle-vernunft-eine-solche-funktion-in-seine-software-ich-kann-das-einfach-nicht-verstehen"&gt;Wieso geht 3S also hin und baut wieder alle Vernunft eine solche "Funktion" in seine Software? Ich kann das einfach nicht verstehen.&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Zitat:&lt;/strong&gt;&lt;br/&gt;
Wir können so ein grundlegendes Verhalten kaum noch ändern.&lt;br/&gt;
 Wieso kann man an diesem Verhalten nichts mehr ändern? Wenn man eine große Dummheit begangen hat, muss man schließlich in de sauren Apfel beißen und die Konsequenzen tragen.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Für den Anfang würde es ja auch reichen einen Kompatibilitätsmodus einzuführen. Hilfreich wäre auch wenn ein solcher Fehler zumindest als Warnung angezeigt wird (In neueren C-Compilern (Keil, GCC) die ich kenne wird einen implizite Konvertierung schließlich auch als Warnung angezeigt).&lt;/p&gt;
&lt;p&gt;Gruß&lt;/p&gt;
&lt;p&gt;Benjamin&lt;/p&gt;
&lt;p&gt;Wieso C jetzt nicht unbedingt als Referenz dient nur  &lt;a class="" href="http://www.math.uni-bremen.de/~thielema/CHater.html" rel="nofollow"&gt;dieses&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Keine Warnung bei implizierter Typkonvertierung</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/393a9b1b1d/?limit=25#991d" rel="alternate"/><published>2020-02-28T05:52:21.899000Z</published><updated>2020-02-28T05:52:21.899000Z</updated><author><name>Anonymous</name><uri>https://forge.codesys.com/u/*anonymous/</uri></author><id>https://forge.codesys.comd0584f17f737623ba4c3bd4295c1b88be7275f0a</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;&lt;em&gt;Originally created by:&lt;/em&gt; Bernhard Werner&lt;/p&gt;
&lt;p&gt;Hallo Benjamin,&lt;/p&gt;
&lt;p&gt;hier ist jemand von 3S, und ich gebe Ihnen im Prinzip recht. Es wäre kein Problem hier eine Warnung oder einen Fehler auszugeben. &lt;/p&gt;
&lt;p&gt;Wir wollen aber nicht, und das aus zwei Gründen:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In der Norm sind implizite Konvertierungen überhaupt nicht vorgesehen. Also jede Zuweisung von INT -&amp;gt; DINT müsste eigentlich explizit konvertiert werden. Das ist natürlich lästig, daher haben wir uns überlegt, welche impliziten Konvertierungen man denn zulassen sollte.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Als Vorlage haben wir uns an C gehalten, dass sehr viele implizite Konvertierungen erlaubt, insbesondere ist dort die Zuweisung von unsigned auf signed und umgekehrt bei gleich grossen Datentypen anstandslos möglich.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Wir können so ein grundlegendes Verhalten kaum noch ändern.  Unsere Kunden akzeptieren in der Regel nicht, dass ein laufendes Programm bei upgrade auf eine neue Version neue Meldungen beim Übersetzen liefert.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Bernhard Werner&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Keine Warnung bei implizierter Typkonvertierung</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/393a9b1b1d/?limit=25#8a05" rel="alternate"/><published>2020-02-28T05:52:19.761000Z</published><updated>2020-02-28T05:52:19.761000Z</updated><author><name>Benjamin</name><uri>https://forge.codesys.com/u/benjamin/</uri></author><id>https://forge.codesys.com629e3cb58dc90e34f261208db1cc41bb9142eea1</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Sowohl die Tabelle als auch die Art der Variablenbeschreibung (ungarische Notation) sind mir bekannt.&lt;/p&gt;
&lt;p&gt;Das erklärt allerdings immer noch nicht, wieso die impliziten Typzuweisungen  nicht als Fehler oder Warnung angemerkt werden, wie man es von einem Kompiler erwarten kann.&lt;/p&gt;
&lt;p&gt;Es wäre nett, wenn sich jemand von 3S auch zu diesem Thema melden könnte. Auch wenn es unter Umständen nicht von der Norm vorgeschrieben ist, so wäre eine solche Implementation für die allermeisten Anwender sehr hilfreich.&lt;/p&gt;
&lt;p&gt;MFG&lt;/p&gt;
&lt;p&gt;Benjamin&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Keine Warnung bei implizierter Typkonvertierung</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/393a9b1b1d/?limit=25#d471" rel="alternate"/><published>2020-02-28T05:52:17.632000Z</published><updated>2020-02-28T05:52:17.632000Z</updated><author><name>mwatermann</name><uri>https://forge.codesys.com/u/mwatermann/</uri></author><id>https://forge.codesys.com57cd2059c7e8a17823985d1e610a7e37caeb8945</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;beim nachlesen noch über folgendes gestolpert:&lt;/p&gt;
&lt;p&gt;&lt;a class="" href="http://www.3s-software.com/se_data/_filebank/home/caatws/ergebnisse/Regelkatalog.pdf" rel="nofollow"&gt;http://www.3s-software.com/se_data/_filebank/home/caatws/ergebnisse/Regelkatalog.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;=&amp;gt; siehe Tabelle 3.2 - Variablennamen&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Keine Warnung bei implizierter Typkonvertierung</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/393a9b1b1d/?limit=25#ed4c" rel="alternate"/><published>2020-02-28T05:52:11.677000Z</published><updated>2020-02-28T05:52:11.677000Z</updated><author><name>mwatermann</name><uri>https://forge.codesys.com/u/mwatermann/</uri></author><id>https://forge.codesys.comccb8fefd644a5cb797122e130f756251be79f30b</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Gumpi hat geschrieben:&lt;/strong&gt;&lt;br/&gt;
Jo das mit der Aussentemperatur kommt mir sehr bekannt vor. Weiß einer den unterschied zwischen word und uint ? wenn man int meint und auf ne word variable schreibt, dann unterstellt der compiler dem wert auch, dass er wohl nen word ist. Ich benutz für festpunktzahlen immer nur int und word, das ist wenigstens optisch ein wenig verschiedener...&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;servus,&lt;/p&gt;
&lt;p&gt;habe grad noch mal nachgeschaut:&lt;/p&gt;
&lt;p&gt;datentypen wie WORD, sind für Bitfolgen gedacht und sollen (!) z.B. mit "16#FFFF" initialisiert werden. INT (etc.) sind für ganze zahlen gedacht (wer hätte das gedacht!).&lt;/p&gt;
&lt;p&gt;aber keine ahnung wo nu der "sinnvolle" oder nützliche teil dieser unterscheidung im praktischen sein soll...&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Keine Warnung bei implizierter Typkonvertierung</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/393a9b1b1d/?limit=25#32c3" rel="alternate"/><published>2020-02-28T05:52:09.559000Z</published><updated>2020-02-28T05:52:09.559000Z</updated><author><name>Gumpi</name><uri>https://forge.codesys.com/u/gumpi/</uri></author><id>https://forge.codesys.come19985c2c0a10ed577feb59f5d858ea50acda3b0</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Jo das mit der Aussentemperatur kommt mir sehr bekannt vor. Weiß einer den unterschied zwischen word und uint ? wenn man int meint und auf ne word variable schreibt, dann unterstellt der compiler dem wert auch, dass er wohl nen word ist. Ich benutz für festpunktzahlen immer nur int und word, das ist wenigstens optisch ein wenig verschiedener...&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Keine Warnung bei implizierter Typkonvertierung</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/393a9b1b1d/?limit=25#9856" rel="alternate"/><published>2020-02-28T05:52:03.607000Z</published><updated>2020-02-28T05:52:03.607000Z</updated><author><name>Benjamin</name><uri>https://forge.codesys.com/u/benjamin/</uri></author><id>https://forge.codesys.com45a1b68ef9ee78fad1b5d6e73bf40f9a9d05669e</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Aber solch ein Fehler &lt;em&gt;muss&lt;/em&gt; der Kompiler meiner Meinung nach Abdecken.&lt;/p&gt;
&lt;p&gt;Für mich ist das nämlich überhaupt kein "Anfängerfehler"!&lt;/p&gt;
&lt;p&gt;Wenn ich mich ständig mit der Systembedingten Mängeln rumärgern wollte würde ich in C programmieren... aber das nur am Rande &lt;/p&gt;
&lt;p&gt;Wie sieht es aus, wenn du nach 5 Jahren ein Projekt überarbeitest oder du ein Projekt von einem andere weiterführst.&lt;/p&gt;
&lt;p&gt;Ich persönlich verwende nie unsigned Variablen, sondern greife einfach auf DINT zurück. Kollegen und viele andere sehen das anders...&lt;/p&gt;
&lt;p&gt;Wie schon erwähnt ich finde es wichtig, dass der Kompiler solche offensichtlichen Fehler anmeckert. Wenn man weiß was man tut, kann mann ja immer noch die explizite Konvertierung verwenden.&lt;/p&gt;
&lt;p&gt;MFG&lt;/p&gt;
&lt;p&gt;Benjamin&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>