Food for thought - language string improvement

classic Classic list List threaded Threaded
47 messages Options
123
Reply | Threaded
Open this post in threaded view
|

Re: Food for thought - language string improvement

Graeme Geldenhuys-6
Hi,

I've give a short reply here, in case others deem this off-topic. I
always seem to end up in hot water about such stuff here. I can send you
more details in private if need be.

On 2017-07-09 22:16, Michael Van Canneyt wrote:
> Would it be possible to give examples ?
> Maybe there are things that can be done in Lazarus, and Pascal ?

Some IDE examples I have already raised in recent weeks in the Lazarus
forum. The Java IDE's are *way* more clever about what code you wrote
and makes very intelligent suggestions when it discovers errors, or
possible improvements (eg: because you are using a newer Java version
that might have an improved solution). In Eclipse, Ctrl+1 will list the
options, give you a tooltip hint of how the changed code will look
(before any changes are made). Make your pick and press enter. Those
could be fixing errors, improved language features, pull in missing
import lines, implement getters and setters, define missing classes,
field variables or local variables etc. The list of what is on offer is
massive.

Purely on the language side of things.... I love the fact that there is
no *.h or an "interface section" in my code - why must C/C++ and Object
Pascal duplicate that information. If I want to see a purely "interface"
view of my code, the IDE doesn't that as standard in the unit Outline
window.

As I said, just a short list here, but I can list many more if you want
- both IDE features and language features.

Regards,
   Graeme

--
fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
http://fpgui.sourceforge.net/

My public PGP key:  http://tinyurl.com/graeme-pgp
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Food for thought - language string improvement

Michael Van Canneyt


On Mon, 10 Jul 2017, Graeme Geldenhuys wrote:

> Hi,
>
>
> Purely on the language side of things.... I love the fact that there is
> no *.h or an "interface section" in my code - why must C/C++ and Object
> Pascal duplicate that information. If I want to see a purely "interface"
> view of my code, the IDE doesn't that as standard in the unit Outline
> window.

If that is all, on the language side, I am a happy man :)

I think Java is a rather primitive language,
so I had hoped for something massively impressive.

Let me give you a counter example why I think Java plainly sucks.

I get very depressed when I see things like this:

dstream.foreachRDD(new VoidFunction<JavaRDD<String>>() {
   @Override
   public void call(JavaRDD<String> rdd) {
     rdd.foreachPartition(new VoidFunction<Iterator<String>>() {
       @Override
       public void call(Iterator<String> partitionOfRecords) {
         Connection connection = ConnectionPool.getConnection();
         while (partitionOfRecords.hasNext()) {
           connection.send(partitionOfRecords.next());
         }
         ConnectionPool.returnConnection(connection);
       }
     });
   }
});

Such code is completely unreadable to me.

Compare this to the same code in Python:

def sendPartition(iter):
     connection = ConnectionPool.getConnection()
     for record in iter:
         connection.send(record)
     ConnectionPool.returnConnection(connection)

dstream.foreachRDD(lambda rdd: rdd.foreachPartition(sendPartition))

The very paragon of readability.

Or Scala:

dstream.foreachRDD { rdd =>
   rdd.foreachPartition { partitionOfRecords =>
     val connection = ConnectionPool.getConnection()
     partitionOfRecords.foreach(record => connection.send(record))
     ConnectionPool.returnConnection(connection)
   }
}

Infinitely more readable than Java in my opinion.
And that is what matters to me.

The Java version with all it's templates is just painful.

(And mainly the reason why I think common use of Generics or templates
is just a plain wrong approach, but that is another story)

So in fact your mail is a relief, I thought there would be some killer
arguments why Java is better than Object Pascal...

About the IDE: there I cannot argue, there are probably many more things
that can be done in Lazarus.

Michael.
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Food for thought - language string improvement

Santiago A.
In reply to this post by Graeme Geldenhuys-6
El 10/07/2017 a las 1:32, Graeme Geldenhuys escribió:

> Hi,
>
> I've give a short reply here, in case others deem this off-topic. I
> always seem to end up in hot water about such stuff here. I can send
> you more details in private if need be.
>
> On 2017-07-09 22:16, Michael Van Canneyt wrote:
>> Would it be possible to give examples ?
>> Maybe there are things that can be done in Lazarus, and Pascal ?
>
> Some IDE examples I have already raised in recent weeks in the Lazarus
> forum. The Java IDE's are *way* more clever about what code you wrote
> and makes very intelligent suggestions when it discovers errors, or
> possible improvements (eg: because you are using a newer Java version
> that might have an improved solution). In Eclipse, Ctrl+1 will list
> the options, give you a tooltip hint of how the changed code will look
> (before any changes are made). Make your pick and press enter. Those
> could be fixing errors, improved language features, pull in missing
> import lines, implement getters and setters, define missing classes,
> field variables or local variables etc. The list of what is on offer
> is massive.
>
> Purely on the language side of things.... I love the fact that there
> is no *.h or an "interface section" in my code - why must C/C++ and
> Object Pascal duplicate that information. If I want to see a purely
> "interface" view of my code, the IDE doesn't that as standard in the
> unit Outline window.
>
> As I said, just a short list here, but I can list many more if you
> want - both IDE features and language features.
>
> Regards,
>   Graeme
>
My main complain to Freepascal is debugger.

Being unable to debug any field of an object is unacceptable in a
modern professional environment (hint, properties with getter, let alone
with strings). It's ridiculous to use writeln() or creating dummy
variables to debug as if I were in 1980. You can add to the IDE as many
bells and whistles as you want, but without a serious debugger, no way.

--
Saludos

Santiago A.

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Food for thought - language string improvement

denisgolovan
Just my 50 cents.

Even though I avoid using debugger at all cost,
I am willing to donate some money should someone start a crowd-funding effort to get "modern" debugging support in Lazarus.
That would definitely improve Lazarus/FPC public image.

--
Regards,
Denis Golovan
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Food for thought - language string improvement

Santiago A.
El 10/07/2017 a las 11:17, denisgolovan escribió:
> Just my 50 cents.
>
> Even though I avoid using debugger at all cost,
> I am willing to donate some money should someone start a crowd-funding effort to get "modern" debugging support in Lazarus.
> That would definitely improve Lazarus/FPC public image.
>
It is not a matter of public image, it's a matter of usability, a "must
have", a stopper.

--
Saludos

Santiago A.

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Food for thought - language string improvement

denisgolovan
That's exactly what I mean - some (or major) part of public considers it a stopper for some reason :)

Sorry for hijacking the thread.


10.07.2017, 12:43, "Santiago A." <[hidden email]>:
> El 10/07/2017 a las 11:17, denisgolovan escribió:
> It is not a matter of public image, it's a matter of usability, a "must
> have", a stopper.

--
Regards,
Denis Golovan
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Food for thought - language string improvement

Michael Van Canneyt


On Mon, 10 Jul 2017, denisgolovan wrote:

> That's exactly what I mean - some (or major) part of public considers it a stopper for some reason :)
>
> Sorry for hijacking the thread.

I can add it to the list of sponsored projects on the foundation page.

Michael.
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Food for thought - language string improvement

denisgolovan
Please do.

And to that hero who is willing to take the effort - please post a call for donation in a separate thread :)

10.07.2017, 13:06, "Michael Van Canneyt" <[hidden email]>:

> On Mon, 10 Jul 2017, denisgolovan wrote:
>
>>  That's exactly what I mean - some (or major) part of public considers it a stopper for some reason :)
>>
>>  Sorry for hijacking the thread.
>
> I can add it to the list of sponsored projects on the foundation page.
>
> Michael.
> _______________________________________________
> fpc-pascal maillist - [hidden email]
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

--
Regards,
Denis Golovan
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Food for thought - language string improvement

Graeme Geldenhuys-6
In reply to this post by Michael Van Canneyt
On 2017-07-10 07:30, Michael Van Canneyt wrote:
>
> If that is all, on the language side, I am a happy man :)

I did mention that it was purposely a small list


> Let me give you a counter example why I think Java plainly sucks.
>
> I get very depressed when I see things like this:

You do realise that you don't have to write code like that. ;-) It's
like me showing you bad examples of Object Pascal code - there are even
dedicated websites that does just that. :-) Just because the language
allows for such code, doesn't mean you have to write code like that.

Saying that, I personally agree that your code example is hard to read
at first, and I simply try avoid writing Java code like that.

Some more examples of why I like Java.

* This language feature I disagreed with for many years, until I
recently understood how Java works. Defining local variables when and
where you need them in the code. Read up on the scope of variables to
understand  it fully, but local variables scope is based on code blocks.
So if you define a new variable inside { and } - it is only valid inside
that block. The IDEs fully support this obviously and wouldn't even
suggest such variables (code completion) outside such code blocks.

* Targeting older Java versions, even though you are using a newer
version to compile the code.

* String support, and more specifically, Unicode string support is a
breeze to understand and use.

* The backwards compatibility, to use 10-15 year old BOM class files
without the original source code. They simply just work - as if you just
compiled them. On the flip side, both Eclipse and IDEA can decompile
class files back to .java files too - and they do an impressive job at
that (that's obviously more useful if the original class file code
wasn't run through a obfuscater).

* Try/Catch blocks where you can catch multiple exception types -
without needing nested code blocks like Object Pascal. You can even add
a finally block in there too - again without nested blocks.

* I seem to have grasped Generics in Java much easier than in FPC or
Delphi. I don't fully know why that is. Maybe the syntax, more examples
etc? Not sure.

This list just scratches the surface obviously. And then, like you
mentioned, the absolute massive and very impressive supporting libraries
and frameworks.


Regards,
   Graeme

--
fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
http://fpgui.sourceforge.net/

My public PGP key:  http://tinyurl.com/graeme-pgp
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Food for thought - language string improvement

Felipe Monteiro de Carvalho
On Mon, Jul 10, 2017 at 12:14 PM, Graeme Geldenhuys
<[hidden email]> wrote:
> * I seem to have grasped Generics in Java much easier than in FPC or
> Delphi. I don't fully know why that is. Maybe the syntax, more examples etc?
> Not sure.

Well, Java Generics are very limited in comparison with C++ / Object
Pascal generics (Java generics accepts only Objects never primitives),
so that's make them much simpler to use/understand of course.

Maybe Java is right and that's all we'll ever need and the performance
improvement of templates do not justify the added complexity and the
difficulty in debugging. But it is a big limitation, so your
comparison is not exactly fair here.

If Object Pascal had generics which accept only TObject I'm pretty
sure it would be just as easy to use and understand and debug as in
Java!

OTOH: The improved exception handling is indeed something we miss, in
particular try-with-resources.

Java has a very significant problem in my opinion: At least where I
live, Java is never utilized for any interresting projects. Only for
JavaEE with Spring+Hibernate and a little for Android (although
Android people don't care that much for Java, they want specific
knowledge of Android APIs and libraries, and dislike the Java generic
APIs). Its even surprising like: wow, such a nice framework and noone
ever does anything interresting with it o.O

It looks like that C++ and C# are utilized in much more varied and
interresting projects than Java.

--
Felipe Monteiro de Carvalho
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Food for thought - language string improvement

Michael Van Canneyt
In reply to this post by Graeme Geldenhuys-6


On Mon, 10 Jul 2017, Graeme Geldenhuys wrote:

> On 2017-07-10 07:30, Michael Van Canneyt wrote:
>>
>> If that is all, on the language side, I am a happy man :)
>
> I did mention that it was purposely a small list
>
>
>> Let me give you a counter example why I think Java plainly sucks.
>>
>> I get very depressed when I see things like this:
>
> You do realise that you don't have to write code like that. ;-) It's
> like me showing you bad examples of Object Pascal code - there are even
> dedicated websites that does just that. :-) Just because the language
> allows for such code, doesn't mean you have to write code like that.
>
> Saying that, I personally agree that your code example is hard to read
> at first, and I simply try avoid writing Java code like that.

You can't. The APIs this is used in can only work like this.
They require templates, and they have no other way to work.

https://spark.apache.org/docs/latest/streaming-programming-guide.html

> Some more examples of why I like Java.

Well, from your list the only thing I can see we could add
is the catch block with multiple exception types.

The rest: I still don't see how this makes java "more modern".
Scala is more modern, that is for sure. I would not argue there.

But to each his own opinion, obviously.

Michael.
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Food for thought - language string improvement

Michael Van Canneyt
In reply to this post by Felipe Monteiro de Carvalho


On Mon, 10 Jul 2017, Felipe Monteiro de Carvalho wrote:

> On Mon, Jul 10, 2017 at 12:14 PM, Graeme Geldenhuys
> <[hidden email]> wrote:
>> * I seem to have grasped Generics in Java much easier than in FPC or
>> Delphi. I don't fully know why that is. Maybe the syntax, more examples etc?
>> Not sure.
>
> Well, Java Generics are very limited in comparison with C++ / Object
> Pascal generics (Java generics accepts only Objects never primitives),
> so that's make them much simpler to use/understand of course.
>
> Maybe Java is right and that's all we'll ever need and the performance
> improvement of templates

There is no performance improvement, rather the contrary.
The generic list works slower than the native list.

Michael.
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Food for thought - language string improvement

Felipe Monteiro de Carvalho
On Mon, Jul 10, 2017 at 12:52 PM, Michael Van Canneyt
<[hidden email]> wrote:
> There is no performance improvement, rather the contrary. The generic list
> works slower than the native list.

I meant that C++ templates (and maybe Pascal generics which are very
similar if I am not wrong) are faster than Java generics. Maybe it has
to do with that primitive types in Java cannot be added to generics at
all, but need to be wrapped in an object.

I also don't see why a template list would be slower than a fixed-type
one. It should be the same. Its just a copy of the same code.

Anyway C++ guys claim that templates are faster than Java generics,
I'm just repeating what I heard.

If they aren't faster, then Java has better generics, because they are
easier to use and debug.

--
Felipe Monteiro de Carvalho
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Food for thought - language string improvement

Michael Van Canneyt


On Mon, 10 Jul 2017, Felipe Monteiro de Carvalho wrote:

> On Mon, Jul 10, 2017 at 12:52 PM, Michael Van Canneyt
> <[hidden email]> wrote:
>> There is no performance improvement, rather the contrary. The generic list
>> works slower than the native list.
>
> I meant that C++ templates (and maybe Pascal generics which are very
> similar if I am not wrong) are faster than Java generics. Maybe it has
> to do with that primitive types in Java cannot be added to generics at
> all, but need to be wrapped in an object.
>
> I also don't see why a template list would be slower than a fixed-type
> one. It should be the same. Its just a copy of the same code.

The code is definitely not the same.
In each case, it was measured. There is a 10% performance loss.

Michael.
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Food for thought - language string improvement

Felipe Monteiro de Carvalho
On Mon, Jul 10, 2017 at 1:08 PM, Michael Van Canneyt
<[hidden email]> wrote:
> The code is definitely not the same. In each case, it was measured. There is
> a 10% performance loss.

I'd love a source on this one. I guess you mean in Free Pascal?
Because I searching the web C++ developers seam all sure that
templates are the 7th wonder and so fast.

And in Java I am 110% certain that generics add zero performance
penalty. Generics don't even exist in Java after compilation, they
don't produce any different code than if you had hard-coded Object.
It's just a compile type type-checking. Under the hood there is only 1
code operating on Object instances. It is backwards compatible to
pre-generic Java and it can't possibly impact performance.

--
Felipe Monteiro de Carvalho
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Food for thought - language string improvement

Michael Van Canneyt


On Mon, 10 Jul 2017, Felipe Monteiro de Carvalho wrote:

> On Mon, Jul 10, 2017 at 1:08 PM, Michael Van Canneyt
> <[hidden email]> wrote:
>> The code is definitely not the same. In each case, it was measured. There is
>> a 10% performance loss.
>
> I'd love a source on this one. I guess you mean in Free Pascal?

Obviously.

The classes unit can be recompiled to use the fgl (well, that used to be so)
as a basis. When using the resulting list and stringlist, there was a 10%
performance loss. The main reason - If I recall correctly - was that the fgl
needs to resort to move() operations instead of direct assignments.

Michael.
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Food for thought - language string improvement

dmitry boyarintsev
In reply to this post by Graeme Geldenhuys-6
On Mon, Jul 10, 2017 at 6:14 AM, Graeme Geldenhuys <[hidden email]> wrote:

* Try/Catch blocks where you can catch multiple exception types - without needing nested code blocks like Object Pascal. You can even add a finally block in there too - again without nested blocks.

are you referring to "Catching More Than One Type of Exception with One Exception Handler" in
?


_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Food for thought - language string improvement

Free Pascal - General mailing list
In reply to this post by Michael Van Canneyt

Am 10.07.2017 13:19 schrieb "Michael Van Canneyt" <[hidden email]>:
>
>
>
> On Mon, 10 Jul 2017, Felipe Monteiro de Carvalho wrote:
>
>> On Mon, Jul 10, 2017 at 1:08 PM, Michael Van Canneyt
>> <[hidden email]> wrote:
>>>
>>> The code is definitely not the same. In each case, it was measured. There is
>>> a 10% performance loss.
>>
>>
>> I'd love a source on this one. I guess you mean in Free Pascal?
>
>
> Obviously.
>
> The classes unit can be recompiled to use the fgl (well, that used to be so)
> as a basis. When using the resulting list and stringlist, there was a 10%
> performance loss. The main reason - If I recall correctly - was that the fgl needs to resort to move() operations instead of direct assignments.

The fgl classes don't use Move(), but they have a virtual method that does the assignment between the specialized parameters that's inherited from the non-generic parent list type.

You might want to test with the list provided by the rtl-generics package.

Regards,
Sven


_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Food for thought - language string improvement

Michael Van Canneyt


On Mon, 10 Jul 2017, Sven Barth via fpc-pascal wrote:

> Am 10.07.2017 13:19 schrieb "Michael Van Canneyt" <[hidden email]>:
>>
>>
>>
>> On Mon, 10 Jul 2017, Felipe Monteiro de Carvalho wrote:
>>
>>> On Mon, Jul 10, 2017 at 1:08 PM, Michael Van Canneyt
>>> <[hidden email]> wrote:
>>>>
>>>> The code is definitely not the same. In each case, it was measured.
> There is
>>>> a 10% performance loss.
>>>
>>>
>>> I'd love a source on this one. I guess you mean in Free Pascal?
>>
>>
>> Obviously.
>>
>> The classes unit can be recompiled to use the fgl (well, that used to be
> so)
>> as a basis. When using the resulting list and stringlist, there was a 10%
>> performance loss. The main reason - If I recall correctly - was that the
> fgl needs to resort to move() operations instead of direct assignments.
>
> The fgl classes don't use Move(), but they have a virtual method that does
> the assignment between the specialized parameters that's inherited from the
> non-generic parent list type.

home:~/fpc/rtl/objpas> grep -i move fgl.pp

   System.Move(Src^, Dest^, FItemSize);
   System.Move(InternalItems[Index+1]^, ListItem^, (FCount - Index) * FItemSize);
     System.Move(ListItemPtr^, ResultPtr^, FItemSize);
   System.Move(InternalItems[Index1]^, InternalItems[FCapacity]^, FItemSize);
   System.Move(InternalItems[Index2]^, InternalItems[Index1]^, FItemSize);
   System.Move(InternalItems[FCapacity]^, InternalItems[Index2]^, FItemSize);
     System.Move(Result^, (Result+FItemSize)^, (FCount - Index) * FItemSize);
   System.Move(CurItem^, TmpItem^, FItemSize);
   System.Move(Src^, Dest^, MoveCount * FItemSize);
   System.Move(TmpItem^, NewItem^, FItemSize);
   System.Move(psrc^, pdest^, LItemSize);
   System.Move(Src^, Dest^, FKeySize);
   System.Move(Src^, Dest^, FDataSize);

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Food for thought - language string improvement

Graeme Geldenhuys-6
In reply to this post by dmitry boyarintsev
On 2017-07-10 13:34, Dmitry Boyarintsev wrote:
> are you referring to "Catching More Than One Type of Exception with One
> Exception Handler" in
> https://docs.oracle.com/javase/tutorial/essential/exceptions/catch.html

Yes. You can have multiple catch blocks inside the same try block. You
can also have a single catch block with a comma separated list of
exception types.

Then lastly, you can even add a finally block in there too (Java calls
this try-with-resources).

So putting those together, it looks like this:

 
https://docs.oracle.com/javase/tutorial/essential/exceptions/putItTogether.html

Regards,
   Graeme

--
fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
http://fpgui.sourceforge.net/

My public PGP key:  http://tinyurl.com/graeme-pgp
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
123