Habt ihr euch schonmal gefragt wieso...

Für sonstige Unterhaltungen, welche nicht direkt mit Lazarus zu tun haben

Habt ihr euch schonmal gefragt wieso Lazarus Fehler die es Erkennt nicht automatisch korrigiert ?

Ja ;
3
10%
Lazarus soll das machen!!! ;
2
7%
wäre ja Langweilig :) ;
4
14%
Das macht Lazarus doch wenn man es einstellt ... ;
1
3%
ich mache keine Fehler xD
3
10%
Vieleicht im Unterbewustsein. ;
4
14%
(5,1)Syntax error, ";" expected but "identifierVieleicht" found ;
2
7%
nö. ;
10
34%
 
Insgesamt abgegebene Stimmen: 29

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6209
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Habt ihr euch schonmal gefragt wieso...

Beitrag von af0815 »

MAC hat geschrieben:Ideal wäre wenn da steht
"du hast nen fehler gemacht in zeile xy wahrscheinlich ist es ein longint, es kann aber auch ein schotint seien, was sollen wir tun?"
"nix"
"shortint"
"longint"
...

Ich wiss es klingt hart, aber mir ist eine einfache klare Fehlermeldung lieber als ein Ratespiel. Ich möchte ja Software kompilieren und nicht mit Eliza eine Doppelconferance halten.
Denn den (Fehler-)Text lesen, verstehen und dann richtig handeln musst, so sehe ich da keinen wesentlichen Unterschied. Nur das in dem Beispiel oben, ganz einfach Lotto gespielt wird - der DAU nimmt dann je nach Laune 1,2 oder x. Denn wenn man nicht versteht was der Kompiler meint, der fängt an zu raten.

Denn wenn schon wahrscheinlich in der Fehlermeldung drinnen steht, so kann 'wahrscheinlich' nur Murks dahinter sein.

Steht dort drinnen-> Inkompatible Zuweisung in Zeile xy <- So ist das klar und eindeutig und kein 'vielleicht' Gewäsch, das nur vom Problem abhält.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Habt ihr euch schonmal gefragt wieso...

Beitrag von Christian »

Ich sehe das genauso, die fehlermeldungen vom FPC sind meisst sehr aussagekräftig.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Habt ihr euch schonmal gefragt wieso...

Beitrag von Socke »

Warum schreiben wir denn in ObjectPascal und nicht in (Visual)Baisc?
In VB kann man einem Bild einen Dateinamen zuweisen in ObjectPascal nicht
...
Man kann ja mal einem VB-Programmierer versuchen Pascal zu erklären... der wird an der Typensicherheit verzweifeln.
Und der Pascal-Programmierer fragt sich, wie es möglich sein kann mit VB-Programme, die auch noch funktionieren, zu schreiben ohne alles von Hand zu machen.

MfG Socke
P.S. zum Thema: eine noch weiter ausgebaute Code-Vervollständigung erzeugt auf Dauer nur VIVA- und MTV-Zuschauer
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Habt ihr euch schonmal gefragt wieso...

Beitrag von marcov »

MAC hat geschrieben:ich bin auch zufrieden, trotzdem wenn da steht
Da steht was vom Typ string , hier wird allerding integer benötigt.
Wen Lazarus doch schon soviel weis sollte man auch ne möglichkeit haben das der das einfach in integer umwandelt.


Gut. Und was soll es mit "integer+string" machen? Da an alle Parameter wo man integer nutzen kann, kann man dann auch Expressionen die in Theorie bis Integer Reduzierbar sein geben. Und dass wird sehr schnell undurchsichtig.

Mit Autoconversion sind die einfache Fälle nie das Problem. Das Problem sind die schwierige Fälle, und den unterschied zwischen einfache- und schwierige Fälle _automatisch_ machen.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Habt ihr euch schonmal gefragt wieso...

Beitrag von pluto »

Gut. Und was soll es mit "integer+string" machen?

Ganz einfach: Den Interger den String hinzufügen. Also sowas:
IntTostr(IntVar) + 'Mein langer langer Text' Was würdest du denn hier erwarten ?
MFG
Michael Springwald

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6209
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Habt ihr euch schonmal gefragt wieso...

Beitrag von af0815 »

Socke hat geschrieben:Man kann ja mal einem VB-Programmierer versuchen Pascal zu erklären... der wird an der Typensicherheit verzweifeln.
Und der Pascal-Programmierer fragt sich, wie es möglich sein kann mit VB-Programme, die auch noch funktionieren, zu schreiben ohne alles von Hand zu machen.

variant geht in pascal auch :-) (War NICHT sehr ernst gemeint)
Zuletzt geändert von af0815 am Fr 27. Mär 2009, 17:44, insgesamt 1-mal geändert.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: Habt ihr euch schonmal gefragt wieso...

Beitrag von monta »

pluto hat geschrieben:IntTostr(IntVar) + 'Mein langer langer Text' Was würdest du denn hier erwarten ?

es kann genau so gut ein integer + StrToInt(integer) sein sobald es um Typen geht, ist das nie eindeutig aufzulösen.

bei fehlenden ; usw. sieht es vielleicht anders aus.
Johannes

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: Habt ihr euch schonmal gefragt wieso...

Beitrag von Euklid »

Socke hat geschrieben:Und der Pascal-Programmierer fragt sich, wie es möglich sein kann mit VB-Programme, die auch noch funktionieren, zu schreiben ohne alles von Hand zu machen.


MOMENT: Du Vergleichst gerade Pascal - also eine _saubere_ Programmiersprache- mit VB. Das kann nicht gut gehen. ;)

Mit VB kann man zwar sehr leicht kleine Programme erstellen. Was hier das Programmieren erleichtert, erschwert aber das Programmieren großer Projekte. Wenn man sich mehrere tausend Zeilen große Projekte ernsthaft widmet, lernt man die strenge Typenunterscheidung, die Befehlstrennung durch Semikolon, den Unterschied zwischen vergleichendem und zuweisendem Gleich erst richtig schätzen! Diese Dinge erleichtern das Debuggen und machen den Code leichter wart- und lesbar. Pascal ist an dieser Stelle also außerordentlich zweckmäßig und vorallem sauber.

Ich finde immer, Pascal ist das goldene Mittelmaß: Es ist zum Einen eine vollständige, saubere Programmiersprache, mit der sich relativ systemnah programmieren lässt (im Gegensatz zu interpretierenden Sprachen). Zum Anderen wurde die Sprache aus einem didaktischen Konzept heraus entwickelt - sprich, sie ist relativ einfach zu erlernen. Sie eint damit die Vorteile von Basic und C.

Viele Grüße, Euklid

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6209
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Habt ihr euch schonmal gefragt wieso...

Beitrag von af0815 »

Euklid hat geschrieben:Mit VB kann man zwar sehr leicht kleine Programme erstellen. Was hier das Programmieren erleichtert, erschwert aber das Programmieren großer Projekte. Wenn man sich mehrere tausend Zeilen große Projekte ernsthaft widmet, lernt man die strenge Typenunterscheidung, die Befehlstrennung durch Semikolon, den Unterschied zwischen vergleichendem und zuweisendem Gleich erst richtig schätzen! Diese Dinge erleichtern das Debuggen und machen den Code leichter wart- und lesbar. Pascal ist an dieser Stelle also außerordentlich zweckmäßig und vorallem sauber.

Einspruch: VB ist (MITTLERWEILE) eine vollwerige Programmiersprache, auf die die obigen Argumente nicht mehr zutreffen. Besonders dann wenn man die Überprüfungen auch aktiviert hat und nicht im 'lazy' Stil arbeitet. Bei älterne Version stimme ich zu den obigen Argumenten schon zu (Ist aber Geschichte). Da haben die Leute mit VB am meisten umlernen müssen.

Es ist mittlerweile ehr eine Frage des Stils geworden ob eine Programmiersprache geeignet ist oder nicht. Alle modernen Sprachen stellen ähnliche mächtige Werkzeuge zur Verfügung. Ich kann auch in Pascal kranke Programme schreiben, dazu benötige ich nicht VB oder C oder ....
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Habt ihr euch schonmal gefragt wieso...

Beitrag von marcov »

pluto hat geschrieben:
Gut. Und was soll es mit "integer+string" machen?

Ganz einfach: Den Interger den String hinzufügen. Also sowas:
IntTostr(IntVar) + 'Mein langer langer Text' Was würdest du denn hier erwarten ?


Es ist "integer+string" nicht "string+integer". Also logischer wäre um der String nach integer zu konvertieren und zu addieren.

Der Punkt dieser Geschichte ist das wann auto konvertiert, es plötzlich mehrere Pfade gibt, die schnell undurchsichtig werden.

Es ist einfach zu zagen "in dieser einfachen Fall sollte _dies_ passieren". Aber das ist nicht das Problem einer Computersprache. Der soll _immer_ definiert sein (und bestens soll ein Programmierer das verhalten ein bisschen ahnen können)

Sie auch http://www.freepascal.org/faq.var#extensionselect

martin_frb
Beiträge: 572
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: Habt ihr euch schonmal gefragt wieso...

Beitrag von martin_frb »

Auch bei fehlendem Semikolon ist das alles, nur nicht eindeutig:

if a < 0 then a := 1
memo1.lines.add("---");

Was soll nun hinter die "1" ?
Zur Auswahl stehen:
";"
"else"
"+" (add gibt einen integer zurück)
oder sollte die "1" entfernt werden ("a := \n memo1.lines.add()"
oder es könnte aus Versehen eine ganze Zeile gelöscht worden sein "\n else a := a * 2;"

KOBOLD Messring GmbH
Beiträge: 155
Registriert: Mi 22. Aug 2007, 14:52
OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 65719 Hofheim am Taunus
Kontaktdaten:

Re: Habt ihr euch schonmal gefragt wieso...

Beitrag von KOBOLD Messring GmbH »

Das schönste am fehlenden Semikolon ist doch dieser Fall:
Der Cursor steht am ENDE (von hunderten Zeilen Code) am End. (Punkt !) und meckert: "¡Semicolon expected!"
Also fehlt _irgendwo_ ein End; (mit Semikolon, ¿vielleicht von einem For.. einem While.. dem 25sten geschachtelten if-then-else Konstrukt, einer ganzen Nested-Function, ... ?
Also einfach unmöglich für den Lazarus-Syntax-checker dies in einen vernünftigen Vorschlag - geschweige denn in eine Auto-Korrektur - umzuwandeln. Ich finde die Fehleranzeige (und Hinweise) sehr gut, ¡alle Achtung an die Programmierer vom Lazaraus!
Ich muss (leider) viel mit php programmieren, das ist eine Gülle im Vergleich zu Pascal: da gibts nur erstmal nur Variant, da kann ich in einer if-Bedingung einem (vermeintlichen) Integer einen String zuweisen (der z.B. den Char ('0'), ascii=48) enthält (und es wird immer die "then"-Anweisung ausgeführt). Wenn man das dann wieder ausgeben würde, wird ein Leerstring erzeugt, denn die Zahl 0 ist ja nix... :evil:
Da muss man so einen Murks bauen: if ($MeineVar == 0) { echo '0' } else { echo $MeineVar }; (zur Ausgabe, nicht mein Vergleichsbeispiel)
Da lernt man die Pascal-Sprache lieben, da _kann_ einem so ein Murks gar nicht passieren.

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: Habt ihr euch schonmal gefragt wieso...

Beitrag von Hitman »

Naja das mit dem fehlenden "end" ist ein guter Punkt. Da könnte man meines Erachtens schon eine Art "guessing" einbauen, basierend auf der Indention des Quelltextes. Klar, ist das auch keine perfekte Lösung (die gibt es nicht), aber es würde weitaus mehr Fälle abdecken als im Moment ... wer nämlich schlecht/gar nicht einrückt, weiß soviel wie vorher ("irgendwo fehlt ein 'end'"). Wer aber ordentlich einrückt, kriegt dann eine ganz gute Abschätzung "hier an dieser Stelle könnte das fehlende 'end' hingehören".

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Habt ihr euch schonmal gefragt wieso...

Beitrag von pluto »

@KOBOLD Messring GmbH
Wer so ein Code erzeugt sollte sich nicht wundern, wenn er da Syntax Fehler einbaut und sie nicht findet. Der Code sollte immer übersichtlich sein, dann ist ein fehlendes ; sofort erkennbar wobei was ich viel lustiger finde ist: Wenn er ein End vermisst.
MFG
Michael Springwald

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Re: Habt ihr euch schonmal gefragt wieso...

Beitrag von Targion »

Das ist der Compilerfehler, den ich am hässlichsten finde: Man hat eine verschachtelte Funktion und der Compiler sagt, dass ein "End" fehlt. Nur: Bei welcher Bedingung/Schleife? Und welches End gehört zu welchem begin? Lazarus 0.9.27 färbt zusammengehörige begin- und ends zum Glück neuerdings ein, damit ist dieses Problem gelöst.

Antworten