Pas de problème (pb), que du PowerBuilder (PB) ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 13-12-2007 12:23:53

Dadone  
Membre Power Geek
Lieu: Avon (Seine et Marne)
Date d'inscription: 19-02-2007
Messages: 252
Pépites: 985
Banque: 0
Site web

Programmation orientée objet avec PB

Tous le monde parle de la programmation orienté objet (POO) encore s’agit de l’appliquer et cela n’est pas forcément facile comme nous le verrons.
Voici le problème soulevé (sa résolution fera l’objet d’un article circonstancié présentant les différentes solutions).
« Comment faire pour respecter la POO avec PB lors du passage de paramètre entre deux classes (notamment, le cas le plus fréquent deux Fenêtres) ? »
La POO repose sur le principe de l’encapsulation, c'est-à-dire que toutes interactions d’une classe vis à vis a de l’extérieur doit se faire via ses routines publiques.
Par conséquent : l’utilisation de la fonction openwithParm() (de même closeWithParm) ne respecte pas l’encapsulation car cela consiste à faire transiter des informations via l’objet Message sans passer par l’interface Publique des classes.
Alors comment peut-on faire ?

Hors ligne

 

#2 14-12-2007 09:15:48

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Programmation orientée objet avec PB

Bonjour, je ne sais pas si j'ai bien compris l'exo

Si on a deux fenêtres w_a (déjà ouverte) et w_b

dans w_a :

Code: pb

// instance
w_b iw_b

// quelquepart dans w_a
Open( iw_b )
iw_b.of_set_param1( 'hello world' )


dans w_b :

Code: pb

// instance
Private String is_param1

// setter
Public of_set_param1(String as_param1)

This.is_param1 = as_param1
Messagebox( 'param1', This.is_param1 )

N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#3 14-12-2007 11:06:45

Dadone  
Membre Power Geek
Lieu: Avon (Seine et Marne)
Date d'inscription: 19-02-2007
Messages: 252
Pépites: 985
Banque: 0
Site web

Re: Programmation orientée objet avec PB

Bonjour,

La réponse est correcte mais pas suffisante, sinon ce serait trop simple !
En effet, le code ne fonctionne pas si  la fenêtre Wb est de type Response.
En effet, dans ce cas, la fenêtre Wb va s’ouvrir mais ne recevra jamais les paramètres car le code qui est censé lui fournir sera  exécuté que lorsque la fenêtre sera fermée !

De plus, plaçons nous dans un cadre général de fonctionnement.
Lorsqu’on utilise openwithparm on récupère le passage de paramètre dans la routine événementielle open() puis on procède au traitement qui dépendent de ces paramètres.

Si on appelle une fonction qui fourni les paramètres dont a besoin la fenêtre, cela implique que tous les traitements doivent être « geler » en attendant ces paramètres. Ors, dans le cadre d’un framework, des traitements génériques ont lieu à l’ouverture de la fenêtre (par exemple des retrieve automatique). Problème : ces traitements ne peuvent pas être exécutés car la fenêtre n’a pas encore reçu les paramètres !

Par conséquent, il y a donc deux problèmes à résoudre.
- Le passage  de paramètre lorsque la fenêtre qui les reçoit est de type Response.
- Le « gèle » des traitements automatiques

Dernière modification par Dadone (14-12-2007 11:07:08)

Hors ligne

 

#4 14-12-2007 11:44:51

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: Programmation orientée objet avec PB

Pas sûr que l'utilisation du Yield() soit très orienté objet


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#5 14-12-2007 12:02:28

Dadone  
Membre Power Geek
Lieu: Avon (Seine et Marne)
Date d'inscription: 19-02-2007
Messages: 252
Pépites: 985
Banque: 0
Site web

Re: Programmation orientée objet avec PB

Personnellement je ne jamais utilisé la fonction Yield() et je n'ai donc pas d'avis sur la question.
Il faudrait préciser comment l'utiliser dans le cadre du TP ?
Il ya peut être des solutions auxquelles je n'ai pas pensé.
C'est le principal intérêt du développement, trouver la solution la plus élégante.

Dernière modification par Dadone (14-12-2007 12:06:48)

Hors ligne

 

#6 16-12-2007 10:54:55

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Programmation orientée objet avec PB

J'ai bien une solution qui fonctionne avec w_b de type response :

Si on a deux fenêtres w_a (déjà ouverte) et w_b

dans w_a :

Code: pb

// instance
w_b iw_b


// événement
Event ue_call_back()

iw_b.of_set_param1( 'hello world' )


// quelquepart dans w_a
Open( iw_b )


dans w_b :

Code: pb

// instance
Private String is_param1


// setter
Public of_set_param1( String as_param1 )

This.is_param1 = as_param1


// open
w_a.TriggerEvent( 'ue_call_back' )
sle_param1.Text = This.is_param1

N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#7 16-12-2007 19:43:44

Dadone  
Membre Power Geek
Lieu: Avon (Seine et Marne)
Date d'inscription: 19-02-2007
Messages: 252
Pépites: 985
Banque: 0
Site web

Re: Programmation orientée objet avec PB

Bien sûr le code donné fonctionne mais l’appel depuis w_a.triggerEvent(« ue_call_back ») viole l’encapsulation puisque la fenêtre w_b communique avec la fenêtre w_a  sans passer par l’interface non événementielle de w_a.
On en revient au respect strict de la POO, toute communication explicite entre deux objets doit se faire par l’interface non événementielle des classes.
Toutefois, il existe forme de communication qui respecte la POO mais qui permet à des classes de communiquer de manière implicite. Il s’agit de l’envoi de message sous forme de « notification ». Un objet A notifie un « état » (la valeur à un instant de propriétés) à un ensemble d’objets inconnus. Certains objets qui recevront le message réagiront en conséquence.
Prenons un exemple :
Une fenêtre A vient de sauvegarder correctement ces données, elle souhaite notifier cet état à toutes les classes locales qu’elle accueille.
Un code générique peut être écrit pour le faire sous forme d’envoie d’un message à l’ensemble des classes locales appartenant à la fenêtre.
On peut alors utiliser la fonction triggerEvent(« ue_sauvegardeOk »), on ne viole pas l’encapsulation car il s’agit d’envoie de message à « l’aveugle », l’objet qui envoie le message ne sait pas à qui il(s) l’envoie ni ce dernier sera bien reçu.
En revenant au TP, la notion de « call back » peut être une piste mais faut alors trouver un code  plus général qui respecte l’encapsulation.
Mais à mon sens, il y a plus simple que le notion de « call back ».

Dernière modification par Dadone (16-12-2007 19:49:57)

Hors ligne

 

#8 16-12-2007 20:00:27

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Programmation orientée objet avec PB

si c'est l'événement qui gêne, je peux le remplacer par une fonction

dans w_a :

Code: pb

// instance
w_b iw_b


// fonction
Public subroutine of_call_back()

iw_b.of_set_param1( 'hello world' )


// quelquepart dans w_a
Open( iw_b )


dans w_b :

Code: pb

// instance
Private String is_param1


// setter
Public subroutine of_set_param1( String as_param1 )

This.is_param1 = as_param1


// open
w_a.of_call_back( )
sle_param1.Text = This.is_param1

N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#9 17-12-2007 10:24:38

Dadone  
Membre Power Geek
Lieu: Avon (Seine et Marne)
Date d'inscription: 19-02-2007
Messages: 252
Pépites: 985
Banque: 0
Site web

Re: Programmation orientée objet avec PB

Le problème avec le code :

w_a.of_call_back( )

C'est que w_a n'est forcée d'être instanciée. En effet tout dépend comment a été ouvert w_a.
Il est préférable d'avoir un moyen d'être certain que la référence w_a soit une référence valide
Enfin, le principe apparait un peu lourd
A ouvre B
B appel A
A passe les paramètres à B
Il y pas plus simple, non ?

Dernière modification par Dadone (17-12-2007 13:55:28)

Hors ligne

 

#10 17-12-2007 11:19:31

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Programmation orientée objet avec PB

Dadone a écrit:

Il y pas plus simple, non ?

passer par un objet tierce, un manager de pages p.ex


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#11 17-12-2007 14:22:44

Dadone  
Membre Power Geek
Lieu: Avon (Seine et Marne)
Date d'inscription: 19-02-2007
Messages: 252
Pépites: 985
Banque: 0
Site web

Re: Programmation orientée objet avec PB

Je suis d'accord pour l'objet tiers mais uniquement en utilisation générique pour passer la référence de la fenêtre w_a à la fenêtre w_b.  En reprenant l'exemple donné, nous aurons :
Soit la classe Message étendue suivante :

Code: pb

// Au niveau de ses propriétés
// Référence abstraite permettant d'enregistrer une référence de type fenêtre
window iw_windowWhoOpenAnotherWindow

// Au niveau des routines, deux déclarations de type set() et get() :
public subroutine of_setWindowWhoOpenMe (window aw)
public function window of_getwindowwhoopenme ()


Alors pour w_a on peut avoir :

Code: pb

Message.of_setWindowWhoOpenMe(this)
Open(w_b)

Dans w_b, de manière générique dans la routine événementielle open(), où la propriété iw_windowWhoOpenMe est une référence de type window

Code: pb

Window lw_null 
SetNull(lw_null)

iw_windowWhoOpenMe = Message.of_getWindowWhoOpenme()

If isvalid(iw_windowWhoOpenMe) then
     Message.of_setWindowWhoOpenMe(lw_null)       // de manière à éviter les effets de bords
End if

Maintenant que w_b à la référence de w_a, le "call back" fonctionnera toujours mais si la récupération générique de la référence est nécessaire le "call back" lui ne l'est pas...

Dernière modification par Dadone (17-12-2007 16:00:34)

Hors ligne

 

#12 17-12-2007 19:58:14

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Programmation orientée objet avec PB

Dadone a écrit:

Par conséquent : l’utilisation de la fonction openwithParm() (de même closeWithParm) ne respecte pas l’encapsulation car cela consiste à faire transiter des informations via l’objet Message sans passer par l’interface Publique des classes.
Alors comment peut-on faire ?



la solution utilise l'objet message, donc quel est le gain par rapport à openwithParm ?


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#13 17-12-2007 20:05:38

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: Programmation orientée objet avec PB

pour info, certaines variables de l'objet message ne passent pas sous appeon... arghh, je me suis trompé de topic...


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#14 18-12-2007 18:01:51

Dadone  
Membre Power Geek
Lieu: Avon (Seine et Marne)
Date d'inscription: 19-02-2007
Messages: 252
Pépites: 985
Banque: 0
Site web

Re: Programmation orientée objet avec PB



la solution utilise l'objet message, donc quel est le gain par rapport à openwithParm ?

La différence est le respect de la programmation objet !
Si je regarde l’interface d’une classe est que toutes les routines de son interface non événementielle est protégée alors cette classe est autonome est ne communique avec aucune classe. Ce qui n’est le pas le cas, si on utilise la fonction openwith qui implique une communication qui n’apparaît pas dans l’interface de la classe.
De plus, la lisibilité des programmes est considérablement renforcée, il n’y pas besoin de déclarer des structures globales permettant le transit d’information entre les classes.
Le pire étant l’utilisation de structures abstraites ce qui rend illisible la compréhension des programmes.
Enfin allez expliquer à un programmeur Java, qui a l’habitude d’utiliser les fonction get() et set() de comprendre l’intérêt de openwithParm ! Selon moi ce type de fonction est directement hérité de système Coboliste totalement désuet de nos jours.

Pour finir comparons, le code « naturel » suivant :

Open(w_1)
w_1.of_set(a,b,c,…)

et déclaration de la routine publique of_set() de w_1, avec tous les commentaires qui vont bien au niveau du cartouche de la routine pour ce qui concerne ses arguments.
Au bilan : lisibilité du code et respect de la POO.

En passant par l’objet Message, nous avons :
Déclaration d’une structure pouvant contenir les données a,b,c,…

StructureA strA
renseignement de str A
openwithParm(w_1,str_a)

puis encore une déclaration de la même dans w_1
afin de récupérer les données…

En tant que formateur, inutile de dire qu’il n’y a pas photo dans la rapidité de compréhension entre les deux codes… !

Dernière modification par Dadone (18-12-2007 18:07:51)

Hors ligne

 

#15 18-12-2007 18:11:27

Dadone  
Membre Power Geek
Lieu: Avon (Seine et Marne)
Date d'inscription: 19-02-2007
Messages: 252
Pépites: 985
Banque: 0
Site web

Re: Programmation orientée objet avec PB

pick ouic a écrit:

pour info, certaines variables de l'objet message ne passent pas sous appeon... arghh, je me suis trompé de topic...

On peut utiliser une autre classe de transit, c'était juste un exemple.
Au faite sa marche APEON ?
Avec l'orientation WinForm et WebForm de la V11, ce produit a t'il encore un avenir ?

Hors ligne

 

#16 18-12-2007 18:16:28

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: Programmation orientée objet avec PB

Dadone a écrit:

pick ouic a écrit:

pour info, certaines variables de l'objet message ne passent pas sous appeon... arghh, je me suis trompé de topic...

On peut utiliser une autre classe de transit, c'était juste un exemple.
Au faite sa marche APEON ?
Avec l'orientation WinForm et WebForm de la V11, ce produit a t'il encore un avenir ?

bon, on est hors sujet...
mais APPEON tourne tres vite, par rapport au webform de pb11...  pas un seul postback...


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#17 19-12-2007 21:26:44

Tron  
Membre Geek
Award: tron
Lieu: Antony
Date d'inscription: 25-07-2007
Messages: 35
Pépites: 1,419
Banque: 590,314,860,104

Re: Programmation orientée objet avec PB

Bonjour

Pour moi, l'écriture la plus naturelle est open( w_1, paramètre 1 , ... paramètre n... )

La fonction openWithParm est celle qui ressemble le plus à ce type d'écriture. Même s'il elle ne respecte pas les principes de la POO en utilisant l'objet message, c'est avant tout une fonction système à PB. Ne peut-on pas considérer que la façon dont elle implémente ce passage de paramètres, même s'il est malheureux, ne nous concerne pas directement ?

Autrement dit cette solution ne reste-elle pas la plus simple et donc la meilleure ?

A+

Dernière modification par Tron (19-12-2007 21:27:22)

Hors ligne

 

#18 20-12-2007 09:38:24

Dadone  
Membre Power Geek
Lieu: Avon (Seine et Marne)
Date d'inscription: 19-02-2007
Messages: 252
Pépites: 985
Banque: 0
Site web

Re: Programmation orientée objet avec PB

Tron a écrit:

Bonjour

Pour moi, l'écriture la plus naturelle est open( w_1, paramètre 1 , ... paramètre n... )

La fonction openWithParm est celle qui ressemble le plus à ce type d'écriture. Même s'il elle ne respecte pas les principes de la POO en utilisant l'objet message, c'est avant tout une fonction système à PB. Ne peut-on pas considérer que la façon dont elle implémente ce passage de paramètres, même s'il est malheureux, ne nous concerne pas directement ?

Autrement dit cette solution ne reste-elle pas la plus simple et donc la meilleure ?

A+

Quoique vous en disiez la fonction openwithParm n’est pas une programmation « naturelle ».  Je dirais même plus, la fonction open() tout court n’est pas non plus naturelle. En effet, en POO , toute classe devrait être créée de la même manière (new()  pour certains langages, create() pour d’autres). Admettre une particularité pour la classe de type window est déjà pas normal. Si de plus, il y a une classe système partagée permettant le passage de paramètres, là on est typiquement dans une particularité du langage non conforme à un langage objet.
Je pense que les raisons sont historiques. Les créateurs de PB avait forcément une culture gros système et la notion de fenêtre est au cœur des systèmes d’informatique de gestion. C’est cette culture qui a fait adopter des abus de langage non conforme à la POO. C’est cette même culture qui a fait adopter la convention absurde que toutes propriétés (c-a-d variables d’instances, encore une anomalie de vocabulaire car le terme « propriété » aurait dû être la norme) est par défaut public alors que la POO impose que toutes les propriétés soient protégées et que l’on accède à celles-ci par les fonctions publiques de type get() et set().
Les conséquences de cet état de fait, est que la culture objet dans le monde PowerBuilder est pratiquement inexistante entraînant des dérives de code très préjudiciable pour la maintenabilité des projets et plus fondamentalement pour la crédibilité du produit vis-à-vis des décideurs.
Un décideur m’a dit une fois. « Au niveau de la maintenance informatique, les coûts des projets PB sont bien supérieurs aux coûts des projets VB est c’est une des raisons pour laquelle nous abandonnons le produit ».
Autrement dit, mal programmé un projet PowerBuilder devient vite un cauchemar à maintenir ce qui nuit très fortement à la réputation du produit.
C’est pour cette raison que depuis plus de 10 ans, j’ai écris plusieurs ouvrages pour démontrer que rationnellement utilisé PowerBuilder à une productivité sans égal mais cela passe inévitablement par le respect stricte des concepts objets et même plus. En effet, la notion d’interface événementielle implique une adaptation des concepts objets à la particularité des routines événementielles, particularité qui n’est pas incluse dans la théorie de la POO « classique ». La distinction fondamentale entre les routines non événementielles et événementielles fait partie d’un des thèmes centraux de mes ouvrages.

Dernière modification par Dadone (20-12-2007 11:52:44)

Hors ligne

 

#19 20-12-2007 10:56:08

Tron  
Membre Geek
Award: tron
Lieu: Antony
Date d'inscription: 25-07-2007
Messages: 35
Pépites: 1,419
Banque: 590,314,860,104

Re: Programmation orientée objet avec PB

Effectivement, mais la fonction open n'est finalement qu'un synonyme de create ou new, le fait d'avoir des synonymes est-il contraire à la POO ?

Dans framwork, on peut toujours créer une fonction globale f_create pour instancier toutes les classes et passer des paramètres à l'image des constructeurs paramétrés de Java et autre...

D'autre part, un langage n'est qu'un outil et c'est seulement le développeur qui est garant de la qualité du code !

A+

Hors ligne

 

#20 20-12-2007 12:14:53

Dadone  
Membre Power Geek
Lieu: Avon (Seine et Marne)
Date d'inscription: 19-02-2007
Messages: 252
Pépites: 985
Banque: 0
Site web

Re: Programmation orientée objet avec PB

Tron a écrit:

Effectivement, mais la fonction open n'est finalement qu'un synonyme de create ou new, le fait d'avoir des synonymes est-il contraire à la POO ?

Dans framwork, on peut toujours créer une fonction globale f_create pour instancier toutes les classes et passer des paramètres à l'image des constructeurs paramétrés de Java et autre...

D'autre part, un langage n'est qu'un outil et c'est seulement le développeur qui est garant de la qualité du code !

A+

Je fais souvent la comparaison entre le jeu d’échecs et la programmation.
Les règles du jeu sont simples mais bien jouer est très complexe.
En PowerBuilder, n’importe quel programmeur peut rapidement produire du code, il en va autrement si on lui demande du produire du « bon » code, autrement dit qui respecte les critères du génie logiciel.
C’est le cœur du problème, si on se contente de connaître les règles on ne seras jamais un bon joueur d’échec. Il faut, pour progresser, connaître la théorie du jeu pour bien jouer, théorie qui est longue et complexe a assimiler. Il en va de même en PB, si on se contente de produire du code, on ne progresse pas réellement dans « l’art » de programmer. Comme aux échecs, il convient de connaître la théorie pour ensuite l’appliquer. Ors cette théorie n’est pas simple et surtout elle n’est pas enseignée. J’ai eu l’occasion de le signaler un jour dans un article paru dans 01 Informatique, l’enseignement supérieur en informatique de gestion est sinistrée car les personnes responsables de ces enseignements n’ont, elles mêmes, jamais développées un projet en informatique de gestion. Donc elles sont incapables d’enseigner la théorie. A l’arrivée cela a un coût exorbitant pour l’ensemble de la société. La caricature étant l’utilisation d’un langage comme Java (à l’origine prévu pour faire des automates) en informatique de gestion en lieu et place de langages comme PB, fortement spécialisés à la problèmatique soulevée par l'informatique de gestion!
______________________________________
Apprendre c’est bien, comprendre c’est mieux !

Dernière modification par Dadone (20-12-2007 12:20:44)

Hors ligne

 

#21 20-12-2007 12:45:23

Tron  
Membre Geek
Award: tron
Lieu: Antony
Date d'inscription: 25-07-2007
Messages: 35
Pépites: 1,419
Banque: 590,314,860,104

Re: Programmation orientée objet avec PB

Faire de la qualité est un investissement lourd en temps… Il implique tous les maillons de la chaine du développement et beaucoup d’entreprises préfèrent privilégiées malheureusement le résultat à court terme au détriment de la qualité…

Enfin, j’ai personellement beaucoup progressé en lisant vos livres et j’attends avec impatience les prochains... c’est pour bientôt ?

A+

Hors ligne

 

#22 20-12-2007 13:53:05

Dadone  
Membre Power Geek
Lieu: Avon (Seine et Marne)
Date d'inscription: 19-02-2007
Messages: 252
Pépites: 985
Banque: 0
Site web

Re: Programmation orientée objet avec PB

Tron a écrit:

Faire de la qualité est un investissement lourd en temps… Il implique tous les maillons de la chaine du développement et beaucoup d’entreprises préfèrent privilégiées malheureusement le résultat à court terme au détriment de la qualité…

Enfin, j’ai personellement beaucoup progressé en lisant vos livres et j’attends avec impatience les prochains... c’est pour bientôt ?

A+

Le problème n'est pas d'écrire un livre (c'est le premier livre qui est difficile à concevoir moins les suivants) que de trouver un éditeur. Ors plus aucun n'est intéressé par le sujet...
Mais peut être qu'avec le renouveau de PB que l'on sent au niveau de nombreuses entreprises (dont beaucoup ont énormément perdu d'argent avec Java) cela peut peut être évoluer...
Mais je ne manquerai pas de vous tenir informé si les choses était ammenées à évoluer via cet excellent outil qu'est ce forum, signe justement d'un renouveau du produit.

Dernière modification par Dadone (20-12-2007 13:53:22)

Hors ligne

 

#23 30-12-2009 09:48:57

elfeliz  
Bienfaiteur du site
Award: bf
Lieu: Liège, BE
Date d'inscription: 23-06-2009
Messages: 94
Pépites: 471
Banque: 0

Re: Programmation orientée objet avec PB

Bonjour les gens !

Je me permets de "réactiver" ce fil ... deux ans plus tard.

Qu'en pensez-vous aujourd'hui, avec 2 ans de recul ?
Le renouveau est-il en marche ou PB devient-il de plus en plus confidentiel ?

Humblement, ma constatation de junior est la suivante :

1. Java n'est pas orienté informatique de gestion ou, à tout le moins, beaucoup moins que PB et PB n'est pas POO ( j'ai -presque- le sentiment qu'on a collé sur PB un vernis POO pour raisons commerciales...). En d'autre termes, vendre PB en le présentant comme un outil/langage POO n'est-ce pas un peu une erreur de casting ?

2. Les spécificités de PB, qui en font un superbe outil dans sa branche, rendent complexes au possible les projets de migration.
La réécriture complète étant généralement la solution finale adoptée "de force"... responsable des dépassements monstrueux en temps et en budget. Typiquement, les frameworks construits en PB sont souvent à l'antipode des concepts POO...

3 . MAIS Il est plus de plus en plus facile de trouver des développeurs javas ( même des mauvais, hum...) et toujours plus difficile de trouver, voire de conserver, des développeurs PB ( surtout des bons , ...).



Ne pensez-vous pas que la volonté générale de migration et d'adoption de java, sous prétextes d'aller vers l'open source, la POO "pure" ou autres,  ne soit due qu'à cette carence notable en développeurs PB chics et pas chers ?
On parle beaucoup du prix des licences, etc. mais franchement, n'est-ce pas plutôt la difficulté à trouver "des bons p'tits gars PB" (sans parler de trouver des demoiselles...   salut à celles qui liront ce post) qui pose problème ?


En attendant de vous lire, Bonne fin d'année à toutes et tous, et meilleurs voeux pour 2010 !!


Bybye !


No prob, just Pb !

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22