Delphi-PRAXiS
Seite 3 von 6     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen (https://www.delphipraxis.net/215999-emb-dce-12-bedingungen-mit-einen-assign-zeichnen.html)

peterbelow 10. Okt 2024 13:55

AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
 
Zitat:

Zitat von Rollo62 (Beitrag 1542017)
Zitat:

Zitat von Uwe Raabe (Beitrag 1542015)
.. dann sieht C halt einfach nur falsch aus.

Soweit würde ich jetzt aber auch nicht gehen :-D

Ich schon, die C/C++-Syntax ist einfach hässlich und dass die Sprache case-sensitive ist nur eine Fehlerquelle mehr. Naja, C kommt halt aus dem frühen IT Mittelalter, als Compiler noch Probleme mit Identifiern mit mehr als 4 Zeichen hatten etc., weil die Rechner einfach nicht genug Arbeitsspeicher hatten...

Rollo62 10. Okt 2024 14:42

AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
 
Zitat:

Zitat von peterbelow (Beitrag 1542065)
Naja, C kommt halt aus dem frühen IT Mittelalter, ...

Na gut, Pascal aber auch
https://unterrichten.zum.de/wiki/Pro...ammiersprachen

1971/1972, das macht wenig Unterschied.

Mit C/C++ kann man sehr elegante Konstrukte machen, wenn man will,
und Pascal's begin-end muss man nicht unbedingt schön finden :stupid:

Für mich ist es halt ein unentschieden :-D

himitsu 10. Okt 2024 17:19

AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
 
Pascal ist einer der Urväter ... C kam 1-2 Jahre später .... die haben bestimmt bei uns abgeguckt (das aber nicht sonderlich gut :duck:)
Es haben Beide auch Algol als Vorfahre.
Wobei für Pascal die Ursprünge schon in den 5 Jahren davor begannen (siehe dem, der Algol W erfand :stupid:)

Spätestens bei C# haben sie beim Pascal abgeguckt ... bzw. sie hatten sich Anders Hejlsberg als Cheffentwickler geklaut,
drum sehen da auch einige Bezeichner so bissl delphiig aus.

https://de.wikipedia.org/wiki/Zeitta...ammiersprachen
siehe auch der Screenshot da ganz unten https://www.delphipraxis.net/215958-...ml#post1541749

TomyN 11. Okt 2024 06:23

AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
 
Helft mir mal. Gab's bei Fortran 77 überhaupt zwei verschiedene Zeichen für Zuweisung und Vergleich?

O. T. : Und das mit der Sinnhaftigkeit des Unterrichts erlebe ich mehr im 'modernen' Physikunterricht. Da sollte ich mal was erklären, fand aber in Heft und Buch nur Philosophisches zur Solarenergie.... :-D

bcvs 11. Okt 2024 06:59

AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
 
Ja, gab es:
https://de.wikibooks.org/wiki/Fortra...ausdr%C3%BCcke

Rollo62 11. Okt 2024 08:28

AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
 
Ok, wenn wir schon beim theoretisieren sind.
Die Frage ist ja , warum gibt es ÜBERHAUPT zwei verschiedene Zeichen.

Bei einem Vergleich wäre das ja gar nicht nötig, weil das "if" ja schon alles dazu sagt:
Delphi-Quellcode:
a = 1234; // Zuweisung

if ( a = 1234 ) then  // Vergleich
begin
end
Das Problem sind wohl die direkten Zuweisungen aus einem boolschen Operator:
Delphi-Quellcode:
a = 1234;

b = a = 1234;  // Zuweisung und Vergleich, b wäre dann True
Im 2ten Fall weiß der Compiler nicht genau, ob er b zuweisen soll, oder a.
Wenn der Compiler schlauer wäre, dann sollte er das meiner Meinung nach trotzdem hinbekommen,
denn das erste "=" müsste IMMER eine Zuweisung sein, oder nicht?

Gibt es eventuell andere Fälle, wo eine Unterscheidung Zuweisung und Vergleich nötig wäre?
Sehe ich auf die Schnelle nicht.
Eine Zuweisung innerhalb von komplexeren Vergleichen würde ich sowieso als Seiteneffekt, und Fehler ansehen.

! Also: Weg mit all dem überflüssigem Zeug und nehmen wir nur "=" für Alles :-D

dummzeuch 11. Okt 2024 09:09

AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
 
... und dann ist da noch die C-Syntax:

Code:
a = 5;
if (a=6) {
  AIst6(); // wird aufgerufen
} else {
  AIstNicht6();
}
Es wird AIst6 aufgerufen, weil das Gleichheitszeichen in der If-Abfrage als Zuweisung interpretiert wird und eine Zuweisung auch noch den zugewiesenen Wert zurückliefert. Der ist in diesem Fall <> 0 also True.

In Delphi entspräche das
Delphi-Quellcode:
  a := 5;
  a := 6; // in C findet dies in der If-Abfrage statt
  if a = 6 then
    AIst6()
  else
    AIstNicht6();
Wenn also die ersten C Compiler nicht versucht hätten, Tipparbeit zu sparen, sprich,
Code:
(Wert1 = Wert2)
immer einen Boolschen Wert liefern würde statt Wert1 auf Wert2 zu setzen, brauchte man den ganzen Kladderadatsch nicht.

Aber es war halt wichtiger (oder cooler?), schreiben zu können:
Code:
a = b = c = 10;
statt
Code:
a = 10;
b = 10;
c = 10;
Und der Mist zog sich danach durch alle von C abgeleiteten Sprachen. Das führte dann dazu, dass man statt
Code:
  if (a == 5)
immer
Code:
  if (5 == a)
schreiben sollte. Was das Problem etwas entschärfte, denn falls man ein '=' vergisst, schlägt die Zuweisung auf die Konstante fehl.

Inzwischen warnen die Compiler vermutlich, wenn sie in If-Abfragen etc. (x=y) finden, aber da bin ich nicht mehr auf dem Laufenden. Ich bin vor mehr als 20 Jahren aus den C-ähnlichen Sprachen ausgestiegen.

QuickAndDirty 11. Okt 2024 09:33

AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
 
Zitat:

Zitat von paule32.jk (Beitrag 1542012)
Hallo,
ich habe mich schon öfters gefragt, warum bei Delphi Bedingungen/Condition's und Vergleichen der rechte Wert mit einen Assign-Zeichen (also dem ist-gleich = Zeichen) eingeleitet wird.

Für mich macht es mehr Sinn:
Delphi-Quellcode:
if foo == 42 then...
zu schreiben als:
Delphi-Quellcode:
if foo = 42 then ...
weil das if foo = 42 doch sehr nach Zuweisung und nicht gerade nach Vergleich anmutet.
Sind da Pläne bekannt, das zu ändern - oder ist das Historisch bedingt ?
ich mein... Alles Neu macht der Mai ...

":=" ist in der Mathematik als Definitions zeichen gebräuchlich.
Da Pascal(aka Procedural Delphi) aus dem Universitäts- und Lehrumfeld kommt , benutzt es mathematische Symbole soweit das geht.
"=" wird zum vergleichen benutzt.
":=" das Definitionszeichen wird zum Zuweisen genutzt....das Zuweisungszeichen wäre iegentlich ein links pfeil...aber sowas wie "<-" führt zu Verwirrungen bei negativen zahlen
"a<-7" könnte ja a kleiner -7 heißen oder +7 der variable a zuweisen.
Wenn man Mathe-Formel-Editoren hatte benutzte man früher auch oft das Indentiätszeichen "≡" für zuweisungen aber das ist eben nach ISO 31-11
https://de.wikipedia.org/wiki/Liste_...nitionszeichen
nicht mehr en vogue und "≡" sollte jetzt nur noch für Identität/Kongruenz genutzt werden.

Delphi benutzt ":=" weil es damals noch keine coolen unicode zeichen gab wie Definition linksseitig "≔" oder eben "≝" (das ist ein = mit dem Wort DEF oben drüber).



Es gibt übrigens noch eine ganze Reihe anderer operatoren die wir in Delphi nicht haben ...zum Glück...
z.b. "test auf unifizierbarkeit" wie in Prolog....

paule32.jk 11. Okt 2024 10:10

AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
 
Zitat:

Zitat von Rollo62 (Beitrag 1542080)
Ok, wenn wir schon beim theoretisieren sind.
Die Frage ist ja , warum gibt es ÜBERHAUPT zwei verschiedene Zeichen.

Das Problem sind wohl die direkten Zuweisungen aus einem boolschen Operator:
Code:
a = 1234;

b = a = 1234;  // Zuweisung und Vergleich, b wäre dann True
Im 2ten Fall weiß der Compiler nicht genau, ob er b zuweisen soll, oder a.
Wenn der Compiler schlauer wäre, dann sollte er das meiner Meinung nach trotzdem hinbekommen,
denn das erste "=" müsste IMMER eine Zuweisung sein, oder nicht?

Das hat damit zu tun, das die Werte bei C/C++ auf einen Stack gelegt werden - nach dem LIFO (last in first out) Prinzip:
die Werte gehen also immer nach unten bzw links nach rechts beim setzen aufgebaut:

seter:
push b
push a
push 1234

geter:
pop 1234
pop a
pop b

bei Pascal werden Variablen-ähnlich nach oben aufgebaut.
hat beides sein für und wider...

freimatz 11. Okt 2024 10:43

AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
 
Ich halte es für ein Gerücht, dass bei einer Zuweisung der Stack benutzt wird. Wir sind doch nicht bei FORTH :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 Uhr.
Seite 3 von 6     123 45     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz