Syntaxerweiterung von Pascal

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
braunbär
Beiträge: 369
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: 64Bit
Wohnort: Wien

Re: Syntaxerweiterung von Pascal

Beitrag von braunbär »

mse hat geschrieben: ein sicheres "with" Statement ist nicht aufsehenerregend genug um implementiert zu werden

"nicht aufsehenerregend" ist schon richtig, aber der Aufwand, um das umzusetzen, wäre minimal, und zwar noch um einiges geringer als das wenige Aufsehen. :D

Die Frage ist zwar off topic, aber was du gegen Generics einzuwenden hast, erschließt sich mir auch nicht. Ich bin der Meinung, dass eine Programmiersprache dem Programmierer seine Arbeit so einfach wie möglich machen sollte, ein sicheres with-Statement trägt dazu genau so bei, wie Generics dazu beitragen.

m.fuchs hat geschrieben:Und deswegen widerspreche ich dir: es ist eben häufig der Fall, dass eine kurze Prozedur/Funktion auch lesbarer ist.

Das habe ich nicht bestritten. Aber es ist auch häufig der Fall, dass das Auslagern von Programmzeilen in Unterprogramme nichts zur Lesbarkeit beiträgt.

m.fuchs hat geschrieben:Wie gesagt: heutzutage wird objektorientiert entwickelt.

Ja. Man kann es aber auch übertreiben.

m.fuchs hat geschrieben:Ich habe noch immer nicht verstanden was der Vorteil sein soll, das reicht mir erst mal als Gegenargument.

Wenn du nicht verstehst, worin der Vorteil besteht, aus einem unsicheren Sprachkonstrukt ein sicheres zu machen (statt zu sagen: das Konstrukt gibt es, aber verwendet es bitte nicht), kann ich dir nicht helfen.

m.fuchs hat geschrieben:Wenn eine Verbesserung des with-Blocks nötig ist, würde ich einfach folgendes vorschlagen: ...

With Blöcke können verschachtelt sein und es können in einem with-Statement mehrere Objekte angesprochen werden: "with Object1, Object2 do ...". Da bleibt der Code dann genauso schlecht lesbar wie jetzt, und vor allem ist es dann immer noch möglich, dass eine Typveränderung an einer anderen Stelle im Programm das Verhalten des with-Blocks unbemerkt verändert..

m.fuchs hat geschrieben:Es gibt übrigens auch Goto in Pascal. Nimmt ja auch kein geistig gesunder Mensch mehr heutzutage.

Es scheint eine Manie von dir zu sein, mit Beleidigungen herum zu werfen. Manchmal (selten, aber eben doch in manchen Sonderfällen) ist ein goto deutlich lesbarer als abenteuerliche Konstrukte mit unnötigen boolean Variablen, die kreuz und quer gesetzt und abgefragt werden - speziell wenn man verschachtelte Schleifen verlassen muss.

m.fuchs hat geschrieben:Für deinen zweiten Vorschlag Zuweisungen in Teilexpressions habe ich nicht einmal eine Alternativlösung. Das ist einfach nur unleserlich und bringt überhaupt keine Vorteile.

Es bringt in manchen Fällen deutlich kompakteren Code (siehe das while Beispiel im Eingangspost). Und was soll daran unleserlich sein?

marcov hat geschrieben:Ich bin es darüber noch immer mit mein Professor einig; man darf goto nutzen, man muss nur ein 1 A4 Seite Aufsatz über warum es unbedingt nötig ist schreiben.

Unbedingt nötig ist es nie, aber es gibt Fälle, in denen es besser (also kürzer und besser lesbar) ist als alle goto-freien Alternativen.
Zuletzt geändert von braunbär am Mo 19. Jun 2017, 16:42, insgesamt 1-mal geändert.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Syntaxerweiterung von Pascal

Beitrag von mse »

Das verpönte "goto" richtig angewendet ist sinnvoll und manchmal die beste und eleganteste Lösung. Auf jeden Fall ist es besser als "exit" welches man beim überfliegen des codes sehr leicht übersehen kann. Bei "goto" gibt es eine "label" Vereinbarung zu Beginn der Prozedure und ein Ziellabel am linken Rand welches man leicht findet. Nicht alles was für viele Programmierer in Stein gemeisselt ist hält einer kritischen Hinterfragung stand.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Syntaxerweiterung von Pascal

Beitrag von mse »

braunbär hat geschrieben:Die Frage ist zwar off topic, aber was du gegen Generics einzuwenden hast, erschließt sich mir auch nicht.

Der Nutzen ist klein, der Aufwand im Compiler gross und der Sprachumfang wird beträchtlich ausgeweitet. Generics dienen haupsächlich dazu den Toolkit-Machern das Leben zu erleichtern und die sind harte Arbeit gewohnt. ;-)

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Syntaxerweiterung von Pascal

Beitrag von m.fuchs »

braunbär hat geschrieben:
m.fuchs hat geschrieben:Wenn eine Verbesserung des with-Blocks nötig ist, würde ich einfach folgendes vorschlagen: ...

With Blöcke können verschachtelt sein und es können in einem with-Statement mehrere Objekte angesprochen werden: "with Object1, Object2 do ...". Da bleibt der Code dann genauso schlecht lesbar wie jetzt, und vor allem ist es dann immer noch möglich, dass eine Typveränderung an einer anderen Stelle im Programm das Verhalten des with-Blocks unbemerkt verändert..

Und jetzt merkst du hoffentlich langsam, warum with keine gute Idee ist. Wenn du diese Blöcke verschachtelst oder eben mehrere Variablen ansprichst dann steigt die lesende Komplexität. Sorry, das nichts mehr mit sauberen Quellcode zu tun. Zu was das führt sehen wir bei jeder neuen Sicherheitslücke.

braunbär hat geschrieben:
m.fuchs hat geschrieben:Es gibt übrigens auch Goto in Pascal. Nimmt ja auch kein geistig gesunder Mensch mehr heutzutage.

Es scheint eine Manie von dir zu sein, mit Beleidigungen herum zu werfen.

Hm, geistig nicht gesund ist in deinen Augen eine Beleidigung. Interessantes Menschenbild.

braunbär hat geschrieben:Manchmal (selten, aber eben doch in manchen Sonderfällen) ist ein goto deutlich lesbarer als abenteuerliche Konstrukte mit unnötigen boolean Variablen, die kreuz und quer gesetzt und abgefragt werden - speziell wenn man verschachtelte Schleifen verlassen muss.

Na für diese sehr seltenen Fälle, könnte der Entwickler ja dann diese besagt A4-seitige Begründung schreiben.
@marcov: Diese Variante des Goto-Einschränkens gefällt mir sehr gut.

braunbär hat geschrieben:
m.fuchs hat geschrieben:Für deinen zweiten Vorschlag Zuweisungen in Teilexpressions habe ich nicht einmal eine Alternativlösung. Das ist einfach nur unleserlich und bringt überhaupt keine Vorteile.

Es bringt in manchen Fällen deutlich kompakteren Code (siehe das while Beispiel im Eingangspost). Und was soll daran unleserlich sein?

Dann wiederhole ich meine Empfehlung (die übrigens nicht aggressiv gemeint ist): Wenn du kompakten Code schreiben willst solltest du zu einer entsprechenden Sprache wechseln. Pascal zeichnet ja gerade aus, dass es etwas weitschweifiger und dafür lesbarer ist.
Was an deinem Beispiel unleserlich ist? Du machst mehrere Dinge in einer Zeile, das ist unnötig. Jede zusätzliche Aktion erfordert zusätzlichen Lese- und Verständnisaufwand.

braunbär hat geschrieben:
marcov hat geschrieben:Ich bin es darüber noch immer mit mein Professor einig; man darf goto nutzen, man muss nur ein 1 A4 Seite Aufsatz über warum es unbedingt nötig ist schreiben.

Unbedingt nötig ist es nie, aber es gibt Fälle, in denen es besser (also kürzer und besser lesbar) ist als alle goto-freien Alternativen.

Zeig doch mal ein Beispiel.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Syntaxerweiterung von Pascal

Beitrag von m.fuchs »

mse hat geschrieben:Generics dienen haupsächlich dazu den Toolkit-Machern das Leben zu erleichtern und die sind harte Arbeit gewohnt. ;-)

Und allen Menschen die ihre Datenhaltung per OOP erledigen. Es geht kaum leichter sich typensichere Listenklassen zu machen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

braunbär
Beiträge: 369
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: 64Bit
Wohnort: Wien

Re: Syntaxerweiterung von Pascal

Beitrag von braunbär »

m.fuchs hat geschrieben:Und jetzt merkst du hoffentlich langsam, warum with keine gute Idee ist. Wenn du diese Blöcke verschachtelst oder eben mehrere Variablen ansprichst dann steigt die lesende Komplexität.

Es gibt Aufgabenstellungen, die etwas komplexer sind. Dem kannst du auch nicht ausweichen, indem du kein with verwendest. Wenn du bei einer Aktion mehrere Objekte ansprechen musst, ist die with-Version, die ich vorgeschlagen habe, sogar die lesbarste Lösung. Und mit dem Thema "sauberer Quellcode" hat die ganze Frage in der Tat überhaupt nichts zu tun.

m.fuchs hat geschrieben:Hm, geistig nicht gesund ist in deinen Augen eine Beleidigung. Interessantes Menschenbild.

Ja, es ist eine Beleidigung, geistig völlig gesunde Menschen als geistig nicht gesund zu bezeichnen. Was soll es denn sonst sein? Und die Verwendung von goto hat nichts mit geistiger Gesundheit zu tun. Nicht einmal Leuten, die abstruse Code-Konstrukte bilden, um krampfhaft jedes goto zu vemeiden, würde ich deshalb die geistige Gesundheit absprechen.

m.fuchs hat geschrieben:Na für diese sehr seltenen Fälle, könnte der Entwickler ja dann diese besagt A4-seitige Begründung schreiben.

Wozu? Um goto-Phobiker zu beruhigen?

m.fuchs hat geschrieben:Was an deinem Beispiel unleserlich ist? Du machst mehrere Dinge in einer Zeile, das ist unnötig. Jede zusätzliche Aktion erfordert zusätzlichen Lese- und Verständnisaufwand.

Ob die Aktion in einer oder auf zwei Teilen aufgeteilt da steht, ändert nicht wirklich etwas am Lese- und Verständnisaufwand. Es ist allerdings ein Feature, an das man sich gewöhnen müsste. Das gilt aber für so ziemlich alle Features, die in einer Programiersprache neu eingeführt werden.

m.fuchs hat geschrieben:Dann wiederhole ich meine Empfehlung (die übrigens nicht aggressiv gemeint ist): Wenn du kompakten Code schreiben willst solltest du zu einer entsprechenden Sprache wechseln. Pascal zeichnet ja gerade aus, dass es etwas weitschweifiger und dafür lesbarer ist.

Lesbarer als C ist Pascal ohne jede Frage, allerdings nicht wegen der "Weitschweifigkeit", sondern weil die Konstrukte näher an natürlichen Sprachen angelehnt sind. Weitschweifigkeit ist nicht per se ein Vorteil.

m.fuchs hat geschrieben:
mse hat geschrieben:Generics dienen haupsächlich dazu den Toolkit-Machern das Leben zu erleichtern und die sind harte Arbeit gewohnt. ;-)

Und allen Menschen die ihre Datenhaltung per OOP erledigen. Es geht kaum leichter sich typensichere Listenklassen zu machen.

Ja, das sehe ich im Prinzip auch so. Ich habe mir etwas auf die Art von Generics schon gewünscht, wie es das noch in keiner gängigen Programmiersprache gegeben hat. Das hat eigentlich nicht einmal unmittelbar mit OOP zu tun. Der Zusatzaufwand zur Laufzeit, den Generics erfordern, ist meines Erachtens marginal und vernachlässigbar. Und auch für die, die die Compiler programmieren müssen, sollte diese zusätzliche Herausforderung zu bewältigen sein.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Syntaxerweiterung von Pascal

Beitrag von m.fuchs »

braunbär hat geschrieben:Es gibt Aufgabenstellungen, die etwas komplexer sind. Dem kannst du auch nicht ausweichen, indem du kein with verwendest.

Es gibt unglaublich komplexe Aufgabenstellung. Mir fällt bloß nicht eine ein, die ein with erfordert.

braunbär hat geschrieben:Und mit dem Thema "sauberer Quellcode" hat die ganze Frage in der Tat überhaupt nichts zu tun.

Tja, das ist aber häufig ein sehr wichtiges Thema.

braunbär hat geschrieben:Nicht einmal Leuten, die abstruse Code-Konstrukte bilden, um krampfhaft jedes goto zu vemeiden, würde ich deshalb die geistige Gesundheit absprechen.
m.fuchs hat geschrieben:Na für diese sehr seltenen Fälle, könnte der Entwickler ja dann diese besagt A4-seitige Begründung schreiben.

Wozu? Um goto-Phobiker zu beruhigen?

Witzig, du behauptest Goto-Vermeidern nicht die geistige Gesundheit abzusprechen, tust es aber dann im nächsten Abschnitt doch. Ist alles gar nicht so einfach?

Um deine Frage zu beantworten: Das sollte man machen, damit man sich Gedanken darüber macht ob diese Konstruktion wirklich notwendig ist. In der Zeit, in der man darüber nachdenkt kommt man häufig zu besseren (lesbaren) Lösungen.

braunbär hat geschrieben:
m.fuchs hat geschrieben:Was an deinem Beispiel unleserlich ist? Du machst mehrere Dinge in einer Zeile, das ist unnötig. Jede zusätzliche Aktion erfordert zusätzlichen Lese- und Verständnisaufwand.

Ob die Aktion in einer oder auf zwei Teilen aufgeteilt da steht, ändert nicht wirklich etwas am Lese- und Verständnisaufwand.

Doch natürlich ändert das was. Oder schreibst du deine Programme Semikolon-getrennt in eine Zeile? Würde gehen und spart Zeilen.

braunbär hat geschrieben:Es ist allerdings ein Feature, an das man sich gewöhnen müsste. Das gilt aber für so ziemlich alle Features, die in einer Programiersprache neu eingeführt werden.

Das ist klar, aber ein Feature was die Lesbarkeit verringert wird nicht auf große Begeisterung stoßen. Aber es ist ja recht einfach, du kannst ja einen Feature-Request aufmachen und einen Patch einreichen. Vielleicht sehen die Kern-Entwickler das auch ganz anders als ich und übernehmen diese Erweiterung.

braunbär hat geschrieben:
m.fuchs hat geschrieben:Dann wiederhole ich meine Empfehlung (die übrigens nicht aggressiv gemeint ist): Wenn du kompakten Code schreiben willst solltest du zu einer entsprechenden Sprache wechseln. Pascal zeichnet ja gerade aus, dass es etwas weitschweifiger und dafür lesbarer ist.

Lesbarer als C ist Pascal ohne jede Frage, allerdings nicht wegen der "Weitschweifigkeit", sondern weil die Konstrukte näher an natürlichen Sprachen angelehnt sind. Weitschweifigkeit ist nicht per se ein Vorteil.
Das macht die Weitschweifigkeit doch aus. Natürliche Worte wie begin und end sind halt länger als krude Klammer-Konstrukte.

braunbär hat geschrieben:Der Zusatzaufwand zur Laufzeit, den Generics erfordern, ist meines Erachtens marginal und vernachlässigbar.

Hm, da bin ich mir nicht einmal sicher ob zur Laufzeit Zusatzaufwand entsteht. @marcov: Kannst du dazu etwas sagen?

Zum Schluss noch eine Frage um meine Neugier bei dem Thema zu befriedigen (ist weder abwertend noch aggressiv gemeint): Ich vermute mal du programmierst beruflich. Ist das ein großes Unternehmen? Hast du da ein Entwicklungsteam mit dem du gemeinsam an dem Code arbeitest oder bist du als Einzelkämpfer unterwegs?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Syntaxerweiterung von Pascal

Beitrag von mschnell »

braunbär hat geschrieben: Manchmal (selten, aber eben doch in manchen Sonderfällen) ist ein goto deutlich lesbarer als abenteuerliche Konstrukte mit unnötigen boolean Variablen, die kreuz und quer gesetzt und abgefragt werden - speziell wenn man verschachtelte Schleifen verlassen muss.

Eine "sicherere" Konstruktion wäre es, die Schleifen zu benennen und explizit verlassen zu können.

Wenn wir schon rumspinnen....

Code: Alles auswählen

loop1: for.... begin
  for .... begin
    if ... then break loop1;
    if ... then continue  loop1;
  end;
end;
 


-Michael

braunbär
Beiträge: 369
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: 64Bit
Wohnort: Wien

Re: Syntaxerweiterung von Pascal

Beitrag von braunbär »

mschnell hat geschrieben:Eine "sicherere" Konstruktion wäre es, die Schleifen zu benennen und explizit verlassen zu können.

Ja, damit würden FAST alle derzeit sinnvollen Goto-Befehle überflüssig. Ich würde auch eine Spracherweiterung in der Richtung befürworten.

m.fuchs hat geschrieben:Es gibt unglaublich komplexe Aufgabenstellung. Mir fällt bloß nicht eine ein, die ein with erfordert.

Es gibt auch keine, die Pascal erfordert. Lässt sich alles in Assembler machen.

m.fuchs hat geschrieben:
Und mit dem Thema "sauberer Quellcode" hat die ganze Frage in der Tat überhaupt nichts zu tun.

Tja, das ist aber häufig ein sehr wichtiges Thema.

Dass es ein "wichtiges" Thema ist, ändert nichts daran, dass es mit dem Thema "with" nichts zu tun hat. Oder nur insofern, als mein Vorschlag aus dem derzeit unsauberen with ein sauberes with machen würde.

m.fuchs hat geschrieben:Witzig, du behauptest Goto-Vermeidern nicht die geistige Gesundheit abzusprechen, tust es aber dann im nächsten Abschnitt doch. Ist alles gar nicht so einfach?

Auch wegen einer harmlosen Phobie würde ich niemand die geistige Gesundheit absprechen. So ziemlich jeder hat irgend etwas, was ihm grundlos Angst macht. Meine Freundin hat panische Angst vorm Zahnarzt. Das hat nichts mit geistiger Gesundheit zu tun.

m.fuchs hat geschrieben:Um deine Frage zu beantworten: Das sollte man machen, damit man sich Gedanken darüber macht ob diese Konstruktion wirklich notwendig ist. In der Zeit, in der man darüber nachdenkt kommt man häufig zu besseren (lesbaren) Lösungen.

Ich programmiere seit über 40 Jahren, professionell und in den unterschiedlichsten Sprachen. Ich brauche mir keine Gedanken darüber zu machen, ob eine Konstruktion "wirklich notwendig" ist, sondern ich setze an jeder Stelle eines Programms die bestmögliche Konstruktion ein, die die Sprache bietet. Manchmal, eher selten, ist das ein goto.

m.fuchs hat geschrieben:Doch natürlich ändert das was. Oder schreibst du deine Programme Semikolon-getrennt in eine Zeile? Würde gehen und spart Zeilen.

Manche inhaltlich zusammengehörige Zuweisungen schreibe ich durchaus in eine Zeile, wie z.B. x:=0; y:=0;
Wenn jemand Probleme damit hat, das zu lesen - zurück in die Grundschule...

m.fuchs hat geschrieben:Zum Schluss noch eine Frage um meine Neugier bei dem Thema zu befriedigen (ist weder abwertend noch aggressiv gemeint): Ich vermute mal du programmierst beruflich. Ist das ein großes Unternehmen? Hast du da ein Entwicklungsteam mit dem du gemeinsam an dem Code arbeitest oder bist du als Einzelkämpfer unterwegs?

Ich hatte lange Zeit eine kleine Computerfirma mit 5-7 fest angestellten Programmierern und ca 10 wechselnden freien Mitarbeitern. War natürlich kein "großes Unternehmen". Ich sehe auch durchaus, dass man hinsichtlich formaler Vorgaben für die Programmierer umso strikter werden muss, je mehr Leute mitmischen. Aber so viel ich weiß, ist ja der Einsatz von Free Pascal nicht auf Groß-EDV-Abteilungen mit >100 Programmierern beschränkt. Wenn die die Verwendung gewisser Sprachfeatures ausschließen wollen, weil sie meinen, dass ihnen das in irgend einer Weise zu besseren Code verhilft - jeder wie er glaubt. Das heißt aber nicht, dass die Sprache solche bei vernünftiger Verwendung sinnvolle Features für die, die sie verwenden wollen, nicht bieten soll. Wenn jemand sagt "brauch ich nicht", ist das natürlich zu akzeptieren, das ist aber kein Argument gegen ein Sprachfeature.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Syntaxerweiterung von Pascal

Beitrag von m.fuchs »

braunbär hat geschrieben:
m.fuchs hat geschrieben:Witzig, du behauptest Goto-Vermeidern nicht die geistige Gesundheit abzusprechen, tust es aber dann im nächsten Abschnitt doch. Ist alles gar nicht so einfach?

Auch wegen einer harmlosen Phobie würde ich niemand die geistige Gesundheit absprechen.

https://de.wikipedia.org/wiki/Angstst%C3%B6rung

braunbär hat geschrieben:Ich programmiere seit über 40 Jahren, professionell und in den unterschiedlichsten Sprachen. Ich brauche mir keine Gedanken darüber zu machen, ob eine Konstruktion "wirklich notwendig" ist, sondern ich setze an jeder Stelle eines Programms die bestmögliche Konstruktion ein, die die Sprache bietet.

Ach so, das klassische "das habe ich schon immer so gemacht". Ich sehe, ich werde dir meine Ansichten nicht näher bringen können, allerdings habe ich auch bloß 28 Jahre Erfahrung.

braunbär hat geschrieben:Manche inhaltlich zusammengehörige Zuweisungen schreibe ich durchaus in eine Zeile, wie z.B. x:=0; y:=0;

Was durchaus leicht lesbar ist, dein ursprüngliches Konstrukt ist es nicht.

braunbär hat geschrieben:Ich hatte lange Zeit eine kleine Computerfirma mit 5-7 fest angestellten Programmierern und ca 10 wechselnden freien Mitarbeitern. War natürlich kein "großes Unternehmen".

Naja, im Vergleich zu einer Ein-Mann-Bude ist das schon groß. Auch Firmen mit tausenden Mitarbeitern bilden ja kleinere Teams in vergleichbarer Größenordnung.

braunbär hat geschrieben:Ich sehe auch durchaus, dass man hinsichtlich formaler Vorgaben für die Programmierer umso strikter werden muss, je mehr Leute mitmischen. Aber so viel ich weiß, ist ja der Einsatz von Free Pascal nicht auf Groß-EDV-Abteilungen mit >100 Programmierern beschränkt. Wenn die die Verwendung gewisser Sprachfeatures ausschließen wollen, weil sie meinen, dass ihnen das in irgend einer Weise zu besseren Code verhilft - jeder wie er glaubt.

Richtlinien gibt es schon bei zwei Personen, sinnvoll ist es auch schon bei einer.

braunbär hat geschrieben:Das heißt aber nicht, dass die Sprache solche bei vernünftiger Verwendung sinnvolle Features für die, die sie verwenden wollen, nicht bieten soll. Wenn jemand sagt "brauch ich nicht", ist das natürlich zu akzeptieren, das ist aber kein Argument gegen ein Sprachfeature.

Der Weg ist ein umgekehrter. Du musst ja überzeugen warum du ein bestimmtes Feature haben willst. Aus dem Grund hast du doch die ursprüngliche Anfrage gestellt? Ich denke die Argumente sind hier auch erschöpfend genannt worden. Jetzt wäre dann der Weg Featurerequest und Patch einzureichen. Mal sehen was die Entwickler daraus machen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Syntaxerweiterung von Pascal

Beitrag von wp_xyz »

braunbär hat geschrieben:1. "with x:=object do" alternativ zu "with object do" - wobei x nicht extra an anderer Stelle deklariert werden müsste und der Gültigkeitsbereich sich auf den with-Block beschränken würde - würde die Probleme, die mit dem with-Statement in seiner jetzigen Form verbunden sind, auf einfache und elegante Art lösen.
2. Zuweisungen sollten generell als Teilexpressions erlaubt sein. Dann wären Konstrukte möglich wie: "while (l:=length(s)) < 10 do insert('x',s,l div 2)"

Das ist eine nutzlose Diskussion, die wie eine Stammtischrunde vielleicht Spaß macht, weil die die Kontrahenden so schön aufeinander losgehen, aber letztendlich nichts bringt. Das hier ist das falsche Forum für eine solche Diskussion. Braunbär, wenn du ernsthaft diese Features in der Sprache haben willst, musst du dich an der fpc-devel-MailingList (http://lists.freepascal.org/cgi-bin/mai ... /fpc-devel) anmelden und deinen Vorschlag dort einreichen und direkt mit den FPC-Entwicklern diskutieren. Alles andere ist Zeitverschwendung und führt über ein "hätt-ich-tät-ich-wär-ich" nicht hinaus.

Meine persönliche Meinung als Komponentenentwickler ist, dass ich sowas nie einsetzen werde, weil es den User mit älteren FPC-Versionen ausschließt, die gerade in der Linux-Welt gang und gäbe sind.

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Syntaxerweiterung von Pascal

Beitrag von Michl »

m.fuchs hat geschrieben:Ich denke die Argumente sind hier auch erschöpfend genannt worden. Jetzt wäre dann der Weg Featurerequest und Patch einzureichen. Mal sehen was die Entwickler daraus machen.
Ich nutze zumeist kein "with", daher wäre das Feature mir eigentlich egal. Ein sauberes "with" wäre sicherlich sinnvoll, nur glaube ich nicht, daß es implementiert wird, hauptsächlich deshalb, weil es das so in Delphi nicht gibt.

Idealerweise führt Delphi dieses ein, wenn es einmal vorhanden ist, wird das Freepascal Team sicher folgen. Blöd wäre es, wenn Freepascal sich allein dafür entscheidet und später Embarcadero (oder wer auch immer) dies in Delphi einpflegt und man zwei verschiedene Syntaxen hat.

Delphi-Compatibilität ist für Freepascal/Lazarus sehr wichtig (um den Code-Portierungsaufwand so gering wie möglich zu halten). Weiß nicht, ob Martin Schreiber diesen Syntax so in seinem Produkt einpflegen will? Es gibt auch noch NewPascal, Codetyphon (Forks von FreePascal/Lazarus), vielleicht haben sie Interesse?

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

braunbär
Beiträge: 369
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: 64Bit
Wohnort: Wien

Re: Syntaxerweiterung von Pascal

Beitrag von braunbär »

wp_xyz hat geschrieben:Braunbär, wenn du ernsthaft diese Features in der Sprache haben willst, musst du dich an der fpc-devel-MailingList (http://lists.freepascal.org/cgi-bin/mai ... /fpc-devel) anmelden und deinen Vorschlag dort einreichen

Ich habe mich jetzt bei der Mailing Liste angemeldet und werde mir das erst einmal anschauen.

m.fuchs hat geschrieben:Ach so, das klassische "das habe ich schon immer so gemacht".

Nein.

m.fuchs hat geschrieben:Was durchaus leicht lesbar ist, dein ursprüngliches Konstrukt ist es nicht.

Es ist, wie vieles andere, natürlich auch eine Frage der Gewohnheit.

wp_xyz hat geschrieben:Meine persönliche Meinung als Komponentenentwickler ist, dass ich sowas nie einsetzen werde, weil es den User mit älteren FPC-Versionen ausschließt, die gerade in der Linux-Welt gang und gäbe sind.

Wenn du auf Abwärtskompatibilität Bedacht nehmen musst, kannst du prinzipiell überhaupt keine neuen Features einsetzen.
Wobei mir eigentlich keine Gründe dafür einfallen, dass jemand nicht auf die neueste Compilerversion von FPC umsteigen wollen würde (vorausgesetzt, die ist stabil und abwärtskompatibel). Im Gegensatz zu Delphi ist ja nicht jeder Versionswechsel mit Kosten verbunden.

Thandor
Beiträge: 153
Registriert: Sa 30. Jan 2010, 18:17
OS, Lazarus, FPC: Windows 10 64Bit/ lazarus 3.0 mit FPC 3.2.2 (32Bit + 64bit)
CPU-Target: 64Bit
Wohnort: Berlin

Re: Syntaxerweiterung von Pascal

Beitrag von Thandor »

Die Linux-Distributionen hängen mit ihrer Paketverwaltung teilweise stark hinterher, was die Aktualität der FreePascal und Lazarus-Versionen angeht.

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Syntaxerweiterung von Pascal

Beitrag von Timm Thaler »

Thandor hat geschrieben:Die Linux-Distributionen hängen mit ihrer Paketverwaltung teilweise stark hinterher, was die Aktualität der FreePascal und Lazarus-Versionen angeht.


Auf dem Raspberry in Jessie ist es immer noch FPC 2.6.4 mit Lazarus 1.2.4.

Es gibt ein Script, welches die aktuelle Version installiert, aber das hat mir beim letzten Mal dev, bin und lib einfach ins Homeverzeichnis gekübelt statt ins root. Und ich hatte noch keine Lust, das nochmal zu machen, weil das Script 45min braucht um durchzulaufen und ich vorher alles von Hand aufräumen muss.

Unter Windows: Programm in aktueller Version downloaden, Programm installieren, Programm benutzen. Ich kann echt nicht nachvollziehen, was die Leute an veralteten Repos so toll finden.

Antworten