AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
Thema durchsuchen
Ansicht
Themen-Optionen

EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen

Ein Thema von paule32.jk · begonnen am 9. Okt 2024 · letzter Beitrag vom 14. Okt 2024
Antwort Antwort
Seite 3 von 4     123 4      
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
694 Beiträge
 
Delphi 12 Athens
 
#21

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

  Alt 10. Okt 2024, 13:55
.. dann sieht C halt einfach nur falsch aus.
Soweit würde ich jetzt aber auch nicht gehen
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...
Peter Below
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.037 Beiträge
 
Delphi 12 Athens
 
#22

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

  Alt 10. Okt 2024, 14:42
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

Für mich ist es halt ein unentschieden
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.934 Beiträge
 
Delphi 12 Athens
 
#23

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

  Alt 10. Okt 2024, 17:19
Pascal ist einer der Urväter ... C kam 1-2 Jahre später .... die haben bestimmt bei uns abgeguckt (das aber nicht sonderlich gut )
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 )

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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (10. Okt 2024 um 17:26 Uhr)
  Mit Zitat antworten Zitat
TomyN

Registriert seit: 8. Nov 2006
Ort: Bayreuth
236 Beiträge
 
Delphi 10.3 Rio
 
#24

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

  Alt 11. Okt 2024, 06:23
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....
Thomas Neumann
Meine Projekte
www.satlive.audio
www.levelcheck.de
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
697 Beiträge
 
Delphi 12 Athens
 
#25

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

  Alt 11. Okt 2024, 06:59
Ja, gab es:
https://de.wikibooks.org/wiki/Fortra...ausdr%C3%BCcke
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.037 Beiträge
 
Delphi 12 Athens
 
#26

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

  Alt 11. Okt 2024, 08:28
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
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.586 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#27

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

  Alt 11. Okt 2024, 09:09
... 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.
Thomas Mueller

Geändert von dummzeuch (11. Okt 2024 um 09:37 Uhr)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.920 Beiträge
 
Delphi 12 Athens
 
#28

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

  Alt 11. Okt 2024, 09:33
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:
if foo == 42 then... zu schreiben als:
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....
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (11. Okt 2024 um 09:35 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
353 Beiträge
 
Delphi 11 Alexandria
 
#29

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

  Alt 11. Okt 2024, 10:10
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...
Frag doch einfach
Alles was nicht programmiert werden kann, wird gelötet
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.434 Beiträge
 
Delphi 11 Alexandria
 
#30

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

  Alt 11. Okt 2024, 10:43
Ich halte es für ein Gerücht, dass bei einer Zuweisung der Stack benutzt wird. Wir sind doch nicht bei FORTH
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz