Re: What to do to get new users

Michael Van Canneyt via fpc-pascal <[email protected]>
Newsgroups gmane.comp.compilers.free-pascal.general
Message-ID <[email protected]>

On Sat, 16 Nov 2024, Marcos Douglas B. Santos via fpc-pascal wrote:

> On Sat, Nov 16, 2024 at 11:43 AM Michael Van Canneyt via fpc-pascal
> <[email protected]> wrote:
>>
>> > I could see that if it was a compiler for “Pascal” which was defined by
>> > some other group and you could reference them but it isn’t. FPC is a
>> > language in its own right and the compiler is the only place that
>> > implements it.
>>
>> Really ?
>>
>> You never heard of Delphi, ElevateWeb, Smart Mobile Studio, PascalScript, OxyGene ?
>> There are some others, can't recall the name. There is a Russian version,
>> called abcpascal or something similar.
>>
>> They all implement "object pascal", as defined by Delphi.
>
> This is something I don't understand. Why should all these
> environments and we, as Free Pascal/Lazarus users, follow Delphi's
> standards?
>
> Don't get me wrong. I've been working with Delphi for over 25 years
> and with FPC for 6 or 7 years. My career is based on Object Pascal.
> So, I too am interested in keeping the language relevant... but why
> follow Delphi? Why does FPC/Lazarus need to maintain this
> compatibility? Why does FPC/Lazarus need to follow the trends
> (erroneous, in my opinion) of Delphi or any other language?

Because it means we can reuse code written for Delphi.

Not only components on github/gitlab, but entire projects.

At my current job I'm converting a Delphi application to WebAssembly.
FPC has (meanwhile very good) support for webassembly. 
Delphi does not have it.

Due to the good compatibility, the same codebase can be used to create a
desktop/mobile application that runs in the browser.

If we didn't have it, this project would be impossible.

> Object Pascal is, in my opinion, one of the best programming languages
> ever created—if not the best. It is easy to understand and write; you
> can implement anything with it, from an operating system to visual
> applications for end-users.

No argument.

> Its structural organization is one of the
> things that sets it apart from other languages, where everything has
> its proper place to be declared... well, that used to be the case.
> Now, variables can be declared "anywhere"; "anonymous procedures" now
> exist and can also be declared "anywhere"; we have Generics because,
> well, Delphi and other languages have them, so we must have them too,
> right?

Depending on your goals, yes.

> Wrong!
>
> In my humble opinion, what keeps a language/environment/architecture
> relevant is how it deals with the world's innovations. It's not about
> adding new features to the language but adding new layers to address
> current problems.

That is what I am doing. All my work for FPC is geared towards a single
goal:

Whatever your project, FPC can do realize it.

Desktop. Server. Browser. Embedded Device: FPC has what you need.

>
> Let me explain: think about all these new features that have been
> added to the language and tell me what (most of them) allow us to
> build now that we couldn't build before. Most people still use the
> language to create the same kinds of systems. Does that make the
> language obsolete? Not if it can still create systems that are usable
> today! If it has performance, is easy to write, and is maintainable...

I agree.

I don't use these new features, or only very sporadically.

>
> So instead of "wasting time" implementing things Delphi did or what
> another language did, we could use that time to make everything
> simpler in the "FPC + Lazarus ecosystem" and forge our own path
> instead of following "false leaders" who are, in fact, just a slightly
> larger niche than FPC/Lazarus itself.

I have no idea how big the Delphi community is. 
It's a secret only known to Embarcadero, and they're not talking.

Do you know how big (or small) FPC/Lazarus is ?

I have no idea. I of course hope it is big.

>
> How about:
>
> - finally unifying FPC and Lazarus, whether on the FPC website, the
> Lazarus website, or a new one;
> using fpcupdeluxe as the official installation method;
> cross-compilation is very important, and most people using Lazarus for
> real-world applications use fpcupdeluxe to install Lazarus;

How do you know this ? On what do you base this statement ?

Again, I have no idea.

> - having pas2js pre-configured for creating web applications;

What is missing ? It is present in current lazarus ?

> - having an option to create mobile applications; we know it's
> possible (Castle does it), but nobody knows how to do it with a
> standard Lazarus setup; mobile is current, and we need that!

We're working on improving the support for mobile.

> - simplifying/deleting most of the libraries that are not used by default;

Such as ?

> - simplifying the naming conventions of units; using something like
> "lazarus.blablabla" and "fpc.blablabla" and leaving the main system
> units with names without prefixes;

No. I think prefixes are actually a good idea. 
Initially, I also didn't like them. 
But I have changed my opinion.

In projects with lots of units (roughly 27.000 in my job project) 
they are actually useful to structure the code.

> - do you want to add new features to the language? Then why not "fix"
> the WITH statement by adding something like [WITH someobject AS obj
> DO], so we can use WITH without the problems we all know;

Actually, it has been implemented.

https://gitlab.com/freepascal.org/fpc/source/-/merge_requests/860

It needs some attention, but basically it is ready.

> - how about allowing the same AS in unit declarations so we can do
> something like [unit MyUnitWithABigName AS MyUnit] and then use
> [MyUnit.TSomeClass] — this can already be done with MACROS, so it
> would be simple to implement in the language, right?

Basically, more syntactic sugar ?

You can do this today.

uses MyUnitWithABigName;

Type
   TSomeClass = MyUnitWithABigName.TSomeClass;

> Notice that all these new features would NOT break the "philosophy of
> the language," unlike what has been added over the years.

As most people on the lists know, my concern for the "philosophy of
the language" is big. I make no secret of it.

But Delphi compatibility is a must-have. If there are things in Delphi we
don't like, we can implement it, but forbid the use in the FPC code base.
Such as inline variables - I agree this has no place in well-written pascal
code.

Michael.

_______________________________________________
fpc-pascal maillist  -  [email protected]
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.