OVH Cloud OVH Cloud

BPL: version C de la STL

28 réponses
Avatar
Marc Boyer
Bonjour à tous,

suite à des réflexions suscitées sur ce forum, j'ai réflechi
à une librairie inspirée de la STL qui offre en C des containers
génériques, efficaces et typés.

Le premier jet est disponible à l'URL:
http://www.enseeiht.fr/~boyer/BPL/
C'est un tout premier jet, mais je suis à la recherches d'avis,
de marques d'intérêt et de critiques avant de partir plus avant
dans les développements.

Merci d'avance de vos remarques,

Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(

8 réponses

1 2 3
Avatar
Marc Boyer
In article , Laurent Deniau wrote:
Je m'adresse plus à des gens qui font du C procédural
"classique", qui manipulent déjà des listes à coup de
macros qui castent tout en void*.


Ca peut paraitre paradoxale, mais je n'encourage pas a utiliser ce qui est sur
la page OOPC. Encore une fois, il s'agit d'un exemple didactique sans interet
pratique (trop lourd).


J'ai parcourus de façon trop rapide pour voir cet avertissement.

En revanche je peux (si demande il y a) mettre en acces
publique et sans garantie (et sans doc) un tar de ce qui est deja fait sur la
lib ooc (qui ne bouge plus beaucoup). Ca fait quelques lignes de C (cf liste des
fichier ci-dessous). Ce qui est dans le repertoire ooc forme le corps de la
technique (et peut etre utilise a part), le reste n'est qu'une lib d'objets
utiles.


Disons que le coeur de ma demande, c'est surtout de comparer les
techniques utilisées. On peut comprendre juste avec les sources
ou pas trop ?
Si cela prend trop de temps de décrire l'idée par écrit, je
peux aussi téléphoner.

28891 total


Quelques lignes de code disais-tu ?

Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(


Avatar
Laurent Deniau
Marc Boyer wrote:
In article , Laurent Deniau wrote:

Je m'adresse plus à des gens qui font du C procédural
"classique", qui manipulent déjà des listes à coup de
macros qui castent tout en void*.


Ca peut paraitre paradoxale, mais je n'encourage pas a utiliser ce qui est sur
la page OOPC. Encore une fois, il s'agit d'un exemple didactique sans interet
pratique (trop lourd).



J'ai parcourus de façon trop rapide pour voir cet avertissement.


Effectivement, surtout que les premieres lignes disent le contraire... Je
modifierais ca des que j'ai du temps. Mais le principe y est, j'ai simplement
abandonne l'idee de faire de l'heritage multiple et je me suis concentre sur
l'heritage simple et les messages avec une syntaxe beaucoup plus simple. Puis
j'ai abandonne les messages que j'avais pourtant reussit a rendre plus
performant que ceux d'objective C pour les protocols (equivalent de "interface"
de java). J'ai finalement fait une hierarchie tout objet (classe et metaclasse
inclues) inspiree de SmallTalk, faisant de ooc (ISO C89) plus objet dans la
philosophie que certains langages dit objet :-)

En revanche je peux (si demande il y a) mettre en acces
publique et sans garantie (et sans doc) un tar de ce qui est deja fait sur la
lib ooc (qui ne bouge plus beaucoup). Ca fait quelques lignes de C (cf liste des
fichier ci-dessous). Ce qui est dans le repertoire ooc forme le corps de la
technique (et peut etre utilise a part), le reste n'est qu'une lib d'objets
utiles.



Disons que le coeur de ma demande, c'est surtout de comparer les
techniques utilisées. On peut comprendre juste avec les sources
ou pas trop ?


Comment l'utiliser c'est sur. Comment c'est fait, je pense mais ca demande un
peu de concentration.

Si cela prend trop de temps de décrire l'idée par écrit, je
peux aussi téléphoner.


On peut discuter en prive si tu veux.

28891 total



Quelques lignes de code disais-tu ?


Ce n'est pas enorme pour une lib qui remplie "presque" tous mes besoins standard
et ooc lui-meme ne fait que ~5200 lignes (dont ~1/3 de blanc ou de commentaires)
et la c'est pas beaucoup.

a+, ld.

--
[ Laurent Deniau -- Scientific Computing & Data Analysis ]
[ CERN -- European Center for Nuclear Research ]
[ - http://cern.ch/Laurent.Deniau ]
[ -- One becomes old when dreams become regrets -- ]



Avatar
Gabriel Dos Reis
Marc Boyer writes:

| > 28891 total
|
| Quelques lignes de code disais-tu ?

tu trouves que c'est plus que « quelques lignes » ?

-- Gaby
Avatar
Marc Boyer
Gabriel Dos Reis wrote:
Marc Boyer writes:

| > 28891 total
|
| Quelques lignes de code disais-tu ?

tu trouves que c'est plus que « quelques lignes » ?


Oui.
30.000 lignes de code, c'est surement rien par rapport
à d'autres choses, mais comme production individuelle
(puisque Laurent semble être le seul contributeur), ça
me semble plus que "quelques lignes".
Personnellement, "quelques lignes", cela correspond
à "quelques" jours de travail.

Sinon, je répette que ton avis global sur l'approches
m'intéresse au plus haut point. Si tu as "quelques" minutes
à y consacrer...


Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(

Avatar
Gabriel Dos Reis
Marc Boyer writes:

| Sinon, je répette que ton avis global sur l'approches
| m'intéresse au plus haut point. Si tu as "quelques" minutes
| à y consacrer...

Je n'ai pas oublié ton mail. Please, hold on.

-- Gaby
Avatar
Marc Boyer
Gabriel Dos Reis wrote:
Marc Boyer writes:

| Sinon, je répette que ton avis global sur l'approches
| m'intéresse au plus haut point. Si tu as "quelques" minutes
| à y consacrer...

Je n'ai pas oublié ton mail. Please, hold on.


J'avais peur qu'il ai été perdu dans la masse...
Ok, merci par avance.

Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(

Avatar
Marc Boyer
In article , Laurent Deniau wrote:
Pas tant que ca. Environ 1-2 mois pour ooc et 2 mois pour le reste, etale sur
plusieurs mois quand les besoins se sont fait sentir. Ce qui a prit du temps,
c'est de rendre conforme toute la lib a chaque fois que l'on changeait qqchose
dans le core de ooc. Pourtant j'avais anticipe la chose en passant beaucoup de
temps sur ooc, comment declarer les objets et les classes, comment les
initialises, comment gerer les constructeurs et les destructeurs combines avec
les exceptions plus tous les problemes sousjacents. Dans pas mal de cas je me
suis inspire de C++, Objective C, Java et SmallTalk (dans l'ordre d'importance
et de mes connaissances :-)


Ouaip, 4 mois de développement, sans compter toute la phase de réflexion.
Pour moi, BPL ce doit être une semaine de développement environ, et justement,
comme j'en aurais pas un usage personnel, j'hésite à y consacrer les
mois qui viennent.

Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(

Avatar
Laurent Deniau
Marc Boyer wrote:
In article , Laurent Deniau wrote:

Pas tant que ca. Environ 1-2 mois pour ooc et 2 mois pour le reste, etale sur
plusieurs mois quand les besoins se sont fait sentir. Ce qui a prit du temps,
c'est de rendre conforme toute la lib a chaque fois que l'on changeait qqchose
dans le core de ooc. Pourtant j'avais anticipe la chose en passant beaucoup de
temps sur ooc, comment declarer les objets et les classes, comment les
initialises, comment gerer les constructeurs et les destructeurs combines avec
les exceptions plus tous les problemes sousjacents. Dans pas mal de cas je me
suis inspire de C++, Objective C, Java et SmallTalk (dans l'ordre d'importance
et de mes connaissances :-)



Ouaip, 4 mois de développement, sans compter toute la phase de réflexion.
Pour moi, BPL ce doit être une semaine de développement environ, et justement,
comme j'en aurais pas un usage personnel, j'hésite à y consacrer les
mois qui viennent.


Dans ce cas il vaut mieux se passer des exceptions car elles sont tres utiles et
simplifie beaucoup la vie du programmeur, mais la technique OO doit alors etre
tres consistante pour eviter les problemes (et ils sont nombreux) de pertes de
ressources ou de comportements indefinis.

Ceci dit, je voulais avant tout les exceptions en C et j'ai trouve qu'avec le
polymorphisme, c'etait encore mieux. Du coup je suis parti sur un truc vraiment OO.

a+, ld.


--
[ Laurent Deniau -- Scientific Computing & Data Analysis ]
[ CERN -- European Center for Nuclear Research ]
[ - http://cern.ch/Laurent.Deniau ]
[ -- One becomes old when dreams become regrets -- ]


1 2 3