[fpc-pascal] Fwd: What to do to get new users
Nikolay Nikolov
nickysn at gmail.com
Fri Oct 18 06:37:59 CEST 2024
On 10/17/24 10:01 PM, Santi via fpc-pascal wrote:
> El 16/10/2024 a las 05:12, Joao Paulo Schwarz Schuler via fpc-pascal
> escribió:
>> Some half baked ideas:
>> * month after month, the percentage of code coded by AI grows and
>> human made shrinks.
>> * could Pascal be the ideal language coded (or preferred) by AI?
>>
>> Given that Pascal is strongly typed, easy to read and debug, avoids
>> many types of bugs, could we make AI to prefer pascal?
>
> Pascal opened the path with structured programming and hard typed
> languages.
>
> But most languages nowadays are hard typed: Java, rust, go, c#,
> swift... c is here to stay, but modern language got rid of c-like
> types byte=char=bool=everything. In fact modern development uses tools
> to control types in c and c++.
>
> I'm sorry to say than other language are better, handier without
> sacrificing security and readability.
On the contrary, I've used some of the so called "modern" languages and
found them to be inferior to Pascal in some regards. Especially, if you
include things like runtime performance, compilation speed, IDE
experience, ease of writing code, etc. I've used C, C++, Java, C#, Nim,
Rust, Python, JavaScript. They all suck. C# and Nim come close to being
good, but still have drawbacks.
C# is slow and bloated and I don't like the fact that it forces you to
use classes always, like Java. On the other hand, C# has an excellent
IDE experience, but only for Windows.
Nim is nice from a language design point of view, however it has slow
compilation speeds (compiler generates C code), bad IDE experience (VS
Code plugin), bad debugger experience (compiler generates C code, debug
info is generated for the C code, not the Nim code), not a lot of
libraries (and they lack stability), not a very stable language (new
versions break compatibility, especially major versions), not a very
advanced OOP support (supports inheritance and virtual methods, but e.g.
no interfaces), the module system is also inferior - no interface and
implementation parts, no way to tell if something is a unit, or a
program, etc. The powerful macro system is a pro, but also a con,
because it's so easily abused by bad programmers.
The other languages are not even worth discussing, IMO. I know Rust has
a lot of fans. I've been writing Rust professionally for almost a year
now, and still find it to be one of the most unpleasant languages to
write code in. The borrow checker is certainly not something I want to
see in other languages. Anyhow, it's a feature that is very unlikely to
creep into Pascal, IMO. If I have to do manual memory management, I
prefer Object Pascal's explicit way, instead of languages that hide it
for you (by using the RAII idiom or the borrow checker), and then still
expect from the programmer to fix things, when the automatics fail.
> A few points:
>
> * Concurrency as part of the syntax of the language
>
What do you mean? Do you mean stuff like OpenMP or is it something else?
>
> * Declaring a var when you need it
>
Not a huge fan, but AFAIK latest Delphi has it, so we probably need to
support it in FPC. Anyhow, it's cosmetic at best. It's not some "quality
of life" type of issues, like the slow C++ compilation times, or the
encouragement of buffer overflows. When I need to use a local var
declaration, I usually consider that my procedure or function has become
too complex and split it into nested procedures. Also, Lazarus declares
the variable automatically for you, when you press Ctrl+Shift+C, so it's
even less of an issue. You just write:
i := 1;
Or:
for i := 1 to 10 do
You then move the cursor on top of "i" and press Ctrl+Shift+C and it
declares a "i: integer" automatically in the local var block. And yes,
it does automatic type inference.
> * Tuples, so easy to return two values
>
Nice in theory, but I've used tuples in other languages and always hit
some roadblock. For example in Rust, I've had to switch from using
tuples to using structs several times, because of some language quirks,
that doesn't handle tuples somewhere. Anyhow, the lack of tuples is only
cosmetic, it's not a serious "quality of life" issue. It's easy to
declare a record type with two elements, or an array.
>
> * Some functional programing
>
Not a huge fan of functional programming either (out of the big three -
procedural programming, object oriented programming, functional
programming, I consider functional to be the least useful - worst in
performance, does not map well to how the CPU works, is elegant only for
a very restricted set of tasks), however FP features are coming to FPC
as well, for example FPC trunk supports anonymous functions.
>
> And all those languages are backed by big corporations.
>
> Lazarus is for Delphi nostalgic guys, like me. I'm sure 90% of Lazarus
> users have worked professionally with Delphi before.
>
Not me. I really think Free Pascal is an improvement over many "modern"
languages. When I say some of the issues are not "quality of life"
issues for me, means that I would never trade things like 10 times
faster compilation speed or the runtime speed for something like tuples
or having the ability to declare vars everywhere.
Nikolay
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20241018/5479cb1b/attachment-0001.htm>
More information about the fpc-pascal
mailing list