Recent

Author Topic: Are We Dead Yet?  (Read 19581 times)

PascalDragon

  • Hero Member
  • *****
  • Posts: 5444
  • Compiler Developer
Re: Are We Dead Yet?
« Reply #90 on: May 27, 2023, 06:21:21 pm »
no doc comments

What exactly do you mean here? Cause Lazarus supports both comments above an identifier (or directly behind it on the same line) as well as those found in an fpdoc xml file.

But as already said, where Lazarus shines is cross platform GUI support. The alternatives (QTCreator, .Net, Java) are also very powerful but are either much more complicated (QT, Java) or not cross platform (.Net).

Why do you say that .NET is not cross platform when not only Mono exists, but also Microsoft itself nowadays supports a cross platform .NET with .NET Core which is also supposed to be used as the main .NET?

marcov

  • Administrator
  • Hero Member
  • *
  • Posts: 11351
  • FPC developer.
Re: Are We Dead Yet?
« Reply #91 on: May 27, 2023, 06:38:23 pm »
Why do you say that .NET is not cross platform when not only Mono exists, but also Microsoft itself nowadays supports a cross platform .NET with .NET Core which is also supposed to be used as the main .NET?

If you are that liberal, Pascal has been .NET for a long time, as Component Pascal was one of the .NET release languages :-)

Handoko

  • Hero Member
  • *****
  • Posts: 5122
  • My goal: build my own game engine using Lazarus
Re: Are We Dead Yet?
« Reply #92 on: May 27, 2023, 06:38:55 pm »
I don't think that many people who want to make games would start with basic.

Professionals surely will choose Unity over FreeBasic. But did you not see I mentioned several times 'kids' on my previous post?

I do not use Unity, I can't say much about it but I do not think Unity is suitable for kids but of course any kids is allowed to try it.  Here I found a comment from a Unity user:

"Unity might be a hard start because it's not just programming, it's a whole engine / environment. I usually tutor with game dev ..."
Source: https://forum.unity.com/threads/unity-for-kids.334108/

FreeBasic is not hard to start. You can even write a fully working game in a single source code file.

Freebasic is a neat language, easy to use and test out things.
It could spoil a beginner though, if care is not taken.

I knew that already. That's why I said "Each of them have their own features, advantages and disadvantages."
« Last Edit: May 27, 2023, 06:42:30 pm by Handoko »

marcov

  • Administrator
  • Hero Member
  • *
  • Posts: 11351
  • FPC developer.
Re: Are We Dead Yet?
« Reply #93 on: May 27, 2023, 06:48:16 pm »
I don't think that many people who want to make games would start with basic.

Professionals surely will choose Unity over FreeBasic. But did you not see I mentioned several times 'kids' on my previous post?

FreeBasic game orientation is for 90's shareware games. "kids" nowadays don't even have a suitable reference framework to understand that.  fbgfx is a concept for old timers.

p.s. Note that Free Pascal comes with a graphical tetris.

Warfley

  • Hero Member
  • *****
  • Posts: 1499
Re: Are We Dead Yet?
« Reply #94 on: May 27, 2023, 06:49:23 pm »
What exactly do you mean here? Cause Lazarus supports both comments above an identifier (or directly behind it on the same line) as well as those found in an fpdoc xml file.
From my understanding the comments above the function are just raw plaintext. With doc comments I understand structured information that allows to write information on different parts of the function (like a description for the parameters, return type, exceptions it can raise, etc.) With formatting options (like highlighting or linking of other identifiers to easily jump to).
And most importantly to be used within the IDE (not just to generate documentation), e.g. when you are calling a function it shows you the description of the parameter you are currently filling out

And as far as I know fpdoc is not in source but in separate XML documents, which of course breaks the workflow (as compared to java or C#, where this is directly part of the source and the ides usually support creation and updating during coding).

Why do you say that .NET is not cross platform when not only Mono exists, but also Microsoft itself nowadays supports a cross platform .NET with .NET Core which is also supposed to be used as the main .NET?
I was talking about the ability for cross platform GUI development. And this is out of scope for Mono (which can use WinForms but only on windows) and .Net Core, (which has no GUI components by default at all). There you must resort to external tooling like either use GTK or Xamarin or some other external framework, which then is already more advanced.
« Last Edit: May 27, 2023, 07:06:27 pm by Warfley »

Curt Carpenter

  • Sr. Member
  • ****
  • Posts: 396
Re: Are We Dead Yet?
« Reply #95 on: May 27, 2023, 08:26:46 pm »
If the goal is to motivate a young person's interest in computers and programming, keeping it simple and exciting has to be the first priority.  Games are probably a good choice.  Has anyone written a reasonably simple, reasonably attractive game for kids in FPC/Lazarus that really emphasizes motivation over sophistication?  Perhaps a basic game that the young student can modify as a way of getting into the programmer's tools?

Maybe modern Basics are different, but I'd say the old flavors are a terrible way to introduce anyone to programming.  Better to avoid bad habits and develop some discipline from the start -- and Pascal was designed to do that IMHO.

Handoko

  • Hero Member
  • *****
  • Posts: 5122
  • My goal: build my own game engine using Lazarus
Re: Are We Dead Yet?
« Reply #96 on: May 27, 2023, 09:39:04 pm »
Both Pascal and (Free) Basic have game development communities. Not very active but FreeBasic game dev forum is much alive. The Pascal Game Development forum, once you've visited it you won't think to revisit it again.

The games posted on FreeBasic forum seem outdated. That's understandable, because they were developed mostly by a single person.

I often hear my friends said their kids downloaded some game builders and study how to develop games. It will be good if Lazarus can be used to develop simple games easily, (personal opinion, I believe) it will attract many new kids, teenagers and young persons to try Lazarus.

I examined why Pascal is now being abandoned for game programming. But FreeBasic still has its hobbyists using it for building simple games.

If a kid starts using FreeBasic. He may start with drawing some shapes, then animate them. Later after having more knowledge in programming, he adds various of objects, collision detection and then he manages to build a game.

Now, this may happen if he starts with Lazarus. Drawing some shapes and animate them. After Pascal skill leveling up, he adds more objects and collision detection. Then he got flickering and performance issues. He installs a graphics library and then realize it's no longer fun because learning a framework is no easier than learning Pascal.

Lazarus can use various of graphics/game frameworks. I tried some of them. Impressive! But they really aren't beginner friendly.

I am not saying Lazarus or BASIC is good for game development. I just want to answer to this question:

"How is lazarus difficult for beginners besides sometimes the installation?"
« Last Edit: May 27, 2023, 10:01:29 pm by Handoko »

marcos-ebm

  • New Member
  • *
  • Posts: 49
Re: Are We Dead Yet?
« Reply #97 on: May 28, 2023, 03:32:40 am »
(I'm using the translator)

Lazarus is already good the way he is .....
Now is it time to focus on Lazarus for Mobile (Android, Iphone)?
I'm not talking about LAMW, as it uses its own components and this is outside the "Write once, compile anywhere"
Lazarus 3.0 / LAMW 0.8.6.4 - Gradle 8.5 - Jdk 21 - Ndk 21e - Windows 11

Seenkao

  • Hero Member
  • *****
  • Posts: 545
    • New ZenGL.
Re: Are We Dead Yet?
« Reply #98 on: May 28, 2023, 05:41:42 am »
For Lazarus, you have to use OpenGL or other third party frameworks, and learning that is not fun.

Because of lack of OpenGL tutorials written for Pascal, I installed FreeBasic just for using it to learn OpenGL, doing it this way is much easier.
  Я уже много где написал, что Lazarus не очень хорошо подходит для игр. И не по той причине, что есть проблемы с выводом быстрой графики, а по той причине, что создавать какую-то среду графическую в Lazarus достаточно сложно. Яркий пример GLScene. Для большинства он так же остаётся неудобен и непонятен.

  Не надо писать про популярные игровые движки: Unity, Godot, Unreal и другие. Они так же не удобны и их так же надо изучать.

  Проблема не в том, что нет каких-то графических движков, для написания игры, а в том, что надо вникать в эти движки и всё равно изучать их. А вот примеров работы с ними очень мало!!! И это касается Паскаля!

  Возьмём тот же ZenGL. Во времена своей популярности на нём было написано немало игр. Он понравился людям в то время, потому что был достаточно прост. Почему? Да потому что изучать OpenGL там не нужно, просто берёшь и делаешь. Средства для разработки простых программ в ZenGL предоставлены. Окно создаётся по заданным пользователем параметрам, средства вывода спрайта есть. И многие другие функции предоставляет ZenGL (читаем по ссылке). Есть демки, где показано как пользоваться основной частью движка.
  Я взялся доделывать ZenGL, упростил многие моменты и... улучшая ZenGL, я сделал его сложнее... И ни куда от этого не уйти.
  Я добавил нативную клавиатуру для Android. Но уроков по тому как ей пользоваться не предоставил (почти). Я сделал нативное поле ввода. Но уроков почти ни каких нет, кроме самих демок.

  Что же получается? Получается то, что возможности создавать игры есть, но как их создавать примеров почти нет. Если вы хотите чтоб люди создавали игры на FPC/Lazarus, вы должны приложить усилия, чтоб предоставить новичкам информацию о том как создавать игры. Примеры простых игр. И чтоб пользователь их мог быстро найти.
  Зайдите на сайт Lazarus или FPC. Есть там хоть одно упоминание про создание игр? Можно сказать что нет ни чего вообще. А если пользователь хочет сразу посмотреть, может он сделать игры и как? Он же даже не увидит ни чего этого. Где там хоть одна ссылка, на созданную игру на Lazarus? Да, я могу найти на русском сайты, где описывается как сделать игру, могу найти сайты,на английском языке. Но я не могу этого увидеть сайтах Lazarus и FPC!!!
  Нужны уроки! Нужна информация! Но нет ни чего. А вот по многим популярным движкам, как раз информации много...
  Не говорите мне про Wiki. Ни один новичок не полезет на Wiki за информацией. Ни один новичок не полезет на форум за информацией. Если эти люди здесь, значит они уже что-то знают и ознакомились с самыми основами.

  Задайте себе вопрос, что вы сделали для развития FPC/Lazarus? Что вы сделали для развития игрового направления в FPC/Lazarus?

  Если есть необходимость, я могу сделать самые простые демки на ZenGL и написать по ним уроки, для того чтоб было видно как это можно сделать достаточно просто. Зная только Паскаль и не зная OpenGL. Только будет эта информация на Русском языке. Надо будет перевести на другие языки и предоставить пользователям-новичкам эту информацию.

  Всем успехов!

----------------------------------------------------------------------------
Google translate:
  I have already written in many places that Lazarus is not very well suited for games. And not for the reason that there are problems with the output of fast graphics, but for the reason that creating some kind of graphical environment in Lazarus is quite difficult. A striking example is GLScene. For most, it also remains inconvenient and incomprehensible.

   No need to write about popular game engines: Unity, Godot, Unreal and others. They are also not convenient and they also need to be studied.

   The problem is not that there are no graphics engines for writing a game, but that you need to delve into these engines and study them anyway. But there are very few examples of working with them !!! And that goes for Pascal!

   Let's take the same ZenGL. At the time of its popularity, many games were written on it. People liked it at the time because it was quite simple. Why? Yes, because you don’t need to learn OpenGL there, you just take it and do it. Tools for developing simple programs in ZenGL provided. Window is created according to user-specified parameters, sprite output tools There is. And many other functions are provided by ZenGL (read the link). There are demos showing how to use the main part of the engine.
   I undertook to finish ZenGL, simplified many points and... improving ZenGL, I made it more difficult... And there's no getting away from it.
   I added a native keyboard for android. But he did not provide lessons on how to use it (almost). I made a native input field. But there are almost no lessons, except for the demos themselves.

   What happens? It turns out that there are opportunities to create games, but there are almost no examples of how to create them. If you want people to make FPC/Lazarus games, you should make an effort to provide newbies with information on how to make games. Examples of simple games. And so that the user can quickly find them.
   Go to the Lazarus or FPC website. Is there at least one mention of the creation of games? We can say that there is nothing at all. And if the user wants to immediately see, can he make games and how? He won't even see any of this. Where is there at least one link to the created game on Lazarus? Yes, I can find sites in Russian that describe how to make a game, I can find sites in English. But I can't see it on Lazarus and FPC sites!!!
   Need lessons! Need information! But there is nothing. But for many popular engines, there is just a lot of information ...
   Don't tell me about Wiki. Not a single newbie will climb the Wiki for information. Not a single newbie will climb on the forum for information. If these people are here, then they already know something and have become familiar with the very basics.

   Ask yourself what have you done to develop FPC/Lazarus? What have you done to develop the gaming direction in FPC/Lazarus?

   If necessary, I can make the simplest demos on ZenGL and write lessons on them, in order to see how it can be done quite simply. Knowing only Pascal and not knowing OpenGL. Only this information will be in Russian. It will be necessary to translate into other languages and provide new users with this information.

   All success!
Rus: Стремлюсь к созданию минимальных и достаточно быстрых приложений.

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

Handoko

  • Hero Member
  • *****
  • Posts: 5122
  • My goal: build my own game engine using Lazarus
Re: Are We Dead Yet?
« Reply #99 on: May 28, 2023, 06:29:30 am »
Wasn’t there something called castle game engine? I’m surprised that it wasn’t answered in a discussion about games

Castle Game Engine is a respected game framework in Pascal community. It aims for feature richness, not beginner friendliness.

Because we recently talking about how Lazarus difficult for beginners, I'm going to show the beginning steps for a newbie in game programming.

Installation

Here is a tutorial by an experienced Pascal user explaining how to install Castle Game Engine for Lazarus:
https://www.youtube.com/watch?v=rCPEOw8700c

This is how to get FBIde+FreeBasic explained by a teen:
https://www.youtube.com/watch?v=Dj8hOB2k7rc

Doing Basic Drawing


This is a YouTube tutorial showing how to use FreeBasic for drawing basic shapes:
https://www.youtube.com/watch?v=sXhBZW27ujQ

I couldn't find any video tutorial for drawing basic shapes using Castle Game Engine. But I found this discussion explaining to do basic drawing using Castle Game Engine:
https://forum.castle-engine.io/t/newbie-how-to-do-very-basic-drawing-only/568

------------------------------

Obviously Castle Game Engine is not hard. But if I were a 10 years old kid without any programming skill interested to do some graphics for fun, sure I would choose FreeBasic after watching those videos.

I have already written in many places that Lazarus is not very well suited for games. And not for the reason that there are problems with the output of fast graphics, but for the reason that creating some kind of graphical environment in Lazarus is quite difficult.

I agree with you.

I just want to provide the facts why Lazarus/FPC/Pascal is not a best tool for all cases. In this case, a kid want to do some graphics or game on the screen.

Thank you to keeping ZenGL alive. I found ZenGL long ago, it didn't look too complicated and I really wanted to use it seriously. Unfortunately I heard the author were too 'tired', decided to not continue developing it anymore.

Now is it time to focus on Lazarus for Mobile (Android, Iphone)?
I'm not talking about LAMW, as it uses its own components and this is outside the "Write once, compile anywhere"

Welcome to the forum.

Maybe you haven't known Custom Drawn Interface:
https://wiki.lazarus.freepascal.org/Custom_Drawn_Interface

This is a project to build cross platform components than can be used in Android, Linux, Windows, Mac.

I was so excited to know some users managed to build hello word example running on Android. Unfortunately due to the lack of manpower, the project is (temporary) halted and being forgotten.
« Last Edit: May 28, 2023, 06:45:37 am by Handoko »

jmpessoa

  • Hero Member
  • *****
  • Posts: 2296
Re: Are We Dead Yet?
« Reply #100 on: May 28, 2023, 08:30:58 pm »
Quote
I'm not talking about LAMW, as it uses its own components and this is outside the "Write once, compile anywhere"

That is: "Write once, compile anywhere"

not "Write once, run anywhere"   :D :D 8-) O:-)
Lamw: Lazarus Android Module Wizard
https://github.com/jmpessoa/lazandroidmodulewizard

Warfley

  • Hero Member
  • *****
  • Posts: 1499
Re: Are We Dead Yet?
« Reply #101 on: May 30, 2023, 10:28:35 pm »
Maybe I'm going and try to build a proof of concept setup wizzard this weekend, this discussion has sort of fixed me on. Because many of those things shouldn't be hard to do

Well... that was a a bit more than a weekend, and I am far from done, as I initially did not know where I want to go with this. But at least for a base idea I now got something presentable: https://github.com/Warfley/LazSetup

I've experimented with a few different functionalities and things that I think would be useful in other situations. First an updater for Lazarus, and unlike FPCUp, where the versions are hardcoded in the executable, meaning to update to the next version you need a newer version of FPCUp first, here the the newest version number is fetched from Gitlab (tags) and can simply update the Lazarus installation through git. Currently no updating functionality for FPC, but I may add this at some time (rebuilding FPC is always so tedious).
The other main functionality here is to install and uninstall packages, currently only used for the anchordocking and dockedformeditor packages to switch between Docked and Floating mode, but this can easiely be extended for other packages. I am going to defenetly add a Darktheme switch in there (the button already exists), as well as thinking about adding a curated selection of useful packages (such as weblaz, threads, lazreport, etc.). So that a beginner does not have to deal with the Manage Installed Packages dialoge in the beginning.
Also OPM integration shouldn't be that much more effort as well.

Aside from that, I also want to include a feature to fetch the Edito Color Schemes that have been posted to https://wiki.lazarus.freepascal.org/UserSuppliedSchemeSettings and to download and install them right away.

It's still only a proof of concept, and therefore not really intended to be pretty (also the code is quite hacky at times), but I hope it gets the idea accross.

If anyone has some suggestions or ideas for more features, let me know.

Joanna

  • Hero Member
  • *****
  • Posts: 702
Re: Are We Dead Yet?
« Reply #102 on: May 31, 2023, 12:27:08 am »
Looks good  :)
✨ 🙋🏻‍♀️ More Pascal enthusiasts are needed on IRC .. https://libera.chat/guides/ IRC.LIBERA.CHAT  Ports [6667 plaintext ] or [6697 secure] channel #fpc  Please private Message me if you have any questions or need assistance. 💁🏻‍♀️

SymbolicFrank

  • Hero Member
  • *****
  • Posts: 1313
Re: Are We Dead Yet?
« Reply #103 on: June 01, 2023, 10:02:20 am »
I agree that the installation and project management are the weakest parts at the moment. Without fpcupdeluxe, I would have serious problems, but it does reset all the configurations.

But I actually think, that a development environment like FPC + Lazarus can make a good comeback.

As it is, everything has to be done on a headless server (REST) and in a browser, powered by simplistic and minimalist languages like PHP, Go and Rust. The good: easy start. The bad: not really usable for large projects.

For starters, writing a browser app takes about ten times as much time as writing the same thing in a RAD environment. Ok, the small stuff is mostly things like Wordpress templates and such, that isn't programming. But the big stuff never gets finished. In that sense, SCRUM isn't helping (as said above), as it tries to get rid of the design phase as much as possible and replaces it by frequent rewrites.


Windows nowadays has an X Windows client build in. Write your Lazarus app, drop it on a server, make a webpage to start it, create an X11 tunnel from the server to the client, and simply run it from the server. That's how I develop complex web services as well, much easier than cross-compiling.

In the past, latency might be a thing, but a ping-time of more than 20 ms to, for example, aws.com is slow.


Take a medium-sized project. You, by yourself, the RAD way and a team of 10 web devs in a few SCRUM teams for the web way. Who wins?

Then again, it will look different. That can be a problem. But it's in the favor of business software, where productivity beats looks.

Warfley

  • Hero Member
  • *****
  • Posts: 1499
Re: Are We Dead Yet?
« Reply #104 on: June 01, 2023, 11:26:52 am »
powered by simplistic and minimalist languages like PHP, Go and Rust. The good: easy start. The bad: not really usable for large projects.
Interesting list of languages, all of these three are rather special purpose. PHP is for small request based webpage scripts, I agree it's simple and not that well suited for big projects (even though, there are still massively successful large PHP projects such as Nextcloud). But Go and Rust are specifically designed for large projects (and especially in the case of Rust also have rather steep learning curver). Go is built to power all of googles server infrastructure, and Rust is built specifically for replacing C and C++ in Firefox.
So while I see your argument for PHP, I don't see how anyone can make this argument for Go or Rust, as they are specifically built for and already do power massive projects (in the case of Firefox probably one of the largest software projects in existance).

As it is, everything has to be done on a headless server (REST) and in a browser

I think you have a bit of a misconception. Modern web apps are not like a remote application with a local x server, having a ping-pong for every interaction and event is even with modern network connections still pretty slow. Especialy considering that the internet may not be stable (e.g. when you are on mobile network like on a train, or with your phone). Modern web applications are running offline (even when they run in the browser). When you first visit the website it downloads the webpage with all the javascript and then it runs offline in your browser, even when you close your browser and open the website again, it can run without internet access because it is stored locally (even though whats a bit more common is to pack it in an electron or cordova app, rather than doing it in the browser).
And the reason for doing this is quite simple, easy cross platform development. And also this is used for large projects. Take veed.io or clideo, these are fully functional video editors with color correction, animations and simple effects.
Note not all web apps are built with pure web languages, things like C# Blazor or emscripten for C++ allow to use "classical" non web languages to be used for webdevelopment, and are quite popular.

Quote
Take a medium-sized project. You, by yourself, the RAD way and a team of 10 web devs in a few SCRUM teams for the web way. Who wins?
I'm not sure what you mean by RAD, do you mean the development philosophy (often also called rapid prototyping), or the tooling? Because scrum is an agile project management structure that is not mutually exclusive to rapid prototyping. In fact atlassian wrote a whole blog post about how they incorporated prototype driven development (the core philosophy behind RAD) into their scrum workflow.
You could even say that agile development (which is the philosophy behind scrum), is a form of RAD. This is for example what written like that on the wikipedia page about RAD

If you mean the tooling, so RAD IDEs like Visual Studio, Lazarus or Delphi, I'm not sure how you compare those to Scrum. As I said above Scrum is a project management framework, where you work in sprints of 1-2 weeks and after every sprint your team meets up and discusses the progress and where road blocks are and how to proceed. This is completely independent from tooling. You can use Scrum with Lazarus, Delphi, Visual Studio, whatever. Scrum is just a way on how you organize your development team and how you can quickly react to new/unforseen situations in the development process. In fact it works quite well with RAD, because, as said above, having prototypes ready quickly allows to explore different ideas within a short time frame (e.g. within one sprint) and allows you to have something tangible to discuss in your sprint meetings.
There is no reason to think that RAD development with Lazarus and Scrum won't work together. I would even say that they are a much better fit than RAD with the classical project management structures (where you design your whole application up front in multiple design steps and then just build it completely).

Then again, it will look different. That can be a problem. But it's in the favor of business software, where productivity beats looks.
I've worked on a few really big buisnis software projects. When you get into the really big software, you usually also do not see RAD anywhere, this is the domain of enterprise software engineering. RAD is most useful for building curde prototypes really fast. In the time you click yourself a Lazarus or Delphi GUI together, you wouldnt even have created the base structure for a web app, don't mind an enterprise Java or C++ QT Project. But when you get into enterprise software development, where you have hundreds of developers on a single codebase, and you have all your interfaces, factories, mills, and all the other naughty things software engineers have invented, you won't see much use of RAD tooling, because the impact of every single developer is so low that you won't get any benefit from RAD tooling.

Also, there are simply different types of applications that need development. When you build small end user apps, look and feel is nearly everything. You must convince the user in the first few seconds to minutes of use, or the user will just uninstall and try one of the other endless alternatives that are available online. When I just take a look at how many apps there are for doing taxes, usability and look and feel are going to be the main criterion on which a user is going to decide which to use.
When you build special purpose software on the other hand, like commissioned software for a small customer base, then the looks are pretty irrelevant, as long is it is good enough.
And the main thing is that since around the mid 2010s, with the smart phone boom, end user applications have just become a much bigger market. Now everyone is running around with a computer in their pocket and wanting to use it to do all sorts of stuff. This just has not existed prior, many end user households had like 1-2 pc for the whole family. Today everyone has at least one computer. Buisness software is not going anywhere, but end user and entertainment software has also become a huge market.
« Last Edit: June 01, 2023, 11:32:41 am by Warfley »

 

TinyPortal © 2005-2018