Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

POO en C

18 réponses
Avatar
candide
Bonjour,

Vous pensez quoi de ce livre de Axel-Tobias Schreiner sorti en 1994 :

http://www.cs.rit.edu/~ats/books/ooc.pdf ?


--------------------- Extrait de la préface : ------------

This book is not going to praise object-oriented programming or condemn the
Old Way. We are simply going to use ANSI-C to discover how object-oriented
programming is done, what its techniques are, why they help us solve bigger
problems, and how we harness generality and program to catch mistakes earlier.
Along the way we encounter all the jargon — classes, inheritance, instances,
linkage, methods, objects, polymorphisms, and more — but we take it out of the
realm of magic and see how it translates into the things we have known and done
all along.
I had fun discovering that ANSI-C is a full-scale object-oriented language.
------------------------------------------------------------


Merci

10 réponses

1 2
Avatar
ld
On 12 août, 11:29, candide wrote:
Bonjour,

Vous pensez quoi de ce livre de Axel-Tobias Schreiner sorti en 1994 :

http://www.cs.rit.edu/~ats/books/ooc.pdf ?



sur quels points?

a+, ld.
Avatar
candide
ld a écrit :

sur quels points?



Est-ce que ce qu'il propose dans son exposé permet faire de la POO en C de façon
simple et efficace ? Est-ce que son approche objet du C est comparable à celle
de GTK ?
Est-il réaliste de donner un design OO à ses programmes en utilisant son exposé
? Je n'arrive pas à voir s'il donne une méthode pour faire de la POO en C ou
s'il explique comment faire un framework qui va me permettre ensuite d'en faire
? Ce qui me titille c'est j'ai toujours eu l'impression que faire de la POO en C
à la différence de C++ ou Objective C est assez lourd à mettre oeuvre (parce
que le langage n'a pas été prévu pour ça au départ).
Avatar
Wykaaa
candide a écrit :
ld a écrit :
sur quels points?



Est-ce que ce qu'il propose dans son exposé permet faire de la POO en C de façon
simple et efficace ? Est-ce que son approche objet du C est comparable à celle
de GTK ?
Est-il réaliste de donner un design OO à ses programmes en utilisant son exposé
? Je n'arrive pas à voir s'il donne une méthode pour faire de la POO en C ou
s'il explique comment faire un framework qui va me permettre ensuite d'en faire
? Ce qui me titille c'est j'ai toujours eu l'impression que faire de la POO en C
à la différence de C++ ou Objective C est assez lourd à mettre oeuvre (parce
que le langage n'a pas été prévu pour ça au départ).



Il me semble qu'aujourd'hui, se poser toutes ces questions à propos de C
est sans intérêt.
Si on veut faire de la POO on choisit un langage objet. Point-barre.

Sinon, pourquoi pas se poser aussi la question, par exemple, de faire de
la programmation fonctionnelle en Cobol...

On peut multiplier les questions farfelues à loisir !
Avatar
Jean-Marc Bourguet
Wykaaa writes:

Sinon, pourquoi pas se poser aussi la question, par exemple, de faire de
la programmation fonctionnelle en Cobol...



Si je vois comment faire de la POO en C, j'ai du mal voir comment faire de
la programmation fonctionnelle en Cobol. Tu as une page a proposer?

A+

--
Jean-Marc
FAQ de fclc: http://www.levenez.com/lang/c/faq
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Avatar
ld
On 12 août, 16:53, Wykaaa wrote:
candide a écrit :

> ld a écrit :
>> sur quels points?

> Est-ce que ce qu'il propose dans son exposé permet faire de la POO en C de façon
> simple et efficace ? Est-ce que son approche objet du C est comparable à celle
> de GTK ?
> Est-il réaliste de donner un design OO à ses programmes en utilisan t son exposé
> ? Je n'arrive pas à voir s'il donne une méthode pour faire de la PO O en C ou
> s'il explique comment faire un framework qui va me permettre ensuite d' en faire
> ? Ce qui me titille c'est j'ai toujours eu l'impression que faire de la POO en C
> à la différence de  C++ ou Objective C est assez lourd à mettre oeuvre (parce
> que le langage n'a pas été prévu pour ça au départ).

Il me semble qu'aujourd'hui, se poser toutes ces questions à propos de C
est sans intérêt.
Si on veut faire de la POO on choisit un langage objet. Point-barre.



Quel langage objet aussi efficace que C (ou mieux, C++) connais-tu qui
supporte

- les multi-methodes
- la delegation generique (a la SmallTalk)

?

Ces deux concepts (apres avoir joue avec pendant deux annees) sont
pour moi, l'aboutissement d'un language OO.

Sinon, pourquoi pas se poser aussi la question, par exemple, de faire de
la programmation fonctionnelle en Cobol...

On peut multiplier les questions farfelues à loisir !



Les motivations ne sont pas forcement farfelues.

a+, ld.
Avatar
ld
On 12 août, 15:41, candide wrote:
ld a écrit :



> sur quels points?

Est-ce que ce qu'il propose dans son exposé permet faire de la POO en C de façon
simple et efficace ?



oui, le modele est proche de SamllTalk, voir Self. Tres dynamique =
beaucoup de void* + code defensif.

Est-ce que son approche objet du C est comparable à celle
de GTK ?



non, GTK c'est encore pire. J'admire ce que les gens de Gnome arrivent
a faire avec une truc aussi lourd. Je dirais que le gap entre ooc et
GTK est rempli par le parseur/generateur de code de ooc (ecrit en
Awk). Mais le fait d'utiliser yet-another-preprocessor apporte aussi
son lot de problemes. Il y a aussi Dynace comme alternative (hum).

Est-il réaliste de donner un design OO à ses programmes en utilisant son exposé
?



Je connais au moins une entreprise qui l'a utilise pour son framework.
Personnellement je n'essayerais pas.

Je n'arrive pas à voir s'il donne une méthode pour faire de la POO en C ou
s'il explique comment faire un framework qui va me permettre ensuite d'en faire
?



En C, c'est la meme chose (et il fourni le framework). Le C ne
supporte pas le subtyping qui est la clef des languages OO. En
consequence, il est tres difficile, mais possible via un jeu complexe
de macros (comme dans OOC-2.0), de la simuler. Donc la plupart des
tentatives proposent un typage dynamique, donc un runtime, donc un
framework pour faire de la POO.

Ce qui me titille c'est j'ai toujours eu l'impression que faire de la POO en C
à la différence de  C++ ou Objective C est assez lourd à mettre o euvre (parce
que le langage n'a pas été prévu pour ça au départ).



Faire comme Objective-C est relativement facile (hum). Faire comme C++
est impossible. La raison est que

- Objective-C est entierement dynamique, on peut donc faire la meme
chose en C et l'enjeu reside dans la clarete de la syntaxe du DSL.

- La force de C++ est surtout dans la partie statique du language
(template + overloading), il est donc impossible de lui arriver a la
cheville en C. On peut tout au plus simuler la partie dynamique mais
sans la partie statique, c'est tres lourd (je l'ai fait, si si!).

voila.

a+, ld.
Avatar
Manuel Pégourié-Gonnard
ld scripsit:

On 12 août, 11:29, candide wrote:
Bonjour,

Vous pensez quoi de ce livre de Axel-Tobias Schreiner sorti en 1994 :

http://www.cs.rit.edu/~ats/books/ooc.pdf ?



sur quels points?



Bon, du coup j'en profite pour greffer ma question (en remerciant au
passage Candide pour la référence).

Que pensez-vous d'utiliser ce livre dans l'optique de mieux comprendre
comment sont implémentés les langages à objet, tout en enrichissant un
peu sa culture C ? Quand je lis l'extrait cité de la préface, j'ai
l'impression que c'est un des buts du livre. Avez-vous l'impression
qu'il atteint cet objectif ?

Si non, que recommanderiez-vous comme lecture sur le sujet de
l'implémentation des langages objet ? (Si on part sur cette voie, il
faudra peut-être adapter le suivi, mais pour l'instant et dans le doute,
je laisse sur fclc ; sentez-vous libre de changer.)

Merci.

--
Manuel Pégourié-Gonnard Institut de mathématiques de Jussieu
http://weblog.elzevir.fr/ http://people.math.jussieu.fr/~mpg/
Avatar
Erwan David
ld écrivait :


non, GTK c'est encore pire. J'admire ce que les gens de Gnome arrivent
a faire avec une truc aussi lourd.



Moi aussi je peux parsemer mon code de
fprintf(stderr,"Critical assertion failed");


--
Le travail n'est pas une bonne chose. Si ça l'était,
les riches l'auraient accaparé
Avatar
ld
On 12 août, 20:52, Erwan David wrote:
ld écrivait :



> non, GTK c'est encore pire. J'admire ce que les gens de Gnome arrivent
> a faire avec une truc aussi lourd.

Moi aussi je peux parsemer mon code de
fprintf(stderr,"Critical assertion failed");



Neanmois, il faut reconnaitre que ca marche pas trop mal (en tout cas
sous linux).

a+, ld.
Avatar
ld
On 12 août, 17:38, Manuel Pégourié-Gonnard <mpg+
wrote:
ld scripsit:

> On 12 août, 11:29, candide wrote:
>> Bonjour,

>> Vous pensez quoi de ce livre de Axel-Tobias Schreiner sorti en 1994 :

>>http://www.cs.rit.edu/~ats/books/ooc.pdf ?

> sur quels points?

Bon, du coup j'en profite pour greffer ma question (en remerciant au
passage Candide pour la référence).

Que pensez-vous d'utiliser ce livre dans l'optique de mieux comprendre
comment sont implémentés les langages à objet,



_les_ langages objets, ca representent pas mal de modeles differents
et chacun implique souvent des methodes de POO differentes (sorti des
design patterns).

tout en enrichissant un
peu sa culture C ?



sur ce point d'accord, bien que ooc date un peu et les methodes
utilisees sont peut fiable. Je ne suis pas un fan de la programmation
defensive.

Quand je lis l'extrait cité de la préface, j'ai
l'impression que c'est un des buts du livre. Avez-vous l'impression
qu'il atteint cet objectif ?



oui et non. Il n'explique pas vraiment ce qu'est la POO. Je pense
qu'aujourd'hui je conseillerais plutot les Doc Apple sur Objective-C
(il en a plein et bien ecrite). Mais la aussi, c'est un modele objet
parmi d'autres, probablement transposable pour une bonne partie en C++
ou Java/C#/D, mais pas en totalite (tres dynamique).

Si non, que recommanderiez-vous comme lecture sur le sujet de
l'implémentation des langages objet ?



en C? il n'y a pas grand chose et pour ce qu'il y a, je ne le
recommanderais pas. Il n'y a deja pas grand chose sur la programmation
en C qui soit correct alors sur la POO en C...

Il faut d'abord savoir par quel modele on est interesse, choisir un
langage OO qui est base dessus et lire des ouvrages focalises sur le
modele OO (voir le design, c'est souvent lie). Pour les modeles les
plus courus (du plus statique au plus dynamique):

modele statique generatif -> C++ (+RAII+TMP)
modele statique generic -> Java, C#, D, Eiffel
modele dynamique -> Objective-C
langage dynamique -> Python, IO

Pendant le developpement de OOC-2.0 (pas ooc) puis de COS, j'ai etudie
une quarantaines de languages differents (sans les pratiquer tous)
pour comprendre leur avantages, leur inconvenients et une
implementation possible. J'ai lu plus de mille papiers sur les sujets
concernes (le sujet est vaste) mais je n'ai jamais rien trouve de
satisfaisant sur la POO en C.

Et pendant tout ce temps, la seule chose qui m'ait vraiment
impressionne, c'est la bibliotheque chaos-pp sur la meta-programmation
avec cpp. Pour le reste, j'ai vu du code pseudo OO propre (la machine
virtuelle Sun pour Java par ex) mais pas de facon exceptionnelle
d'utiliser le C pour faire de la POO.

a+, ld.
1 2