Citation:
Envoyé par soleuh
Tout simplement parceque la résolution de l'exception passe
par le kernel..
Et? Si on est dans le kernel, qu'est-ce qui gène?
Citation:
Rien ne me gène, et je sais comment fonctionne la surcharge d'opérateur, merci. Mais, comme, dans linux en tous cas, il existe plusieurs moyens d'allouer de la mémoire (kmalloc, vmalloc, je crois qu'il y en a d'autres...). Je ne vois pas de raison d'utiliser de new du tout (pourquoi en favoriser un plutôt qu'un autre ?)
À quoi sert la syntaxe de placement new et la possibilité de définir des
opérateurs new par classe si ce n'est à offrir des variantes?
Citation:
Je n'ai pas dis que je comprennais pas le C++, je n'ai pas dit que c'était impossible de faire un kernel en C++, d'ailleur il existe des patchs pour le noyau linux permettant d'ajouter des modules en C++, et des implémentations du L4 en C++. Mais je ne suis pas persuadé de la pertinence de ce choix (par contre, j'aurai bien aimé essayé de le faire, si j'avais eu les compétences et surtout le temps). En effet, que reste-t-il une fois que l'on a enlevé les exceptions,
Je suis toujours loin d'être convaincu que les exceptions ne sont pas utilisables.
Je ne vois toujours rien de génant
Citation:
une grande partie des méthodes virtuelles.. ?
Qu'est-ce qui gène ici?
Citation:
Même si c'est pour les réimplémenter à sa sauce, on utilise peu des possibilités du C++. Si c'est pour faire du C sur un compilateur C++, je ne vois pas l'interêt.
Même si on n'utilise que les virtuelles (c'est utiles dans le noyeau, tous les réinvente), les templates et le fait qu'en général on a une meilleure encapsulation qu'on n'est pas obligé de sacrifier à l'autel des performances... on a gagné quelque chose par rapport au C. Il ne faut pas oublier que le C++ s'est d'abord répandu en tant que "better C" et ensuite on a commencé à se servir des possibilités supplémentaires.
Citation:
Envoyé par Linus Torvalds
The fact is, C++ compilers are not
trustworthy. They were even worse in 1992, but some fundamental facts
haven't changed:
En 1992, je n'aurais pas peut-être pas plus utilisé du C++, le langage
étant alors trop en évolution.
Citation:
- the whole C++ exception handling thing is fundamentally broken. It's
_especially_ broken for kernels.
Là il faudrait argumenter un peu plus. J'aimerais bien savoir ce qui est
cassé.
Citation:
- any compiler or language that likes to hide things like memory
allocations behind your back just isn't a good choice for a kernel.
Quelle construction du C++ fait des allocations mémoires toute seule?
Citation:
- you can write object-oriented code (useful for filesystems
etc)
Là nous sommes d'accord.
On peut tout faire en C, il suffit d'écrire une machine virtuelle qui se comporte comme on veut... on peut même généralement utiliser des méthodes plus efficaces que ça...
Citation:
_without_ the crap that is C++.
Précision?
Citation:
In general, I'd say that anybody who designs his kernel modules for C++ is
either
(a) looking for problems
Visiblement... mais je ne vois pas trop l'intérêt du C++ pour un module dans un noyeau écrit pour le reste en C; l'échelle est trop petite pour que les intérêts majeurs du C++ se manifestent, et les inconvénients d'avoir une partie écrite dans un langage non maîtrisé par le reste des mainteneurs sont certains.