Recent

Author Topic: Contemporary Pascal Discussion  (Read 12689 times)

ASBzone

  • Hero Member
  • *****
  • Posts: 678
  • Automation leads to relaxation...
    • Free Console Utilities for Windows (and a few for Linux) from BrainWaveCC
Re: Contemporary Pascal Discussion
« Reply #45 on: April 14, 2021, 06:57:42 pm »
There appears to be a significant effort to bash Pascal in C/C++/C# circles.

And there's an unacceptable amount of C denigration (can I use that word these days?) in the Pascal community.

"We're not having that in the compiler, it's too C-like".

MarkMLl

But is that really C denigration?

Quite a few of the people who program in ObjectPascal here also program in C or C++.  There are not opposed to C and the role it plays, but to making Lazarus/FPC look more like C, when its goal and objectives are different.

That's not the same as constantly bashing C/C++ as a language.
-ASB: https://www.BrainWaveCC.com/

Lazarus v2.2.7-ada7a90186 / FPC v3.2.3-706-gaadb53e72c
(Windows 64-bit install w/Win32 and Linux/Arm cross-compiles via FpcUpDeluxe on both instances)

My Systems: Windows 10/11 Pro x64 (Current)

PascalDragon

  • Hero Member
  • *****
  • Posts: 5446
  • Compiler Developer
Re: Contemporary Pascal Discussion
« Reply #46 on: April 15, 2021, 09:18:26 am »
Quite a few of the people who program in ObjectPascal here also program in C or C++.  There are not opposed to C and the role it plays, but to making Lazarus/FPC look more like C, when its goal and objectives are different.

Correct. I actively use C++ at work to earn my living.

Blade

  • Full Member
  • ***
  • Posts: 177
Re: Contemporary Pascal Discussion
« Reply #47 on: April 15, 2021, 08:49:10 pm »
But is that really C denigration?

Quite a few of the people who program in ObjectPascal here also program in C or C++.  There are not opposed to C and the role it plays, but to making Lazarus/FPC look more like C, when its goal and objectives are different.

That's not the same as constantly bashing C/C++ as a language.

Agree.  Because C/C++/C# has something, doesn't mean that it fits the design and usage of Object Pascal.  And there could already be a different way that Object Pascal does it to accomplish the same/similar goals that a beginner or user of another language is not aware of.

Seenkao

  • Hero Member
  • *****
  • Posts: 546
    • New ZenGL.
Re: Contemporary Pascal Discussion
« Reply #48 on: April 16, 2021, 01:14:30 am »
Pascal does not make it in the top 50 list, and are behind languages like Puppy, Logos or Elixir, which I have never even heard of.
Я даже не смотрю эти рейтинги. Они что-то поменяют для меня? Для тех кто пользуется паскалем?
google translate: I don't even look at these ratings. Will they change something for me? For those who use pascal?

As far as dissuading people from using Pascal, I will have to disagree.  There appears to be a significant effort to bash Pascal in C/C++/C# circles.  It is something embedded into their culture and has roots back into numerous Pascal VS C published papers in the early 1980s. Arguably, Pascal was perceived as a threat or unwanted competition, and some of those dots connect back to AT&T (to include Bell Labs), where they had specific commercial interests and agendas.
Да, сейчас паскаль "затаптывают" по всем фронтам. Там даже Delphi XE - ни чего сделать не может. Происходит очень сильное давление в сетях/соцсетях и других источниках информации - указывая, что Паскаль устарел и ни где не используется.
google translate: Yes, now Pascal is being "trampled" on all fronts. Delphi XE - and that is not visible. There is a very strong pressure on networks / social networks and other sources of information - by all means showing that Pascal is outdated and not used anywhere.

Warfley, я думаю вам не надо всё оценивать по общим статистикам. Сообщество Паскаля развивается. Люди об этом знают, и в наших силах чтоб об этом узнало больше людей!  ;)
google translate: I think you don't need to judge everything by general statistics. Pascal's community is evolving. People know about it, and it is in our power to make more people know about it! ;)

Quite a few of the people who program in ObjectPascal here also program in C or C++.  There are not opposed to C and the role it plays, but to making Lazarus/FPC look more like C, when its goal and objectives are different.

That's not the same as constantly bashing C/C++ as a language.
И... как бы я не хотел не изучать C/C++ похоже мне тоже придётся его использовать...
google translate: And ... as much as I would not like not to learn C/C ++, it looks like I will have to use it too ...
Rus: Стремлюсь к созданию минимальных и достаточно быстрых приложений.

Eng: I strive to create applications that are minimal and reasonably fast.
Working on ZenGL

Warfley

  • Hero Member
  • *****
  • Posts: 1499
Re: Contemporary Pascal Discussion
« Reply #49 on: April 16, 2021, 06:47:14 am »
Я даже не смотрю эти рейтинги. Они что-то поменяют для меня? Для тех кто пользуется паскалем?
google translate: I don't even look at these ratings. Will they change something for me? For those who use pascal?

...

Warfley, я думаю вам не надо всё оценивать по общим статистикам. Сообщество Паскаля развивается. Люди об этом знают, и в наших силах чтоб об этом узнало больше людей!  ;)
google translate: I think you don't need to judge everything by general statistics. Pascal's community is evolving. People know about it, and it is in our power to make more people know about it! ;)

Well, when I start a new project, the question which language and environment to use is always one of the first questions I ask myself, and as such I need to compare the languages on, at least mostly, objective measures, and such statistics can be very useful there.

Let me give you three examples for projects where the popularity matters. Let's consider the following, a chat using state of the art encryption techniques. So as a developer I can't be knowledgable on everything, so I rely on the works of others in form of libraries. This is especially true for crypto. There are so many forms of different attack techniques, and if your application is not hardened against them, you could simply not use crypto at all. So crypto libraries are a key, they should be well tested and maintained. So what are the options for doing crypto with Pascal (FPC+Lazarus in particular), well there is only one "big" crypto library for Pascal, DCPCrypt. It is/was maintained by a single guy (according to commit history) and the last updates were commited in 2014, which where only formating and cvs specific updates. The last real code updates came 2009, 12 years ago. It is also had only 61 downloads last week.
I mean I love pascal, but I would never use a library for security critical issues that hasn't been updated in more than a decade. There is no such thing as bug free software, and if a software that hasn't had any bugs fixed for a long time, this either means a lack of testing, or a lack of development effort or both.
So looking around other languages, we see that for python there is the big library pycryptodome, which is continuation of pycrypto, which also exists at least since 2002, and still gets bugs reported and fixed to this day (the last major version was released in feb). So if I am going to make something using cryptography, I would pretty much always choose python over pascal.

Besides technical issues with a community that small, there are also accessibility issues, especially if you do a lot of open source development. Let's consider the following, you write an application for a specific topic, something you are really into, like a tracker for sport games or something like that, basically for some kind of community (doesn't even need to be large, you might want to simply write a gag program for your friends or colleagues). You want to share that program with the community, so you make it open source. If your program is well liked it might get picked up by others from the community and continue with the project or build new things around your core, thats the beauty of open source. The thing is to make that happen your code must be accessible to others.
I like pascal, and if I thought it is a dead language, I wouldn't waste my time using it. I write and publish libraries for fpc and lazarus because I think it is worth while to extend the infrastructure available. The thing is, if I write code I want to share with others, people I know are not interested or able (e.g. due to a lack of time) to learn pascal, I bascially already burried my code before writing it, simply by choosing an unpopular language.
Of course what is "popular" depends on the community in question, if you write a simple gag program for your colleagues at an office where you only use C++, this might be the popular choice, in the same context that C++ code wouldn't be the best choice for something targetet to the users of this forum. The thing is, if you are targeting an open source audience, if you want your code to thrive, popularity is key.

Lastly there is also the issue of response time. If you find a bug withing a largly popular project like the gcc or .Net and you report it, it is often fixed within days, and shipped with hotfixes immediately (if it is a severe bug that is). I know I've written about this now pretty often, but it fits here well. I came into the situation (more then once), that I discovered a breaking bug in the FPC, breaking in the sense that there was no working around this in my project, without starting from the beginning redesigning the whole structure of the program. The fpc has a small development team, which has to ration their time, and can't fix every bug. So this is not to blame anyone, I can completely understand this, but as a result I had to abandon whole projects and throw weeks of work away. I mean these were fun projects, so it's not that big a deal, but this is something that literally has never happend to me with any of the popular languages, because there is much more testing and manpower behind it.
It should be noted that FPC does not have any hotfixes or so, bugfixes are always shipped with the next version, meaning even if your bug is fixed, unless you want to work on unstable/development code, or apply patches yourself, you probably won't see that fix for months.

Popularity, or better lack there of, can have a lot of impact on the whole software development process, it might make a software unfeasable due to lack of libraries and support infrastructure even before the a single line of code was already written, it might render your code dead on arrival as no one is willing or able to engage with that code, or it can mean that all of your efforts come to a halt because you stumble upon an issue you can't solve on your own, and the support community is simply not large enough to handle each issue, and your problem isn't top of the priority list.
And again, I love pascal, but when I decide to make a new project and consider all the programming languages out there, popularity is a factor to consider. Of course not the only one, and by far not the most important one, but it can't be dismissed
« Last Edit: April 16, 2021, 06:52:27 am by Warfley »

Blade

  • Full Member
  • ***
  • Posts: 177
Re: Contemporary Pascal Discussion
« Reply #50 on: April 16, 2021, 07:40:13 am »
Most people using FPC and Lazarus came from Delphi, and Delphi is only relevant in the corporate world. There are some interesting projects like this or this where all public github repositories are searched through and track the popularity of languages. Pascal does not make it in the top 50 list, and are behind languages like Puppy, Logos or Elixir, which I have never even heard of.

On this particular point, I think Pascal is simply hard to track in comparison to other languages:

1) First problem is the name. Pascal, Object Pascal, Delphi, PascalABC, Oxygene, FreePascal, DWScript, Modern Pascal, etc...

If the proper search terms are not put in, no telling what you will get.  People use the modern dialects of Pascal, which may have various different names and labels.

2) Many people don't seem to consider extensions of Pascal, as Pascal.

It's weird, but if it isn't ISO 1983 or ISO 1990 Pascal, then it isn't "real Pascal" to various critics.  But their favorite pet language might not have ever been ISO standardized or not any time recently.  Then when you talk about Object Pascal, it starts to get really weird.  Even though Embarcadero clearly states on their website for a number of Delphi product pages that it is Object Pascal, there are those that consider it a different language or don't even associate it with Pascal.

I partially think this kind of refusal to accept the modern dialects of Pascal, as "real" Pascal, is an attempt in some circles to pigeonhole and glue the language to the negative criticisms of the early 1980s in many of those C VS Pascal reports.  To be blind that Pascal evolved into Object Pascal and solved many old issues, makes it a stronger or too strong of a competitor to handle.

https://wiki.freepascal.org/Why_Pascal_is_Not_My_Favorite_Programming_Language

https://news.ycombinator.com/item?id=19221143

https://news.ycombinator.com/item?id=22222117

Sample of other 1980s era C VS Pascal papers, besides Brian Kernighan (there are many)

https://link.springer.com/content/pdf/10.1007/3-540-09745-7_3.pdf
(Pascal versus C : A subjective comparison)

https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.90.5244&rep=rep1&type=pdf
(Comparison of the Programming Languages C and PASCAL )
Note- Alan Feuer and Narain Gehani are from AT&T Bell Labs (birthplace of C/C++)

3) The way in which people use, get answers, and get information about a programming language is different.

In Pascal circles, many people would get answers from say the Free Pascal forum, Delphi Basics, Delphi PRAXis, etc...  This includes various forums specific to the flavor of Object Pascal IDE that they are using, like for instance PascalABC or Oxygene.  Where with other programming languages, their people might tend to swarm on Stack Overflow.  This is partly language culture.  After some time, it can become a preferred way for a majority of users to get answers a particular way.

4) Other programming languages can be more confusing or difficult to use, so their users need more help.

Along those lines, it can be that up to a certain level, Pascal is just more easily understood.  We also have to add to this, that Pascal was designed to be easier to learn and that a lot of people were exposed to it at school.  On the other hand, other programming languages can be way more difficult to grasp, so their users get "stuck easier", and have an overload of questions that need answers.

5) Object Pascal, the secret weapon.

Lastly, people can be quietly using modern flavors of Pascal for a competitive edge.  It's working for them personally or their company, so don't have a need to broadcast.  However, though I can understand this point of view, I do think it's time for Object Pascal to come out into the light and get its due credit.  This would be helpful to a new generation of programmers, in terms of options.
« Last Edit: April 16, 2021, 08:37:29 am by Blade »

440bx

  • Hero Member
  • *****
  • Posts: 3944
Re: Contemporary Pascal Discussion
« Reply #51 on: April 16, 2021, 07:53:19 am »
It's weird, but if it isn't ISO 1983 or ISO 1990 Pascal, then it isn't "real Pascal" to various critics.  Then when you talk about Object Pascal, it starts to get really weird. 
Considering Object Pascal as not being "real Pascal" is reasonable.  The current incarnation(s) of Object Pascal would have never come into existence if Pascal had evolved in a rational and logical manner.  The current incarnations have design blunders that make anyone with some passing familiarity in language design jaw drop. 

Borland and its descendants gleefully bastardized the Pascal language for money.  It worked for a while but, the cow is running out of milk.

Fortunately, the essence of the language is not completely gone (yet.)
(FPC v3.0.4 and Lazarus 1.8.2) or (FPC v3.2.2 and Lazarus v3.2) on Windows 7 SP1 64bit.

Seenkao

  • Hero Member
  • *****
  • Posts: 546
    • New ZenGL.
Re: Contemporary Pascal Discussion
« Reply #52 on: April 16, 2021, 07:54:37 am »
I love pascal
Давайте будем честны! Вы его не любите! Для того, кто любит - нет преград!  :)

Практически всё что вы мне ответили это: просто высосанная из пальца проблема. Всё и всегда можно сделать! Есть желание - делаем! Нет желания - ищем проблему на стороне.

Если нужны новые библиотеки, берём внешние и используем их для своего усмотрения. Нет возможности пользоваться внешней библиотекой? Конвертируем код, исправляем ошибки - пользуемся.

Хотим поделиться кодом? Да пожалуйста! На любом языке программирования! (Я не изучал C/C++ но код я читаю!) Программист, который достаточно находится в программировании, должен уметь читать чужой код! Иначе, зачем такой программист нужен?  :)

Да, поддержка языка ведётся малой командой. В одном случае это хорошо, в другом плохо. Чем меньше команда, тем более слажено (зачастую) они работают. Каждый занимается своим делом. А сообщество Паскаля помогает в поиске существующих проблем. Некоторые из них надо решать немедленно, потому что они достаточно критичны, но многие могут подождать.

Разработчикам FPC - надо выразить огромную благодарность за то, что данный паскаль существует! Мало того, что существует, он компилирует код (именно компилирует!), а не как множество других - интерпретирует.

Боюсь с вами диалог надо заканчивать, вам не интересен паскаль, вы здесь пытаетесь внести раскол.
Всего доброго!

google translate: Let's be honest! You don't love him! For the one who loves - there are no barriers! :)

Almost all that you answered me is: just a problem sucked from the finger. Everything can always be done! There is a desire - we do it! There is no desire - we are looking for a problem on the side.

If we need new libraries, we take external ones and use them at our discretion. Can't use an external library? We convert the code, fix errors - use it.

Want to share your code? Yes please! In any programming language! (I haven't studied C / C ++, but I do read code!) A programmer who is sufficiently into programming should be able to read someone else's code! Otherwise, why is such a programmer needed? :)

Yes, the language is supported by a small team. In one case it is good, in the other it is bad. The smaller the team, the more well-coordinated (often) they work. Everyone does their own thing. And Pascal's community helps in finding existing problems. Some of them need to be addressed immediately because they are critical enough, but many can wait.

To the FPC developers - a huge thank you that this pascal exists! Not only does it exist, it compiles the code (it compiles it!), And not like many others - it interprets it.

I'm afraid we need to end the dialogue with you, you are not interested in Pascal, you are trying to create a split here.
All the best!
Rus: Стремлюсь к созданию минимальных и достаточно быстрых приложений.

Eng: I strive to create applications that are minimal and reasonably fast.
Working on ZenGL

440bx

  • Hero Member
  • *****
  • Posts: 3944
Re: Contemporary Pascal Discussion
« Reply #53 on: April 16, 2021, 08:02:55 am »
A programmer who is sufficiently into programming should be able to read someone else's code! Otherwise, why is such a programmer needed? :)
The problem isn't ability.  The "problem" is that a programmer is entitled to protect his mental health by not reading code that is obviously detrimental to it.  The U.S Founding Fathers anticipated the appearance of lousy programs by including the 8th Amendment in the Bill of Rights: "no cruel and unusual punishment", is to be tolerated in any form (source or object.)

(FPC v3.0.4 and Lazarus 1.8.2) or (FPC v3.2.2 and Lazarus v3.2) on Windows 7 SP1 64bit.

PierceNg

  • Sr. Member
  • ****
  • Posts: 369
    • SamadhiWeb
Re: Contemporary Pascal Discussion
« Reply #54 on: April 16, 2021, 08:39:25 am »
1) First problem is the name. Pascal, Object Pascal, Delphi, PascalABC, Oxygene, FreePascal, DWScript, Modern Pascal, etc...

C and C++ each has many implementations that a programmer may choose. Basic? Too many to count. Python 2 and Python 3 have been in use simultaneously for years. Not to mention Common Lisp, Scheme, Smalltalk etc. especially with the modern penchant to transpile, initially to Java, now to Javascript. Maybe only Perl 5, in between killing off Perl 4 and waiting for Perl 6, was sole king of one particular programming language ecosystem.

Name is only a problem for people who use single-implementation languages exclusively.

Seenkao

  • Hero Member
  • *****
  • Posts: 546
    • New ZenGL.
Re: Contemporary Pascal Discussion
« Reply #55 on: April 16, 2021, 08:51:47 am »
]The problem isn't ability.  The "problem" is that a programmer is entitled to protect his mental health by not reading code that is obviously detrimental to it.  The U.S Founding Fathers anticipated the appearance of lousy programs by including the 8th Amendment in the Bill of Rights: "no cruel and unusual punishment", is to be tolerated in any form (source or object.)
"Хорошие времена порождают плохих программистов"...
Ваш ответ очень хорошо к ассемблеру применим. Не хочешь изучать - не изучай. И наплевать, что он, в большинстве случаев, нужен.  :)
google translate: "Good times breed bad programmers" ...
Your answer applies very well to assembler. If you don’t want to learn assembler, don’t. And do not care that, in most cases, he is needed. :)
Rus: Стремлюсь к созданию минимальных и достаточно быстрых приложений.

Eng: I strive to create applications that are minimal and reasonably fast.
Working on ZenGL

MarkMLl

  • Hero Member
  • *****
  • Posts: 6676
Re: Contemporary Pascal Discussion
« Reply #56 on: April 16, 2021, 09:13:18 am »
A programmer who is sufficiently into programming should be able to read someone else's code!

(~R∊R∘.×R)/R←1↓ιR

Unless you are familiar not only with the language but with the idioms that experienced users of the language use to solve problems you have no chance of maintaining programs written in it.

MarkMLl
MT+86 & Turbo Pascal v1 on CCP/M-86, multitasking with LAN & graphics in 128Kb.
Pet hate: people who boast about the size and sophistication of their computer.
GitHub repositories: https://github.com/MarkMLl?tab=repositories

Blade

  • Full Member
  • ***
  • Posts: 177
Re: Contemporary Pascal Discussion
« Reply #57 on: April 16, 2021, 09:21:38 am »
1) First problem is the name. Pascal, Object Pascal, Delphi, PascalABC, Oxygene, FreePascal, DWScript, Modern Pascal, etc...

C and C++ each has many implementations that a programmer may choose. Basic? Too many to count. Python 2 and Python 3 have been in use simultaneously for years. Not to mention Common Lisp, Scheme, Smalltalk etc. especially with the modern penchant to transpile, initially to Java, now to Javascript. Maybe only Perl 5, in between killing off Perl 4 and waiting for Perl 6, was sole king of one particular programming language ecosystem.

Name is only a problem for people who use single-implementation languages exclusively.

In other languages, usually the IDEs and compilers are classified under the same umbrella and belonging to that language.  With Pascal, many perceive the different IDEs and compilers are belonging to different languages.  Antagonists, place Delphi or Oxygene (for example) as their own languages that have no relationship to Object Pascal or Pascal (despite their owners and websites saying they are Object Pascal). 

This was the problem with TIOBE.  They changed the classification of Delphi to its own language, so that both Object Pascal and Delphi rankings could drop.  Oxygene and other dialects of Object Pascal were not counted.

Then there is the argument of Object Pascal and Pascal.  As Object Pascal is an extension of Pascal, does that make it a separate language or should it be considered part of the same?  It can be argued that Object Pascal is the modern version of Pascal.  Keep in mind to, that OOP draft documents (1993) had been made by technical committees for Pascal to be officially added.  OOP being added, would not make Pascal something other.

If you count Pascal/Object Pascal/Delphi together, their rankings would be much higher and probably would surprise a lot of people.  In regards to TIOBE, probably would be in the top 10.  As it is, Object Pascal/Delphi, without some of its variants and Pascal are ranked at #12.  However, with the classification of Pascal ranked by itself and much lower, it's fuel to dump on the language and claim it's dead.  Interestingly, nobody calls the old Pascal as Classic Pascal to clarify it's time period.  Thus adding to the confusion, as to what is or is not Pascal and its true ranking. 

Take the example of Python 1, Python 2, and Python 3.  Despite some very significant changes, such as Python 3 being not completely backward compatible with Python 2, they are still considered Python.  Why can't that be the case in regards to Pascal and Object Pascal?  Pascal is still significantly compatible with its extension, Object Pascal.  It's interesting that a compatible extension is not considered part of the language, where a somewhat incompatible revision (Python 2 vs Python 3) is considered the same language.
« Last Edit: April 16, 2021, 09:36:16 am by Blade »

marcov

  • Administrator
  • Hero Member
  • *
  • Posts: 11382
  • FPC developer.
Re: Contemporary Pascal Discussion
« Reply #58 on: April 16, 2021, 09:25:17 am »
Lastly there is also the issue of response time. If you find a bug withing a largly popular project like the gcc or .Net and you report it, it is often fixed within days, and shipped with hotfixes immediately (if it is a severe bug that is).

So does smartlinking finally work with GCC then? FPC supported smartlinking since the last millennium, even a time with the same binutils that gcc uses.

Which compiler first worked for Win64 ?

MarkMLl

  • Hero Member
  • *****
  • Posts: 6676
Re: Contemporary Pascal Discussion
« Reply #59 on: April 16, 2021, 09:35:09 am »
So does smartlinking finally work with GCC then? FPC supported smartlinking since the last millennium, even a time with the same binutils that gcc uses.

I believe so, but I don't know what the granularity is.

MarkMLl
MT+86 & Turbo Pascal v1 on CCP/M-86, multitasking with LAN & graphics in 128Kb.
Pet hate: people who boast about the size and sophistication of their computer.
GitHub repositories: https://github.com/MarkMLl?tab=repositories

 

TinyPortal © 2005-2018