OVH Cloud OVH Cloud

Java et C++

141 réponses
Avatar
pr.nm
Vu d'un néophyte (pas débutant, mais pas très bon), quelles
différences y a-t-il entre Java et C++, mis à part quelques petites
particularités syntaxiques (syntaxe de création d'un tableau,
l'utilisation de destructeur d'objet, l'initialisation par défaut des
champs) ? Est-ce que l'héritage multiple change vraiment quelque chose
?
Où puis-je trouver un document clair (français ou anglais) qui me
permette de faire la transition (j'ai lu un article disant que C/C++
était plus rapide que Java et nécessitait moins de lignes) ?
Merci d'avance.

10 réponses

Avatar
vclassine
wrote in message news:...
- Bien moins important (sauf quand tu en as besoin) : C++ a du
surcharge des opérateurs, qui permet à émuler un type de base.
C'est un épée à double tranchant -- c'est incroyablement facile
à en abuser (et comme en Java, la bibliothèque standard n'est
pas toujours un bon modèle). Mais supposons que pour des raisons
juridiques, tu sois obligé à tenir des valeurs monétaires en
décimal (c'est généralement le cas), est-ce mieux d'avoir à
écrire :
total = prixHorsTax + prixHorsTax * tva ;
comme en C++, ou :
total = prixHorsTax.add( prixHorsTax.mult( tva ) ) ;
comme en Java.


Vite dit:
total = prixHorsTaxe.applyTaxe(tva);
Est tout à fait acceptable et applyTaxe n'est guère plus long à écrire
que la surcharge de l'opérateur. Même si l'opérateur peut être employé
ailleurs...


Alors, il faut que tu introduit une classe supplémentaire
Pour surcharger l'opérateur plus il te faut bien aussi une classe Prix

ou un truc dans ce goût là, non?
-- une valeur
décimale qui connaît la TVA française.
Dans l'exemple C++ comme Java la TVA est dans l'appel, mais ça n'est

pas forcément une bonne idée...


Mais ce n'était qu'un exemple simple. Que faire dans les programmes du
marché, par exemple, où les formules qu'on manipule sont vraiment
compliqués, et qu'ils changent assez souvent.
Je ne vois pas l'avantage d'un opérateur par rapport à une fonction

pour l'évolutivité. Très clairement soit c'est simple ou très peu
usagé et utiliser add() ou mult() est un peu plus pénible, mais pas
bloquant. Sois c'est compliqué et il y a intérêt à encapsuler dans une
fonction, ne serait-ce que pour l'évolutivité du code... Je ne crois
pas que le fait que la surcharge d'opérateur permette d'écrire des
formules complexe et volatile en dehors d'une encapsulation soit un
atout...

Que faire dans les
programmes scientifiques et techniques, ou on doit manipuler des
Complex -- le calcul d'impédence ne doit pas être évident.

Le problème est simple : quand tu as besoin du surcharge, tu en as
besoin, et il n'y a rien qui ne le remplace. Si tu travailles dans un
domaine technique, il y a de fortes chances que tu en auras besoin, au
moins pour Complex. Si tu fais de la comptabilité juridiquement valable,
tu en auras besoin, parce que la législation exige des arrondis sur la
base d'un calcul décimal.

En revanche, il y a effectivement beaucoup de domaines où tu n'en auras
pas besoin.

Comme tu le dis c'est à double tranchant, et ça n'est qu'une
fonctionnalité syntaxique qui en tout état de cause n'est pas souvent
vraiment utile.


Je n'ai pas dit que c'est souvent nécessaire. J'ai dit que quand c'est
nécessaire, les alternatifs sont vraiment moches.

En fait, dans ce cas-ci, Gosling est d'accord avec moi. Il veut ajouter
la surcharge d'opérateurs:-).
Ah mais je suis entièrement d'accord pour dire qu'il faut l'ajouter

(comme les templates, ce qui va se faire d'ailleurs). Mais si ce point
devient un élément de décision entre Java et C++ c'est que vraiment
ils sont quasi identiques pour l'application en question, ce dont je
doute... A mon avis on a quasiment toujours choisit son langage (ou
plateforme) avant même de songer à la surcharge d'opérateur... Sauf
effectivement si on doit écrire une bibliothèque scientifique qui fait
exclusivement des calcul et qui est, en général, écrite par des
scientifique plutôt que des programmeurs.


- Java, au moins dans ces premières versions, n'avait pas de
génériques. Ce qui limiter des prédicats sur le type que pouvait
enforcer le compilateur : en C++, si tu déclare un std::vector,
tu dis au compilateur le type que tu veux y mettre, et le
compilateur l'enforce. En Java, tu écris un commentaire qui dit
le type qu'il doit contenir, et en cas d'erreur, tu as une
exception à l'execution.


Là encore c'est une commodité syntaxique (qui sera incluse dans la
1.5) rien n'empêche d'écrire une version de chaque conteneur par type,
c'est lourd mais ça se fait.


En fait, rien n'empêche l'utilisation d'un préprocesseur. G++ le faisait
avant qu'il y avait des templates en C++, et ça marchait. Et la
simplicité du grammaire de Java doit en facilité l'écriture du
préprocesseur.

Ça, c'est en théorie. Pour une raison ou une autre, ce n'est pas ce qui
se fait en pratique (sauf quand moi, je fais du Java:-)).
Certainement parce que le domaine ou s'utilise java ne nécessite pas

trop de templates, donc les gens ne se prennent pas la tête pour en
simuler avec un preprocesseur...


- Java pose des problèmes pour la programmation par contrat. En
C++, c'est plutôt l'exception d'avoir une fonction virtuelle
publique -- la plupart en sont privée. En Java, on ne peut pas
déclarer une fonction privée virtuelle.


Euh? Privée virtuelle = protected (sauf que protected est accessible
aussi depuis le package, mais en principe on n'authorise personne de
non fiable à écrire dans son package).


Comment est-ce qu'on l'empêche, vue que le package est ouvert ?
Oui enfin, en C++ on peut aussi dessassemblé le binaire pour brancher

sa fonction à la place de celle de la classe mère. Mais bon faut pas
pousser mémé dans les orties. Le but c'est de protèger contre
"l'erreur" pas contre le "hacking", du moins de mon point de vue...
Pour moi ce problème c'est simplement une ligne dans le contrat de
garantie, ça n'est pas un problème de codage...

(En fait, je crois que l'accessibilité « package », c'est la réponse de
Java au « friend » de C++. Ni l'un ni l'autre n'est totalement
satisfaisant.
Effectivement.

Mais pour que « package » soit une bonne réponse, il
faudra pouvoir fermer un package, et il faudrait supprimer l'accès
package aux classes dérivées en dehors du package. La possibilité de «
sceller » un fichier JAR s'adresse au premier problème, mais c'est un
hack, et pas du tout au bon endroit.)
Oui je trouve qu'il aurait pu faire mieux qu'un répertoire pour les

packages...


Du coup, c'est extrèmement difficile à forcer que tous les
appels de la fonction passent par une fonction non-virtuelle
(final, en Java) dans la classe de base ; fonction qui vérifie
que le contrat est maintenu.


public abstract class AbstractTest
{
public final void faire_truc()
{
pre_condition();
faire_vraiment_truc();
post_condition();
}
private void pre_condition();
private void post_condition();

protected abstract void faire_vraiment_truc();
}


C'est ce que j'ai fait dans la pratique, mais la perte de l'héritage
multiple était genant dans certains cas.

- C++ permet la separation de l'implémentation et de l'interface.
En C++, c'est permis de définir des fonctions dans la définition
de la classe, comme on fait en Java, mais on constate très vite
que c'est une mauvaise idée. En Java, on n'a pas le choix. (Le
moyen qu'utilise C++ pour faire cette separation, l'inclusion
textuelle, est probablement le pire qu


En fait on peut très bien le faire en définissant une interface
pour chaque classe (ce qui n'est pas une mauvaise idée du reste),
c'est optionnel.


C'est optionnel en C++ aussi -- on *peut* écrire le C++ exactement comme
on écrit le Java. L'expérience a montré que c'est une très mauvaise
idée, et c'est interdit dans la plupart des régles de codage.

Quand a l'utilisation de l'interface, ça ne s'adresse que partiellement
au problème -- tu peux bien en déclarer des variables, mais tu ne peux
pas en créer des instances. Alors, du coup, il te faut une usine, et
beaucoup d'autres choses. C'est une solution assez lourde dans
l'ensemble.

Ce qu'il faudrait, idéalement, c'est des modules, comme en Ada. Mais une
fois de plus, la souplesse de C++ te permet à les simuler, plus ou
moins, et d'une façon vraiment pas très élégant, tandis qu'avec Java, tu
es coincé.

- Java, au moins dans les implémentations que je connais, impose
un certain dynamisme, qui n'est pas toujours souhaitable. En
C++, si tu veux, tu peux découper ton programme en objets
dynamiques (DLL's sous Windows, objets partagés sous Unix, mais
dans les deux cas, ce qui fait la différence, c'est que
l'édition de liens se fait lors de l'execution.) Or,
globalement, un objet dynamique n'est qu'une chose de plus que
tu ne contrôles pas complètement lors de l'execution. On les
évite autant que possible, à cause des erreurs qui en
proviennent.

En faveur de Java, évidemment, ce sont des bibliothèques standard
pour à peu près tout, et dans certains cas, comme les JSP,
l'environement applicatif.



Une autre chose en faveur, que j'avais oublié, c'est la qualité de la
documentation en ligne. Il n'y a rien en C++ qui ne s'approche de ce que
tu as à partir de http://developer.java.sun.com/developer/infodocs/.
(C'est un très fort argument pour l'utilisation de Java dans
l'enseignement, par exemple.)

Où puis-je trouver un document clair (français ou anglais) qui me
permette de faire la transition (j'ai lu un article disant que
C/C++ était plus rapide que Java et nécessitait moins de lignes) ?


Ça dépend de ce que tu fais. Il y a aussi des benchmark qui tournent
plus vite en Java qu'en C++. Dans la plupart des applications, en
revanche, j'imagine que le fait que C++ ait des véritables valeurs,
qu'on peut allouer sur la pile, ou mettre directement dans une
collection, fait que le C++ serait plus rapide.


Effectivement, mais ce gain de performance dépend de la qualité du
programmeur et n'est pas toujours nécessaire...


C'est même très rarement nécessaire, je dirais. Bien que... Quand j'ai
écrit l'application Java pour la Dresdner Bank, pour qu'elle tourne
correctement, il a fallu remplacer les PC sur lesquels elle tournait
avec des PC plus puissant. Or, même aux prix d'aujourd'hui, remplacer
60000 PC, ce n'est pas donné. (Mais je crois que le problème était
Swing, et non Java en soi.)
ça ne m'étonnerait pas, maintenant Swing à fait des progrès et il y a

SWT...

Plus important, pour des applications d'une certaine taille, je
trouve qu'on les développe plus rapidement en C++.


Je n'en suis pas convaincu, mais c'est normal ce genre de chose est
éminemment subjectif.


Ça se mésure. Je connais une ou deux boîtes qui l'ont mésuré. Le fait
est que pour un grand système :

- on dévelope plus rapidement en C++, et
- le résultat est nettement plus fiable en C++.

Pour des systèmes plus petits, c'est moins évident.

À la fin, tout dépend de l'application. Si je développais un site de
Web, je choisirais sûrement Java, à cause de tout l'environement autour.
Pour un logiciel client, j'aurais une tendance à préférer Java aussi, à
cause de Swing, et du modèle de deployement. Pour l'enseignement,
peut-être, à cause de la documentation et parce qu'il y a moins de
pièges bêtes (mais il y a tellement d'autres langages qui sont sans
doute supérieur aux deux). Pour d'autres choses, j'ai mes doutes.


Je suis assez d'accord, mais je crois quand même que les études dont
tu parles n'ont que peut de valeur. La communauté java est jeune et
n'est pas très expérimentée dans l'utilisation de java pour des gros
système. A mon avis le facteur humain est pour beaucoup dans le
résultat... Même si je ne pense pas que le résultat sera un jour
inverse (sur gros système), je pense que ça pourrait être très
sérré...




Avatar
kanze
"Alain Naigeon" wrote in message
news:<3f270b8b$0$11006$...
"Fabien LE LEZ" a écrit dans le message news:

On 28 Jul 2003 08:19:12 -0700, (Vincent) wrote:

mais honnêtement peu d'entreprises peuvent se permettre de
maintenir une bibliothèque que leurs auteurs aurait abandonné...


Certes, mais une bibliothèque abandonnée mais en open source a plus
de chances d'être reprise par quelqu'un d'autre...


Peut être qu'il y a moins de formalités pour le reprendre. Mais un bon
produit commercial, avec une base de clients, c'est bien rare qu'il ne
soit pas repris.


Ça dépend. Dans un des cas, le produit (les composants Booch) a été
acheté par un concurrent, avec le but évident d'éliminer un concurrent
supérieur techniquement. Dans l'autre (Zapp, je crois qu'il s'appelait),
suite à des acquisitions, le vendeur s'est trouvé avec deux produits
concurrentiels. Malheureusement, celui qu'il a choisi de continuer
n'était pas celui dont on se servait.

Dans les deux cas, c'était une décision commerciale. Le propriétaire du
produit ne voulait pas qu'il soit sur le marché, et puisqu'il en restait
le propriétaire, il n'y avait rien que personne d'autre pourrait faire.

Et il faut bien le dire, ce sont des scénarios qui en principe ne peut
pas se produire avec un logiciel libre.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16



Avatar
kanze
Luc Hermitte wrote in message
news:...
James Kanze wrote in
news: soft.fr:

Je te conseille de lire Andrei. (Gabi pourrait donner des références
exactes. J'ai un mal fou déjà avec son nom de famille.)


Alexandrescu ? Il a ecrit "Modern C++ Design" chez Addison Wesley et
quantités d'articles intéressants. D'ailleurs, c'est qui le 2eme nom
qui a participé au bouquin sur les templates avec Jossutis ? Ce n'est
pas lui d'ailleurs ?


Non. C'est David Vandervoorde. (Dans les groupes anglophones, il écrit
son nom Daveed, pour qu'on le prononce correctement. Il est belge, et
malgré son nom de famille, belge francophone.)

Andrei, c'est l'expériementation de ce qu'on peut faire avec les
templates. David, c'est l'expertise sans égale de toutes les détails des
templates -- c'est lui qui a implémenté export chez EDG (mais bien
avant, c'est lui qui était un des inventeurs des expressions
templatées).

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16


Avatar
Gabriel Dos Reis
writes:

| David, c'est l'expertise sans égale de toutes les détails des
| templates

Non, là tu es en train de parler John Spicer :-)
Demande à David si tu ne me crois pas.

-- Gaby
Avatar
Gabriel Dos Reis
writes:

| Luc Hermitte wrote in message
| news:...
| > James Kanze wrote in
| > news: soft.fr:
|
| > > Je te conseille de lire Andrei. (Gabi pourrait donner des références
| > > exactes. J'ai un mal fou déjà avec son nom de famille.)
|
| > Alexandrescu ? Il a ecrit "Modern C++ Design" chez Addison Wesley et
| > quantités d'articles intéressants. D'ailleurs, c'est qui le 2eme nom
| > qui a participé au bouquin sur les templates avec Jossutis ? Ce n'est
| > pas lui d'ailleurs ?
|
| Non. C'est David Vandervoorde.
^

Il a horreur qu'on mette un « r » là.

-- Gaby
Avatar
kanze
(Vincent) wrote in message
news:...
wrote in message
news:...
(Vincent) wrote in message
news:...
(Endymion) wrote in message
news:...

Vu d'un néophyte (pas débutant, mais pas très bon), quelles
différences y a-t-il entre Java et C++, mis à part quelques
petites particularités syntaxiques (syntaxe de création d'un
tableau, l'utilisation de destructeur d'objet, l'initialisation
par défaut des champs) ?


C'est l'arbre qui cache la forêt, ces différences syntaxiques sont
la conséquence de différences de fond.

Est-ce que l'héritage multiple change vraiment quelque chose ?


D'abord en java tu peux faire de l'héritage multiple d'interfaces
(une interface peut hériter de plusieurs autres, et une classe
peut implémenter plus d'interfaces).


Une interface logique définit un contrat. Avec des invariants, des
préconditions et des postconditions. Qu'on ne peut pas vérifier dans
une interface Java.

Ce que tu ne peut pas faire c'est de l'héritage multiple de
comportement (une classe hérite de plusieurs).

A partir de là le fait que l'héritage multiple de classe soit
interdit rend pénible l'écriture de certains code, mais a aussi
des avantages de sécurité (d'ailleurs on pourrait dire qu'il en va
de même pour l'héritage simple de comportement).


Quel est l'avantage de sécurité ? Où plutôt, où sont les risques
associées à l'héritage multiple.


Les mêmes que ceux de l'héritage simple, mais multipliés.


C-à-d.

Risque de fonctionnement incorrect si on ne documente pas la manière
d'hériter.


On n'a pas besoin de l'héritage pour ça.

Risque d'impossibilité partielle de changer l'implémentation si on
documente en vue d'un héritage...


Explique. Je ne comprends pas ce que tu essaies de dire.

Mais ça ne concerne que les programmeurs objet avancés, les autres
font plus souvent des trucs dangereux avec... Si ça t'intéresse tu
peux jeter un coup d'oeil au fil "Pour ou contre un code 100%
objet" sur fr.comp.objet, il y a une discussion autour de ce
sujet...

(j'ai lu un article disant que C/C++ était plus rapide que Java


Dans l'absolu, c'est vrai.


Pour beaucoup d'applications. Pas forcement pour toutes. Mais comme
tu dis, il y a bien peu d'applications où ça ferait une différence.
Au moins sous Windows, et à une moindre dégrée sous Solaris sur
Sparc ; beaucoup dépend de la qualité de la VM sur la plateforme, et
sur la plupart des plateformes, ce n'est pas terrible.

Et je ne parle pas des systèmes comme les Unisys 2200, où le
hardware ne supporte pas du tout le modèle imposé par Java.
D'ailleurs, si tu vas faire du virgule flottant, Java va ramer même
sur un IBM 390 (qui ne supporte pas IEEE très bien).


Là on change de domaine d'application, et pour ces OS là c'est vrai
qu'il faut encore y aller à l'ancienne, point de salut du côté de
wxWindows nonplus et encore moins de Kylix...


Ce n'est pas grave -- ces machines-là n'ont pas d'écran.

Si tu as besoin d'une vrai portabilité, il faut C++. Ou mieux, un
langage comme Ada, qui a une norme que les implémenteurs respectent,
mais qui peut s'implémenter sur n'importe quelle plateforme. (Mais
dans la pratique, c'est rare d'avoir besoin d'une telle
portabilité.)

La vitesse qui compte la plus, en général, c'est la vitesse de
développement.


Une fois qu'on a atteint la vitesse d'éxécution nécessaire, qui est
une contrainte du cahier des charges comme les autres...


Parfois. Parfois, c'est plus lache. Mais si le programme manque 10% sur
les performances voulues, la solution la moins chère, c'est d'acheter
une machine plus puissante.

Et là, beaucoup dépend de l'environement. Si tu développes, par
exemple, un site Web, l'infrastructure et les bibliothèques Java
vont faire que tu as déjà 90% de fait ; C++ n'a pas de chance. Si tu
développes un gros serveur, en revanche, le modèle de compilation de
Java va te coûter environ 20% par rapport à celui de C++ (qui n'est
déjà pas fameux). Si en plus, il faut que ce soit fiable, que quand
tu acquittes une requête, les données soient garanties sur disque,
alors, c'est infaisable en Java -- tu es obligé à passer par JNI, ce
qui, d'après le peu que j'ai vu, adopte les pires aspects des deux
côtés -- la légérté et l'élégance de l'écriture C++ avec la
souplesse et la vitesse de Java.

Ou si c'est un programme très court, qui s'execute et puis s'arrête.
Les temps de démarrage de la machine virtuelle sont loins d'être
négligeable.


Tout dépends ce que tu attend du programme...


Exactement ce que j'ai voulu dire.

Quand je me suis mis à Java, une des premières choses que j'ai fait,
c'était de transcrire un certain nombre de mes « applications »
personnelles en Java, pour m'y faire la main. Or, ces applications me
servent surtout à l'intérieur de l'éditeur, comme « filtre » --
j'utilise la commande ! de vi pour passer quelque lignes de texte à
travers mon programme.

Pour ce genre de programme, Java, au moins le Java de Sun, ne convient
pas du tout. Avec C++, je marque l'étendu concerné, j'entre la commande,
je tape retour, et le texte modifié remplace le texte initial sur
l'écran. Instamment, pour ainsi dire -- le temps d'execution complète du
programme n'est pas apercevable. Avec Java, en revanche, il y a une
pause d'une ou deux sécondes avant l'affichage -- assez pour que ça
gène.

Java demande un peu plus d'écriture à cause des try catch
fréquents, mais je dirais qu'un bon programmeur C++ les écrira (ou
les "if...else" qui les remplacent) partout où c'est obligatoire
en Java, donc match nul.


En général, en C++, on régle le problème avec les destructeurs. Ce
qui fait qu'il pourrait y avoir moins de code dans la plupart des
cas. Dans d'autres cas -- quand tu as des composants génériques (des
collections, etc.), en Java ou bien tu rénonces au typage statique
(et donc prend une risque supplémentaire des erreurs lors de
l'execution), ou bien, tu as des copies supplémentaire du code, qui
ne varie que par le type. Mais dans l'ensemble, je m'attendrais à un
peu plus de lignes en C++. Parce que tu fais plus -- tu vérifies les
précondtions et les postconditions (que tu ne peux pas faire en
java), par exemple. Le resultat, c'est un code plus robuste en C++.


pour info:
http://java.sun.com/j2se/1.4.2/docs/guide/lang/assert.html

si ce dont tu parles ne se trouve pas dans cette page tu peux me
donner un exemple en C++, stp.


D'autres l'ont déjà fait -- c'est qu'on ne peut pas redéfinir la
fonction pour empêcher l'execution des vérifications.

Il y a des outils supplémentaire pour faire de la programmation par
contrat en Java, voir
http://www.reliable-systems.com/tools/iContract/iContract.htm, par
exemple ; il y a aussi des systèmes de vérification statique assez
poussée, voir http://research.compaq.com/SRC/esc/. La simplicité de la
grammaire (et dans le cas de ESC, de la sémantique) de Java rend le
développement des tels outils plus facile qu'en C++ -- l'équivalent de
ESC pour C++ ne me paraît pas simple du tout.

Mais d'après ce que je vois chez mes clients, de tels outils ne servent
pas trop. Je ne sais pas pourquoi, mais j'ai l'impression qu'il y a une
barrière psychologique qui fait que le client me laisse implémenter les
vérifications du programmation par contrat en C++, et est ébloui des
résultats, mais qu'il réfuse à me laisser ajouter des outils dans la
chaîne de production. Ce qui veut dire que ce que je pourrais
implémenter à l'intérieur du langage même, ça passe, mais la reste, non.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16




Avatar
Jean-Marc Bourguet
writes:

Non. C'est David Vandervoorde. (Dans les groupes anglophones, il écrit
son nom Daveed, pour qu'on le prononce correctement. Il est belge, et
malgré son nom de famille, belge francophone.)


Pourquoi "malgré" ?

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Avatar
tib.motuelle
Loïc Joly wrote in message news:<bg73k7$tp2$...
Luc Hermitte wrote:
James Kanze wrote in news:
soft.fr:


Je te conseille de lire Andrei. (Gabi pourrait donner des
références exactes. J'ai un mal fou déjà avec son nom de
famille.)



Alexandrescu ? Il a ecrit "Modern C++ Design" chez Addison Wesley et
quantités d'articles intéressants.


100% d'accord.

D'ailleurs, c'est qui le 2eme nom qui
a participé au bouquin sur les templates avec Jossutis ? Ce n'est pas lui
d'ailleurs ?


Non, ce n'est pas lui. Le compère de Jossutis est David Vandevoorde.


Tant qu'on est dans les noms:
Jossutis -> Josuttis (Nicolai)

Pour Vandevoorde, je vois plus souvent son prénom orthographié Daveed.
(mais apparement les deux formes sont utilisées, il signe ses posts
Daveed sur clcm et csc, mais sur la couverture de C++ templates c'est
David).

Bertrand



Avatar
tib.motuelle
James Kanze wrote in message news:...
(Vincent) writes:
[...]


Les templates, tels que certains les utilisent, sont
révolutionnaire. Je ne sais si les bureaux d'études sont près
pour cette révolution-là -- je crois plutôt que non, mais
c'est bien autre chose qu'une commodité syntactique. C'est
peut-être même plus que l'introduction des fonctions, pour dire
à quel point c'est autre chose. (C'est pour ça, d'ailleurs,
qu'il faut du temps avant qu'il devient une technologie courante.)

|> mais ça reste une "commodité syntaxique"... J'entends par
|> là que ça n'apporte pas de nouvelle possibilités.

Je te conseille de lire Andrei. (Gabi pourrait donner des
références exactes. J'ai un mal fou déjà avec son nom de
famille.) Qu'on soit d'accord avec ce qu'il fait ou non (et j'ai mes
doutes sur l'applicabilité dans l'industrie), ça dépasse de
loins ce que j'appellerai une commodité syntactique.


Pour l'applicabilité dans l'industrie (entre autres), une lecture très
éducative est "Generative Programming - Methods, Tools, and
Applications" de Krzysztof Czarnecki et Ulrich Eisenecker.
Je peux me tromper mais je pense que beaucoup d'idées popularisées par
Alexandrescu viennent de là (notamment le "policy based design").

Bertrand

Avatar
Gabriel Dos Reis
(Bertrand Motuelle) writes:

| Pour Vandevoorde, je vois plus souvent son prénom orthographié Daveed.

C'est David. Seulement les anglo-saxons qu'il fréquent(ai)ent
n'arriv(ai)ent pas à le prononcer correctement, alors en désespoir de
cause il l'orthographie Daveed pour eux :-)

-- Gaby