Purebasic et concepts de POO

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

Re: Purebasic et concepts de POO

Message par G-Rom »

microdevweb a écrit :Merci pour l'exemple G-rom qui est très intéressant et à étudié en lieu et place des interface,

Mais tu à pensé en objet, la plupart d'entre nous n'aurais pas réaliser cela comme cela (du moins je le pense).

On peut programmé en procédural avec un concept objet et certaines limites. Mais on ne m'enlèvera pas l'idée que si pb passait en poo il deviendrais une véritable bombe.
J'ai pas pensé "objet", y a que du procédurale la dedans. d'ou mon incompréhension de vouloir faire de la poo avec PB.
là , tu voit bien qu'il ne faut pas une liste pour chaque type d'élément, qu'il y a déjà un concept de "méthode" virtuelle ( la fonction dessiner de forme ) , qu'il y a un héritage entre les structures ( ca n'existe pas en C ) , que chaque forme est spécialisé dans sa tâche. et qu'une liste "fourre tout" peut contenir toute sorte de forme.
Bien entendu , y a des limites , pas de surcharge d'opérateur, pas de constructeur / destructeur, pas de passage par référence. mais c'est pas une fatalité.
Avatar de l’utilisateur
microdevweb
Messages : 1798
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Purebasic et concepts de POO

Message par microdevweb »

@G-rom je teste ton exemple et essaye de faire à ma sauce, par contre je ne voie pas comment faire les pour exemple Getters / Setters sans interface ?

Pourquoi j'aime temps le concept Poo ?

Petit exemple :

J'ai du cette année réalisé pour un travail d'étude le jeux "Quoridor" https://fr.wikipedia.org/wiki/Quoridor en java, la première partie étant le moteur de jeu en mode console.

C'est la que j'ai vraiment réalisé la force de la Poo, la deuxième partie étant l' ui en "JavaFx".

Seulement on à du pour scinder au mieux le model (moteur) de l' ui utilisé des "data binding" ce qui implique de modifié les données par exemple "integer" en "integerProperty".

Sans encapsulation j'aurais du modifié tous le code, mais heureusement grâce au principe d'encapsulation je n'ai du modifié que le code de mes "Getters et Setters"
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

Re: Purebasic et concepts de POO

Message par G-Rom »

@G-rom je teste ton exemple et essaye de faire à ma sauce, par contre je ne voie pas comment faire les pour exemple Getters / Setters sans interface ?
Avec des prototypes, tout dépend ce que tu veut faire, sincèrement, écrire des getters / setter ne sert à rien. tout est public contrairement à la poo ou tu peu caché des
membres/méthode.

Code : Tout sélectionner

Prototype dessiner(*forme)
Prototype GetX(*forme)

Structure Forme
  x.f
  y.f
  dessiner.dessiner
  GetX.GetX
EndStructure
Mais c'est sale. ca te fera du code du genre :

Code : Tout sélectionner

Forme\GetX(Forme)
Tu peu toujours mixé avec des interfaces pour caché le paramètre *this et avoir un code plus propre, mais la structure forme devra changé et avoir un pointeur sur les méthodes getter/setter...
Avatar de l’utilisateur
microdevweb
Messages : 1798
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Purebasic et concepts de POO

Message par microdevweb »

Vouloir faire de la Poo avec Pb est un caste tête, et c'est la raison pour l’a-quel je ne code plus bcp en Pb.

Mais pour le procédural il reste une bête.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

Re: Purebasic et concepts de POO

Message par G-Rom »

microdevweb a écrit :Vouloir faire de la Poo avec Pb est un caste tête, et c'est la raison pour l’a-quel je ne code plus bcp en Pb.

Mais pour le procédural il reste une bête.
tu as tout dit. c'est un casse tête car il n'est pas prévu pour. il y a des mécanismes qui n'existe pas en PB. mais qui sont facilement remplaçable.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Purebasic et concepts de POO

Message par Kwai chang caine »

Tout d'abord merci à vous tous pour vos supers explications vous êtes des anges 8) mais je vous apprends rien :mrgreen:

@Grom
Tu connais de ces trucs toi 8O
Ca à l'air cool ton RAYLIB, jamais entendu parler, tu as raison au premier regard ça a l'air d'être un C simplifié
J'ai jeté un coup d'oeil rapide et déjà un sourire a apparu sur mon visage avec cette fonction

Code : Tout sélectionner

InitWindow(screenWidth, screenHeight, "raylib [core] example - basic window");
Je tacherais de regarder plus profondément et voir ce qu'est exactement ce langage 8)

1/ Sinon pour mon info personnelle que penses tu de PellesC si tu connais

2/ Sinon une question qui me taraude depuis des années et que personne n'a jamais vraiment pu m'expliquer.
Tu dit PB est pas fait pour de la POO, tout le monde le dit aussi (ok)

Mais, la ou je comprend pas, c'est que à part le CAST je crois, PB peut faire tout ce que le C peut faire non ou je me trompe ?

Alors à ton avis le C++ a été créé avec le C ou directement en assembleur ?
Car si il a été créé en ASM ok c'est mort, mais si c'est avec le C, et que PB sait faire tout ce que le C sait faire
Quelles sont les fonctions que le C possède pour avoir pu créer le C++ et sa POO et que PB ne possède pas pour faire la même POO ?
C'est ça que j'arrive pas à comprendre depuis des années :oops:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
microdevweb
Messages : 1798
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Purebasic et concepts de POO

Message par microdevweb »

kkc,

Le c est un langage bas niveau, c'est un des premier langage que l'on apprend à l'école. Il ne comprend presque pas d'instructions. Donc on est obligé de tout coder, pour exemple une liste (linked list ou liste chaînée) devra être programmée car ellen'existe pas.

Les chaînes de caractères n'existe pas non plus, ce sont des tableaux de char qui est un type de variables du langage c.

Le c++ reste en langage de bas niveau, mais orienté objet des collection (list, map etc) existe ainsi que des String et sont en vérité des classes inclues dans la certaines bibliothèques du langage.

Le soucis avec ses langages réside (pour ma part), à partir du moment ou l'on veux faire un programme fenêtré, la si le programme doit être portable cela nécessite l'utilisation bibliothèque externe (Qt,WxWidget etc) ou de beaucoup de code et connaissances.

PureBasic est un langage de haut niveau et possède des String des list ect, les gros avantages de Pb sont.

On ouvre fenêtre très facilement (sans dll externe) et multi-plateforme. Contrairement aux ancien basic qui était interprété la compilation est super efficace, on obtiens un exécutable de petite taille et rapide.

Les inconvénients (pour ma part).
Langage trop verbeux, je préférais une syntaxe plus proche du c sans le ";" ou même avec on si fais vite

Code : Tout sélectionner

if condition
   code
endif

if(condition){
   code
}
Il n'est pas Orienté objet.

Pb est t'il inférieur à C, non je ne le pense pas. Par contre on pourrait écrire un Pb en C mais pas un C en Pb, car le C est plus bas niveau.

Maintenant il faut toujours se posé la question du type de langage à utilisé en fonction du projet.

Exemple pour une jeu, en Pb, c, c++ même avec une excellent moteur de jeu comme Ogre cela va demandé énormément de temps. Car il va falloir tout coder même la disposition des sprites ou objets 3d. Donc seul on en à pour des années (exemple un jeu publié sur stream en pb voir topic aura demandé 5 ans)

J'ai testé d'autre soft avec des éditeur de niveau, UrealEngine (langage c++ ou en mode node), GodotEngine (langage propriétaire très simple car similaire au Python), Unity 3d (C#),JMonkey3d (java). et constate qu'il faudra au moins 5 fois moins de temps.

Maintenant la plupart de ses soft sont écrit en c++ (pas JMonkey qui est écrit en Java)

Pour un soft de gestion, Pb peut faire l'affaire sans problème mais java sera plus portable (sans même recompiler le projet) par contre moins rapide car compiler en BytCode qui sera interprété par la Jvm).

Un site internet Php,Javascript,html,css.

Contrairement à G-rom je ne maîtrise pas le C++ et connait mieux le Java et C#, par contre la création d'une classe en C++ est nettement plus difficile qu'en java ou C#. (il faut par exemple créer un Prototype de classe).

Les langages les plus utilisés.

JavaScipt,Python,Java,C/C++.


Donc en résumé si tu veux apprendre la Poo, java ou C# sont de bonne alternative. Et la syntaxe général est la même que le C. (sauf le passage de paramètre qui est plus simple).

Si tu veux resté en procédural, franchement le c ne t'apportera pas plus que Pb.

Pas si simple de trouvé le langage idéal.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

Re: Purebasic et concepts de POO

Message par G-Rom »

Les langages les plus utilisés.

JavaScipt,Python,Java,C/C++.
https://www.developpez.com/actu/217533/ ... -embarque/


@Kcc

RayLib, c'est uniquement du C pure. pas autre chose. le créateur à fait en sorte qu'il soit portable ( web ( via emscripten ) , win, linux, mac , raspi , etc... )
il utilise donc opengl et "sa propre lib" , la RayLib.

Pour PellesC , oui je connais, mais je n'aime pas. pas portable. je préfère gcc ou g++, des compilos libre, sous windows j'aime bien leur compilateur msvc.

Tu peu faire du "cast" en PB, faire un cast, c'est "transformé" un type dans un autre à condition qu'il ont la même taille et que l'exploitation des données soient cohérente, sinon c'est du sclicing ( exemple donner plus haut avec Forme / Rectangle / Cercle dont le but est de transformé une structure d'une taille définie à une taille inférieur )

Ensuite , le C++ peut être créer avec n'importe quel langage existant à l'époque, la plupart des compilateurs sont réalisé en C , mais tu peu créer un compilo en PB qui compilera du C++ ( bon courage ) , la façon dont un compilateur est créer importe peu. un compilateur C++ génère de l'assembleur machine directement , il ne passe pas par un intermédiaire C++ -> C -> ASM -> Machine comme je l'ai déjà entendu et comme tu as l'air de le sous entendre.
Le C & PB ne sont pas du tout pareil. déjà par la syntaxe plus rigide de PB , et son manque de macro. sa gestion de macro est trop faible par rapport à ce que tu peu faire en C. et le c++ n'est pas une série de macro C.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Purebasic et concepts de POO

Message par Kwai chang caine »

Merci encore à vous deux 8)

@GRom
Ca a l'air vraiment cool ce RAYLIB décidément je jetterais un œil 8)

PellesC peut être portable (Sur USB) il faut faire un petite bidouille
http://wiki.pellesc.de/doku.php/portable
C'est sur que GCC et G++ sont les références dans le monde du libre 8)
D'ailleurs quand je prenais mes cours de C, c'était avec GCC

En fait, le C a toujours été mon rêve depuis que j'ai appris qu'il était à la base de presque tout (Drivers, Linux, Windows, etc..)
FRED a d'ailleurs eu l'intelligence de simplifier tout en restant le maximum proche de C
Les callbacks, les API, et pleins d'autres fonctions de PB lorsque je regarde certains codes en C, je suis pas toujours perdu, car je retrouve des similitudes avec PB 8)

En fait, ce qu'il manque pour bien comprendre leur différence c'est un tableau comparatif des fonctions, on verrait ce qui manque à PB que le C lui a
Et quant aux fonctions de PB que le C n'a pas, c'est normal puisque comme l'a dit MicroDevWeb le C a été programmé pour être le minimum

Si par exemple l'on compare
If / EndIf ==> If() {} ==> c'est la même
Dim Tablo() ==> N'existe pas car la gestion dynamique des tableaux n'a pas été prévue nativement
Etc ..

En tout cas, ça reste pour moi toujours un sujet passionnant, encore merci 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

Re: Purebasic et concepts de POO

Message par G-Rom »

Le C ou le C++ à toutes les fonctions que PB possède, même plus ^^
le c ou le c++ est "vide" , il se complète avec des librairie qu'il faut choisir en fonction de ses besoins. L'avantage de PB est la simplicité
de la mise en place de l'environnement de dev. pas de prise de tête avec des libs à installer, pas besoin des variables d'environnement pour tel ou tel lib
pas d'include, etc...
le plus dur en c ou c++ quand tu viens de PB , c'est de se faire un environnement de dev. raylib te fourni ce qu'il faut pour l'utilisé pleinement. fourni même les tableaux dynamique de mémoire. ;)
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Purebasic et concepts de POO

Message par falsam »

STOP POO-LLUTION :mrgreen:
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Purebasic et concepts de POO

Message par Kwai chang caine »

Grom a écrit :le plus dur en c ou c++ quand tu viens de PB , c'est de se faire un environnement de dev. raylib te fourni ce qu'il faut pour l'utilisé pleinement. fourni même les tableaux dynamique de mémoire.
N'en dit pas plus, j'en bave déjà

Image

Encore mille merci maitre, de cette conversation hyper intéressante pour moi 8)
J'ai toujours eu plaisir à parler avec toi, étrangement ...même quand tu causes de mes doigts et de mon cul :mrgreen:
Falsam a écrit :STOP POO-LLUTION :mrgreen:
:lol: :lol:

Image
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

Re: Purebasic et concepts de POO

Message par G-Rom »

Kwai chang caine a écrit : N'en dit pas plus, j'en bave déjà

Image
...
J'ai toujours eu plaisir à parler avec toi, étrangement ...même quand tu causes de mes doigts et de mon cul :mrgreen:
...
Mouais... on vas arrêter là hein ? je commence à avoir des images pas très catho qui font tombé ma libido en flèche... :mrgreen:
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Purebasic et concepts de POO

Message par Ollivier »

G-Rom a écrit :je commence à avoir des images pas très catho qui font tombé ma libido en flèche..
C'est le manque de surcharge en PB qui fait ça !
Avatar de l’utilisateur
microdevweb
Messages : 1798
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Purebasic et concepts de POO

Message par microdevweb »

Bonjour Kwai chang caine,

Je ne comprend pas bien ta démarche, as tu un projet en tête ou veux tu seulement apprendre quelque chose de nouveau.

Si tu veux par exemple tu veux juste apprendre la Poo, l'idéal est commencer à apprendre l'Ulm qui est juste un langage d'analyse orienté objet.

Ensuite il existe des langage + simple que le C++ (Python la poo est un peux spécial), java, C# etc.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Répondre