[fpc-pascal] Interface syntax: Is possible don't use specialize in mode objfpc?
Michael Van Canneyt
michael at freepascal.org
Thu Jul 16 21:03:09 CEST 2015
On Thu, 16 Jul 2015, silvioprog wrote:
> On Thu, Jul 16, 2015 at 2:21 PM, Michael Van Canneyt <michael at freepascal.org> wrote:
> On Thu, 16 Jul 2015, Marcos Douglas wrote:
> On Thu, Jul 16, 2015 at 11:44 AM, Michael Van Canneyt
> <michael at freepascal.org> wrote:
>
>
> On Thu, 16 Jul 2015, Maciej Izak wrote:
>
> sadly - no, only in Delphi mode. btw. this thing keep me away from objfpc.
>
>
>
> That seems like a very strange reason to me.
>
> The fact that you must type 1 word in certain places keeps you from using an
> otherwise useful mode ?
> This word is there for clarity, It is meant to help you, to make explicit
> you are in fact specializing a new type.
>
>
> Yes, but do you think this is more verbose unnecessarily? Because the
> syntax TFoo<T> (I mean this "<>") show us that is a generic, don't?
>
> The Lazarus also has some troubles with the code completion using this:
> TFoo = class(TInterfacedObject, specialize ICloneable<TFoo>)
>
>
> Lazarus is not alone, even I have trouble with this :)
>
>
> Sometimes the IDE shows an error in interface declaration, but compiles.
> So, to not receive these errors I have to create a new type:
>
> TFoo = class; //forward
>
> IFooCloneable = specialize ICloneable<TFoo>;
>
> TFoo = class(TInterfacedObject, IFooCloneable)
> //...
> end;
> ...making even more verbose.
>
>
> Pascal is a verbose language. If you want terse, use C++ or something like it.
>
> The whole generics mess that Delphi made goes completely against the Pascal dictum that you must declare something before you can use it.
>
> To me, the above verbose construction makes absolute sense. It has been so since day 1:
>
> PRecord = ^TRecord;
> TRecord = record
> a : integer;
> next : PRecord;
> end;
>
> Michael.
>
>
> IMHO this could be decided via poll, because several users around the world are using FPC too. For example, in a polling, I would vote in less keywords, e.g: [+1 vote for: "TFoo =
> class(TInterfacedObject, ICloneable<TFoo>)" / "t.Add<LongInt>(2, 4);"] and [-1 vote for: "TFoo = class(TInterfacedObject, specialize ICloneable<TFoo>)" / "t.specialize Add<LongInt>(2, 4);"].
>
> The more verbose a language becomes, and needs more keywords to do simple things, the more chances it has to be depreciated.
You better wake up, pascal is long deprecated.
>
> I use other languages too, like Java (Android) and JS (front-end / AngularJS), but here in our company we are testing and thinking about migrating a lot of our online structure to Node.js, because
> it is very productive and less burocratic. For while we are using a mix of Pascal (XE8/FPC 3) and Node.js via proxy + websocket, but the trend is to use only JS in front-end and back-end.
And you honestly think that this change will stop this process ?
People that feel that this is a problem can use mode Delphi.
Michael.
More information about the fpc-pascal
mailing list