Was wünscht ihr euch für Pascal Features in der Zukunft

Für sonstige Unterhaltungen, welche nicht direkt mit Lazarus zu tun haben
Antworten
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: Was wünscht ihr euch für Pascal Features in der Zukunft

Beitrag von mschnell »

Patito hat geschrieben:2) Multithreading
Multithreading-Code von Windows nach Linux zu portieren hat auf Anhieb erst mal gar nicht geklappt.
Funktionieren die Synchronisations-Klassen überhaupt annähernd gleich?
Verstehe ich nicht. Mche ich dauernd. TThread,Synchronize, TThread.Queue und Application.QueueAsyncCall funktionieren in Windows und Linux gleich.
Patito hat geschrieben:3) Strings - ein Ende des Elends in Sicht?!
FPC ist dabei die Strings umzustellen. Ich denke im Moment ist noch nicht klar,
wie das ausgeht. Ein gutes Ende wäre wünschenswert, ist aber noch nicht in Sicht.
Da hast Du vermutlich Recht (siehe oben). Der Delphi-kompatible Müll wird wohl für immer bleiben.

-Michael

Patito
Beiträge: 203
Registriert: Di 22. Sep 2009, 13:08
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Was wünscht ihr euch für Pascal Features in der Zukunft

Beitrag von Patito »

mschnell hat geschrieben:
Patito hat geschrieben:2) Multithreading
Multithreading-Code von Windows nach Linux zu portieren hat auf Anhieb erst mal gar nicht geklappt.
Funktionieren die Synchronisations-Klassen überhaupt annähernd gleich?
Verstehe ich nicht. Mche ich dauernd. TThread,Synchronize, TThread.Queue und Application.QueueAsyncCall funktionieren in Windows und Linux gleich.
Über den MainThread will ich im Prinzip lieber nicht synchronisieren - das klingt ein wenig nach einem Flaschenhals.
Normalerweise verwende ich in Delphi TEvent oder sonst irgendetwas mit einem Windows.WaitForSingleObject().

Unter Linux hat TEvent bei mir noch nie wirklich funktioniert. Ich habe es gelegentlich provisorisch durch TCriticalSection ersetzt,
aber beim letzten mal hat das auch nicht geholfen.

BeniBela
Beiträge: 321
Registriert: Sa 21. Mär 2009, 17:31
OS, Lazarus, FPC: Linux (Lazarus SVN, FPC 2.4)
CPU-Target: 64 Bit

Re: Was wünscht ihr euch für Pascal Features in der Zukunft

Beitrag von BeniBela »

[quote="marcov"
Deshalb auch C UND LINQ statt C MIT LINQ.[/quote]

Aber da bringt es einem trotzdem nichts C zu verwenden
mschnell hat geschrieben: Verstehe ich nicht. Mche ich dauernd. TThread,Synchronize, TThread.Queue und Application.QueueAsyncCall funktionieren in Windows und Linux gleich.
In meiner Androidapp habe ich keinen Mainthread, weil der unter Java läuft => keine der Funktionen funktioniert

Warf
Beiträge: 2144
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Was wünscht ihr euch für Pascal Features in der Zukunft

Beitrag von Warf »

BeniBela hat geschrieben:
marcov hat geschrieben: Deshalb auch C UND LINQ statt C MIT LINQ.
Aber da bringt es einem trotzdem nichts C zu verwenden
mschnell hat geschrieben: Verstehe ich nicht. Mche ich dauernd. TThread,Synchronize, TThread.Queue und Application.QueueAsyncCall funktionieren in Windows und Linux gleich.
In meiner Androidapp habe ich keinen Mainthread, weil der unter Java läuft => keine der Funktionen funktioniert
Synchronisation via critical Sections geht auch wunderbar ohne Mainthread, damit hatte ich nie ein Problem

AndreasMR
Beiträge: 98
Registriert: Di 4. Aug 2015, 15:29
OS, Lazarus, FPC: Linux, Raspbian, Windows
CPU-Target: 64/32 Bit

Re: Was wünscht ihr euch für Pascal Features in der Zukunft

Beitrag von AndreasMR »

Hallo zusammen,

die Stärke einer Programmiersprache und deren Akzeptanz in der Programmierer-Gemeinde besteht meines Erachtens darin, dass die Sprachgrundlagen unverändert bleiben. Es macht für mich wenig Sinn, wenn eine Programmiersprache mit einer so mächtigen Syntax wie der von Pascal und deren Derivate irgendwelchen Trends anderer Programmiersprachen hinterherläuft und einzelne Aspekte assimiliert.

Ein paar Beiträge weiter oben wurde ein Code-Ausschnitt wie der hier grebracht:

Code: Alles auswählen

 
  for i := 0 to rowCount do begin
    for j := 0 to colCount do 
      changeCell(i, j);
    completeRow(j);
  end;
 
Dieser Ausschnitt würde in den Programmiersprachen Icon und Unicon z.B. so aussehen:

Code: Alles auswählen

 
  changeCell(0 to rowCount, 0 to colCount)
  completeRow(0 to colCount)
 
Auch wenn
- dieser Code ohne Semikolons auskommt - die ich echt nervig finde, da überflüssig, denn die Syntax der Ausdrücke in einer Zeile entscheiden allein darüber, ob ein Ausdruck abgeschlossen ist oder in der nächsten Zeile fortgesetzt werden muss
- die Schleifen in Form von Generatoren statt als Iteratoren durchgeführt werden (können)
ist dies eben kein Pascal und sollte auch kein Pascal werden.

Ich denke, wenn gelegentlich neue Pakete dazu kommen und Macken alter Pakete entfernt werden, dann ist das genug "Feature für die Zukunft".

Beste Grüße

Andreas
Ubuntu 14.04 LTS / Raspbian / Windows: Lazarus ab 0.9 bis 3.0

marcov
Beiträge: 1102
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: Was wünscht ihr euch für Pascal Features in der Zukunft

Beitrag von marcov »

AndreasMR hat geschrieben: die Stärke einer Programmiersprache und deren Akzeptanz in der Programmierer-Gemeinde besteht meines Erachtens darin, dass die Sprachgrundlagen unverändert bleiben. Es macht für mich wenig Sinn, wenn eine Programmiersprache mit einer so mächtigen Syntax wie der von Pascal und deren Derivate irgendwelchen Trends anderer Programmiersprachen hinterherläuft und einzelne Aspekte assimiliert.
Quatsch. Der Basis Syntax einer neuer Sprache lernen ist lächerlich wenn es vergleicht mit wirklich Produktiv werden auf ein Platform. Mit ein Platform meine ich ein Kompiler/IDE/Sprache/libraries/OS und "wie macht man so etwas mit dieser Kombination".

Basis Syntax lernt man innerhalb eines Mittags, Produktiv werden zählt man in Monaten oder Jahre.
Ein paar Beiträge weiter oben wurde ein Code-Ausschnitt wie der hier grebracht:

Code: Alles auswählen

 
  for i := 0 to rowCount do begin
    for j := 0 to colCount do 
      changeCell(i, j);
    completeRow(j);
  end;
 
Dieser Ausschnitt würde in den Programmiersprachen Icon und Unicon z.B. so aussehen:

Code: Alles auswählen

 
  changeCell(0 to rowCount, 0 to colCount)
  completeRow(0 to colCount)
 
Und wie viel Uhr spart solche Mikrosyntax das in einem Jahre? Mehr als eine Tasse Kaffee holen? Lächerlich. Die Menge Text die man muss Typen mit 3% oder so verringern ist doch nicht die größter Herausforderung in der Programmierung?

Darum zu beten ist reine Sprache Hobbyeismus!
- dieser Code ohne Semikolons auskommt - die ich echt nervig finde, da überflüssig, denn die Syntax der Ausdrücke in einer Zeile entscheiden allein darüber, ob ein Ausdruck abgeschlossen ist oder in der nächsten Zeile fortgesetzt werden muss
Ja, und wie wurdest du das Lösen? Also das Ende eines Linie soll keine Bedeutung haben, und ist Äquivalent zu eine Spalte.
- die Schleifen in Form von Generatoren statt als Iteratoren durchgeführt werden (können)
Es ist sehr schwierig um Features von eine funktionale Sprache zu implementieren in Imperative Sprachen wie Pascal. Ja, man kann immer wieder etwas sonder Syntax hinzu fugen um ein spezifisch funktional Szenario auch in eine imperative Sprache zu Implementieren, (Microsoft hat das immer auch mit LINQ gemacht, hat nur ein paar Milliarden gekostet, und sie haben schon ein VM Konzept für C#), aber das ist eine unendliche Geschichte. Der Basisinfrastruktur einer funktionale Sprache (eine funktionaler Interpreter) ist einfach weg nicht da.

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

Re: Was wünscht ihr euch für Pascal Features in der Zukunft

Beitrag von Michl »

Ich habe noch nicht alle Konsequenzen bedacht (und ich weiss, dass ich auch eine Liste nutzen könnte), doch hätte ich da auch noch einen kleinen, recht pragmatischen, Wunsch.

Es gibt ja for .. in Schleifen. Ich fände es recht angenehm, wenn es ein Adäquat für "if" gäbe.

Ein einfaches Beispiel:

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var
  MyData: Array of Byte;
  b: Byte;
begin
  SetLength(MyData, 200);
  for b := Low(MyData) to High(MyData) do
    MyData[b] := Random(100);
 
  for b in MyData do  //bisher muss ich immer so eine Schleife schreiben
    if b = 10 then begin
      ShowMessage('10 in MyData enthalten!');
      Break;
    end;
 
  if 10 in MyData then  //Was ich gern durch diese Zeile ersetzt hätte
    ShowMessage('10 in MyData enthalten!');
end;   
Wobei immer der Inhalt und nicht der Index gemeint wäre.

Code: Alles auswählen

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

marcov
Beiträge: 1102
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: Was wünscht ihr euch für Pascal Features in der Zukunft

Beitrag von marcov »

Code: Alles auswählen

 
  for i in [low(x)..high(x)]-[10] do
     ...
 

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: Was wünscht ihr euch für Pascal Features in der Zukunft

Beitrag von mschnell »

marcov hat geschrieben:weil sie überall string, generics usw nutzt.
ganz zu schweigen von multiple inheritance....

-Michael

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: Was wünscht ihr euch für Pascal Features in der Zukunft

Beitrag von mschnell »

Patito hat geschrieben:Über den MainThread will ich im Prinzip lieber nicht synchronisieren - das klingt ein wenig nach einem Flaschenhals.
Das ist nur in ganz Fällen wirklich relevant. Es ist aber oft notwendig, statt TThread.Synchronize TThread.Queue oder Application.QueuAsyncCall zu verwenden und diese Erkenntnis scheint nicht sehr weit verbreitet zu sein (u.a. weil TThread.Queue in Delphi lange nicht dokumentiert war und Application.QueuAsyncCall in Delphi nicht existiert).
Patito hat geschrieben:Normalerweise verwende ich in Delphi TEvent oder sonst irgendetwas mit einem Windows.WaitForSingleObject().
Leider geht die Dokumentation nicht darauf ein ob und wie solche Objekte in Workerthreads anders als im Mainthread zu verwenden sind. Wenn in der Dokumentation nicht explizit steht, dass man es in Workerthreadsa verwenden darf, ist es eigentlich verboten. Und für Sachen, die Cross-Platform machbar sind die Windows-Api direkt aufrufen geht schon mal gar nicht

Ich verwende deshalb lieber TCriticalSection im Worker Thread. Das scheint immer zu funktionieren. (Im Mainthread darf das natürlich nicht verwendet werden, wenn da eine relevante Wartezeit entstehen kann). (Und man muss auf Deadlocks achten.)

-Michael

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: Was wünscht ihr euch für Pascal Features in der Zukunft

Beitrag von mschnell »

BeniBela hat geschrieben:In meiner Androidapp habe ich keinen Mainthread, weil der unter Java läuft => keine der Funktionen funktioniert
Dann ist die Implementierung in Lazarus (LCL) anscheinend noch nicht "State of the Art".

-Michael

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: Was wünscht ihr euch für Pascal Features in der Zukunft

Beitrag von mschnell »

Michl hat geschrieben:Es gibt ja for .. in Schleifen. Ich fände es recht angenehm, wenn es ein Adäquat für "if" gäbe.
Nennt sich "case"

-Michael

sierdolg
Beiträge: 66
Registriert: Mi 24. Okt 2012, 15:50

Re: Was wünscht ihr euch für Pascal Features in der Zukunft

Beitrag von sierdolg »

Verbundzuweisungen (compound assignments) wie u.a. auch in Delphi:

Code: Alles auswählen

          if bdTN.FieldByName('sonderfall').Value Then
            bdTN.FieldByName('bemerkungAwkb').Text += ' SF'
 
statt

Code: Alles auswählen

          if bdTN.FieldByName('sonderfall').Value Then
            bdTN.FieldByName('bemerkungAwkb').Text :=
            bdTN.FieldByName('bemerkungAwkb').Text + ' SF'
Oder geht das mit heutigen Mitteln irgendwie geschickter?

P.S.1: am Variablennamen "bemerkungAwkb" noch mehr zu kürzen ist wegen späterer Lesbarkeit keine Option.
P.S.2: nein, Java, C und C++ sind nicht meins und werden es auch ganz bestimmt nicht.

Benutzeravatar
theo
Beiträge: 10924
Registriert: Mo 11. Sep 2006, 19:01

Re: Was wünscht ihr euch für Pascal Features in der Zukunft

Beitrag von theo »

sierdolg hat geschrieben:Verbundzuweisungen (compound assignments) wie u.a. auch in Delphi:
Das geht bei mir (Lazarus 1.5 r49866M FPC 2.6.4 x86_64-linux-gtk 2)

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var a,b:String;
begin
   a:='eins';
   b:=' zwei';
   a+=b;
   Caption:=a;
end;   
 
Dein Fall geht wahrsch. auch bei Delphi nicht. Aus deinem Link:
You can not use them on functions, properties, classes,

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

Re: Was wünscht ihr euch für Pascal Features in der Zukunft

Beitrag von Michl »

theo hat geschrieben:Das geht bei mir (Lazarus 1.5 r49866M FPC 2.6.4 x86_64-linux-gtk 2)
Das kann man in den Projekteinstellungen -> Parsen -> C-artige Operatoren erlauben einstellen.

Das geht aber nur für Variablen, für Properties nicht:

Code: Alles auswählen

procedure TForm1.Button3Click(Sender: TObject);
var
  s: String;
begin
  Caption += 'Hallo'; //Das geht nicht
  s := Caption;
  s += 'Hallo';       //Das geht
  Caption := s;
end;

Code: Alles auswählen

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

Antworten